* Re: [lm-sensors] [PATCH 2/3] hwmon: (adt7410) Add support for the adt7310/adt7320
@ 2013-03-23 23:23 Hartmut Knaack
0 siblings, 0 replies; only message in thread
From: Hartmut Knaack @ 2013-03-23 23:23 UTC (permalink / raw)
To: lm-sensors
TGFycy1QZXRlciBDbGF1c2VuIHNjaHJpZWI6Cj4gVGhlIGFkdDczMTAvYWR0NzMyMCBpcyB0aGUg
U1BJIHZlcnNpb24gb2YgdGhlIGFkdDc0MTAvYWR0NzQyMC4gVGhlIHJlZ2lzdGVyIG1hcAo+IGxh
eW91dCBpcyBhIGJpdCBkaWZmZXJlbnQsIGkuZS4gdGhlIHJlZ2lzdGVyIGFkZHJlc3NlcyBkaWZm
ZXIgYmV0d2VlbiB0aGUgdHdvCj4gdmFyaWFudHMsIGJ1dCB0aGUgYml0IGxheW91dHMgb2YgdGhl
IGluZGl2aWR1YWwgcmVnaXN0ZXJzIGFyZSBpZGVudGljYWwuIFNvIGJvdGgKPiBjaGlwIHZhcmlh
bnRzIGNhbiBlYXNpbHkgYmUgc3VwcG9ydGVkIGJ5IHRoZSBzYW1lIGRyaXZlci4gVGhlIGlzc3Vl
IG9mIG5vbgo+IG1hdGNoaW5nIHJlZ2lzdGVyIGFkZHJlc3MgbGF5b3V0cyBpcyBzb2x2ZWQgYnkg
YSBzaW1wbGUgbG9vay11cCB0YWJsZSB3aGljaAo+IHRyYW5zbGF0ZXMgdGhlIEkyQyBhZGRyZXNz
ZXMgdG8gdGhlIFNQSSBhZGRyZXNzZXMuCj4KPiBUaGUgcGF0Y2ggbW92ZXMgdGhlIGJ1bGsgb2Yg
dGhlIGFkdDc0MTAgZHJpdmVyIHRvIGEgY29tbW9uIG1vZHVsZSB0aGF0IHdpbGwgYmUKPiBzaGFy
ZWQgYnkgdGhlIGFkdDc0MTAgYW5kIGFkdDczMTAgZHJpdmVycy4gVGhpcyBjb21tb24gbW9kdWxl
IGltcGxlbWVudHMgdGhlCj4gZHJpdmVyIGxvZ2ljIGFuZCB1c2VzIGEgc2V0IG9mIHZpcnR1YWwg
ZnVuY3Rpb25zIHRvIHBlcmZvcm0gSU8gYWNjZXNzLiBUaGUKPiBhZHQ3NDEwIGFuZCBhZHQ3MzEw
IGRyaXZlciBtb2R1bGVzIHByb3ZpZGUgcHJvcGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGVzZSBJ
Two+IGFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgSTJDIHJlc3BlY3RpdmUgU1BJLgo+Cj4gU2lnbmVk
LW9mZi1ieTogTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+ClJldmlld2VkLWJ5
OiBIYXJ0bXV0IEtuYWFjayA8a25hYWNrLmhAZ214LmRlPgo+Cj4gLS0tCj4gQ2hhbmdlcyBzaW5j
ZSB2MjoKPiAJKiBQcmVmaXggaWRlbnRpZmllcnMgYW5kIGRlZmluZXMgaW4gdGhlIGNvbW1vbiBj
b2RlIHdpdGggYWR0N3gxMCBpbnN0ZWFkIG9mCj4gCSAgYWR0NzQxMAo+IAkqIE1pbm9yIGNvZGUg
c3R5bGUgY2xlYW51cHMKPiAJKiBUeXBvIGZpeGVzIGZvciB0aGUgZGVzY3JpcHRpb24gaW4gRG9j
dW1lbnRhdGlvbi8KPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IAkqIFVwZGF0ZSB0aGUgZHJpdmVyIGRv
Y3VtZW50YXRpb24gdG8gaW5jbHVkZSBBRFQ3MzEwL0FEVDczMjAvQURUNzQyMAo+IAkqIFBhc3Mg
dGhlIHJlc3VsdCBvZiB0aGUgcmVhZCBtZXRob2RzIHZpYSB0aGUgcmV0dXJuIHZhbHVlIGluc3Rl
YWQgb2YgYQo+IAkgIHBvaW50ZXIgYXJndW1lbnQKPiAJKiBTaW1wbGlmeSBzcGkgcmVhZCBtZXRo
b2RzIGJ5IHVzaW5nIHNwaV93OHI4IGFuZCBzcGlfdzhyMTYKPiAJKiBVcGRhdGUgbW9kdWxlIGRl
c2NyaXB0aW9uIG9mIHRoZSBzaGFyZWQgbW9kdWxlCj4gCSogRml4IHNvbWUgdHlwb3MKPgo+IFNp
Z25lZC1vZmYtYnk6IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRlPgo+IC0tLQo+
ICBEb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTAgfCAgNDcgKysrLS0KPiAgZHJpdmVycy9od21v
bi9LY29uZmlnICAgICAgIHwgIDIwICsrCj4gIGRyaXZlcnMvaHdtb24vTWFrZWZpbGUgICAgICB8
ICAgMiArCj4gIGRyaXZlcnMvaHdtb24vYWR0NzMxMC5jICAgICB8IDEyMyArKysrKysrKysrKysK
PiAgZHJpdmVycy9od21vbi9hZHQ3NDEwLmMgICAgIHwgNDY3ICsrKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9od21vbi9hZHQ3eDEwLmMgICAgIHwg
NDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZl
cnMvaHdtb24vYWR0N3gxMC5oICAgICB8ICAzNyArKysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgNzE5
IGluc2VydGlvbnMoKyksIDQ1MyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy
aXZlcnMvaHdtb24vYWR0NzMxMC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2h3bW9u
L2FkdDd4MTAuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9od21vbi9hZHQ3eDEwLmgK
Pgo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTAgYi9Eb2N1bWVudGF0
aW9uL2h3bW9uL2FkdDc0MTAKPiBpbmRleCA1ODE1MGM0Li45ODE3OTQxIDEwMDY0NAo+IC0tLSBh
L0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQxMAo+ICsrKyBiL0RvY3VtZW50YXRpb24vaHdtb24v
YWR0NzQxMAo+IEBAIC0xMiwyOSArMTIsNDIgQEAgU3VwcG9ydGVkIGNoaXBzOgo+ICAgICAgQWRk
cmVzc2VzIHNjYW5uZWQ6IE5vbmUKPiAgICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxl
IGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCj4gICAgICAgICAgICAgICAgIGh0dHA6Ly93
d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0YV9zaGVldHMvQURUNzQyMC5w
ZGYKPiArICAqIEFuYWxvZyBEZXZpY2VzIEFEVDczMTAKPiArICAgIFByZWZpeDogJ2FkdDczMTAn
Cj4gKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogTm9uZQo+ICsgICAgRGF0YXNoZWV0OiBQdWJsaWNs
eSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKPiArICAgICAgICAgICAg
ICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL3N0YXRpYy9pbXBvcnRlZC1maWxlcy9kYXRhX3NoZWV0
cy9BRFQ3MzEwLnBkZgo+ICsgICogQW5hbG9nIERldmljZXMgQURUNzMyMAo+ICsgICAgUHJlZml4
OiAnYWR0NzMyMCcKPiArICAgIEFkZHJlc3NlcyBzY2FubmVkOiBOb25lCj4gKyAgICBEYXRhc2hl
ZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQo+ICsg
ICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vc3RhdGljL2ltcG9ydGVkLWZpbGVz
L2RhdGFfc2hlZXRzL0FEVDczMjAucGRmCj4gIAo+ICBBdXRob3I6IEhhcnRtdXQgS25hYWNrIDxr
bmFhY2suaEBnbXguZGU+Cj4gIAo+ICBEZXNjcmlwdGlvbgo+ICAtLS0tLS0tLS0tLQo+ICAKPiAt
VGhlIEFEVDc0MTAgaXMgYSB0ZW1wZXJhdHVyZSBzZW5zb3Igd2l0aCByYXRlZCB0ZW1wZXJhdHVy
ZSByYW5nZSBvZiAtNTXCsEMgdG8KPiAtKzE1MMKwQy4gSXQgaGFzIGEgaGlnaCBhY2N1cmFjeSBv
ZiArLy0wLjXCsEMgYW5kIGNhbiBiZSBvcGVyYXRlZCBhdCBhIHJlc29sdXRpb24KPiAtb2YgMTMg
Yml0cyAoMC4wNjI1wrBDKSBvciAxNiBiaXRzICgwLjAwNzjCsEMpLiBUaGUgc2Vuc29yIHByb3Zp
ZGVzIGFuIElOVCBwaW4gdG8KPiAtaW5kaWNhdGUgdGhhdCBhIG1pbmltdW0gb3IgbWF4aW11bSB0
ZW1wZXJhdHVyZSBzZXQgcG9pbnQgaGFzIGJlZW4gZXhjZWVkZWQsIGFzCj4gLXdlbGwgYXMgYSBj
cml0aWNhbCB0ZW1wZXJhdHVyZSAoQ1QpIHBpbiB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjcml0aWNh
bAo+IC10ZW1wZXJhdHVyZSBzZXQgcG9pbnQgaGFzIGJlZW4gZXhjZWVkZWQuIEJvdGggcGlucyBj
YW4gYmUgc2V0IHVwIHdpdGggYSBjb21tb24KPiAtaHlzdGVyZXNpcyBvZiAwwrBDIC0gMTXCsEMg
YW5kIGEgZmF1bHQgcXVldWUsIHJhbmdpbmcgZnJvbSAxIHRvIDQgZXZlbnRzLiBCb3RoCj4gLXBp
bnMgY2FuIGluZGl2aWR1YWxseSBzZXQgdG8gYmUgYWN0aXZlLWxvdyBvciBhY3RpdmUtaGlnaCwg
d2hpbGUgdGhlIHdob2xlCj4gLWRldmljZSBjYW4gZWl0aGVyIHJ1biBpbiBjb21wYXJhdG9yIG1v
ZGUgb3IgaW50ZXJydXB0IG1vZGUuIFRoZSBBRFQ3NDEwCj4gLXN1cHBvcnRzIGNvbnRpbm91cyB0
ZW1wZXJhdHVyZSBzYW1wbGluZywgYXMgd2VsbCBhcyBzYW1wbGluZyBvbmUgdGVtcGVyYXR1cmUK
PiAtdmFsdWUgcGVyIHNlY29uZCBvciBldmVuIGp1c3RnZXQgb25lIHNhbXBsZSBvbiBkZW1hbmQg
Zm9yIHBvd2VyIHNhdmluZy4KPiAtQmVzaWRlcywgaXQgY2FuIGNvbXBsZXRlbHkgcG93ZXIgZG93
biBpdHMgQURDLCBpZiBwb3dlciBtYW5hZ2VtZW50IGlzCj4gLXJlcXVpcmVkLgo+IC0KPiAtVGhl
IEFEVDc0MjAgaXMgcmVnaXN0ZXIgY29tcGF0aWJsZSwgdGhlIG9ubHkgZGlmZmVyZW5jZXMgYmVp
bmcgdGhlIHBhY2thZ2UsCj4gLWEgc2xpZ2h0bHkgbmFycm93ZXIgb3BlcmF0aW5nIHRlbXBlcmF0
dXJlIHJhbmdlICgtNDDCsEMgdG8gKzE1MMKwQyksIGFuZCBhCj4gLWJldHRlciBhY2N1cmFjeSAo
MC4yNcKwQyBpbnN0ZWFkIG9mIDAuNTDCsEMuKQo+ICtUaGUgQURUNzMxMC9BRFQ3NDEwIGlzIGEg
dGVtcGVyYXR1cmUgc2Vuc29yIHdpdGggcmF0ZWQgdGVtcGVyYXR1cmUgcmFuZ2Ugb2YKPiArLTU1
wrBDIHRvICsxNTDCsEMuIEl0IGhhcyBhIGhpZ2ggYWNjdXJhY3kgb2YgKy8tMC41wrBDIGFuZCBj
YW4gYmUgb3BlcmF0ZWQgYXQgYQo+ICtyZXNvbHV0aW9uIG9mIDEzIGJpdHMgKDAuMDYyNcKwQykg
b3IgMTYgYml0cyAoMC4wMDc4wrBDKS4gVGhlIHNlbnNvciBwcm92aWRlcyBhbgo+ICtJTlQgcGlu
IHRvIGluZGljYXRlIHRoYXQgYSBtaW5pbXVtIG9yIG1heGltdW0gdGVtcGVyYXR1cmUgc2V0IHBv
aW50IGhhcyBiZWVuCj4gK2V4Y2VlZGVkLCBhcyB3ZWxsIGFzIGEgY3JpdGljYWwgdGVtcGVyYXR1
cmUgKENUKSBwaW4gdG8gaW5kaWNhdGUgdGhhdCB0aGUKPiArY3JpdGljYWwgdGVtcGVyYXR1cmUg
c2V0IHBvaW50IGhhcyBiZWVuIGV4Y2VlZGVkLiBCb3RoIHBpbnMgY2FuIGJlIHNldCB1cCB3aXRo
IGEKPiArY29tbW9uIGh5c3RlcmVzaXMgb2YgMMKwQyAtIDE1wrBDIGFuZCBhIGZhdWx0IHF1ZXVl
LCByYW5naW5nIGZyb20gMSB0byA0IGV2ZW50cy4KPiArQm90aCBwaW5zIGNhbiBpbmRpdmlkdWFs
bHkgc2V0IHRvIGJlIGFjdGl2ZS1sb3cgb3IgYWN0aXZlLWhpZ2gsIHdoaWxlIHRoZSB3aG9sZQo+
ICtkZXZpY2UgY2FuIGVpdGhlciBydW4gaW4gY29tcGFyYXRvciBtb2RlIG9yIGludGVycnVwdCBt
b2RlLiBUaGUgQURUNzQxMCBzdXBwb3J0cwo+ICtjb250aW51b3VzIHRlbXBlcmF0dXJlIHNhbXBs
aW5nLCBhcyB3ZWxsIGFzIHNhbXBsaW5nIG9uZSB0ZW1wZXJhdHVyZSB2YWx1ZSBwZXIKPiArc2Vj
b25kIG9yIGV2ZW4ganVzdCBnZXQgb25lIHNhbXBsZSBvbiBkZW1hbmQgZm9yIHBvd2VyIHNhdmlu
Zy4gQmVzaWRlcywgaXQgY2FuCj4gK2NvbXBsZXRlbHkgcG93ZXIgZG93biBpdHMgQURDLCBpZiBw
b3dlciBtYW5hZ2VtZW50IGlzIHJlcXVpcmVkLgo+ICsKPiArVGhlIEFEVDczMjAvQURUNzQyMCBp
cyByZWdpc3RlciBjb21wYXRpYmxlLCB0aGUgb25seSBkaWZmZXJlbmNlcyBiZWluZyB0aGUKPiAr
cGFja2FnZSwgYSBzbGlnaHRseSBuYXJyb3dlciBvcGVyYXRpbmcgdGVtcGVyYXR1cmUgcmFuZ2Ug
KC00MMKwQyB0byArMTUwwrBDKSwgYW5kCj4gK2EgYmV0dGVyIGFjY3VyYWN5ICgwLjI1wrBDIGlu
c3RlYWQgb2YgMC41MMKwQy4pCj4gKwo+ICtUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBBRFQ3
MzEwL0FEVDczMjAgYW5kIEFEVDc0MTAvQURUNzQyMCBpcyB0aGUgY29udHJvbAo+ICtpbnRlcmZh
Y2UsIHRoZSBBRFQ3MzEwIGFuZCBBRFQ3MzIwIHVzZSBTUEkgd2hpbGUgdGhlIEFEVDc0MTAgYW5k
IEFEVDc0MjAgdXNlCj4gK0kyQy4KPiAgCj4gIENvbmZpZ3VyYXRpb24gTm90ZXMKPiAgLS0tLS0t
LS0tLS0tLS0tLS0tLQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL0tjb25maWcgYi9kcml2
ZXJzL2h3bW9uL0tjb25maWcKPiBpbmRleCA4OWFjMWNiLi5hYWExNGY0IDEwMDY0NAo+IC0tLSBh
L2RyaXZlcnMvaHdtb24vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvaHdtb24vS2NvbmZpZwo+IEBA
IC0xNzksOSArMTc5LDI5IEBAIGNvbmZpZyBTRU5TT1JTX0FETTkyNDAKPiAgCSAgVGhpcyBkcml2
ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuICBJZiBzbywgdGhlIG1vZHVsZQo+ICAJ
ICB3aWxsIGJlIGNhbGxlZCBhZG05MjQwLgo+ICAKPiArY29uZmlnIFNFTlNPUlNfQURUN1gxMAo+
ICsJdHJpc3RhdGUKPiArCWhlbHAKPiArCSAgVGhpcyBtb2R1bGUgY29udGFpbnMgY29tbW9uIGNv
ZGUgc2hhcmVkIGJ5IHRoZSBBRFQ3MzEwL0FEVDczMjAgYW5kCj4gKwkgIEFEVDc0MTAvQURUNzQy
MCB0ZW1wZXJhdHVyZSBtb25pdG9yaW5nIGNoaXAgZHJpdmVycy4KPiArCj4gKwkgIElmIGJ1aWxk
IGFzIGEgbW9kdWxlLCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFkdDd4MTAuCj4gKwo+ICtj
b25maWcgU0VOU09SU19BRFQ3MzEwCj4gKwl0cmlzdGF0ZSAiQW5hbG9nIERldmljZXMgQURUNzMx
MC9BRFQ3MzIwIgo+ICsJZGVwZW5kcyBvbiBTUElfTUFTVEVSCj4gKwlzZWxlY3QgU0VOU09SU19B
RFQ3WDEwCj4gKwloZWxwCj4gKwkgIElmIHlvdSBzYXkgeWVzIGhlcmUgeW91IGdldCBzdXBwb3J0
IGZvciB0aGUgQW5hbG9nIERldmljZXMKPiArCSAgQURUNzMxMCBhbmQgQURUNzMyMCB0ZW1wZXJh
dHVyZSBtb25pdG9yaW5nIGNoaXBzLgo+ICsKPiArCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUg
YnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUgbW9kdWxlCj4gKwkgIHdpbGwgYmUgY2FsbGVk
IGFkdDczMTAuCj4gKwo+ICBjb25maWcgU0VOU09SU19BRFQ3NDEwCj4gIAl0cmlzdGF0ZSAiQW5h
bG9nIERldmljZXMgQURUNzQxMC9BRFQ3NDIwIgo+ICAJZGVwZW5kcyBvbiBJMkMKPiArCXNlbGVj
dCBTRU5TT1JTX0FEVDdYMTAKPiAgCWhlbHAKPiAgCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3Ug
Z2V0IHN1cHBvcnQgZm9yIHRoZSBBbmFsb2cgRGV2aWNlcwo+ICAJICBBRFQ3NDEwIGFuZCBBRFQ3
NDIwIHRlbXBlcmF0dXJlIG1vbml0b3JpbmcgY2hpcHMuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aHdtb24vTWFrZWZpbGUgYi9kcml2ZXJzL2h3bW9uL01ha2VmaWxlCj4gaW5kZXggOGQ2ZDk3ZS4u
NWQzNmE1NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlCj4gKysrIGIvZHJp
dmVycy9od21vbi9NYWtlZmlsZQo+IEBAIC0zNCw2ICszNCw4IEBAIG9iai0kKENPTkZJR19TRU5T
T1JTX0FETTkyNDApCSs9IGFkbTkyNDAubwo+ICBvYmotJChDT05GSUdfU0VOU09SU19BRFMxMDE1
KQkrPSBhZHMxMDE1Lm8KPiAgb2JqLSQoQ09ORklHX1NFTlNPUlNfQURTNzgyOCkJKz0gYWRzNzgy
OC5vCj4gIG9iai0kKENPTkZJR19TRU5TT1JTX0FEUzc4NzEpCSs9IGFkczc4NzEubwo+ICtvYmot
JChDT05GSUdfU0VOU09SU19BRFQ3WDEwKQkrPSBhZHQ3eDEwLm8KPiArb2JqLSQoQ09ORklHX1NF
TlNPUlNfQURUNzMxMCkJKz0gYWR0NzMxMC5vCj4gIG9iai0kKENPTkZJR19TRU5TT1JTX0FEVDc0
MTApCSs9IGFkdDc0MTAubwo+ICBvYmotJChDT05GSUdfU0VOU09SU19BRFQ3NDExKQkrPSBhZHQ3
NDExLm8KPiAgb2JqLSQoQ09ORklHX1NFTlNPUlNfQURUNzQ2MikJKz0gYWR0NzQ2Mi5vCj4gZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzMxMC5jIGIvZHJpdmVycy9od21vbi9hZHQ3MzEw
LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmY4ZWE2MjkKPiAtLS0g
L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9od21vbi9hZHQ3MzEwLmMKPiBAQCAtMCwwICsxLDEy
MyBAQAo+ICsvKgo+ICsgKiBBRFQ3MzEwL0FEVDczMTAgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5z
b3IgZHJpdmVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAyMDEyLTIwMTMgQW5hbG9nIERldmljZXMg
SW5jLgo+ICsgKiAgIEF1dGhvcjogTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+
Cj4gKyAqCj4gKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBHUEwtMiBvciBsYXRlci4KPiArICovCj4g
Kwo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+
Cj4gKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpLmg+Cj4gKyNpbmNsdWRlIDxhc20vdW5hbGlnbmVk
Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiYWR0N3gxMC5oIgo+ICsKPiArI2RlZmluZSBBRFQ3MzEwX1NU
QVRVUwkJCTAKPiArI2RlZmluZSBBRFQ3MzEwX0NPTkZJRwkJCTEKPiArI2RlZmluZSBBRFQ3MzEw
X1RFTVBFUkFUVVJFCQkyCj4gKyNkZWZpbmUgQURUNzMxMF9JRAkJCTMKPiArI2RlZmluZSBBRFQ3
MzEwX1RfQ1JJVAkJCTQKPiArI2RlZmluZSBBRFQ3MzEwX1RfSFlTVAkJCTUKPiArI2RlZmluZSBB
RFQ3MzEwX1RfQUxBUk1fSElHSAkJNgo+ICsjZGVmaW5lIEFEVDczMTBfVF9BTEFSTV9MT1cJCTcK
PiArCj4gK3N0YXRpYyBjb25zdCB1OCBhZHQ3MzEwX3JlZ190YWJsZVtdID0gewo+ICsJW0FEVDdY
MTBfVEVNUEVSQVRVUkVdICAgPSBBRFQ3MzEwX1RFTVBFUkFUVVJFLAo+ICsJW0FEVDdYMTBfU1RB
VFVTXQk9IEFEVDczMTBfU1RBVFVTLAo+ICsJW0FEVDdYMTBfQ09ORklHXQk9IEFEVDczMTBfQ09O
RklHLAo+ICsJW0FEVDdYMTBfVF9BTEFSTV9ISUdIXQk9IEFEVDczMTBfVF9BTEFSTV9ISUdILAo+
ICsJW0FEVDdYMTBfVF9BTEFSTV9MT1ddCT0gQURUNzMxMF9UX0FMQVJNX0xPVywKPiArCVtBRFQ3
WDEwX1RfQ1JJVF0JPSBBRFQ3MzEwX1RfQ1JJVCwKPiArCVtBRFQ3WDEwX1RfSFlTVF0JPSBBRFQ3
MzEwX1RfSFlTVCwKPiArCVtBRFQ3WDEwX0lEXQkJPSBBRFQ3MzEwX0lELAo+ICt9Owo+ICsKPiAr
I2RlZmluZSBBRFQ3MzEwX0NNRF9SRUdfT0ZGU0VUCTMKPiArI2RlZmluZSBBRFQ3MzEwX0NNRF9S
RUFECTB4NDAKPiArCj4gKyNkZWZpbmUgQUQ3MzEwX0NPTU1BTkQocmVnKSAoYWR0NzMxMF9yZWdf
dGFibGVbKHJlZyldIDw8IEFEVDczMTBfQ01EX1JFR19PRkZTRVQpCj4gKwo+ICtzdGF0aWMgaW50
IGFkdDczMTBfc3BpX3JlYWRfd29yZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4IHJlZykKPiArewo+
ICsJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9IHRvX3NwaV9kZXZpY2UoZGV2KTsKPiArCWludCBy
ZXQ7Cj4gKwo+ICsJcmV0ID0gc3BpX3c4cjE2KHNwaSwgQUQ3MzEwX0NPTU1BTkQocmVnKSB8IEFE
VDczMTBfQ01EX1JFQUQpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g
KwlyZXR1cm4gYmUxNl90b19jcHUocmV0KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHQ3MzEw
X3NwaV93cml0ZV93b3JkKHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVnLCB1MTYgZGF0YSkKPiAr
ewo+ICsJc3RydWN0IHNwaV9kZXZpY2UgKnNwaSA9IHRvX3NwaV9kZXZpY2UoZGV2KTsKPiArCXU4
IGJ1ZlszXTsKPiArCj4gKwlidWZbMF0gPSBBRDczMTBfQ09NTUFORChyZWcpOwo+ICsJcHV0X3Vu
YWxpZ25lZF9iZTE2KGRhdGEsICZidWZbMV0pOwo+ICsKPiArCXJldHVybiBzcGlfd3JpdGUoc3Bp
LCBidWYsIHNpemVvZihidWYpKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHQ3MzEwX3NwaV9y
ZWFkX2J5dGUoc3RydWN0IGRldmljZSAqZGV2LCB1OCByZWcpCj4gK3sKPiArCXN0cnVjdCBzcGlf
ZGV2aWNlICpzcGkgPSB0b19zcGlfZGV2aWNlKGRldik7Cj4gKwo+ICsJcmV0dXJuIHNwaV93OHI4
KHNwaSwgQUQ3MzEwX0NPTU1BTkQocmVnKSB8IEFEVDczMTBfQ01EX1JFQUQpOwo+ICt9Cj4gKwo+
ICtzdGF0aWMgaW50IGFkdDczMTBfc3BpX3dyaXRlX2J5dGUoc3RydWN0IGRldmljZSAqZGV2LCB1
OCByZWcsCj4gKwl1OCBkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpID0gdG9f
c3BpX2RldmljZShkZXYpOwo+ICsJdTggYnVmWzJdOwo+ICsKPiArCWJ1ZlswXSA9IEFENzMxMF9D
T01NQU5EKHJlZyk7Cj4gKwlidWZbMV0gPSBkYXRhOwo+ICsKPiArCXJldHVybiBzcGlfd3JpdGUo
c3BpLCBidWYsIHNpemVvZihidWYpKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBh
ZHQ3eDEwX29wcyBhZHQ3MzEwX3NwaV9vcHMgPSB7Cj4gKwkucmVhZF93b3JkID0gYWR0NzMxMF9z
cGlfcmVhZF93b3JkLAo+ICsJLndyaXRlX3dvcmQgPSBhZHQ3MzEwX3NwaV93cml0ZV93b3JkLAo+
ICsJLnJlYWRfYnl0ZSA9IGFkdDczMTBfc3BpX3JlYWRfYnl0ZSwKPiArCS53cml0ZV9ieXRlID0g
YWR0NzMxMF9zcGlfd3JpdGVfYnl0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgYWR0NzMxMF9z
cGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKPiArewo+ICsJcmV0dXJuIGFkdDd4MTBf
cHJvYmUoJnNwaS0+ZGV2LCBzcGlfZ2V0X2RldmljZV9pZChzcGkpLT5uYW1lLAo+ICsJCQkmYWR0
NzMxMF9zcGlfb3BzKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHQ3MzEwX3NwaV9yZW1vdmUo
c3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKPiArewo+ICsJcmV0dXJuIGFkdDd4MTBfcmVtb3ZlKCZz
cGktPmRldik7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3BpX2RldmljZV9pZCBh
ZHQ3MzEwX2lkW10gPSB7Cj4gKwl7ICJhZHQ3MzEwIiwgMCB9LAo+ICsJeyAiYWR0NzMyMCIsIDAg
fSwKPiArCXt9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBhZHQ3MzEwX2lkKTsK
PiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc3BpX2RyaXZlciBhZHQ3MzEwX2RyaXZlciA9IHsKPiArCS5k
cml2ZXIgPSB7Cj4gKwkJLm5hbWUJPSAiYWR0NzMxMCIsCj4gKwkJLm93bmVyCT0gVEhJU19NT0RV
TEUsCj4gKwkJLnBtCT0gQURUN1gxMF9ERVZfUE1fT1BTLAo+ICsJfSwKPiArCS5wcm9iZQkJPSBh
ZHQ3MzEwX3NwaV9wcm9iZSwKPiArCS5yZW1vdmUJCT0gYWR0NzMxMF9zcGlfcmVtb3ZlLAo+ICsJ
LmlkX3RhYmxlCT0gYWR0NzMxMF9pZCwKPiArfTsKPiArbW9kdWxlX3NwaV9kcml2ZXIoYWR0NzMx
MF9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigiTGFycy1QZXRlciBDbGF1c2VuIDxsYXJz
QG1ldGFmb28uZGU+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiQURUNzMxMC9BRFQ3MzIwIGRy
aXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv
aHdtb24vYWR0NzQxMC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDEwLmMKPiBpbmRleCA4OTRmZjcx
Li5kMjk0NDQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMC5jCj4gKysrIGIv
ZHJpdmVycy9od21vbi9hZHQ3NDEwLmMKPiBAQCAtMSw0ODUgKzEsODAgQEAKPiAgLyoKPiAtICog
YWR0NzQxMC5jIC0gUGFydCBvZiBsbV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3Ig
aGFyZHdhcmUKPiAtICoJIG1vbml0b3JpbmcKPiAtICogVGhpcyBkcml2ZXIgaGFuZGxlcyB0aGUg
QURUNzQxMCBhbmQgY29tcGF0aWJsZSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvcnMuCj4gLSAq
IEhhcnRtdXQgS25hYWNrIDxrbmFhY2suaEBnbXguZGU+IDIwMTItMDctMjIKPiAtICogYmFzZWQg
b24gbG03NS5jIGJ5IEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4KPiAtICogYW5kIGFk
dDc0MTAuYyBmcm9tIGlpby1zdGFnaW5nIGJ5IFNvbmljIFpoYW5nIDxzb25pYy56aGFuZ0BhbmFs
b2cuY29tPgo+ICsgKiBBRFQ3NDEwL0FEVDc0MjAgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3Ig
ZHJpdmVyCj4gICAqCj4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yCj4gLSAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqIENv
cHlyaWdodCAyMDEyLTIwMTMgQW5hbG9nIERldmljZXMgSW5jLgo+ICsgKiAgIEF1dGhvcjogTGFy
cy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+Cj4gICAqCj4gLSAqIFRoaXMgcHJvZ3Jh
bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+IC0g
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgo+IC0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlCj4gLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCj4gLSAqCj4gLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCj4gLSAqIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gLSAqIEZvdW5kYXRp
b24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgo+ICsgKiBM
aWNlbnNlZCB1bmRlciB0aGUgR1BMLTIgb3IgbGF0ZXIuCj4gICAqLwo+ICAKPiAgI2luY2x1ZGUg
PGxpbnV4L21vZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+IC0jaW5jbHVkZSA8
bGludXgvc2xhYi5oPgo+IC0jaW5jbHVkZSA8bGludXgvamlmZmllcy5oPgo+ICAjaW5jbHVkZSA8
bGludXgvaTJjLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+IC0jaW5jbHVkZSA8bGlu
dXgvaHdtb24tc3lzZnMuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+IC0jaW5jbHVkZSA8
bGludXgvbXV0ZXguaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gLQo+IC0vKgo+IC0g
KiBBRFQ3NDEwIHJlZ2lzdGVycyBkZWZpbml0aW9uCj4gLSAqLwo+IC0KPiAtI2RlZmluZSBBRFQ3
NDEwX1RFTVBFUkFUVVJFCQkwCj4gLSNkZWZpbmUgQURUNzQxMF9TVEFUVVMJCQkyCj4gLSNkZWZp
bmUgQURUNzQxMF9DT05GSUcJCQkzCj4gLSNkZWZpbmUgQURUNzQxMF9UX0FMQVJNX0hJR0gJCTQK
PiAtI2RlZmluZSBBRFQ3NDEwX1RfQUxBUk1fTE9XCQk2Cj4gLSNkZWZpbmUgQURUNzQxMF9UX0NS
SVQJCQk4Cj4gLSNkZWZpbmUgQURUNzQxMF9UX0hZU1QJCQkweEEKPiAtCj4gLS8qCj4gLSAqIEFE
VDc0MTAgc3RhdHVzCj4gLSAqLwo+IC0jZGVmaW5lIEFEVDc0MTBfU1RBVF9UX0xPVwkJKDEgPDwg
NCkKPiAtI2RlZmluZSBBRFQ3NDEwX1NUQVRfVF9ISUdICQkoMSA8PCA1KQo+IC0jZGVmaW5lIEFE
VDc0MTBfU1RBVF9UX0NSSVQJCSgxIDw8IDYpCj4gLSNkZWZpbmUgQURUNzQxMF9TVEFUX05PVF9S
RFkJCSgxIDw8IDcpCj4gLQo+IC0vKgo+IC0gKiBBRFQ3NDEwIGNvbmZpZwo+IC0gKi8KPiAtI2Rl
ZmluZSBBRFQ3NDEwX0ZBVUxUX1FVRVVFX01BU0sJKDEgPDwgMCB8IDEgPDwgMSkKPiAtI2RlZmlu
ZSBBRFQ3NDEwX0NUX1BPTEFSSVRZCQkoMSA8PCAyKQo+IC0jZGVmaW5lIEFEVDc0MTBfSU5UX1BP
TEFSSVRZCQkoMSA8PCAzKQo+IC0jZGVmaW5lIEFEVDc0MTBfRVZFTlRfTU9ERQkJKDEgPDwgNCkK
PiAtI2RlZmluZSBBRFQ3NDEwX01PREVfTUFTSwkJKDEgPDwgNSB8IDEgPDwgNikKPiAtI2RlZmlu
ZSBBRFQ3NDEwX0ZVTEwJCQkoMCA8PCA1IHwgMCA8PCA2KQo+IC0jZGVmaW5lIEFEVDc0MTBfUEQJ
CQkoMSA8PCA1IHwgMSA8PCA2KQo+IC0jZGVmaW5lIEFEVDc0MTBfUkVTT0xVVElPTgkJKDEgPDwg
NykKPiAtCj4gLS8qCj4gLSAqIEFEVDc0MTAgbWFza3MKPiAtICovCj4gLSNkZWZpbmUgQURUNzQx
MF9UMTNfVkFMVUVfTUFTSwkJCTB4RkZGOAo+IC0jZGVmaW5lIEFEVDc0MTBfVF9IWVNUX01BU0sJ
CQkweEYKPiAtCj4gLS8qIHN0cmFpZ2h0IGZyb20gdGhlIGRhdGFzaGVldCAqLwo+IC0jZGVmaW5l
IEFEVDc0MTBfVEVNUF9NSU4gKC01NTAwMCkKPiAtI2RlZmluZSBBRFQ3NDEwX1RFTVBfTUFYIDE1
MDAwMAo+IC0KPiAtZW51bSBhZHQ3NDEwX3R5cGUgewkJLyoga2VlcCBzb3J0ZWQgaW4gYWxwaGFi
ZXRpY2FsIG9yZGVyICovCj4gLQlhZHQ3NDEwLAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHU4
IEFEVDc0MTBfUkVHX1RFTVBbNF0gPSB7Cj4gLQlBRFQ3NDEwX1RFTVBFUkFUVVJFLAkJLyogaW5w
dXQgKi8KPiAtCUFEVDc0MTBfVF9BTEFSTV9ISUdILAkJLyogaGlnaCAqLwo+IC0JQURUNzQxMF9U
X0FMQVJNX0xPVywJCS8qIGxvdyAqLwo+IC0JQURUNzQxMF9UX0NSSVQsCQkJLyogY3JpdGljYWwg
Ki8KPiAtfTsKPiAtCj4gLS8qIEVhY2ggY2xpZW50IGhhcyB0aGlzIGFkZGl0aW9uYWwgZGF0YSAq
Lwo+IC1zdHJ1Y3QgYWR0NzQxMF9kYXRhIHsKPiAtCXN0cnVjdCBkZXZpY2UJCSpod21vbl9kZXY7
Cj4gLQlzdHJ1Y3QgbXV0ZXgJCXVwZGF0ZV9sb2NrOwo+IC0JdTgJCQljb25maWc7Cj4gLQl1OAkJ
CW9sZGNvbmZpZzsKPiAtCWJvb2wJCQl2YWxpZDsJCS8qIHRydWUgaWYgcmVnaXN0ZXJzIHZhbGlk
ICovCj4gLQl1bnNpZ25lZCBsb25nCQlsYXN0X3VwZGF0ZWQ7CS8qIEluIGppZmZpZXMgKi8KPiAt
CXMxNgkJCXRlbXBbNF07CS8qIFJlZ2lzdGVyIHZhbHVlcywKPiAtCQkJCQkJICAgMCA9IGlucHV0
Cj4gLQkJCQkJCSAgIDEgPSBoaWdoCj4gLQkJCQkJCSAgIDIgPSBsb3cKPiAtCQkJCQkJICAgMyA9
IGNyaXRpY2FsICovCj4gLQl1OAkJCWh5c3Q7CQkvKiBoeXN0ZXJlc2lzIG9mZnNldCAqLwo+IC19
Owo+IC0KPiAtLyoKPiAtICogYWR0NzQxMCByZWdpc3RlciBhY2Nlc3MgYnkgSTJDCj4gLSAqLwo+
IC1zdGF0aWMgaW50IGFkdDc0MTBfdGVtcF9yZWFkeShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50
KQo+IC17Cj4gLQlpbnQgaSwgc3RhdHVzOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCA2OyBpKysp
IHsKPiAtCQlzdGF0dXMgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDEw
X1NUQVRVUyk7Cj4gLQkJaWYgKHN0YXR1cyA8IDApCj4gLQkJCXJldHVybiBzdGF0dXM7Cj4gLQkJ
aWYgKCEoc3RhdHVzICYgQURUNzQxMF9TVEFUX05PVF9SRFkpKQo+IC0JCQlyZXR1cm4gMDsKPiAt
CQltc2xlZXAoNjApOwo+IC0JfQo+IC0JcmV0dXJuIC1FVElNRURPVVQ7Cj4gLX0KPiAtCj4gLXN0
YXRpYyBpbnQgYWR0NzQxMF91cGRhdGVfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gLXsKPiAt
CXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7Cj4gLQlzdHJ1
Y3QgYWR0NzQxMF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gLQlp
bnQgcmV0ID0gMDsKPiAtCj4gLQltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7Cj4gLQo+
IC0JaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgZGF0YS0+bGFzdF91cGRhdGVkICsgSFogKyBIWiAv
IDIpCj4gLQkgICAgfHwgIWRhdGEtPnZhbGlkKSB7Cj4gLQkJaW50IHRlbXA7Cj4gLQo+IC0JCWRl
dl9kYmcoJmNsaWVudC0+ZGV2LCAiU3RhcnRpbmcgdXBkYXRlXG4iKTsKPiAtCj4gLQkJcmV0ID0g
YWR0NzQxMF90ZW1wX3JlYWR5KGNsaWVudCk7IC8qIGNoZWNrIGZvciBuZXcgdmFsdWUgKi8KPiAt
CQlpZiAocmV0KQo+IC0JCQlnb3RvIGFib3J0Owo+IC0KPiAtCQl0ZW1wID0gaTJjX3NtYnVzX3Jl
YWRfd29yZF9zd2FwcGVkKGNsaWVudCwgQURUNzQxMF9SRUdfVEVNUFswXSk7Cj4gLQkJaWYgKHRl
bXAgPCAwKSB7Cj4gLQkJCXJldCA9IHRlbXA7Cj4gLQkJCWRldl9kYmcoZGV2LCAiRmFpbGVkIHRv
IHJlYWQgdmFsdWU6IHJlZyAlZCwgZXJyb3IgJWRcbiIsCj4gLQkJCQlBRFQ3NDEwX1JFR19URU1Q
WzBdLCByZXQpOwo+IC0JCQlnb3RvIGFib3J0Owo+IC0JCX0KPiAtCQlkYXRhLT50ZW1wWzBdID0g
dGVtcDsKPiAtCj4gLQkJZGF0YS0+bGFzdF91cGRhdGVkID0gamlmZmllczsKPiAtCQlkYXRhLT52
YWxpZCA9IHRydWU7Cj4gLQl9Cj4gLQo+IC1hYm9ydDoKPiAtCW11dGV4X3VubG9jaygmZGF0YS0+
dXBkYXRlX2xvY2spOwo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBhZHQ3
NDEwX2ZpbGxfY2FjaGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKPiAtewo+IC0Jc3RydWN0
IGFkdDc0MTBfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IC0JaW50
IHJldDsKPiAtCWludCBpOwo+IC0KPiAtCWZvciAoaSA9IDE7IGkgPCBBUlJBWV9TSVpFKEFEVDc0
MTBfUkVHX1RFTVApOyBpKyspIHsKPiAtCQlyZXQgPSBpMmNfc21idXNfcmVhZF93b3JkX3N3YXBw
ZWQoY2xpZW50LCBBRFQ3NDEwX1JFR19URU1QW2ldKTsKPiAtCQlpZiAocmV0IDwgMCkgewo+IC0J
CQlkZXZfZGJnKCZjbGllbnQtPmRldiwKPiAtCQkJCSJGYWlsZWQgdG8gcmVhZCB2YWx1ZTogcmVn
ICVkLCBlcnJvciAlZFxuIiwKPiAtCQkJCUFEVDc0MTBfUkVHX1RFTVBbaV0sIHJldCk7Cj4gLQkJ
CXJldHVybiByZXQ7Cj4gLQkJfQo+IC0JCWRhdGEtPnRlbXBbaV0gPSByZXQ7Cj4gLQl9Cj4gLQo+
IC0JcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQxMF9UX0hZU1Qp
Owo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQlkZXZfZGJnKCZjbGllbnQtPmRldiwKPiAtCQkJIkZh
aWxlZCB0byByZWFkIHZhbHVlOiBoeXN0IHJlZywgZXJyb3IgJWRcbiIsCj4gLQkJCXJldCk7Cj4g
LQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCWRhdGEtPmh5c3QgPSByZXQ7Cj4gLQo+IC0JcmV0dXJu
IDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzMTYgQURUNzQxMF9URU1QX1RPX1JFRyhsb25nIHRlbXAp
Cj4gLXsKPiAtCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChjbGFtcF92YWwodGVtcCwgQURUNzQx
MF9URU1QX01JTiwKPiAtCQkJCQkgICBBRFQ3NDEwX1RFTVBfTUFYKSAqIDEyOCwgMTAwMCk7Cj4g
LX0KPiAtCj4gLXN0YXRpYyBpbnQgQURUNzQxMF9SRUdfVE9fVEVNUChzdHJ1Y3QgYWR0NzQxMF9k
YXRhICpkYXRhLCBzMTYgcmVnKQo+IC17Cj4gLQkvKiBpbiAxMyBiaXQgbW9kZSwgYml0cyAwLTIg
YXJlIHN0YXR1cyBmbGFncyAtIG1hc2sgdGhlbSBvdXQgKi8KPiAtCWlmICghKGRhdGEtPmNvbmZp
ZyAmIEFEVDc0MTBfUkVTT0xVVElPTikpCj4gLQkJcmVnICY9IEFEVDc0MTBfVDEzX1ZBTFVFX01B
U0s7Cj4gLQkvKgo+IC0JICogdGVtcGVyYXR1cmUgaXMgc3RvcmVkIGluIHR3b3MgY29tcGxlbWVu
dCBmb3JtYXQsIGluIHN0ZXBzIG9mCj4gLQkgKiAxLzEyOMKwQwo+IC0JICovCj4gLQlyZXR1cm4g
RElWX1JPVU5EX0NMT1NFU1QocmVnICogMTAwMCwgMTI4KTsKPiAtfQo+IC0KPiAtLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSovCj4gIAo+IC0vKiBzeXNmcyBhdHRyaWJ1dGVzIGZvciBod21vbiAqLwo+ICsjaW5j
bHVkZSAiYWR0N3gxMC5oIgo+ICAKPiAtc3RhdGljIHNzaXplX3QgYWR0NzQxMF9zaG93X3RlbXAo
c3RydWN0IGRldmljZSAqZGV2LAo+IC0JCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwg
Y2hhciAqYnVmKQo+ICtzdGF0aWMgaW50IGFkdDc0MTBfaTJjX3JlYWRfd29yZChzdHJ1Y3QgZGV2
aWNlICpkZXYsIHU4IHJlZykKPiAgewo+IC0Jc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRl
ICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRhKTsKPiAtCXN0cnVjdCBpMmNfY2xpZW50ICpj
bGllbnQgPSB0b19pMmNfY2xpZW50KGRldik7Cj4gLQlzdHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRh
ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gLQo+IC0JaWYgKGF0dHItPmluZGV4ID09
IDApIHsKPiAtCQlpbnQgcmV0Owo+IC0KPiAtCQlyZXQgPSBhZHQ3NDEwX3VwZGF0ZV90ZW1wKGRl
dik7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlyZXR1cm4g
c3ByaW50ZihidWYsICIlZFxuIiwgQURUNzQxMF9SRUdfVE9fVEVNUChkYXRhLAo+IC0JCSAgICAg
ICBkYXRhLT50ZW1wW2F0dHItPmluZGV4XSkpOwo+ICsJcmV0dXJuIGkyY19zbWJ1c19yZWFkX3dv
cmRfc3dhcHBlZCh0b19pMmNfY2xpZW50KGRldiksIHJlZyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBz
c2l6ZV90IGFkdDc0MTBfc2V0X3RlbXAoc3RydWN0IGRldmljZSAqZGV2LAo+IC0JCQkJc3RydWN0
IGRldmljZV9hdHRyaWJ1dGUgKmRhLAo+IC0JCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291
bnQpCj4gK3N0YXRpYyBpbnQgYWR0NzQxMF9pMmNfd3JpdGVfd29yZChzdHJ1Y3QgZGV2aWNlICpk
ZXYsIHU4IHJlZywgdTE2IGRhdGEpCj4gIHsKPiAtCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJp
YnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkYSk7Cj4gLQlzdHJ1Y3QgaTJjX2NsaWVu
dCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOwo+IC0Jc3RydWN0IGFkdDc0MTBfZGF0YSAq
ZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IC0JaW50IG5yID0gYXR0ci0+aW5k
ZXg7Cj4gLQlsb25nIHRlbXA7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGtzdHJ0b2woYnVm
LCAxMCwgJnRlbXApOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAtCW11dGV4
X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKPiAtCWRhdGEtPnRlbXBbbnJdID0gQURUNzQxMF9U
RU1QX1RPX1JFRyh0ZW1wKTsKPiAtCXJldCA9IGkyY19zbWJ1c193cml0ZV93b3JkX3N3YXBwZWQo
Y2xpZW50LCBBRFQ3NDEwX1JFR19URU1QW25yXSwKPiAtCQkJCQkgICBkYXRhLT50ZW1wW25yXSk7
Cj4gLQlpZiAocmV0KQo+IC0JCWNvdW50ID0gcmV0Owo+IC0JbXV0ZXhfdW5sb2NrKCZkYXRhLT51
cGRhdGVfbG9jayk7Cj4gLQlyZXR1cm4gY291bnQ7Cj4gKwlyZXR1cm4gaTJjX3NtYnVzX3dyaXRl
X3dvcmRfc3dhcHBlZCh0b19pMmNfY2xpZW50KGRldiksIHJlZywgZGF0YSk7Cj4gIH0KPiAgCj4g
LXN0YXRpYyBzc2l6ZV90IGFkdDc0MTBfc2hvd190X2h5c3Qoc3RydWN0IGRldmljZSAqZGV2LAo+
IC0JCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRhLAo+IC0JCQkJICAgY2hhciAqYnVm
KQo+ICtzdGF0aWMgaW50IGFkdDc0MTBfaTJjX3JlYWRfYnl0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs
IHU4IHJlZykKPiAgewo+IC0Jc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0g
dG9fc2Vuc29yX2Rldl9hdHRyKGRhKTsKPiAtCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0
b19pMmNfY2xpZW50KGRldik7Cj4gLQlzdHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRhID0gaTJjX2dl
dF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gLQlpbnQgbnIgPSBhdHRyLT5pbmRleDsKPiAtCWludCBo
eXN0Owo+IC0KPiAtCWh5c3QgPSAoZGF0YS0+aHlzdCAmIEFEVDc0MTBfVF9IWVNUX01BU0spICog
MTAwMDsKPiAtCj4gLQkvKgo+IC0JICogaHlzdGVyZXNpcyBpcyBzdG9yZWQgYXMgYSA0IGJpdCBv
ZmZzZXQgaW4gdGhlIGRldmljZSwgY29udmVydCBpdAo+IC0JICogdG8gYW4gYWJzb2x1dGUgdmFs
dWUKPiAtCSAqLwo+IC0JaWYgKG5yID09IDIpCS8qIG1pbiBoYXMgcG9zaXRpdmUgb2Zmc2V0LCBv
dGhlcnMgaGF2ZSBuZWdhdGl2ZSAqLwo+IC0JCWh5c3QgPSAtaHlzdDsKPiAtCXJldHVybiBzcHJp
bnRmKGJ1ZiwgIiVkXG4iLAo+IC0JCSAgICAgICBBRFQ3NDEwX1JFR19UT19URU1QKGRhdGEsIGRh
dGEtPnRlbXBbbnJdKSAtIGh5c3QpOwo+ICsJcmV0dXJuIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0
YSh0b19pMmNfY2xpZW50KGRldiksIHJlZyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzc2l6ZV90IGFk
dDc0MTBfc2V0X3RfaHlzdChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gLQkJCQkgIHN0cnVjdCBkZXZp
Y2VfYXR0cmlidXRlICpkYSwKPiAtCQkJCSAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQp
Cj4gK3N0YXRpYyBpbnQgYWR0NzQxMF9pMmNfd3JpdGVfYnl0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs
IHU4IHJlZywgdTggZGF0YSkKPiAgewo+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRv
X2kyY19jbGllbnQoZGV2KTsKPiAtCXN0cnVjdCBhZHQ3NDEwX2RhdGEgKmRhdGEgPSBpMmNfZ2V0
X2NsaWVudGRhdGEoY2xpZW50KTsKPiAtCWludCBsaW1pdCwgcmV0Owo+IC0JbG9uZyBoeXN0Owo+
IC0KPiAtCXJldCA9IGtzdHJ0b2woYnVmLCAxMCwgJmh5c3QpOwo+IC0JaWYgKHJldCkKPiAtCQly
ZXR1cm4gcmV0Owo+IC0JLyogY29udmVydCBhYnNvbHV0ZSBoeXN0ZXJlc2lzIHZhbHVlIHRvIGEg
NCBiaXQgZGVsdGEgdmFsdWUgKi8KPiAtCWxpbWl0ID0gQURUNzQxMF9SRUdfVE9fVEVNUChkYXRh
LCBkYXRhLT50ZW1wWzFdKTsKPiAtCWh5c3QgPSBjbGFtcF92YWwoaHlzdCwgQURUNzQxMF9URU1Q
X01JTiwgQURUNzQxMF9URU1QX01BWCk7Cj4gLQlkYXRhLT5oeXN0ID0gY2xhbXBfdmFsKERJVl9S
T1VORF9DTE9TRVNUKGxpbWl0IC0gaHlzdCwgMTAwMCksIDAsCj4gLQkJCSAgICAgICBBRFQ3NDEw
X1RfSFlTVF9NQVNLKTsKPiAtCXJldCA9IGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50
LCBBRFQ3NDEwX1RfSFlTVCwgZGF0YS0+aHlzdCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiBy
ZXQ7Cj4gLQo+IC0JcmV0dXJuIGNvdW50Owo+ICsJcmV0dXJuIGkyY19zbWJ1c193cml0ZV9ieXRl
X2RhdGEodG9faTJjX2NsaWVudChkZXYpLCByZWcsIGRhdGEpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg
c3NpemVfdCBhZHQ3NDEwX3Nob3dfYWxhcm0oc3RydWN0IGRldmljZSAqZGV2LAo+IC0JCQkJICBz
dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGEsCj4gLQkJCQkgIGNoYXIgKmJ1ZikKPiAtewo+IC0J
c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2KTsKPiAtCXN0cnVj
dCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkYSk7
Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShjbGll
bnQsIEFEVDc0MTBfU1RBVFVTKTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4g
LQo+IC0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsICEhKHJldCAmIGF0dHItPmluZGV4KSk7
Cj4gLX0KPiAtCj4gLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfaW5wdXQsIFNfSVJV
R08sIGFkdDc0MTBfc2hvd190ZW1wLCBOVUxMLCAwKTsKPiAtc3RhdGljIFNFTlNPUl9ERVZJQ0Vf
QVRUUih0ZW1wMV9tYXgsIFNfSVdVU1IgfCBTX0lSVUdPLAo+IC0JCQkgIGFkdDc0MTBfc2hvd190
ZW1wLCBhZHQ3NDEwX3NldF90ZW1wLCAxKTsKPiAtc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0
ZW1wMV9taW4sIFNfSVdVU1IgfCBTX0lSVUdPLAo+IC0JCQkgIGFkdDc0MTBfc2hvd190ZW1wLCBh
ZHQ3NDEwX3NldF90ZW1wLCAyKTsKPiAtc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9j
cml0LCBTX0lXVVNSIHwgU19JUlVHTywKPiAtCQkJICBhZHQ3NDEwX3Nob3dfdGVtcCwgYWR0NzQx
MF9zZXRfdGVtcCwgMyk7Cj4gLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfbWF4X2h5
c3QsIFNfSVdVU1IgfCBTX0lSVUdPLAo+IC0JCQkgIGFkdDc0MTBfc2hvd190X2h5c3QsIGFkdDc0
MTBfc2V0X3RfaHlzdCwgMSk7Cj4gLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfbWlu
X2h5c3QsIFNfSVJVR08sCj4gLQkJCSAgYWR0NzQxMF9zaG93X3RfaHlzdCwgTlVMTCwgMik7Cj4g
LXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfY3JpdF9oeXN0LCBTX0lSVUdPLAo+IC0J
CQkgIGFkdDc0MTBfc2hvd190X2h5c3QsIE5VTEwsIDMpOwo+IC1zdGF0aWMgU0VOU09SX0RFVklD
RV9BVFRSKHRlbXAxX21pbl9hbGFybSwgU19JUlVHTywgYWR0NzQxMF9zaG93X2FsYXJtLAo+IC0J
CQkgIE5VTEwsIEFEVDc0MTBfU1RBVF9UX0xPVyk7Cj4gLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FU
VFIodGVtcDFfbWF4X2FsYXJtLCBTX0lSVUdPLCBhZHQ3NDEwX3Nob3dfYWxhcm0sCj4gLQkJCSAg
TlVMTCwgQURUNzQxMF9TVEFUX1RfSElHSCk7Cj4gLXN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIo
dGVtcDFfY3JpdF9hbGFybSwgU19JUlVHTywgYWR0NzQxMF9zaG93X2FsYXJtLAo+IC0JCQkgIE5V
TEwsIEFEVDc0MTBfU1RBVF9UX0NSSVQpOwo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg
KmFkdDc0MTBfYXR0cmlidXRlc1tdID0gewo+IC0JJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9pbnB1
dC5kZXZfYXR0ci5hdHRyLAo+IC0JJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9tYXguZGV2X2F0dHIu
YXR0ciwKPiAtCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWluLmRldl9hdHRyLmF0dHIsCj4gLQkm
c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2NyaXQuZGV2X2F0dHIuYXR0ciwKPiAtCSZzZW5zb3JfZGV2
X2F0dHJfdGVtcDFfbWF4X2h5c3QuZGV2X2F0dHIuYXR0ciwKPiAtCSZzZW5zb3JfZGV2X2F0dHJf
dGVtcDFfbWluX2h5c3QuZGV2X2F0dHIuYXR0ciwKPiAtCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFf
Y3JpdF9oeXN0LmRldl9hdHRyLmF0dHIsCj4gLQkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX21pbl9h
bGFybS5kZXZfYXR0ci5hdHRyLAo+IC0JJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9tYXhfYWxhcm0u
ZGV2X2F0dHIuYXR0ciwKPiAtCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfY3JpdF9hbGFybS5kZXZf
YXR0ci5hdHRyLAo+IC0JTlVMTAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFkdDd4MTBfb3BzIGFk
dDc0MTBfaTJjX29wcyA9IHsKPiArCS5yZWFkX3dvcmQgPSBhZHQ3NDEwX2kyY19yZWFkX3dvcmQs
Cj4gKwkud3JpdGVfd29yZCA9IGFkdDc0MTBfaTJjX3dyaXRlX3dvcmQsCj4gKwkucmVhZF9ieXRl
ID0gYWR0NzQxMF9pMmNfcmVhZF9ieXRlLAo+ICsJLndyaXRlX2J5dGUgPSBhZHQ3NDEwX2kyY193
cml0ZV9ieXRlLAo+ICB9Owo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv
dXAgYWR0NzQxMF9ncm91cCA9IHsKPiAtCS5hdHRycyA9IGFkdDc0MTBfYXR0cmlidXRlcywKPiAt
fTsKPiAtCj4gLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo+IC0KPiAtLyogZGV2aWNlIHByb2JlIGFuZCBy
ZW1vdmFsICovCj4gLQo+IC1zdGF0aWMgaW50IGFkdDc0MTBfcHJvYmUoc3RydWN0IGkyY19jbGll
bnQgKmNsaWVudCwKPiAtCQkJIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKPiArc3Rh
dGljIGludCBhZHQ3NDEwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAo+ICsJ
Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQo+ICB7Cj4gLQlzdHJ1Y3QgYWR0NzQxMF9k
YXRhICpkYXRhOwo+IC0JaW50IHJldDsKPiAtCj4gIAlpZiAoIWkyY19jaGVja19mdW5jdGlvbmFs
aXR5KGNsaWVudC0+YWRhcHRlciwKPiAgCQkJSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBIHwgSTJD
X0ZVTkNfU01CVVNfV09SRF9EQVRBKSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQlkYXRh
ID0gZGV2bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKHN0cnVjdCBhZHQ3NDEwX2RhdGEp
LAo+IC0JCQkgICAgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIWRhdGEpCj4gLQkJcmV0dXJuIC1FTk9N
RU07Cj4gLQo+IC0JaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7Cj4gLQltdXRleF9p
bml0KCZkYXRhLT51cGRhdGVfbG9jayk7Cj4gLQo+IC0JLyogY29uZmlndXJlIGFzIHNwZWNpZmll
ZCAqLwo+IC0JcmV0ID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQxMF9D
T05GSUcpOwo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQlkZXZfZGJnKCZjbGllbnQtPmRldiwgIkNh
bid0IHJlYWQgY29uZmlnPyAlZFxuIiwgcmV0KTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0J
ZGF0YS0+b2xkY29uZmlnID0gcmV0Owo+IC0JLyoKPiAtCSAqIFNldCB0byAxNiBiaXQgcmVzb2x1
dGlvbiwgY29udGlub3VzIGNvbnZlcnNpb24gYW5kIGNvbXBhcmF0b3IgbW9kZS4KPiAtCSAqLwo+
IC0JcmV0ICY9IH5BRFQ3NDEwX01PREVfTUFTSzsKPiAtCWRhdGEtPmNvbmZpZyA9IHJldCB8IEFE
VDc0MTBfRlVMTCB8IEFEVDc0MTBfUkVTT0xVVElPTiB8Cj4gLQkJCUFEVDc0MTBfRVZFTlRfTU9E
RTsKPiAtCWlmIChkYXRhLT5jb25maWcgIT0gZGF0YS0+b2xkY29uZmlnKSB7Cj4gLQkJcmV0ID0g
aTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGllbnQsIEFEVDc0MTBfQ09ORklHLAo+IC0JCQkJ
CQlkYXRhLT5jb25maWcpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gLQl9Cj4g
LQlkZXZfZGJnKCZjbGllbnQtPmRldiwgIkNvbmZpZyAlMDJ4XG4iLCBkYXRhLT5jb25maWcpOwo+
IC0KPiAtCXJldCA9IGFkdDc0MTBfZmlsbF9jYWNoZShjbGllbnQpOwo+IC0JaWYgKHJldCkKPiAt
CQlnb3RvIGV4aXRfcmVzdG9yZTsKPiAtCj4gLQkvKiBSZWdpc3RlciBzeXNmcyBob29rcyAqLwo+
IC0JcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKCZjbGllbnQtPmRldi5rb2JqLCAmYWR0NzQxMF9n
cm91cCk7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gZXhpdF9yZXN0b3JlOwo+IC0KPiAtCWRhdGEt
Pmh3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3RlcigmY2xpZW50LT5kZXYpOwo+IC0JaWYg
KElTX0VSUihkYXRhLT5od21vbl9kZXYpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihkYXRhLT5od21v
bl9kZXYpOwo+IC0JCWdvdG8gZXhpdF9yZW1vdmU7Cj4gLQl9Cj4gLQo+IC0JZGV2X2luZm8oJmNs
aWVudC0+ZGV2LCAic2Vuc29yICclcydcbiIsIGNsaWVudC0+bmFtZSk7Cj4gLQo+IC0JcmV0dXJu
IDA7Cj4gLQo+IC1leGl0X3JlbW92ZToKPiAtCXN5c2ZzX3JlbW92ZV9ncm91cCgmY2xpZW50LT5k
ZXYua29iaiwgJmFkdDc0MTBfZ3JvdXApOwo+IC1leGl0X3Jlc3RvcmU6Cj4gLQlpMmNfc21idXNf
d3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgQURUNzQxMF9DT05GSUcsIGRhdGEtPm9sZGNvbmZpZyk7
Cj4gLQlyZXR1cm4gcmV0Owo+ICsJcmV0dXJuIGFkdDd4MTBfcHJvYmUoJmNsaWVudC0+ZGV2LCBO
VUxMLCAmYWR0NzQxMF9pMmNfb3BzKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBhZHQ3NDEwX3Jl
bW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICtzdGF0aWMgaW50IGFkdDc0MTBfaTJj
X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQo+ICB7Cj4gLQlzdHJ1Y3QgYWR0NzQx
MF9kYXRhICpkYXRhID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gLQo+IC0JaHdtb25f
ZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdtb25fZGV2KTsKPiAtCXN5c2ZzX3JlbW92ZV9ncm91
cCgmY2xpZW50LT5kZXYua29iaiwgJmFkdDc0MTBfZ3JvdXApOwo+IC0JaWYgKGRhdGEtPm9sZGNv
bmZpZyAhPSBkYXRhLT5jb25maWcpCj4gLQkJaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShjbGll
bnQsIEFEVDc0MTBfQ09ORklHLAo+IC0JCQkJCSAgZGF0YS0+b2xkY29uZmlnKTsKPiAtCXJldHVy
biAwOwo+ICsJcmV0dXJuIGFkdDd4MTBfcmVtb3ZlKCZjbGllbnQtPmRldik7Cj4gIH0KPiAgCj4g
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBhZHQ3NDEwX2lkc1tdID0gewo+IC0J
eyAiYWR0NzQxMCIsIGFkdDc0MTAsIH0sCj4gLQl7ICJhZHQ3NDIwIiwgYWR0NzQxMCwgfSwKPiAt
CXsgLyogTElTVCBFTkQgKi8gfQo+ICsJeyAiYWR0NzQxMCIsIDAgfSwKPiArCXsgImFkdDc0MjAi
LCAwIH0sCj4gKwl7fQo+ICB9Owo+ICBNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgYWR0NzQxMF9p
ZHMpOwo+ICAKPiAtI2lmZGVmIENPTkZJR19QTV9TTEVFUAo+IC1zdGF0aWMgaW50IGFkdDc0MTBf
c3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQlzdHJ1Y3Qg
aTJjX2NsaWVudCAqY2xpZW50ID0gdG9faTJjX2NsaWVudChkZXYpOwo+IC0Jc3RydWN0IGFkdDc0
MTBfZGF0YSAqZGF0YSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOwo+IC0KPiAtCXJldCA9
IGkyY19zbWJ1c193cml0ZV9ieXRlX2RhdGEoY2xpZW50LCBBRFQ3NDEwX0NPTkZJRywKPiAtCQkJ
CQlkYXRhLT5jb25maWcgfCBBRFQ3NDEwX1BEKTsKPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4g
LXN0YXRpYyBpbnQgYWR0NzQxMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+IC17Cj4gLQlp
bnQgcmV0Owo+IC0Jc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHRvX2kyY19jbGllbnQoZGV2
KTsKPiAtCXN0cnVjdCBhZHQ3NDEwX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xp
ZW50KTsKPiAtCj4gLQlyZXQgPSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgQURU
NzQxMF9DT05GSUcsIGRhdGEtPmNvbmZpZyk7Cj4gLQlyZXR1cm4gcmV0Owo+IC19Cj4gLQo+IC1z
dGF0aWMgU0lNUExFX0RFVl9QTV9PUFMoYWR0NzQxMF9kZXZfcG1fb3BzLCBhZHQ3NDEwX3N1c3Bl
bmQsIGFkdDc0MTBfcmVzdW1lKTsKPiAtCj4gLSNkZWZpbmUgQURUNzQxMF9ERVZfUE1fT1BTICgm
YWR0NzQxMF9kZXZfcG1fb3BzKQo+IC0jZWxzZQo+IC0jZGVmaW5lIEFEVDc0MTBfREVWX1BNX09Q
UyBOVUxMCj4gLSNlbmRpZiAvKiBDT05GSUdfUE0gKi8KPiAtCj4gIHN0YXRpYyBzdHJ1Y3QgaTJj
X2RyaXZlciBhZHQ3NDEwX2RyaXZlciA9IHsKPiAgCS5jbGFzcwkJPSBJMkNfQ0xBU1NfSFdNT04s
Cj4gIAkuZHJpdmVyID0gewo+ICAJCS5uYW1lCT0gImFkdDc0MTAiLAo+IC0JCS5wbQk9IEFEVDc0
MTBfREVWX1BNX09QUywKPiArCQkucG0JPSBBRFQ3WDEwX0RFVl9QTV9PUFMsCj4gIAl9LAo+IC0J
LnByb2JlCQk9IGFkdDc0MTBfcHJvYmUsCj4gLQkucmVtb3ZlCQk9IGFkdDc0MTBfcmVtb3ZlLAo+
ICsJLnByb2JlCQk9IGFkdDc0MTBfaTJjX3Byb2JlLAo+ICsJLnJlbW92ZQkJPSBhZHQ3NDEwX2ky
Y19yZW1vdmUsCj4gIAkuaWRfdGFibGUJPSBhZHQ3NDEwX2lkcywKPiAgCS5hZGRyZXNzX2xpc3QJ
PSBJMkNfQUREUlMoMHg0OCwgMHg0OSwgMHg0YSwgMHg0YiksCj4gIH07Cj4gLQo+ICBtb2R1bGVf
aTJjX2RyaXZlcihhZHQ3NDEwX2RyaXZlcik7Cj4gIAo+IC1NT0RVTEVfQVVUSE9SKCJIYXJ0bXV0
IEtuYWFjayIpOwo+IC1NT0RVTEVfREVTQ1JJUFRJT04oIkFEVDc0MTAvQURUNzQyMCBkcml2ZXIi
KTsKPiArTU9EVUxFX0FVVEhPUigiTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+
Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiQURUNzQxMC9BRDc0MjAgZHJpdmVyIik7Cj4gIE1P
RFVMRV9MSUNFTlNFKCJHUEwiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHQ3eDEw
LmMgYi9kcml2ZXJzL2h3bW9uL2FkdDd4MTAuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k
ZXggMDAwMDAwMC4uODRiM2RmYwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2h3bW9u
L2FkdDd4MTAuYwo+IEBAIC0wLDAgKzEsNDc2IEBACj4gKy8qCj4gKyAqIGFkdDd4MTAuYyAtIFBh
cnQgb2YgbG1fc2Vuc29ycywgTGludXgga2VybmVsIG1vZHVsZXMgZm9yIGhhcmR3YXJlCj4gKyAq
CSBtb25pdG9yaW5nCj4gKyAqIFRoaXMgZHJpdmVyIGhhbmRsZXMgdGhlIEFEVDc0MTAgYW5kIGNv
bXBhdGlibGUgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3JzLgo+ICsgKiBIYXJ0bXV0IEtuYWFj
ayA8a25hYWNrLmhAZ214LmRlPiAyMDEyLTA3LTIyCj4gKyAqIGJhc2VkIG9uIGxtNzUuYyBieSBG
cm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Cj4gKyAqIGFuZCBhZHQ3NDEwLmMgZnJvbSBp
aW8tc3RhZ2luZyBieSBTb25pYyBaaGFuZyA8c29uaWMuemhhbmdAYW5hbG9nLmNvbT4KPiArICoK
PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICog
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICogVGhpcyBwcm9n
cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4g
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUKPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKPiArICogYWxvbmcgd2l0aCB0aGlz
IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKPiArICogRm91bmRh
dGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCj4gKyAq
Lwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW5p
dC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvamlmZmll
cy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaHdtb24uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2h3bW9u
LXN5c2ZzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L211
dGV4Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsKPiArI2luY2x1ZGUgImFkdDd4
MTAuaCIKPiArCj4gKy8qCj4gKyAqIEFEVDdYMTAgc3RhdHVzCj4gKyAqLwo+ICsjZGVmaW5lIEFE
VDdYMTBfU1RBVF9UX0xPVwkJKDEgPDwgNCkKPiArI2RlZmluZSBBRFQ3WDEwX1NUQVRfVF9ISUdI
CQkoMSA8PCA1KQo+ICsjZGVmaW5lIEFEVDdYMTBfU1RBVF9UX0NSSVQJCSgxIDw8IDYpCj4gKyNk
ZWZpbmUgQURUN1gxMF9TVEFUX05PVF9SRFkJCSgxIDw8IDcpCj4gKwo+ICsvKgo+ICsgKiBBRFQ3
WDEwIGNvbmZpZwo+ICsgKi8KPiArI2RlZmluZSBBRFQ3WDEwX0ZBVUxUX1FVRVVFX01BU0sJKDEg
PDwgMCB8IDEgPDwgMSkKPiArI2RlZmluZSBBRFQ3WDEwX0NUX1BPTEFSSVRZCQkoMSA8PCAyKQo+
ICsjZGVmaW5lIEFEVDdYMTBfSU5UX1BPTEFSSVRZCQkoMSA8PCAzKQo+ICsjZGVmaW5lIEFEVDdY
MTBfRVZFTlRfTU9ERQkJKDEgPDwgNCkKPiArI2RlZmluZSBBRFQ3WDEwX01PREVfTUFTSwkJKDEg
PDwgNSB8IDEgPDwgNikKPiArI2RlZmluZSBBRFQ3WDEwX0ZVTEwJCQkoMCA8PCA1IHwgMCA8PCA2
KQo+ICsjZGVmaW5lIEFEVDdYMTBfUEQJCQkoMSA8PCA1IHwgMSA8PCA2KQo+ICsjZGVmaW5lIEFE
VDdYMTBfUkVTT0xVVElPTgkJKDEgPDwgNykKPiArCj4gKy8qCj4gKyAqIEFEVDdYMTAgbWFza3MK
PiArICovCj4gKyNkZWZpbmUgQURUN1gxMF9UMTNfVkFMVUVfTUFTSwkJMHhGRkY4Cj4gKyNkZWZp
bmUgQURUN1gxMF9UX0hZU1RfTUFTSwkJMHhGCj4gKwo+ICsvKiBzdHJhaWdodCBmcm9tIHRoZSBk
YXRhc2hlZXQgKi8KPiArI2RlZmluZSBBRFQ3WDEwX1RFTVBfTUlOICgtNTUwMDApCj4gKyNkZWZp
bmUgQURUN1gxMF9URU1QX01BWCAxNTAwMDAKPiArCj4gKy8qIEVhY2ggY2xpZW50IGhhcyB0aGlz
IGFkZGl0aW9uYWwgZGF0YSAqLwo+ICtzdHJ1Y3QgYWR0N3gxMF9kYXRhIHsKPiArCWNvbnN0IHN0
cnVjdCBhZHQ3eDEwX29wcyAqb3BzOwo+ICsJY29uc3QgY2hhcgkJKm5hbWU7Cj4gKwlzdHJ1Y3Qg
ZGV2aWNlCQkqaHdtb25fZGV2Owo+ICsJc3RydWN0IG11dGV4CQl1cGRhdGVfbG9jazsKPiArCXU4
CQkJY29uZmlnOwo+ICsJdTgJCQlvbGRjb25maWc7Cj4gKwlib29sCQkJdmFsaWQ7CQkvKiB0cnVl
IGlmIHJlZ2lzdGVycyB2YWxpZCAqLwo+ICsJdW5zaWduZWQgbG9uZwkJbGFzdF91cGRhdGVkOwkv
KiBJbiBqaWZmaWVzICovCj4gKwlzMTYJCQl0ZW1wWzRdOwkvKiBSZWdpc3RlciB2YWx1ZXMsCj4g
KwkJCQkJCSAgIDAgPSBpbnB1dAo+ICsJCQkJCQkgICAxID0gaGlnaAo+ICsJCQkJCQkgICAyID0g
bG93Cj4gKwkJCQkJCSAgIDMgPSBjcml0aWNhbCAqLwo+ICsJdTgJCQloeXN0OwkJLyogaHlzdGVy
ZXNpcyBvZmZzZXQgKi8KPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgYWR0N3gxMF9yZWFkX2J5dGUo
c3RydWN0IGRldmljZSAqZGV2LCB1OCByZWcpCj4gK3sKPiArCXN0cnVjdCBhZHQ3eDEwX2RhdGEg
KmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXJldHVybiBkLT5vcHMtPnJlYWRfYnl0ZShk
ZXYsIHJlZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYWR0N3gxMF93cml0ZV9ieXRlKHN0cnVj
dCBkZXZpY2UgKmRldiwgdTggcmVnLCB1OCBkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0N3gxMF9k
YXRhICpkID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlyZXR1cm4gZC0+b3BzLT53cml0ZV9i
eXRlKGRldiwgcmVnLCBkYXRhKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHQ3eDEwX3JlYWRf
d29yZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU4IHJlZykKPiArewo+ICsJc3RydWN0IGFkdDd4MTBf
ZGF0YSAqZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJcmV0dXJuIGQtPm9wcy0+cmVhZF93
b3JkKGRldiwgcmVnKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBhZHQ3eDEwX3dyaXRlX3dvcmQo
c3RydWN0IGRldmljZSAqZGV2LCB1OCByZWcsIHUxNiBkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0
N3gxMF9kYXRhICpkID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlyZXR1cm4gZC0+b3BzLT53
cml0ZV93b3JkKGRldiwgcmVnLCBkYXRhKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHU4IEFE
VDdYMTBfUkVHX1RFTVBbNF0gPSB7Cj4gKwlBRFQ3WDEwX1RFTVBFUkFUVVJFLAkJLyogaW5wdXQg
Ki8KPiArCUFEVDdYMTBfVF9BTEFSTV9ISUdILAkJLyogaGlnaCAqLwo+ICsJQURUN1gxMF9UX0FM
QVJNX0xPVywJCS8qIGxvdyAqLwo+ICsJQURUN1gxMF9UX0NSSVQsCQkJLyogY3JpdGljYWwgKi8K
PiArfTsKPiArCj4gK3N0YXRpYyBpbnQgYWR0N3gxMF90ZW1wX3JlYWR5KHN0cnVjdCBkZXZpY2Ug
KmRldikKPiArewo+ICsJaW50IGksIHN0YXR1czsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgNjsg
aSsrKSB7Cj4gKwkJc3RhdHVzID0gYWR0N3gxMF9yZWFkX2J5dGUoZGV2LCBBRFQ3WDEwX1NUQVRV
Uyk7Cj4gKwkJaWYgKHN0YXR1cyA8IDApCj4gKwkJCXJldHVybiBzdGF0dXM7Cj4gKwkJaWYgKCEo
c3RhdHVzICYgQURUN1gxMF9TVEFUX05PVF9SRFkpKQo+ICsJCQlyZXR1cm4gMDsKPiArCQltc2xl
ZXAoNjApOwo+ICsJfQo+ICsJcmV0dXJuIC1FVElNRURPVVQ7Cj4gK30KPiArCj4gK3N0YXRpYyBp
bnQgYWR0N3gxMF91cGRhdGVfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVj
dCBhZHQ3eDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCWludCByZXQg
PSAwOwo+ICsKPiArCW11dGV4X2xvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKPiArCj4gKwlpZiAo
dGltZV9hZnRlcihqaWZmaWVzLCBkYXRhLT5sYXN0X3VwZGF0ZWQgKyBIWiArIEhaIC8gMikKPiAr
CSAgICB8fCAhZGF0YS0+dmFsaWQpIHsKPiArCQlpbnQgdGVtcDsKPiArCj4gKwkJZGV2X2RiZyhk
ZXYsICJTdGFydGluZyB1cGRhdGVcbiIpOwo+ICsKPiArCQlyZXQgPSBhZHQ3eDEwX3RlbXBfcmVh
ZHkoZGV2KTsgLyogY2hlY2sgZm9yIG5ldyB2YWx1ZSAqLwo+ICsJCWlmIChyZXQpCj4gKwkJCWdv
dG8gYWJvcnQ7Cj4gKwo+ICsJCXRlbXAgPSBhZHQ3eDEwX3JlYWRfd29yZChkZXYsIEFEVDdYMTBf
UkVHX1RFTVBbMF0pOwo+ICsJCWlmICh0ZW1wIDwgMCkgewo+ICsJCQlyZXQgPSB0ZW1wOwo+ICsJ
CQlkZXZfZGJnKGRldiwgIkZhaWxlZCB0byByZWFkIHZhbHVlOiByZWcgJWQsIGVycm9yICVkXG4i
LAo+ICsJCQkJQURUN1gxMF9SRUdfVEVNUFswXSwgcmV0KTsKPiArCQkJZ290byBhYm9ydDsKPiAr
CQl9Cj4gKwkJZGF0YS0+dGVtcFswXSA9IHRlbXA7Cj4gKwkJZGF0YS0+bGFzdF91cGRhdGVkID0g
amlmZmllczsKPiArCQlkYXRhLT52YWxpZCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICthYm9ydDoKPiAr
CW11dGV4X3VubG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+
ICsKPiArc3RhdGljIGludCBhZHQ3eDEwX2ZpbGxfY2FjaGUoc3RydWN0IGRldmljZSAqZGV2KQo+
ICt7Cj4gKwlzdHJ1Y3QgYWR0N3gxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7
Cj4gKwlpbnQgcmV0Owo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMTsgaSA8IEFSUkFZX1NJ
WkUoZGF0YS0+dGVtcCk7IGkrKykgewo+ICsJCXJldCA9IGFkdDd4MTBfcmVhZF93b3JkKGRldiwg
QURUN1gxMF9SRUdfVEVNUFtpXSk7Cj4gKwkJaWYgKHJldCA8IDApIHsKPiArCQkJZGV2X2RiZyhk
ZXYsICJGYWlsZWQgdG8gcmVhZCB2YWx1ZTogcmVnICVkLCBlcnJvciAlZFxuIiwKPiArCQkJCUFE
VDdYMTBfUkVHX1RFTVBbaV0sIHJldCk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJCWRh
dGEtPnRlbXBbaV0gPSByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gYWR0N3gxMF9yZWFkX2J5dGUo
ZGV2LCBBRFQ3WDEwX1RfSFlTVCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9kYmcoZGV2
LCAiRmFpbGVkIHRvIHJlYWQgdmFsdWU6IHJlZyAlZCwgZXJyb3IgJWRcbiIsCj4gKwkJCQlBRFQ3
WDEwX1RfSFlTVCwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJZGF0YS0+aHlzdCA9
IHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHMxNiBBRFQ3WDEwX1RF
TVBfVE9fUkVHKGxvbmcgdGVtcCkKPiArewo+ICsJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKGNs
YW1wX3ZhbCh0ZW1wLCBBRFQ3WDEwX1RFTVBfTUlOLAo+ICsJCQkJCSAgICAgICBBRFQ3WDEwX1RF
TVBfTUFYKSAqIDEyOCwgMTAwMCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgQURUN1gxMF9SRUdf
VE9fVEVNUChzdHJ1Y3QgYWR0N3gxMF9kYXRhICpkYXRhLCBzMTYgcmVnKQo+ICt7Cj4gKwkvKiBp
biAxMyBiaXQgbW9kZSwgYml0cyAwLTIgYXJlIHN0YXR1cyBmbGFncyAtIG1hc2sgdGhlbSBvdXQg
Ki8KPiArCWlmICghKGRhdGEtPmNvbmZpZyAmIEFEVDdYMTBfUkVTT0xVVElPTikpCj4gKwkJcmVn
ICY9IEFEVDdYMTBfVDEzX1ZBTFVFX01BU0s7Cj4gKwkvKgo+ICsJICogdGVtcGVyYXR1cmUgaXMg
c3RvcmVkIGluIHR3b3MgY29tcGxlbWVudCBmb3JtYXQsIGluIHN0ZXBzIG9mCj4gKwkgKiAxLzEy
OMKwQwo+ICsJICovCj4gKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QocmVnICogMTAwMCwgMTI4
KTsKPiArfQo+ICsKPiArLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCj4gKwo+ICsvKiBzeXNmcyBhdHRyaWJ1
dGVzIGZvciBod21vbiAqLwo+ICsKPiArc3RhdGljIHNzaXplX3QgYWR0N3gxMF9zaG93X3RlbXAo
c3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwK
PiArCQkJCSBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBzZW5zb3JfZGV2aWNlX2F0dHJpYnV0
ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkYSk7Cj4gKwlzdHJ1Y3QgYWR0N3gxMF9kYXRh
ICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsKPiArCWlmIChhdHRyLT5pbmRl
eCA9PSAwKSB7Cj4gKwkJaW50IHJldDsKPiArCj4gKwkJcmV0ID0gYWR0N3gxMF91cGRhdGVfdGVt
cChkZXYpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0
dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIEFEVDdYMTBfUkVHX1RPX1RFTVAoZGF0YSwKPiArCQkg
ICAgICAgZGF0YS0+dGVtcFthdHRyLT5pbmRleF0pKTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXpl
X3QgYWR0N3gxMF9zZXRfdGVtcChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQlzdHJ1Y3QgZGV2
aWNlX2F0dHJpYnV0ZSAqZGEsCj4gKwkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkK
PiArewo+ICsJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29y
X2Rldl9hdHRyKGRhKTsKPiArCXN0cnVjdCBhZHQ3eDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2Ry
dmRhdGEoZGV2KTsKPiArCWludCBuciA9IGF0dHItPmluZGV4Owo+ICsJbG9uZyB0ZW1wOwo+ICsJ
aW50IHJldDsKPiArCj4gKwlyZXQgPSBrc3RydG9sKGJ1ZiwgMTAsICZ0ZW1wKTsKPiArCWlmIChy
ZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9j
ayk7Cj4gKwlkYXRhLT50ZW1wW25yXSA9IEFEVDdYMTBfVEVNUF9UT19SRUcodGVtcCk7Cj4gKwly
ZXQgPSBhZHQ3eDEwX3dyaXRlX3dvcmQoZGV2LCBBRFQ3WDEwX1JFR19URU1QW25yXSwgZGF0YS0+
dGVtcFtucl0pOwo+ICsJaWYgKHJldCkKPiArCQljb3VudCA9IHJldDsKPiArCW11dGV4X3VubG9j
aygmZGF0YS0+dXBkYXRlX2xvY2spOwo+ICsJcmV0dXJuIGNvdW50Owo+ICt9Cj4gKwo+ICtzdGF0
aWMgc3NpemVfdCBhZHQ3eDEwX3Nob3dfdF9oeXN0KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJ
CSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwKPiArCQkJCSAgIGNoYXIgKmJ1ZikKPiAr
ewo+ICsJc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rl
dl9hdHRyKGRhKTsKPiArCXN0cnVjdCBhZHQ3eDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRh
dGEoZGV2KTsKPiArCWludCBuciA9IGF0dHItPmluZGV4Owo+ICsJaW50IGh5c3Q7Cj4gKwo+ICsJ
aHlzdCA9IChkYXRhLT5oeXN0ICYgQURUN1gxMF9UX0hZU1RfTUFTSykgKiAxMDAwOwo+ICsKPiAr
CS8qCj4gKwkgKiBoeXN0ZXJlc2lzIGlzIHN0b3JlZCBhcyBhIDQgYml0IG9mZnNldCBpbiB0aGUg
ZGV2aWNlLCBjb252ZXJ0IGl0Cj4gKwkgKiB0byBhbiBhYnNvbHV0ZSB2YWx1ZQo+ICsJICovCj4g
KwlpZiAobnIgPT0gMikJLyogbWluIGhhcyBwb3NpdGl2ZSBvZmZzZXQsIG90aGVycyBoYXZlIG5l
Z2F0aXZlICovCj4gKwkJaHlzdCA9IC1oeXN0Owo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc
biIsCj4gKwkJICAgICAgIEFEVDdYMTBfUkVHX1RPX1RFTVAoZGF0YSwgZGF0YS0+dGVtcFtucl0p
IC0gaHlzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGFkdDd4MTBfc2V0X3RfaHlzdChz
dHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwK
PiArCQkJCSAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCj4gK3sKPiArCXN0cnVjdCBh
ZHQ3eDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCWludCBsaW1pdCwg
cmV0Owo+ICsJbG9uZyBoeXN0Owo+ICsKPiArCXJldCA9IGtzdHJ0b2woYnVmLCAxMCwgJmh5c3Qp
Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJLyogY29udmVydCBhYnNvbHV0ZSBo
eXN0ZXJlc2lzIHZhbHVlIHRvIGEgNCBiaXQgZGVsdGEgdmFsdWUgKi8KPiArCWxpbWl0ID0gQURU
N1gxMF9SRUdfVE9fVEVNUChkYXRhLCBkYXRhLT50ZW1wWzFdKTsKPiArCWh5c3QgPSBjbGFtcF92
YWwoaHlzdCwgQURUN1gxMF9URU1QX01JTiwgQURUN1gxMF9URU1QX01BWCk7Cj4gKwlkYXRhLT5o
eXN0ID0gY2xhbXBfdmFsKERJVl9ST1VORF9DTE9TRVNUKGxpbWl0IC0gaHlzdCwgMTAwMCksCj4g
KwkJCQkgICAwLCBBRFQ3WDEwX1RfSFlTVF9NQVNLKTsKPiArCXJldCA9IGFkdDd4MTBfd3JpdGVf
Ynl0ZShkZXYsIEFEVDdYMTBfVF9IWVNULCBkYXRhLT5oeXN0KTsKPiArCWlmIChyZXQpCj4gKwkJ
cmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6
ZV90IGFkdDd4MTBfc2hvd19hbGFybShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgIHN0cnVj
dCBkZXZpY2VfYXR0cmlidXRlICpkYSwKPiArCQkJCSAgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1
Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKmF0dHIgPSB0b19zZW5zb3JfZGV2X2F0dHIoZGEp
Owo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBhZHQ3eDEwX3JlYWRfYnl0ZShkZXYsIEFEVDdY
MTBfU1RBVFVTKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0
dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsICEhKHJldCAmIGF0dHItPmluZGV4KSk7Cj4gK30KPiAr
Cj4gK3N0YXRpYyBzc2l6ZV90IGFkdDd4MTBfc2hvd19uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwK
PiArCQkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGEsCj4gKwkJCQkgY2hhciAqYnVmKQo+
ICt7Cj4gKwlzdHJ1Y3QgYWR0N3gxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7
Cj4gKwo+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIGRhdGEtPm5hbWUpOwo+ICt9Cj4g
Kwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2lucHV0LCBTX0lSVUdPLCBhZHQ3
eDEwX3Nob3dfdGVtcCwgTlVMTCwgMCk7Cj4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVt
cDFfbWF4LCBTX0lXVVNSIHwgU19JUlVHTywKPiArCQkJICBhZHQ3eDEwX3Nob3dfdGVtcCwgYWR0
N3gxMF9zZXRfdGVtcCwgMSk7Cj4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfbWlu
LCBTX0lXVVNSIHwgU19JUlVHTywKPiArCQkJICBhZHQ3eDEwX3Nob3dfdGVtcCwgYWR0N3gxMF9z
ZXRfdGVtcCwgMik7Cj4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfY3JpdCwgU19J
V1VTUiB8IFNfSVJVR08sCj4gKwkJCSAgYWR0N3gxMF9zaG93X3RlbXAsIGFkdDd4MTBfc2V0X3Rl
bXAsIDMpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX21heF9oeXN0LCBTX0lX
VVNSIHwgU19JUlVHTywKPiArCQkJICBhZHQ3eDEwX3Nob3dfdF9oeXN0LCBhZHQ3eDEwX3NldF90
X2h5c3QsIDEpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX21pbl9oeXN0LCBT
X0lSVUdPLAo+ICsJCQkgIGFkdDd4MTBfc2hvd190X2h5c3QsIE5VTEwsIDIpOwo+ICtzdGF0aWMg
U0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2NyaXRfaHlzdCwgU19JUlVHTywKPiArCQkJICBhZHQ3
eDEwX3Nob3dfdF9oeXN0LCBOVUxMLCAzKTsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0
ZW1wMV9taW5fYWxhcm0sIFNfSVJVR08sIGFkdDd4MTBfc2hvd19hbGFybSwKPiArCQkJICBOVUxM
LCBBRFQ3WDEwX1NUQVRfVF9MT1cpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAx
X21heF9hbGFybSwgU19JUlVHTywgYWR0N3gxMF9zaG93X2FsYXJtLAo+ICsJCQkgIE5VTEwsIEFE
VDdYMTBfU1RBVF9UX0hJR0gpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2Ny
aXRfYWxhcm0sIFNfSVJVR08sIGFkdDd4MTBfc2hvd19hbGFybSwKPiArCQkJICBOVUxMLCBBRFQ3
WDEwX1NUQVRfVF9DUklUKTsKPiArc3RhdGljIERFVklDRV9BVFRSKG5hbWUsIFNfSVJVR08sIGFk
dDd4MTBfc2hvd19uYW1lLCBOVUxMKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICph
ZHQ3eDEwX2F0dHJpYnV0ZXNbXSA9IHsKPiArCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQu
ZGV2X2F0dHIuYXR0ciwKPiArCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWF4LmRldl9hdHRyLmF0
dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX21pbi5kZXZfYXR0ci5hdHRyLAo+ICsJJnNl
bnNvcl9kZXZfYXR0cl90ZW1wMV9jcml0LmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9h
dHRyX3RlbXAxX21heF9oeXN0LmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3Rl
bXAxX21pbl9oeXN0LmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX2Ny
aXRfaHlzdC5kZXZfYXR0ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9taW5fYWxh
cm0uZGV2X2F0dHIuYXR0ciwKPiArCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWF4X2FsYXJtLmRl
dl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX2NyaXRfYWxhcm0uZGV2X2F0
dHIuYXR0ciwKPiArCU5VTEwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmli
dXRlX2dyb3VwIGFkdDd4MTBfZ3JvdXAgPSB7Cj4gKwkuYXR0cnMgPSBhZHQ3eDEwX2F0dHJpYnV0
ZXMsCj4gK307Cj4gKwo+ICtpbnQgYWR0N3gxMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNv
bnN0IGNoYXIgKm5hbWUsCj4gKwkJICBjb25zdCBzdHJ1Y3QgYWR0N3gxMF9vcHMgKm9wcykKPiAr
ewo+ICsJc3RydWN0IGFkdDd4MTBfZGF0YSAqZGF0YTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZGF0
YSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOwo+ICsJaWYg
KCFkYXRhKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWRhdGEtPm9wcyA9IG9wczsKPiAr
CWRhdGEtPm5hbWUgPSBuYW1lOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGRhdGEpOwo+
ICsJbXV0ZXhfaW5pdCgmZGF0YS0+dXBkYXRlX2xvY2spOwo+ICsKPiArCS8qIGNvbmZpZ3VyZSBh
cyBzcGVjaWZpZWQgKi8KPiArCXJldCA9IGFkdDd4MTBfcmVhZF9ieXRlKGRldiwgQURUN1gxMF9D
T05GSUcpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZGJnKGRldiwgIkNhbid0IHJlYWQg
Y29uZmlnPyAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJZGF0YS0+b2xk
Y29uZmlnID0gcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBTZXQgdG8gMTYgYml0IHJlc29sdXRpb24s
IGNvbnRpbm91cyBjb252ZXJzaW9uIGFuZCBjb21wYXJhdG9yIG1vZGUuCj4gKwkgKi8KPiArCWRh
dGEtPmNvbmZpZyA9IGRhdGEtPm9sZGNvbmZpZzsKPiArCWRhdGEtPmNvbmZpZyAmPSB+QURUN1gx
MF9NT0RFX01BU0s7Cj4gKwlkYXRhLT5jb25maWcgfD0gQURUN1gxMF9GVUxMIHwgQURUN1gxMF9S
RVNPTFVUSU9OIHwgQURUN1gxMF9FVkVOVF9NT0RFOwo+ICsJaWYgKGRhdGEtPmNvbmZpZyAhPSBk
YXRhLT5vbGRjb25maWcpIHsKPiArCQlyZXQgPSBhZHQ3eDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3
WDEwX0NPTkZJRywgZGF0YS0+Y29uZmlnKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0
Owo+ICsJfQo+ICsJZGV2X2RiZyhkZXYsICJDb25maWcgJTAyeFxuIiwgZGF0YS0+Y29uZmlnKTsK
PiArCj4gKwlyZXQgPSBhZHQ3eDEwX2ZpbGxfY2FjaGUoZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJ
Z290byBleGl0X3Jlc3RvcmU7Cj4gKwo+ICsJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KPiAr
CXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmZGV2LT5rb2JqLCAmYWR0N3gxMF9ncm91cCk7Cj4g
KwlpZiAocmV0KQo+ICsJCWdvdG8gZXhpdF9yZXN0b3JlOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUg
STJDIGRldmljZSB3aWxsIGFscmVhZHkgaGF2ZSBpdCdzIG93biAnbmFtZScgYXR0cmlidXRlLCBi
dXQgZm9yCj4gKwkgKiB0aGUgU1BJIGRldmljZSB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGl0LiBuYW1l
IHdpbGwgb25seSBiZSBub24gTlVMTCBpZgo+ICsJICogdGhlIGRldmljZSBkb2Vzbid0IHJlZ2lz
dGVyIHRoZSAnbmFtZScgYXR0cmlidXRlIG9uIGl0cyBvd24uCj4gKwkgKi8KPiArCWlmIChuYW1l
KSB7Cj4gKwkJcmV0ID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX25hbWUpOwo+
ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXhpdF9yZW1vdmU7Cj4gKwl9Cj4gKwo+ICsJZGF0YS0+
aHdtb25fZGV2ID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyKGRldik7Cj4gKwlpZiAoSVNfRVJSKGRh
dGEtPmh3bW9uX2RldikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGRhdGEtPmh3bW9uX2Rldik7Cj4g
KwkJZ290byBleGl0X3JlbW92ZV9uYW1lOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICsKPiAr
ZXhpdF9yZW1vdmVfbmFtZToKPiArCWlmIChuYW1lKQo+ICsJCWRldmljZV9yZW1vdmVfZmlsZShk
ZXYsICZkZXZfYXR0cl9uYW1lKTsKPiArZXhpdF9yZW1vdmU6Cj4gKwlzeXNmc19yZW1vdmVfZ3Jv
dXAoJmRldi0+a29iaiwgJmFkdDd4MTBfZ3JvdXApOwo+ICtleGl0X3Jlc3RvcmU6Cj4gKwlhZHQ3
eDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3WDEwX0NPTkZJRywgZGF0YS0+b2xkY29uZmlnKTsKPiAr
CXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoYWR0N3gxMF9wcm9iZSk7Cj4g
Kwo+ICtpbnQgYWR0N3gxMF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1
Y3QgYWR0N3gxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJaHdt
b25fZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdtb25fZGV2KTsKPiArCWlmIChkYXRhLT5uYW1l
KQo+ICsJCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0cl9uYW1lKTsKPiArCXN5c2Zz
X3JlbW92ZV9ncm91cCgmZGV2LT5rb2JqLCAmYWR0N3gxMF9ncm91cCk7Cj4gKwlpZiAoZGF0YS0+
b2xkY29uZmlnICE9IGRhdGEtPmNvbmZpZykKPiArCQlhZHQ3eDEwX3dyaXRlX2J5dGUoZGV2LCBB
RFQ3WDEwX0NPTkZJRywgZGF0YS0+b2xkY29uZmlnKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gK0VY
UE9SVF9TWU1CT0xfR1BMKGFkdDd4MTBfcmVtb3ZlKTsKPiArCj4gKyNpZmRlZiBDT05GSUdfUE1f
U0xFRVAKPiArCj4gK3N0YXRpYyBpbnQgYWR0N3gxMF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRl
dikKPiArewo+ICsJc3RydWN0IGFkdDd4MTBfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShk
ZXYpOwo+ICsKPiArCXJldHVybiBhZHQ3eDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3WDEwX0NPTkZJ
RywKPiArCQlkYXRhLT5jb25maWcgfCBBRFQ3WDEwX1BEKTsKPiArfQo+ICsKPiArc3RhdGljIGlu
dCBhZHQ3eDEwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBhZHQ3
eDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCj4gKwlyZXR1cm4gYWR0
N3gxMF93cml0ZV9ieXRlKGRldiwgQURUN1gxMF9DT05GSUcsIGRhdGEtPmNvbmZpZyk7Cj4gK30K
PiArCj4gK1NJTVBMRV9ERVZfUE1fT1BTKGFkdDd4MTBfZGV2X3BtX29wcywgYWR0N3gxMF9zdXNw
ZW5kLCBhZHQ3eDEwX3Jlc3VtZSk7Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGFkdDd4MTBfZGV2X3Bt
X29wcyk7Cj4gKwo+ICsjZW5kaWYgLyogQ09ORklHX1BNX1NMRUVQICovCj4gKwo+ICtNT0RVTEVf
QVVUSE9SKCJIYXJ0bXV0IEtuYWFjayIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFEVDc0MTAv
QURUNzQyMCwgQURUNzMxMC9BRFQ3MzIwIGNvbW1vbiBjb2RlIik7Cj4gK01PRFVMRV9MSUNFTlNF
KCJHUEwiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHQ3eDEwLmggYi9kcml2ZXJz
L2h3bW9uL2FkdDd4MTAuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u
ODAzZDliOQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2h3bW9uL2FkdDd4MTAuaAo+
IEBAIC0wLDAgKzEsMzcgQEAKPiArI2lmbmRlZiBfX0hXTU9OX0FEVDdYMTBfSF9fCj4gKyNkZWZp
bmUgX19IV01PTl9BRFQ3WDEwX0hfXwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4g
KyNpbmNsdWRlIDxsaW51eC9wbS5oPgo+ICsKPiArLyogQURUNzQxMCByZWdpc3RlcnMgZGVmaW5p
dGlvbiAqLwo+ICsjZGVmaW5lIEFEVDdYMTBfVEVNUEVSQVRVUkUJCTAKPiArI2RlZmluZSBBRFQ3
WDEwX1NUQVRVUwkJCTIKPiArI2RlZmluZSBBRFQ3WDEwX0NPTkZJRwkJCTMKPiArI2RlZmluZSBB
RFQ3WDEwX1RfQUxBUk1fSElHSAkJNAo+ICsjZGVmaW5lIEFEVDdYMTBfVF9BTEFSTV9MT1cJCTYK
PiArI2RlZmluZSBBRFQ3WDEwX1RfQ1JJVAkJCTgKPiArI2RlZmluZSBBRFQ3WDEwX1RfSFlTVAkJ
CTB4QQo+ICsjZGVmaW5lIEFEVDdYMTBfSUQJCQkweEIKPiArCj4gK3N0cnVjdCBkZXZpY2U7Cj4g
Kwo+ICtzdHJ1Y3QgYWR0N3gxMF9vcHMgewo+ICsJaW50ICgqcmVhZF9ieXRlKShzdHJ1Y3QgZGV2
aWNlICosIHU4IHJlZyk7Cj4gKwlpbnQgKCp3cml0ZV9ieXRlKShzdHJ1Y3QgZGV2aWNlICosIHU4
IHJlZywgdTggZGF0YSk7Cj4gKwlpbnQgKCpyZWFkX3dvcmQpKHN0cnVjdCBkZXZpY2UgKiwgdTgg
cmVnKTsKPiArCWludCAoKndyaXRlX3dvcmQpKHN0cnVjdCBkZXZpY2UgKiwgdTggcmVnLCB1MTYg
ZGF0YSk7Cj4gK307Cj4gKwo+ICtpbnQgYWR0N3gxMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYs
IGNvbnN0IGNoYXIgKm5hbWUsCj4gKwljb25zdCBzdHJ1Y3QgYWR0N3gxMF9vcHMgKm9wcyk7Cj4g
K2ludCBhZHQ3eDEwX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICsKPiArI2lmZGVmIENP
TkZJR19QTV9TTEVFUAo+ICtleHRlcm4gY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgYWR0N3gxMF9k
ZXZfcG1fb3BzOwo+ICsjZGVmaW5lIEFEVDdYMTBfREVWX1BNX09QUyAoJmFkdDd4MTBfZGV2X3Bt
X29wcykKPiArI2Vsc2UKPiArI2RlZmluZSBBRFQ3WDEwX0RFVl9QTV9PUFMgTlVMTAo+ICsjZW5k
aWYKPiArCj4gKyNlbmRpZgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5v
cmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29y
cw=
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2013-03-23 23:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-23 23:23 [lm-sensors] [PATCH 2/3] hwmon: (adt7410) Add support for the adt7310/adt7320 Hartmut Knaack
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.