From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hartmut Knaack Date: Mon, 18 Feb 2013 21:07:48 +0000 Subject: Re: [lm-sensors] [PATCH v2 2/4] hwmon: (adt7410) Add support for the adt7310/adt7320 Message-Id: <51229824.4080402@gmx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: lm-sensors@vger.kernel.org SnVzdCBoYWQgYSBxdWljayBsb29rIG92ZXIgdGhlIHBhdGNoIGFuZCBjb21tZW50ZWQgb24gdGhp bmdzIHRoYXQgY2F1Z2h0IG15IGF0dGVudGlvbiBhZnRlciBhcHBseWluZyB5b3VyIHByZXZpb3Vz IHBhdGNoLXNldC4gSSB3aWxsIGFsc28gYXBwbHkgdGhpcyBwYXRjaCBsYXRlciB0byB2aWV3IHRo ZSByZXN1bHQuIEFuZCBJIGZvdW5kIHNvbWUgb2YgbXkgdHlwb3MsIHRoYXQgd2Ugc2hvdWxkIG5v dCBjYXJyeSBvbiA7LSkKCkxhcnMtUGV0ZXIgQ2xhdXNlbiBzY2hyaWViOgo+IFRoZSBhZHQ3MzEw L2FkdDczMjAgaXMgdGhlIFNQSSB2ZXJzaW9uIG9mIHRoZSBhZHQ3NDEwL2FkdDc0MjAuIFRoZSBy ZWdpc3RlciBtYXAKPiBsYXlvdXQgaXMgYSBiaXQgZGlmZmVyZW50LCBpLmUuIHRoZSByZWdpc3Rl ciBhZGRyZXNzZXMgZGlmZmVyIGJldHdlZW4gdGhlIHR3bwo+IHZhcmlhbnRzLCBidXQgdGhlIGJp dCBsYXlvdXRzIG9mIHRoZSBpbmRpdmlkdWFsIHJlZ2lzdGVycyBhcmUgaWRlbnRpY2FsLiBTbyBi b3RoCj4gY2hpcCB2YXJpYW50cyBjYW4gZWFzaWx5IGJlIHN1cHBvcnRlZCBieSB0aGUgc2FtZSBk cml2ZXIuIFRoZSBpc3N1ZSBvZiBub24KPiBtYXRjaGluZyByZWdpc3RlciBhZGRyZXNzIGxheW91 dHMgaXMgc29sdmVkIGJ5IGEgc2ltcGxlIGxvb2stdXAgdGFibGUgd2hpY2gKPiB0cmFuc2xhdGVz IHRoZSBJMkMgYWRkcmVzc2VzIHRvIHRoZSBTUEkgYWRkcmVzc2VzLgo+Cj4gVGhlIHBhdGNoIG1v dmVzIHRoZSBidWxrIG9mIHRoZSBhZHQ3NDEwIGRyaXZlciB0byBhIGNvbW1vbiBtb2R1bGUgdGhh dCB3aWxsIGJlCj4gc2hhcmVkIGJ5IHRoZSBhZHQ3NDEwIGFuZCBhZHQ3MzEwIGRyaXZlcnMuIFRo aXMgY29tbW9uIG1vZHVsZSBpbXBsZW1lbnRzIHRoZQo+IGRyaXZlciBsb2dpYyBhbmQgdXNlcyBh IHNldCBvZiB2aXJ0dWFsIGZ1bmN0aW9ucyB0byBwZXJmb3JtIElPIGFjY2Vzcy4gVGhlCj4gYWR0 NzQxMCBhbmQgYWR0NzMxMCBkcml2ZXIgbW9kdWxlcyBwcm92aWRlIHByb3BlciBpbXBsZW1lbnRh dGlvbnMgb2YgdGhlc2UgSU8KPiBhY2Nlc3NvciBmdW5jdGlvbnMgZm9yIEkyQyByZXNwZWN0aXZl IFNQSS4KPgo+IFNpZ25lZC1vZmYtYnk6IExhcnMtUGV0ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9v LmRlPgo+Cj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAJKiBVcGRhdGUgdGhlIGRyaXZlciBk b2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgQURUNzMxMC9BRFQ3MzIwL0FEVDc0MjAKPiAJKiBQYXNz IHRoZSByZXN1bHQgb2YgdGhlIHJlYWQgbWV0aG9kcyB2aWEgdGhlIHJldHVybiB2YWx1ZSBpbnN0 ZWFkIG9mIGEKPiAJICBwb2ludGVyIGFyZ3VtZW50Cj4gCSogU2ltcGxpZnkgc3BpIHJlYWQgbWV0 aG9kcyBieSB1c2luZyBzcGlfdzhyOCBhbmQgc3BpX3c4cjE2Cj4gCSogVXBkYXRlIG1vZHVsZSBk ZXNjcmlwdGlvbiBvZiB0aGUgc2hhcmVkIG1vZHVsZQo+IAkqIEZpeCBzb21lIHR5cG9zCj4gLS0t Cj4gIERvY3VtZW50YXRpb24vaHdtb24vYWR0NzQxMCB8ICA0MiArKy0tCj4gIGRyaXZlcnMvaHdt b24vS2NvbmZpZyAgICAgICB8ICAyMCArKwo+ICBkcml2ZXJzL2h3bW9uL01ha2VmaWxlICAgICAg fCAgIDIgKwo+ICBkcml2ZXJzL2h3bW9uL2FkdDczMTAuYyAgICAgfCAxMTUgKysrKysrKysrKysK PiAgZHJpdmVycy9od21vbi9hZHQ3NDEwLmMgICAgIHwgNDY0ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2h3bW9uL2FkdDd4MTAuYyAgICAgfCA0 NzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVy cy9od21vbi9hZHQ3eDEwLmggICAgIHwgIDQ4ICsrKysrCj4gIDcgZmlsZXMgY2hhbmdlZCwgNzIw IGluc2VydGlvbnMoKyksIDQ0NyBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvaHdtb24vYWR0NzMxMC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2h3bW9u L2FkdDd4MTAuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9od21vbi9hZHQ3eDEwLmgK Pgo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTAgYi9Eb2N1bWVudGF0 aW9uL2h3bW9uL2FkdDc0MTAKPiBpbmRleCA5NjAwNDAwLi5lNDUyYWUwIDEwMDY0NAo+IC0tLSBh L0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQxMAo+ICsrKyBiL0RvY3VtZW50YXRpb24vaHdtb24v YWR0NzQxMAo+IEBAIC03LDI1ICs3LDQxIEBAIFN1cHBvcnRlZCBjaGlwczoKPiAgICAgIEFkZHJl c3NlcyBzY2FubmVkOiBJMkMgMHg0OCAtIDB4NEIKPiAgICAgIERhdGFzaGVldDogUHVibGljbHkg YXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCj4gICAgICAgICAgICAgICAg IGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0YV9zaGVldHMv QURUNzQxMC5wZGYKPiArICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0MjAKPiArICAgIFByZWZpeDog J2FkdDc0MjAnCj4gKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NDggLSAweDRCCj4gKyAg ICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vi c2l0ZQo+ICsgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vc3RhdGljL2ltcG9y dGVkLWZpbGVzL2RhdGFfc2hlZXRzL0FEVDc0MjAucGRmCj4gKyAgKiBBbmFsb2cgRGV2aWNlcyBB RFQ3MzEwCj4gKyAgICBQcmVmaXg6ICdhZHQ3MzEwJwo+ICsgICAgQWRkcmVzc2VzIHNjYW5uZWQ6 IEkyQyAweDQ4IC0gMHg0Qgo+ICsgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQg dGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKPiArICAgICAgICAgICAgICAgaHR0cDovL3d3dy5h bmFsb2cuY29tL3N0YXRpYy9pbXBvcnRlZC1maWxlcy9kYXRhX3NoZWV0cy9BRFQ3MzEwLnBkZgo+ ICsgICogQW5hbG9nIERldmljZXMgQURUNzMyMAo+ICsgICAgUHJlZml4OiAnYWR0NzMyMCcKPiAr ICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0OCAtIDB4NEIKPiArICAgIERhdGFzaGVldDog UHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCj4gKyAgICAg ICAgICAgICAgIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0 YV9zaGVldHMvQURUNzMyMC5wZGYKPiAgCj4gIEF1dGhvcjogSGFydG11dCBLbmFhY2sgPGtuYWFj ay5oQGdteC5kZT4KPiAgCj4gIERlc2NyaXB0aW9uCj4gIC0tLS0tLS0tLS0tCj4gIAo+IC1UaGUg QURUNzQxMCBpcyBhIHRlbXBlcmF0dXJlIHNlbnNvciB3aXRoIHJhdGVkIHRlbXBlcmF0dXJlIHJh bmdlIG9mIC01NcKwQyB0bwo+IC0rMTUwwrBDLiBJdCBoYXMgYSBoaWdoIGFjY3VyYWN5IG9mICsv LTAuNcKwQyBhbmQgY2FuIGJlIG9wZXJhdGVkIGF0IGEgcmVzb2x1dGlvbgo+IC1vZiAxMyBiaXRz ICgwLjA2MjXCsEMpIG9yIDE2IGJpdHMgKDAuMDA3OMKwQykuIFRoZSBzZW5zb3IgcHJvdmlkZXMg YW4gSU5UIHBpbiB0bwo+IC1pbmRpY2F0ZSB0aGF0IGEgbWluaW11bSBvciBtYXhpbXVtIHRlbXBl cmF0dXJlIHNldCBwb2ludCBoYXMgYmVlbiBleGNlZWRlZCwgYXMKPiAtd2VsbCBhcyBhIGNyaXRp Y2FsIHRlbXBlcmF0dXJlIChDVCkgcGluIHRvIGluZGljYXRlIHRoYXQgdGhlIGNyaXRpY2FsCj4g LXRlbXBlcmF0dXJlIHNldCBwb2ludCBoYXMgYmVlbiBleGNlZWRlZC4gQm90aCBwaW5zIGNhbiBi ZSBzZXQgdXAgd2l0aCBhIGNvbW1vbgo+IC1oeXN0ZXJlc2lzIG9mIDDCsEMgLSAxNcKwQyBhbmQg YSBmYXVsdCBxdWV1ZSwgcmFuZ2luZyBmcm9tIDEgdG8gNCBldmVudHMuIEJvdGgKPiAtcGlucyBj YW4gaW5kaXZpZHVhbGx5IHNldCB0byBiZSBhY3RpdmUtbG93IG9yIGFjdGl2ZS1oaWdoLCB3aGls ZSB0aGUgd2hvbGUKPiAtZGV2aWNlIGNhbiBlaXRoZXIgcnVuIGluIGNvbXBhcmF0b3IgbW9kZSBv ciBpbnRlcnJ1cHQgbW9kZS4gVGhlIEFEVDc0MTAKPiAtc3VwcG9ydHMgY29udGlub3VzIHRlbXBl cmF0dXJlIHNhbXBsaW5nLCBhcyB3ZWxsIGFzIHNhbXBsaW5nIG9uZSB0ZW1wZXJhdHVyZQo+IC12 YWx1ZSBwZXIgc2Vjb25kIG9yIGV2ZW4ganVzdGdldCBvbmUgc2FtcGxlIG9uIGRlbWFuZCBmb3Ig cG93ZXIgc2F2aW5nLgo+IC1CZXNpZGVzLCBpdCBjYW4gY29tcGxldGVseSBwb3dlciBkb3duIGl0 cyBBREMsIGlmIHBvd2VyIG1hbmFnZW1lbnQgaXMKPiAtcmVxdWlyZWQuCj4gK1RoZSBBRFQ3NDEw IGFuZCBzaW1pbGFyIGFyZSBhIHRlbXBlcmF0dXJlIHNlbnNvcnMgd2l0aCByYXRlZCB0ZW1wZXJh dHVyZSByYW5nZQo+ICtvZiAtNTXCsEMgdG8gKzE1MMKwQyAoQURUNzMxMC9BRFQ3NDEwKSBvciAt NDDCsEMgdG8gKzE1MMKwQyAoQURUNzMyMC9BRFQ3NDIwKS4gVGhleQo+ICtoYXZlIGEgaGlnaCBh Y2N1cmFjeSBvZiArLy0wLjXCsEMgKEFEVDczMTAvQURUNzQxMCkgb3IgKy8tMC4yQyAoQURUNzQz MC9BRFQ3NDIwKQo+ICthbmQgY2FuIGJlIG9wZXJhdGVkIGF0IGEgcmVzb2x1dGlvbiBvZiAxMyBi aXRzICgwLjA2MjXCsEMpIG9yIDE2IGJpdHMgKDAuMDA3OMKwQykuCj4gK1RoZSBzZW5zb3IgcHJv dmlkZXMgYW4gSU5UIHBpbiB0byBpbmRpY2F0ZSB0aGF0IGEgbWluaW11bSBvciBtYXhpbXVtIHRl bXBlcmF0dXJlCj4gK3NldCBwb2ludCBoYXMgYmVlbiBleGNlZWRlZCwgYXMgd2VsbCBhcyBhIGNy aXRpY2FsIHRlbXBlcmF0dXJlIChDVCkgcGluIHRvCj4gK2luZGljYXRlIHRoYXQgdGhlIGNyaXRp Y2FsIHRlbXBlcmF0dXJlIHNldCBwb2ludCBoYXMgYmVlbiBleGNlZWRlZC4gQm90aCBwaW5zCj4g K2NhbiBiZSBzZXQgdXAgd2l0aCBhIGNvbW1vbiBoeXN0ZXJlc2lzIG9mIDDCsEMgLSAxNcKwQyBh bmQgYSBmYXVsdCBxdWV1ZSwgcmFuZ2luZwo+ICtmcm9tIDEgdG8gNCBldmVudHMuIEJvdGggcGlu cyBjYW4gaW5kaXZpZHVhbGx5IHNldCB0byBiZSBhY3RpdmUtbG93IG9yCj4gK2FjdGl2ZS1oaWdo LCB3aGlsZSB0aGUgd2hvbGUgZGV2aWNlIGNhbiBlaXRoZXIgcnVuIGluIGNvbXBhcmF0b3IgbW9k ZSBvcgo+ICtpbnRlcnJ1cHQgbW9kZS4gVGhlIEFEVDc0MTAgc3VwcG9ydHMgY29udGlub3VzIHRl bXBlcmF0dXJlIHNhbXBsaW5nLCBhcyB3ZWxsIGFzCkl0IGlzIG15IHR5cG8sIGJ1dCBzaW5jZSB5 b3UgYXJlIGFscmVhZHkgb24gaXQ6IGNvbnRpbnVvdXMuCj4gK3NhbXBsaW5nIG9uZSB0ZW1wZXJh dHVyZSB2YWx1ZSBwZXIgc2Vjb25kIG9yIGV2ZW4ganVzdGdldCBvbmUgc2FtcGxlIG9uIGRlbWFu ZApTYW1lIGhlcmU6IGp1c3QgZ2V0Lgo+ICtmb3IgcG93ZXIgc2F2aW5nLiAgQmVzaWRlcywgaXQg Y2FuIGNvbXBsZXRlbHkgcG93ZXIgZG93biBpdHMgQURDLCBpZiBwb3dlcgo+ICttYW5hZ2VtZW50 IGlzIHJlcXVpcmVkLgo+ICAKPiAgQ29uZmlndXJhdGlvbiBOb3Rlcwo+ICAtLS0tLS0tLS0tLS0t LS0tLS0tCjwuLi4+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0N3gxMC5jIGIvZHJp dmVycy9od21vbi9hZHQ3eDEwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLmVlZmYxOThjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvaHdtb24vYWR0N3gx MC5jCj4gQEAgLTAsMCArMSw0NzYgQEAKPiArLyoKPiArICogYWR0NzQxMC5jIC0gUGFydCBvZiBs bV9zZW5zb3JzLCBMaW51eCBrZXJuZWwgbW9kdWxlcyBmb3IgaGFyZHdhcmUKPiArICoJIG1vbml0 b3JpbmcKPiArICogVGhpcyBkcml2ZXIgaGFuZGxlcyB0aGUgQURUNzQxMCBhbmQgY29tcGF0aWJs ZSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvcnMuCj4gKyAqIEhhcnRtdXQgS25hYWNrIDxrbmFh Y2suaEBnbXguZGU+IDIwMTItMDctMjIKPiArICogYmFzZWQgb24gbG03NS5jIGJ5IEZyb2RvIExv b2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4KPiArICogYW5kIGFkdDc0MTAuYyBmcm9tIGlpby1zdGFn aW5nIGJ5IFNvbmljIFpoYW5nIDxzb25pYy56aGFuZ0BhbmFsb2cuY29tPgo+ICsgKgo+ICsgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo+ICsgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJ bmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KPiArICovCj4gKwo+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaHdtb24tc3lzZnMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4K PiArI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiYWR0N3gxMC5oIgo+ ICsKPiArLyoKPiArICogQURUNzQxMCBzdGF0dXMKPiArICovCj4gKyNkZWZpbmUgQURUNzQxMF9T VEFUX1RfTE9XCQkoMSA8PCA0KQo+ICsjZGVmaW5lIEFEVDc0MTBfU1RBVF9UX0hJR0gJCSgxIDw8 IDUpCj4gKyNkZWZpbmUgQURUNzQxMF9TVEFUX1RfQ1JJVAkJKDEgPDwgNikKPiArI2RlZmluZSBB RFQ3NDEwX1NUQVRfTk9UX1JEWQkJKDEgPDwgNykKPiArCj4gKy8qCj4gKyAqIEFEVDc0MTAgY29u ZmlnCj4gKyAqLwo+ICsjZGVmaW5lIEFEVDc0MTBfRkFVTFRfUVVFVUVfTUFTSwkoMSA8PCAwIHwg MSA8PCAxKQo+ICsjZGVmaW5lIEFEVDc0MTBfQ1RfUE9MQVJJVFkJCSgxIDw8IDIpCj4gKyNkZWZp bmUgQURUNzQxMF9JTlRfUE9MQVJJVFkJCSgxIDw8IDMpCj4gKyNkZWZpbmUgQURUNzQxMF9FVkVO VF9NT0RFCQkoMSA8PCA0KQo+ICsjZGVmaW5lIEFEVDc0MTBfTU9ERV9NQVNLCQkoMSA8PCA1IHwg MSA8PCA2KQo+ICsjZGVmaW5lIEFEVDc0MTBfRlVMTAkJCSgwIDw8IDUgfCAwIDw8IDYpCj4gKyNk ZWZpbmUgQURUNzQxMF9QRAkJCSgxIDw8IDUgfCAxIDw8IDYpCj4gKyNkZWZpbmUgQURUNzQxMF9S RVNPTFVUSU9OCQkoMSA8PCA3KQo+ICsKPiArLyoKPiArICogQURUNzQxMCBtYXNrcwo+ICsgKi8K PiArI2RlZmluZSBBRFQ3NDEwX1QxM19WQUxVRV9NQVNLCQkJMHhGRkY4Cj4gKyNkZWZpbmUgQURU NzQxMF9UX0hZU1RfTUFTSwkJCTB4Rgo+ICsKPiArLyogc3RyYWlnaHQgZnJvbSB0aGUgZGF0YXNo ZWV0ICovCj4gKyNkZWZpbmUgQURUNzQxMF9URU1QX01JTiAoLTU1MDAwKQo+ICsjZGVmaW5lIEFE VDc0MTBfVEVNUF9NQVggMTUwMDAwCj4gKwo+ICsvKiBFYWNoIGNsaWVudCBoYXMgdGhpcyBhZGRp dGlvbmFsIGRhdGEgKi8KPiArc3RydWN0IGFkdDc0MTBfZGF0YSB7Cj4gKwljb25zdCBzdHJ1Y3Qg YWR0NzQxMF9vcHMgKm9wczsKPiArCWNvbnN0IGNoYXIJCSpuYW1lOwo+ICsJc3RydWN0IGRldmlj ZQkJKmh3bW9uX2RldjsKPiArCXN0cnVjdCBtdXRleAkJdXBkYXRlX2xvY2s7Cj4gKwl1OAkJCWNv bmZpZzsKPiArCXU4CQkJb2xkY29uZmlnOwo+ICsJYm9vbAkJCXZhbGlkOwkJLyogdHJ1ZSBpZiBy ZWdpc3RlcnMgdmFsaWQgKi8KPiArCXVuc2lnbmVkIGxvbmcJCWxhc3RfdXBkYXRlZDsJLyogSW4g amlmZmllcyAqLwo+ICsJczE2CQkJdGVtcFs0XTsJLyogUmVnaXN0ZXIgdmFsdWVzLAo+ICsJCQkJ CQkgICAwID0gaW5wdXQKPiArCQkJCQkJICAgMSA9IGhpZ2gKPiArCQkJCQkJICAgMiA9IGxvdwo+ ICsJCQkJCQkgICAzID0gY3JpdGljYWwgKi8KPiArCXU4CQkJaHlzdDsJCS8qIGh5c3RlcmVzaXMg b2Zmc2V0ICovCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGFkdDc0MTBfcmVhZF9ieXRlKHN0cnVj dCBkZXZpY2UgKmRldiwgdTggcmVnKQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0NzQxMF9kYXRhICpkID0g ZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlyZXR1cm4gZC0+b3BzLT5yZWFkX2J5dGUoZGV2LCBy ZWcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFkdDc0MTBfd3JpdGVfYnl0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHU4IHJlZywgdTggZGF0YSkKPiArewo+ICsJc3RydWN0IGFkdDc0MTBfZGF0YSAq ZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJcmV0dXJuIGQtPm9wcy0+d3JpdGVfYnl0ZShk ZXYsIHJlZywgZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYWR0NzQxMF9yZWFkX3dvcmQo c3RydWN0IGRldmljZSAqZGV2LCB1OCByZWcpCj4gK3sKPiArCXN0cnVjdCBhZHQ3NDEwX2RhdGEg KmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXJldHVybiBkLT5vcHMtPnJlYWRfd29yZChk ZXYsIHJlZyk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYWR0NzQxMF93cml0ZV93b3JkKHN0cnVj dCBkZXZpY2UgKmRldiwgdTggcmVnLCB1MTYgZGF0YSkKPiArewo+ICsJc3RydWN0IGFkdDc0MTBf ZGF0YSAqZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJcmV0dXJuIGQtPm9wcy0+d3JpdGVf d29yZChkZXYsIHJlZywgZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCB1OCBBRFQ3NDEw X1JFR19URU1QWzRdID0gewo+ICsJQURUNzQxMF9URU1QRVJBVFVSRSwJCS8qIGlucHV0ICovCj4g KwlBRFQ3NDEwX1RfQUxBUk1fSElHSCwJCS8qIGhpZ2ggKi8KPiArCUFEVDc0MTBfVF9BTEFSTV9M T1csCQkvKiBsb3cgKi8KPiArCUFEVDc0MTBfVF9DUklULAkJCS8qIGNyaXRpY2FsICovCj4gK307 Cj4gKwo+ICtzdGF0aWMgaW50IGFkdDc0MTBfdGVtcF9yZWFkeShzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gK3sKPiArCWludCBpLCBzdGF0dXM7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDY7IGkrKykg ewo+ICsJCXN0YXR1cyA9IGFkdDc0MTBfcmVhZF9ieXRlKGRldiwgQURUNzQxMF9TVEFUVVMpOwo+ ICsJCWlmIChzdGF0dXMgPCAwKQo+ICsJCQlyZXR1cm4gc3RhdHVzOwo+ICsJCWlmICghKHN0YXR1 cyAmIEFEVDc0MTBfU1RBVF9OT1RfUkRZKSkKPiArCQkJcmV0dXJuIDA7Cj4gKwkJbXNsZWVwKDYw KTsKPiArCX0KPiArCXJldHVybiAtRVRJTUVET1VUOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGFk dDc0MTBfdXBkYXRlX3RlbXAoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0 NzQxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlpbnQgcmV0ID0gMDsK PiArCj4gKwltdXRleF9sb2NrKCZkYXRhLT51cGRhdGVfbG9jayk7Cj4gKwo+ICsJaWYgKHRpbWVf YWZ0ZXIoamlmZmllcywgZGF0YS0+bGFzdF91cGRhdGVkICsgSFogKyBIWiAvIDIpCj4gKwkgICAg fHwgIWRhdGEtPnZhbGlkKSB7Cj4gKwkJaW50IHRlbXA7Cj4gKwo+ICsJCWRldl9kYmcoZGV2LCAi U3RhcnRpbmcgdXBkYXRlXG4iKTsKPiArCj4gKwkJcmV0ID0gYWR0NzQxMF90ZW1wX3JlYWR5KGRl dik7IC8qIGNoZWNrIGZvciBuZXcgdmFsdWUgKi8KPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGFi b3J0Owo+ICsKPiArCQl0ZW1wID0gYWR0NzQxMF9yZWFkX3dvcmQoZGV2LCBBRFQ3NDEwX1JFR19U RU1QWzBdKTsKPiArCQlpZiAodGVtcCA8IDApIHsKPiArCQkJcmV0ID0gdGVtcDsKPiArCQkJZGV2 X2RiZyhkZXYsICJGYWlsZWQgdG8gcmVhZCB2YWx1ZTogcmVnICVkLCBlcnJvciAlZFxuIiwKPiAr CQkJCUFEVDc0MTBfUkVHX1RFTVBbMF0sIHJldCk7Cj4gKwkJCWdvdG8gYWJvcnQ7Cj4gKwkJfQo+ ICsJCWRhdGEtPnRlbXBbMF0gPSB0ZW1wOwo+ICsJCWRhdGEtPmxhc3RfdXBkYXRlZCA9IGppZmZp ZXM7Cj4gKwkJZGF0YS0+dmFsaWQgPSB0cnVlOwo+ICsJfQo+ICsKPiArYWJvcnQ6Cj4gKwltdXRl eF91bmxvY2soJmRhdGEtPnVwZGF0ZV9sb2NrKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgYWR0NzQxMF9maWxsX2NhY2hlKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ ICsJc3RydWN0IGFkdDc0MTBfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ICsJ aW50IHJldDsKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDE7IGkgPCBBUlJBWV9TSVpFKGRh dGEtPnRlbXApOyBpKyspIHsKPiArCQlyZXQgPSBhZHQ3NDEwX3JlYWRfd29yZChkZXYsIEFEVDc0 MTBfUkVHX1RFTVBbaV0pOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCWRldl9kYmcoZGV2LCAi RmFpbGVkIHRvIHJlYWQgdmFsdWU6IHJlZyAlZCwgZXJyb3IgJWRcbiIsCj4gKwkJCQlBRFQ3NDEw X1JFR19URU1QWzBdLCByZXQpOwpUaGF0IHNob3VsZCBiZSBBRFQ3NDEwX1JFR19URU1QW2ldLgo+ ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCQlkYXRhLT50ZW1wW2ldID0gcmV0Owo+ICsJfQo+ ICsKPiArCXJldCA9IGFkdDc0MTBfcmVhZF9ieXRlKGRldiwgQURUNzQxMF9UX0hZU1QpOwo+ICsJ aWYgKHJldCA8IDApIHsKPiArCQlkZXZfZGJnKGRldiwgIkZhaWxlZCB0byByZWFkIHZhbHVlOiBy ZWcgJWQsIGVycm9yICVkXG4iLAo+ICsJCQkJQURUNzQxMF9UX0hZU1QsIHJldCk7Cj4gKwkJcmV0 dXJuIHJldDsKPiArCX0KPiArCWRhdGEtPmh5c3QgPSByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gK3N0YXRpYyBzMTYgQURUNzQxMF9URU1QX1RPX1JFRyhsb25nIHRlbXApCj4gK3sK PiArCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChjbGFtcF92YWwodGVtcCwgQURUNzQxMF9URU1Q X01JTiwKPiArCQkJCQkgICAgICAgQURUNzQxMF9URU1QX01BWCkgKiAxMjgsIDEwMDApOwo+ICt9 CmNsYW1wX3ZhbCB2cy4gU0VOU09SU19MSU1JVC4gV2hhdCBhcmUgdGhlIHByb3MgYW5kIGNvbnMg b2YgZWFjaCBtYWNybz8gR3VlbnRoZXIsIGFyZSB0aGVyZSBhbnkgcmVhc29ucyBwcmV2ZW50aW5n IHRvIGRyb3AgU0VOU09SU19MSU1JVCBpbiBmYXZvciBvZiBjbGFtcF92YWwgaW4gdGhlIHdob2xl IGh3bW9uIHN1YnN5c3RlbT8KPiArCj4gK3N0YXRpYyBpbnQgQURUNzQxMF9SRUdfVE9fVEVNUChz dHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRhLCBzMTYgcmVnKQo+ICt7Cj4gKwkvKiBpbiAxMyBiaXQg bW9kZSwgYml0cyAwLTIgYXJlIHN0YXR1cyBmbGFncyAtIG1hc2sgdGhlbSBvdXQgKi8KPiArCWlm ICghKGRhdGEtPmNvbmZpZyAmIEFEVDc0MTBfUkVTT0xVVElPTikpCj4gKwkJcmVnICY9IEFEVDc0 MTBfVDEzX1ZBTFVFX01BU0s7Cj4gKwkvKgo+ICsJICogdGVtcGVyYXR1cmUgaXMgc3RvcmVkIGlu IHR3b3MgY29tcGxlbWVudCBmb3JtYXQsIGluIHN0ZXBzIG9mCj4gKwkgKiAxLzEyOMKwQwo+ICsJ ICovCj4gKwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QocmVnICogMTAwMCwgMTI4KTsKPiArfQo+ ICsKPiArLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCj4gKwo+ICsvKiBzeXNmcyBhdHRyaWJ1dGVzIGZvciBo d21vbiAqLwo+ICsKPiArc3RhdGljIHNzaXplX3QgYWR0NzQxMF9zaG93X3RlbXAoc3RydWN0IGRl dmljZSAqZGV2LAo+ICsJCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkYSwgY2hhciAqYnVm KQo+ICt7Cj4gKwlzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgKmF0dHIgPSB0b19zZW5z b3JfZGV2X2F0dHIoZGEpOwo+ICsJc3RydWN0IGFkdDc0MTBfZGF0YSAqZGF0YSA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOwo+ICsKPiArCj4gKwlpZiAoYXR0ci0+aW5kZXggPT0gMCkgewo+ICsJCWlu dCByZXQ7Cj4gKwo+ICsJCXJldCA9IGFkdDc0MTBfdXBkYXRlX3RlbXAoZGV2KTsKPiArCQlpZiAo cmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiVkXG4iLCBBRFQ3NDEwX1JFR19UT19URU1QKGRhdGEsCj4gKwkJICAgICAgIGRhdGEtPnRlbXBb YXR0ci0+aW5kZXhdKSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGFkdDc0MTBfc2V0X3Rl bXAoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmRh LAo+ICsJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCj4gK3sKPiArCXN0cnVjdCBz ZW5zb3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkYSk7Cj4g KwlzdHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlp bnQgbnIgPSBhdHRyLT5pbmRleDsKPiArCWxvbmcgdGVtcDsKPiArCWludCByZXQ7Cj4gKwo+ICsJ cmV0ID0ga3N0cnRvbChidWYsIDEwLCAmdGVtcCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGF0YS0+dXBkYXRlX2xvY2spOwo+ICsJZGF0YS0+dGVt cFtucl0gPSBBRFQ3NDEwX1RFTVBfVE9fUkVHKHRlbXApOwo+ICsJcmV0ID0gYWR0NzQxMF93cml0 ZV93b3JkKGRldiwgQURUNzQxMF9SRUdfVEVNUFtucl0sIGRhdGEtPnRlbXBbbnJdKTsKPiArCWlm IChyZXQpCj4gKwkJY291bnQgPSByZXQ7Cj4gKwltdXRleF91bmxvY2soJmRhdGEtPnVwZGF0ZV9s b2NrKTsKPiArCXJldHVybiBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgYWR0NzQx MF9zaG93X3RfaHlzdChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqZGEsCj4gKwkJCQkgICBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBzZW5z b3JfZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciA9IHRvX3NlbnNvcl9kZXZfYXR0cihkYSk7Cj4gKwlz dHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlpbnQg bnIgPSBhdHRyLT5pbmRleDsKPiArCWludCBoeXN0Owo+ICsKPiArCWh5c3QgPSAoZGF0YS0+aHlz dCAmIEFEVDc0MTBfVF9IWVNUX01BU0spICogMTAwMDsKPiArCj4gKwkvKgo+ICsJICogaHlzdGVy ZXNpcyBpcyBzdG9yZWQgYXMgYSA0IGJpdCBvZmZzZXQgaW4gdGhlIGRldmljZSwgY29udmVydCBp dAo+ICsJICogdG8gYW4gYWJzb2x1dGUgdmFsdWUKPiArCSAqLwo+ICsJaWYgKG5yID09IDIpCS8q IG1pbiBoYXMgcG9zaXRpdmUgb2Zmc2V0LCBvdGhlcnMgaGF2ZSBuZWdhdGl2ZSAqLwo+ICsJCWh5 c3QgPSAtaHlzdDsKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLAo+ICsJCSAgICAgICBB RFQ3NDEwX1JFR19UT19URU1QKGRhdGEsIGRhdGEtPnRlbXBbbnJdKSAtIGh5c3QpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3NpemVfdCBhZHQ3NDEwX3NldF90X2h5c3Qoc3RydWN0IGRldmljZSAqZGV2 LAo+ICsJCQkJICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGEsCj4gKwkJCQkgIGNvbnN0IGNo YXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0NzQxMF9kYXRhICpkYXRh ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlpbnQgbGltaXQsIHJldDsKPiArCWxvbmcgaHlz dDsKPiArCj4gKwlyZXQgPSBrc3RydG9sKGJ1ZiwgMTAsICZoeXN0KTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiArCS8qIGNvbnZlcnQgYWJzb2x1dGUgaHlzdGVyZXNpcyB2YWx1ZSB0 byBhIDQgYml0IGRlbHRhIHZhbHVlICovCj4gKwlsaW1pdCA9IEFEVDc0MTBfUkVHX1RPX1RFTVAo ZGF0YSwgZGF0YS0+dGVtcFsxXSk7Cj4gKwloeXN0ID0gY2xhbXBfdmFsKGh5c3QsIEFEVDc0MTBf VEVNUF9NSU4sIEFEVDc0MTBfVEVNUF9NQVgpOwo+ICsJZGF0YS0+aHlzdCA9IGNsYW1wX3ZhbChE SVZfUk9VTkRfQ0xPU0VTVChsaW1pdCAtIGh5c3QsIDEwMDApLAo+ICsJCQkJICAgMCwgQURUNzQx MF9UX0hZU1RfTUFTSyk7Cj4gKwlyZXQgPSBhZHQ3NDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3NDEw X1RfSFlTVCwgZGF0YS0+aHlzdCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ ICsJcmV0dXJuIGNvdW50Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdCBhZHQ3NDEwX3Nob3df YWxhcm0oc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqZGEsCj4gKwkJCQkgIGNoYXIgKmJ1ZikKPiArewo+ICsJc3RydWN0IHNlbnNvcl9kZXZpY2Vf YXR0cmlidXRlICphdHRyID0gdG9fc2Vuc29yX2Rldl9hdHRyKGRhKTsKPiArCWludCByZXQ7Cj4g Kwo+ICsJcmV0ID0gYWR0NzQxMF9yZWFkX2J5dGUoZGV2LCBBRFQ3NDEwX1NUQVRVUyk7Cj4gKwlp ZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiVkXG4iLCAhIShyZXQgJiBhdHRyLT5pbmRleCkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVf dCBhZHQ3NDEwX3Nob3dfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkgIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICpkYSwgY2hhciAqYnVmKQo+ICt7Cj4gKwlzdHJ1Y3QgYWR0NzQxMF9k YXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJcmV0dXJuIHNwcmludGYo YnVmLCAiJXNcbiIsIGRhdGEtPm5hbWUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgU0VOU09SX0RFVklD RV9BVFRSKHRlbXAxX2lucHV0LCBTX0lSVUdPLCBhZHQ3NDEwX3Nob3dfdGVtcCwgTlVMTCwgMCk7 Cj4gK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfbWF4LCBTX0lXVVNSIHwgU19JUlVH TywKPiArCQkJICBhZHQ3NDEwX3Nob3dfdGVtcCwgYWR0NzQxMF9zZXRfdGVtcCwgMSk7Cj4gK3N0 YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIodGVtcDFfbWluLCBTX0lXVVNSIHwgU19JUlVHTywKPiAr CQkJICBhZHQ3NDEwX3Nob3dfdGVtcCwgYWR0NzQxMF9zZXRfdGVtcCwgMik7Cj4gK3N0YXRpYyBT RU5TT1JfREVWSUNFX0FUVFIodGVtcDFfY3JpdCwgU19JV1VTUiB8IFNfSVJVR08sCj4gKwkJCSAg YWR0NzQxMF9zaG93X3RlbXAsIGFkdDc0MTBfc2V0X3RlbXAsIDMpOwo+ICtzdGF0aWMgU0VOU09S X0RFVklDRV9BVFRSKHRlbXAxX21heF9oeXN0LCBTX0lXVVNSIHwgU19JUlVHTywKPiArCQkJICBh ZHQ3NDEwX3Nob3dfdF9oeXN0LCBhZHQ3NDEwX3NldF90X2h5c3QsIDEpOwo+ICtzdGF0aWMgU0VO U09SX0RFVklDRV9BVFRSKHRlbXAxX21pbl9oeXN0LCBTX0lSVUdPLAo+ICsJCQkgIGFkdDc0MTBf c2hvd190X2h5c3QsIE5VTEwsIDIpOwo+ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAx X2NyaXRfaHlzdCwgU19JUlVHTywKPiArCQkJICBhZHQ3NDEwX3Nob3dfdF9oeXN0LCBOVUxMLCAz KTsKPiArc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUih0ZW1wMV9taW5fYWxhcm0sIFNfSVJVR08s IGFkdDc0MTBfc2hvd19hbGFybSwKPiArCQkJICBOVUxMLCBBRFQ3NDEwX1NUQVRfVF9MT1cpOwo+ ICtzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX21heF9hbGFybSwgU19JUlVHTywgYWR0 NzQxMF9zaG93X2FsYXJtLAo+ICsJCQkgIE5VTEwsIEFEVDc0MTBfU1RBVF9UX0hJR0gpOwo+ICtz dGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHRlbXAxX2NyaXRfYWxhcm0sIFNfSVJVR08sIGFkdDc0 MTBfc2hvd19hbGFybSwKPiArCQkJICBOVUxMLCBBRFQ3NDEwX1NUQVRfVF9DUklUKTsKPiArc3Rh dGljIERFVklDRV9BVFRSKG5hbWUsIFNfSVJVR08sIGFkdDc0MTBfc2hvd19uYW1lLCBOVUxMKTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphZHQ3NDEwX2F0dHJpYnV0ZXNbXSA9IHsK PiArCSZzZW5zb3JfZGV2X2F0dHJfdGVtcDFfaW5wdXQuZGV2X2F0dHIuYXR0ciwKPiArCSZzZW5z b3JfZGV2X2F0dHJfdGVtcDFfbWF4LmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRy X3RlbXAxX21pbi5kZXZfYXR0ci5hdHRyLAo+ICsJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9jcml0 LmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX21heF9oeXN0LmRldl9h dHRyLmF0dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX21pbl9oeXN0LmRldl9hdHRyLmF0 dHIsCj4gKwkmc2Vuc29yX2Rldl9hdHRyX3RlbXAxX2NyaXRfaHlzdC5kZXZfYXR0ci5hdHRyLAo+ ICsJJnNlbnNvcl9kZXZfYXR0cl90ZW1wMV9taW5fYWxhcm0uZGV2X2F0dHIuYXR0ciwKPiArCSZz ZW5zb3JfZGV2X2F0dHJfdGVtcDFfbWF4X2FsYXJtLmRldl9hdHRyLmF0dHIsCj4gKwkmc2Vuc29y X2Rldl9hdHRyX3RlbXAxX2NyaXRfYWxhcm0uZGV2X2F0dHIuYXR0ciwKPiArCU5VTEwKPiArfTsK PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGFkdDc0MTBfZ3JvdXAg PSB7Cj4gKwkuYXR0cnMgPSBhZHQ3NDEwX2F0dHJpYnV0ZXMsCj4gK307Cj4gKwo+ICtpbnQgYWR0 NzQxMF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCj4gKwljb25z dCBzdHJ1Y3QgYWR0NzQxMF9vcHMgKm9wcykKPiArewo+ICsJc3RydWN0IGFkdDc0MTBfZGF0YSAq ZGF0YTsKPiArCWludCByZXQ7Cj4gKwo+ICsJZGF0YSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVv ZihzdHJ1Y3QgYWR0NzQxMF9kYXRhKSwKPiArCQkJICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFk YXRhKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWRhdGEtPm9wcyA9IG9wczsKPiArCWRh dGEtPm5hbWUgPSBuYW1lOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGRhdGEpOwo+ICsJ bXV0ZXhfaW5pdCgmZGF0YS0+dXBkYXRlX2xvY2spOwo+ICsKPiArCS8qIGNvbmZpZ3VyZSBhcyBz cGVjaWZpZWQgKi8KPiArCXJldCA9IGFkdDc0MTBfcmVhZF9ieXRlKGRldiwgQURUNzQxMF9DT05G SUcpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZGJnKGRldiwgIkNhbid0IHJlYWQgY29u ZmlnPyAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJZGF0YS0+b2xkY29u ZmlnID0gcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBTZXQgdG8gMTYgYml0IHJlc29sdXRpb24sIGNv bnRpbm91cyBjb252ZXJzaW9uIGFuZCBjb21wYXJhdG9yIG1vZGUuCj4gKwkgKi8KPiArCWRhdGEt PmNvbmZpZyA9IGRhdGEtPm9sZGNvbmZpZzsKPiArCWRhdGEtPmNvbmZpZyAmPSB+QURUNzQxMF9N T0RFX01BU0s7Cj4gKwlkYXRhLT5jb25maWcgfD0gQURUNzQxMF9GVUxMIHwgQURUNzQxMF9SRVNP TFVUSU9OIHwgQURUNzQxMF9FVkVOVF9NT0RFOwo+ICsJaWYgKGRhdGEtPmNvbmZpZyAhPSBkYXRh LT5vbGRjb25maWcpIHsKPiArCQlyZXQgPSBhZHQ3NDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3NDEw X0NPTkZJRywgZGF0YS0+Y29uZmlnKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsJZGV2X2RiZyhkZXYsICJDb25maWcgJTAyeFxuIiwgZGF0YS0+Y29uZmlnKTsKPiAr Cj4gKwlyZXQgPSBhZHQ3NDEwX2ZpbGxfY2FjaGUoZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBleGl0X3Jlc3RvcmU7Cj4gKwo+ICsJLyogUmVnaXN0ZXIgc3lzZnMgaG9va3MgKi8KPiArCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cCgmZGV2LT5rb2JqLCAmYWR0NzQxMF9ncm91cCk7Cj4gKwlp ZiAocmV0KQo+ICsJCWdvdG8gZXhpdF9yZXN0b3JlOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUgSTJD IGRldmljZSB3aWxsIGFscmVhZHkgaGF2ZSBpdCdzIG93biAnbmFtZScgYXR0cmlidXRlLCBidXQg Zm9yCj4gKwkgKiB0aGUgU1BJIGRldmljZSB3ZSBuZWVkIHRvIHJlZ2lzdGVyIGl0LiBuYW1lIHdp bGwgb25seSBiZSBub24gTlVMTCBpZgo+ICsJICogdGhlIGRldmljZSBkb2Vzbid0IHJlZ2lzdGVy IHRoZSAnbmFtZScgYXR0cmlidXRlIG9uIGl0cyBvd24uCj4gKwkgKi8KPiArCWlmIChuYW1lKSB7 Cj4gKwkJcmV0ID0gZGV2aWNlX2NyZWF0ZV9maWxlKGRldiwgJmRldl9hdHRyX25hbWUpOwo+ICsJ CWlmIChyZXQpCj4gKwkJCWdvdG8gZXhpdF9yZW1vdmU7Cj4gKwl9Cj4gKwo+ICsJZGF0YS0+aHdt b25fZGV2ID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyKGRldik7Cj4gKwlpZiAoSVNfRVJSKGRhdGEt Pmh3bW9uX2RldikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGRhdGEtPmh3bW9uX2Rldik7Cj4gKwkJ Z290byBleGl0X3JlbW92ZV9uYW1lOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXhp dF9yZW1vdmVfbmFtZToKPiArCWlmIChuYW1lKQo+ICsJCWRldmljZV9yZW1vdmVfZmlsZShkZXYs ICZkZXZfYXR0cl9uYW1lKTsKPiArZXhpdF9yZW1vdmU6Cj4gKwlzeXNmc19yZW1vdmVfZ3JvdXAo JmRldi0+a29iaiwgJmFkdDc0MTBfZ3JvdXApOwo+ICtleGl0X3Jlc3RvcmU6Cj4gKwlhZHQ3NDEw X3dyaXRlX2J5dGUoZGV2LCBBRFQ3NDEwX0NPTkZJRywgZGF0YS0+b2xkY29uZmlnKTsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoYWR0NzQxMF9wcm9iZSk7Cj4gKwo+ ICtpbnQgYWR0NzQxMF9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qg YWR0NzQxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJaHdtb25f ZGV2aWNlX3VucmVnaXN0ZXIoZGF0YS0+aHdtb25fZGV2KTsKPiArCWlmIChkYXRhLT5uYW1lKQo+ ICsJCWRldmljZV9yZW1vdmVfZmlsZShkZXYsICZkZXZfYXR0cl9uYW1lKTsKPiArCXN5c2ZzX3Jl bW92ZV9ncm91cCgmZGV2LT5rb2JqLCAmYWR0NzQxMF9ncm91cCk7Cj4gKwlpZiAoZGF0YS0+b2xk Y29uZmlnICE9IGRhdGEtPmNvbmZpZykKPiArCQlhZHQ3NDEwX3dyaXRlX2J5dGUoZGV2LCBBRFQ3 NDEwX0NPTkZJRywKPiArCQkJCQkgIGRhdGEtPm9sZGNvbmZpZyk7Cj4gKwlyZXR1cm4gMDsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MX0dQTChhZHQ3NDEwX3JlbW92ZSk7Cj4gKwo+ICsjaWZkZWYgQ09O RklHX1BNX1NMRUVQCj4gKwo+ICtzdGF0aWMgaW50IGFkdDc0MTBfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBhZHQ3NDEwX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKPiArCj4gKwlyZXR1cm4gYWR0NzQxMF93cml0ZV9ieXRlKGRldiwgQURUNzQx MF9DT05GSUcsCj4gKwkJZGF0YS0+Y29uZmlnIHwgQURUNzQxMF9QRCk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgYWR0NzQxMF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1 Y3QgYWR0NzQxMF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsJcmV0 dXJuIGFkdDc0MTBfd3JpdGVfYnl0ZShkZXYsIEFEVDc0MTBfQ09ORklHLCBkYXRhLT5jb25maWcp Owo+ICt9Cj4gKwo+ICtTSU1QTEVfREVWX1BNX09QUyhhZHQ3NDEwX2Rldl9wbV9vcHMsIGFkdDc0 MTBfc3VzcGVuZCwgYWR0NzQxMF9yZXN1bWUpOwo+ICtFWFBPUlRfU1lNQk9MX0dQTChhZHQ3NDEw X2Rldl9wbV9vcHMpOwo+ICsKPiArI2VuZGlmIC8qIENPTkZJR19QTV9TTEVFUCAqLwo+ICsKPiAr TU9EVUxFX0FVVEhPUigiSGFydG11dCBLbmFhY2siKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJB RFQ3NDEwL0FEVDc0MjAsIEFEVDczMTAvQURUNzMyMCBjb21tb24gY29kZSIpOwo+ICtNT0RVTEVf TElDRU5TRSgiR1BMIik7Cj4KPC4uPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbG0tc2Vuc29ycyBtYWlsaW5nIGxpc3QKbG0tc2Vuc29yc0BsbS1zZW5z b3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1hbi9saXN0aW5mby9sbS1z ZW5zb3Jz