All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hartmut Knaack <knaack.h@gmx.de>
To: lm-sensors@vger.kernel.org
Subject: Re: [lm-sensors] [PATCH 2/3] hwmon: (adt7410) Add support for the adt7310/adt7320
Date: Sat, 23 Mar 2013 23:23:02 +0000	[thread overview]
Message-ID: <514E3956.9030609@gmx.de> (raw)

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=

                 reply	other threads:[~2013-03-23 23:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=514E3956.9030609@gmx.de \
    --to=knaack.h@gmx.de \
    --cc=lm-sensors@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.