From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pascal PAILLET-LME Subject: Re: [PATCH 2/8] mfd: stpmu1: add stpmu1 pmic driver Date: Tue, 21 Aug 2018 12:23:16 +0000 Message-ID: <5B7C0433.7030107@st.com> References: <1530803657-17684-1-git-send-email-p.paillet@st.com> <1530803657-17684-3-git-send-email-p.paillet@st.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: Enric Balletbo Serra Cc: Dmitry Torokhov , Rob Herring , Mark Rutland , Lee Jones , Liam Girdwood , Mark Brown , "wim@linux-watchdog.org" , Guenter Roeck , "linux-input@vger.kernel.org" , "devicetree@vger.kernel.org" , linux-kernel , "linux-watchdog@vger.kernel.org" , "benjamin.gaignard@linaro.org" List-Id: devicetree@vger.kernel.org SGksDQoNClRoYW5rcyBhIGxvdCBmb3IgdGhlIHJldmlldyAhIEkganVzdCBoYXZlIGEgcXVlc3Rp b24gYmVsb3cgcmVnYXJkaW5nIA0KcG9wdWxhdGUgbWV0aG9kLg0KDQoNCkxlIDA3LzEwLzIwMTgg MTI6MzggQU0sIEVucmljIEJhbGxldGJvIFNlcnJhIGEgw6ljcml0IDoNCj4gSGkgUGFzY2FsLA0K Pg0KPiBUaGFua3MgZm9yIHRoZSBwYXRjaCBzb21lIGNvbW1lbnRzIGJlbG93Lg0KPg0KPiBNaXNz YXRnZSBkZSBQYXNjYWwgUEFJTExFVC1MTUUgPHAucGFpbGxldEBzdC5jb20+IGRlbCBkaWEgZGou LCA1IGRlDQo+IGp1bC4gMjAxOCBhIGxlcyAxNzoxNzoNCj4+IEZyb206IHBhc2NhbCBwYWlsbGV0 IDxwLnBhaWxsZXRAc3QuY29tPg0KPj4NCj4+IHN0cG11MSBpcyBhIHBtaWMgZnJvbSBTVE1pY3Jv ZWxlY3Ryb25pY3MuIFRoZSBzdHBtdTEgaW50ZWdyYXRlcyAxMA0KPj4gcmVndWxhdG9ycyBhbmQg MyBzd2l0Y2hlcyB3aXRoIHZhcmlvdXMgY2FwYWJpbGl0aWVzLg0KPj4NCj4+IFNpZ25lZC1vZmYt Ynk6IHBhc2NhbCBwYWlsbGV0IDxwLnBhaWxsZXRAc3QuY29tPg0KPj4gLS0tDQo+PiAgIGRyaXZl cnMvbWZkL0tjb25maWcgICAgICAgICAgICAgICAgIHwgIDE0ICsrDQo+PiAgIGRyaXZlcnMvbWZk L01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAxICsNCj4+ICAgZHJpdmVycy9tZmQvc3RwbXUx LmMgICAgICAgICAgICAgICAgfCA0OTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrDQo+PiAgIGluY2x1ZGUvZHQtYmluZGluZ3MvbWZkL3N0LHN0cG11MS5oIHwgIDQ2ICsrKysN Cj4+ICAgaW5jbHVkZS9saW51eC9tZmQvc3RwbXUxLmggICAgICAgICAgfCAyMjAgKysrKysrKysr KysrKysrKw0KPj4gICA1IGZpbGVzIGNoYW5nZWQsIDc3MSBpbnNlcnRpb25zKCspDQo+PiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9zdHBtdTEuYw0KPj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9tZmQvc3Qsc3RwbXUxLmgNCj4+ICAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvbWZkL3N0cG11MS5oDQo+Pg0KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWZkL0tjb25maWcgYi9kcml2ZXJzL21mZC9LY29uZmlnDQo+PiBpbmRleCBiODYw ZWI1Li5lMTUxNDBiIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZmQvS2NvbmZpZw0KPj4gKysr IGIvZHJpdmVycy9tZmQvS2NvbmZpZw0KPj4gQEAgLTE4MTIsNiArMTgxMiwyMCBAQCBjb25maWcg TUZEX1NUTTMyX1RJTUVSUw0KPj4gICAgICAgICAgICBmb3IgUFdNIGFuZCBJSU8gVGltZXIuIFRo aXMgZHJpdmVyIGFsbG93IHRvIHNoYXJlIHRoZQ0KPj4gICAgICAgICAgICByZWdpc3RlcnMgYmV0 d2VlbiB0aGUgb3RoZXJzIGRyaXZlcnMuDQo+Pg0KPj4gK2NvbmZpZyBNRkRfU1RQTVUxDQo+PiAr ICAgICAgIHRyaXN0YXRlICJTdXBwb3J0IGZvciBTVFBNVTEgUE1JQyINCj4+ICsgICAgICAgZGVw ZW5kcyBvbiAoSTJDPXkgJiYgT0YpDQo+PiArICAgICAgIHNlbGVjdCBSRUdNQVBfSTJDDQo+PiAr ICAgICAgIHNlbGVjdCBSRUdNQVBfSVJRDQo+PiArICAgICAgIHNlbGVjdCBNRkRfQ09SRQ0KPj4g KyAgICAgICBoZWxwDQo+PiArICAgICAgICAgU3VwcG9ydCBmb3IgU1QgTWljcm9lbGVjdHJvbmlj cyBTVFBNVTEgUE1JQy4gU3RwbXUxIG1mZCBkcml2ZXIgaXMNCj4+ICsgICAgICAgICB0aGUgY29y ZSBkcml2ZXIgZm9yIHN0cG11MSBjb21wb25lbnQgdGhhdCBtYWlubHkgaGFuZGxlcyBpbnRlcnJ1 cHRzLg0KPj4gKw0KPj4gKyAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1 bGUsIGNob29zZSBNIGhlcmU6IHRoZQ0KPj4gKyAgICAgICAgIG1vZHVsZSB3aWxsIGJlIGNhbGxl ZCBzdHBtdTEuDQo+PiArDQo+PiArDQo+IEV4dHJhIGxpbmUgbm90IG5lZWRlZC4NCj4NCj4+ICAg bWVudSAiTXVsdGltZWRpYSBDYXBhYmlsaXRpZXMgUG9ydCBkcml2ZXJzIg0KPj4gICAgICAgICAg ZGVwZW5kcyBvbiBBUkNIX1NBMTEwMA0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9N YWtlZmlsZSBiL2RyaXZlcnMvbWZkL01ha2VmaWxlDQo+PiBpbmRleCBlOWZkMjBkLi5mMWM0YmUx IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZmQvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMv bWZkL01ha2VmaWxlDQo+PiBAQCAtMjIwLDYgKzIyMCw3IEBAIG9iai0kKENPTkZJR19JTlRFTF9T T0NfUE1JQ19DSFREQ19USSkgICAgICAgKz0gaW50ZWxfc29jX3BtaWNfY2h0ZGNfdGkubw0KPj4g ICBvYmotJChDT05GSUdfTUZEX01UNjM5NykgICAgICAgKz0gbXQ2Mzk3LWNvcmUubw0KPj4NCj4+ ICAgb2JqLSQoQ09ORklHX01GRF9BTFRFUkFfQTEwU1IpICs9IGFsdGVyYS1hMTBzci5vDQo+PiAr b2JqLSQoQ09ORklHX01GRF9TVFBNVTEpICAgICAgICs9IHN0cG11MS5vDQo+PiAgIG9iai0kKENP TkZJR19NRkRfU1VONElfR1BBREMpICArPSBzdW40aS1ncGFkYy5vDQo+Pg0KPj4gICBvYmotJChD T05GSUdfTUZEX1NUTTMyX0xQVElNRVIpICAgICAgICArPSBzdG0zMi1scHRpbWVyLm8NCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL21mZC9zdHBtdTEuYyBiL2RyaXZlcnMvbWZkL3N0cG11MS5jDQo+ PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMC4uYTI4NGEzZQ0KPj4gLS0t IC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9tZmQvc3RwbXUxLmMNCj4+IEBAIC0wLDAgKzEs NDkwIEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gVGhlcmUg aXMgYSBsaWNlbnNlIG1pc21hdGNoIGJldHdlZW4gU1BEWCBhbmQgTU9EVUxFX0xJQ0VOU0UuIE9y IFNQRFgNCj4gaWRlbnRpZmllciBzaG91bGQgYmUgR1BMLTIuMC1vci1sYXRlciBvciBNT0RVTEVf TElDRU5TRSBzaG91bGQgYmUNCj4gKCJHUEwgdjIiKQ0KPg0KPiBTZWUgaHR0cHM6Ly9lbGl4aXIu Ym9vdGxpbi5jb20vbGludXgvbGF0ZXN0L3NvdXJjZS9pbmNsdWRlL2xpbnV4L21vZHVsZS5oI0wx NzUNCj4NCj4+ICsvKg0KPj4gKyAqIENvcHlyaWdodCAoQykgU1RNaWNyb2VsZWN0cm9uaWNzIDIw MTggLSBBbGwgUmlnaHRzIFJlc2VydmVkDQo+PiArICogQXV0aG9yOiBQaGlsaXBwZSBQZXVyaWNo YXJkIDxwaGlsaXBwZS5wZXVyaWNoYXJkQHN0LmNvbT4sDQo+PiArICogUGFzY2FsIFBhaWxsZXQg PHAucGFpbGxldEBzdC5jb20+IGZvciBTVE1pY3JvZWxlY3Ryb25pY3MuDQo+PiArICovDQo+PiAr DQo+IEkgdGhpbmsgdGhhdCBMZWUsIGxpa2UgTGludXMsIHByZWZlcnMgdGhlIEMrKyBzdHlsZSBo ZXJlDQo+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiBUaGF0IHRoaXMgaW5jbHVkZSBp cyBub3QgbmVlZGVkLg0KPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCj4+ICsjaW5jbHVk ZSA8bGludXgvaW50ZXJydXB0Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L21mZC9jb3JlLmg+DQo+ PiArI2luY2x1ZGUgPGxpbnV4L21mZC9zdHBtdTEuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L29m X2lycS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0KPj4gKyNpbmNsdWRl IDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gZGl0dG8NCj4+ICsjaW5jbHVkZSA8bGludXgv cG1fcnVudGltZS5oPg0KPiBkaXR0bw0KPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wbV93YWtlaXJx Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPj4gKyNpbmNsdWRlIDxkdC1iaW5k aW5ncy9tZmQvc3Qsc3RwbXUxLmg+DQo+PiArDQo+IFtzbmlwXQ0KPg0KPj4gKw0KPj4gK3N0YXRp YyBpbnQgc3RwbXUxX2NvbmZpZ3VyZV9mcm9tX2R0KHN0cnVjdCBzdHBtdTFfZGV2ICpwbWljX2Rl dikNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwbWljX2Rldi0+ bnA7DQo+PiArICAgICAgIHUzMiByZWcgPSAwOw0KPiBZb3UgZG9uJ3QgbmVlZCB0byBpbml0aWFs aXplIHJlZyB0byAwLCBhbnl3YXkgd2lsbCBiZSBvdmVyd3JpdGVuLg0KPg0KPj4gKyAgICAgICBp bnQgcmV0ID0gMDsNCj4gWW91IGRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSByZXQgdG8gMCwgYW55 d2F5IHdpbGwgYmUgb3ZlcndyaXR0ZW4uDQo+DQo+PiArICAgICAgIGludCBpcnE7DQo+PiArDQo+ PiArICAgICAgIGlycSA9IG9mX2lycV9nZXQobnAsIDApOw0KPj4gKyAgICAgICBpZiAoaXJxIDw9 IDApIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHBtaWNfZGV2LT5kZXYsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBpcnEgY29uZmlnOiAlZFxuIiwgaXJx KTsNCj4gVGhpcyBjYW4gYmUgaW4gb25lIGxpbmUuDQo+DQo+PiArICAgICAgICAgICAgICAgcmV0 dXJuIGlycSA/IGlycSA6IC1FTk9ERVY7DQo+IG5pdDogcmV0dXJuIGlycSA/OiAtRU5PREVWOw0K Pg0KPj4gKyAgICAgICB9DQo+PiArICAgICAgIHBtaWNfZGV2LT5pcnEgPSBpcnE7DQo+PiArDQo+ PiArICAgICAgIGlycSA9IG9mX2lycV9nZXQobnAsIDEpOw0KPj4gKyAgICAgICBpZiAoaXJxIDw9 IDApIHsNCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHBtaWNfZGV2LT5kZXYsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBpcnFfd2FrZSBjb25maWc6ICVkXG4i LCBpcnEpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiBpcnEgPyBpcnEgOiAtRU5PREVWOw0K PiBuaXQ6IHJldHVybiBpcnEgPzogLUVOT0RFVjsNCj4NCj4+ICsgICAgICAgfQ0KPj4gKyAgICAg ICBwbWljX2Rldi0+aXJxX3dha2UgPSBpcnE7DQo+PiArDQo+PiArICAgICAgIGRldmljZV9pbml0 X3dha2V1cChwbWljX2Rldi0+ZGV2LCB0cnVlKTsNCj4+ICsgICAgICAgcmV0ID0gZGV2X3BtX3Nl dF9kZWRpY2F0ZWRfd2FrZV9pcnEocG1pY19kZXYtPmRldiwgcG1pY19kZXYtPmlycV93YWtlKTsN Cj4+ICsgICAgICAgaWYgKHJldCkNCj4+ICsgICAgICAgICAgICAgICBkZXZfd2FybihwbWljX2Rl di0+ZGV2LCAiZmFpbGVkIHRvIHNldCB1cCB3YWtldXAgaXJxIik7DQo+PiArDQo+PiArICAgICAg IGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJzdCxtYWluX2NvbnRyb2xfcmVnaXN0ZXIi LCAmcmVnKSkgew0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhw bWljX2Rldi0+cmVnbWFwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTV09GRl9QV1JDVFJMX0NSLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQV1JDVFJMX1BPTEFSSVRZX0hJR0ggfA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQV1JDVFJMX1BJTl9WQUxJRCB8DQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFU1RBUlRfUkVRVUVTVF9FTkFCTEVELA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcpOw0KPj4gKyAg ICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9l cnIocG1pY19kZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZh aWxlZCB0byB1cGRhdGUgbWFpbiBjb250cm9sIHJlZ2lzdGVyOiAlZFxuIiwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiByZXQ7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+PiArDQo+ PiArICAgICAgIGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJzdCxwYWRzX3B1bGxfcmVn aXN0ZXIiLCAmcmVnKSkgew0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVf Yml0cyhwbWljX2Rldi0+cmVnbWFwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQURTX1BVTExfQ1IsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFdBS0VVUF9ERVRFQ1RPUl9ESVNBQkxFRCB8DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBXUkNUUkxfUERfQUNUSVZFIHwNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFdSQ1RSTF9QVV9BQ1RJVkUgfA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXQUtFVVBfUERfQUNU SVZFLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcpOw0K Pj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg IGRldl9lcnIocG1pY19kZXYtPmRldiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkZhaWxlZCB0byB1cGRhdGUgcGFkcyBjb250cm9sIHJlZ2lzdGVyOiAlZFxuIiwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICB9DQo+ PiArDQo+PiArICAgICAgIGlmICghb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJzdCx2aW5fY29u dHJvbF9yZWdpc3RlciIsICZyZWcpKSB7DQo+PiArICAgICAgICAgICAgICAgcmV0ID0gcmVnbWFw X3VwZGF0ZV9iaXRzKHBtaWNfZGV2LT5yZWdtYXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZCVVNfREVUX1ZJTl9DUiwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVklOTE9XX0NUUkxfUkVHX01BU0ssDQo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyk7DQo+PiArICAgICAgICAgICAg ICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihwbWljX2Rl di0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHVw ZGF0ZSB2aW4gY29udHJvbCByZWdpc3RlcjogJWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldCk7DQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPj4gKyAgICAgICAgICAgICAgIH0NCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICBp ZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAic3QsdXNiX2NvbnRyb2xfcmVnaXN0ZXIiLCAm cmVnKSkgew0KPj4gKyAgICAgICAgICAgICAgIHJldCA9IHJlZ21hcF91cGRhdGVfYml0cyhwbWlj X2Rldi0+cmVnbWFwLCBCU1RfU1dfQ1IsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJPT1NUX09WUF9ESVNBQkxFRCB8DQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZCVVNfT1RHX0RFVEVDVElPTl9ESVNBQkxFRCB8DQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXX09VVF9ESVNDSEFSR0Ug fA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQlVTX09UR19E SVNDSEFSR0UgfA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP Q1BfTElNSVRfSElHSCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVnKTsNCj4+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBkZXZfZXJyKHBtaWNfZGV2LT5kZXYsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJGYWlsZWQgdG8gdXBkYXRlIHVzYiBjb250cm9sIHJlZ2lzdGVyOiAlZFxu IiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0KTsNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICAgICAgICAgICAgfQ0KPj4gKyAg ICAgICB9DQo+PiArDQo+PiArICAgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQg c3RwbXUxX2RldmljZV9pbml0KHN0cnVjdCBzdHBtdTFfZGV2ICpwbWljX2RldikNCj4+ICt7DQo+ PiArICAgICAgIGludCByZXQ7DQo+PiArICAgICAgIHVuc2lnbmVkIGludCB2YWw7DQo+PiArDQo+ PiArICAgICAgIHBtaWNfZGV2LT5yZWdtYXAgPQ0KPj4gKyAgICAgICAgICAgZGV2bV9yZWdtYXBf aW5pdF9pMmMocG1pY19kZXYtPmkyYywgJnN0cG11MV9yZWdtYXBfY29uZmlnKTsNCj4+ICsNCj4+ ICsgICAgICAgaWYgKElTX0VSUihwbWljX2Rldi0+cmVnbWFwKSkgew0KPj4gKyAgICAgICAgICAg ICAgIHJldCA9IFBUUl9FUlIocG1pY19kZXYtPnJlZ21hcCk7DQo+IFlvdSBjYW4gcmVtb3ZlIHRo aXMgLi4uDQo+DQo+PiArICAgICAgICAgICAgICAgZGV2X2VycihwbWljX2Rldi0+ZGV2LCAiRmFp bGVkIHRvIGFsbG9jYXRlIHJlZ2lzdGVyIG1hcDogJWRcbiIsDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICByZXQpOw0KPj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+IGFuZCBqdXN0 IHJldHVybiBQVFJfRVJSKHBtaWNfZGV2LT5yZWdtYXApOw0KPg0KPj4gKyAgICAgICB9DQo+PiAr DQo+PiArICAgICAgIHJldCA9IHN0cG11MV9jb25maWd1cmVfZnJvbV9kdChwbWljX2Rldik7DQo+ PiArICAgICAgIGlmIChyZXQgPCAwKSB7DQo+IElzIHJldCA+MCByZXR1cm4gdmFsaWQ/ICBJZiBu b3QsIHBlcmhhcHMgImlmIChyZXQpIiB3b3VsZCBiZSBiZXR0ZXIuDQo+DQo+PiArICAgICAgICAg ICAgICAgZGV2X2VycihwbWljX2Rldi0+ZGV2LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IlVuYWJsZSB0byBjb25maWd1cmUgUE1JQyBmcm9tIERldmljZSBUcmVlOiAlZFxuIiwgcmV0KTsN Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICAgICB9DQo+PiArDQo+PiAr ICAgICAgIC8qIFJlYWQgVmVyc2lvbiBJRCAqLw0KPj4gKyAgICAgICByZXQgPSByZWdtYXBfcmVh ZChwbWljX2Rldi0+cmVnbWFwLCBWRVJTSU9OX1NSLCAmdmFsKTsNCj4+ICsgICAgICAgaWYgKHJl dCA8IDApIHsNCj4gSXMgcmV0ID4wIHJldHVybiB2YWxpZD8gIElmIG5vdCwgcGVyaGFwcyAiaWYg KHJldCkiIHdvdWxkIGJlIGJldHRlci4NCj4NCj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHBt aWNfZGV2LT5kZXYsICJVbmFibGUgdG8gcmVhZCBwbWljIHZlcnNpb25cbiIpOw0KPj4gKyAgICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICAgIH0NCj4+ICsgICAgICAgZGV2X2RiZyhw bWljX2Rldi0+ZGV2LCAiUE1JQyBDaGlwIFZlcnNpb246IDB4JXhcbiIsIHZhbCk7DQo+IG5pdDog TWF5YmUgdGhhdCBzaG91bGQgYmUgZGV2X2luZm8gaW5zdGVhZCBvZiBkZXZfZGJnPw0KPg0KPj4g Kw0KPj4gKyAgICAgICAvKiBJbml0aWFsaXplIFBNSUMgSVJRIENoaXAgJiBJUlEgZG9tYWlucyBh c3NvY2lhdGVkICovDQo+PiArICAgICAgIHJldCA9IGRldm1fcmVnbWFwX2FkZF9pcnFfY2hpcChw bWljX2Rldi0+ZGV2LCBwbWljX2Rldi0+cmVnbWFwLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG1pY19kZXYtPmlycSwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElSUUZfT05FU0hPVCB8IElSUUZfU0hBUkVELA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgJnN0cG11MV9yZWdtYXBfaXJxX2No aXAsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcG1pY19kZXYt PmlycV9kYXRhKTsNCj4+ICsgICAgICAgaWYgKHJldCA8IDApIHsNCj4gSXMgcmV0ID4wIHJldHVy biB2YWxpZD8gIElmIG5vdCwgcGVyaGFwcyAiaWYgKHJldCkiIHdvdWxkIGJlIGJldHRlci4NCj4N Cj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHBtaWNfZGV2LT5kZXYsICJJUlEgQ2hpcCByZWdp c3RyYXRpb24gZmFpbGVkOiAlZFxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCk7 DQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgICAgfQ0KPj4gKw0KPj4g KyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBv Zl9kZXZpY2VfaWQgc3RwbXUxX2R0X21hdGNoW10gPSB7DQo+PiArICAgICAgIHsuY29tcGF0aWJs ZSA9ICJzdCxzdHBtdTEifSwNCj4+ICsgICAgICAge30sDQo+IEknZCByZXdyaXRlIHRoaXMgYXMN Cj4gICArICAgICAgIHsgLmNvbXBhdGlibGUgPSAic3Qsc3RwbXUxIiB9LA0KPiAgICsgICAgICAg eyB9DQo+IFNwYWNlIGFmdGVyL2JlZm9yZSBicmFja2V0cyBhbmQgbm8gY29tbWEgYXQgdGhlIGVu ZC4gIFRoZSBzZW50aW5lbA0KPiBpbmRpY2F0ZXMgdGhlIGxhc3QgaXRlbSBvbiBzdHJ1Y3R1cmUv YXJyYXlzIHNvIG5vIG5lZWQgdG8gYWRkIGEgY29tbWENCj4gYXQgdGhlIGVuZC4NCj4NCj4+ICt9 Ow0KPj4gKw0KPiBSZW1vdmUgdGhpcyBsaW5lDQo+DQo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShv Ziwgc3RwbXUxX2R0X21hdGNoKTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IHN0cG11MV9yZW1vdmUo c3RydWN0IGkyY19jbGllbnQgKmkyYykNCj4+ICt7DQo+PiArICAgICAgIHN0cnVjdCBzdHBtdTFf ZGV2ICpwbWljX2RldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpOw0KPj4gKw0KPj4gKyAgICAg ICBvZl9wbGF0Zm9ybV9kZXBvcHVsYXRlKHBtaWNfZGV2LT5kZXYpOw0KPj4gKw0KPj4gKyAgICAg ICByZXR1cm4gMDsNCj4+ICt9DQo+IFlvdSBjYW4gcmVtb3ZlIHRoaXMgZnVuY3Rpb24sIHNlZSBi ZWxvdyAuLi4NCj4NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHN0cG11MV9wcm9iZShzdHJ1Y3QgaTJj X2NsaWVudCAqaTJjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgKmlkKQ0KPj4gK3sNCj4+ICsgICAgICAgc3RydWN0IHN0cG11MV9kZXYgKnBt aWM7DQo+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZpMmMtPmRldjsNCj4+ICsgICAg ICAgaW50IHJldCA9IDA7DQo+IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSB0byAwIGlmIC4uLg0KPg0K Pj4gKw0KPj4gKyAgICAgICBwbWljID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKHN0cnVjdCBz dHBtdTFfZGV2KSwgR0ZQX0tFUk5FTCk7DQo+PiArICAgICAgIGlmICghcG1pYykNCj4+ICsgICAg ICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsgICAgICAgcG1pYy0+bnAgPSBk ZXYtPm9mX25vZGU7DQo+PiArDQo+PiArICAgICAgIGRldl9zZXRfZHJ2ZGF0YShkZXYsIHBtaWMp Ow0KPj4gKyAgICAgICBwbWljLT5kZXYgPSBkZXY7DQo+PiArICAgICAgIHBtaWMtPmkyYyA9IGky YzsNCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gc3RwbXUxX2RldmljZV9pbml0KHBtaWMpOw0KPj4g KyAgICAgICBpZiAocmV0IDwgMCkNCj4gSXMgcmV0ID4wIHJldHVybiB2YWxpZD8gIElmIG5vdCwg cGVyaGFwcyAiaWYgKHJldCkiIHdvdWxkIGJlIGJldHRlci4NCj4+ICsgICAgICAgICAgICAgICBn b3RvIGVycjsNCj4gcmV0dXJuIHJldDsNCj4NCj4+ICsNCj4+ICsgICAgICAgcmV0ID0gb2ZfcGxh dGZvcm1fcG9wdWxhdGUocG1pYy0+bnAsIE5VTEwsIE5VTEwsIHBtaWMtPmRldik7DQo+PiArDQo+ IHJldCA9IGRldm1fb2ZfcGxhdGZvcm1fcG9wdWxhdGUocG1pYy0+ZGV2KTsNCj4NCj4gb3IgZXZl biBiZXR0ZXINCj4NCj4gcmV0dXJuICBkZXZtX29mX3BsYXRmb3JtX3BvcHVsYXRlKHBtaWMtPmRl dik7DQo+DQo+IEFuZCByZW1vdmUgdGhlIHN0cG11MV9yZW1vdmUgZnVuY3Rpb24uDQogRnJvbSB0 aGUgcmVndWxhdG9yIGRyaXZlciByZXZpZXcsIE1hcmsgQnJvd24gc3VnZ2VzdCB0byB1c2UgDQpt ZmRfYWRkX2RldmljZXMoKSB0byByZW1vdmUgdGhlIGNvbXBhdGlibGUgc3RyaW5ncyBpbiB0aGUg Y2hpbGQgZHJpdmVycy4NClRoaXMgbWVhbnMgYWRkaW5nIHN0cnVjdCBtZmRfY2VsbCB3aXRoIGEg bGlzdCBvZiBkZXZpY2VzIHRvIHByb2JlLg0KSXMgaXQgb2sgaWYgSSBzd2l0Y2ggdG8gbWZkX2Fk ZF9kZXZpY2VzKCkgPw0KDQoNCj4+ICsgICAgICAgZGV2X2RiZyhkZXYsICJzdHBtdTEgZHJpdmVy IHByb2JlZFxuIik7DQo+IFRoYXQgbWVzc2FnZSBsb29rcyByZWR1bmRhbnQgdG8gbWUuIEknZCBy ZW1vdmUgaXQuDQo+DQo+PiArZXJyOg0KPiBBbmQgeW91IGNhbiByZW1vdmUgdGhpcyBsYWJlbC4N Cj4NCj4+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gQW5kIHRoaXMNCj4NCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0cG11MV9pZFtdID0gew0KPj4g KyAgICAgICB7InN0cG11MSIsIDB9LA0KPj4gKyAgICAgICB7fQ0KPj4gK307DQo+PiArDQo+PiAr TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0cG11MV9pZCk7DQo+IFRoZSBhYm92ZSBjb2RlIHNo b3VsZG4ndCBiZSBuZWVkZWQgYW55bW9yZSBmb3IgRFQtb25seSBkZXZpY2VzLiBTZWUNCj4gZGEx MGMwNmEwNDRiICgiaTJjOiBNYWtlIEkyQyBJRCB0YWJsZXMgbm9uLW1hbmRhdG9yeSBmb3IgRFQn ZWQNCj4gZGV2aWNlcyIpDQo+DQo+PiArDQo+PiArI2lmZGVmIENPTkZJR19QTV9TTEVFUA0KPj4g K3N0YXRpYyBpbnQgc3RwbXUxX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ ICsgICAgICAgc3RydWN0IGkyY19jbGllbnQgKmkyYyA9IGNvbnRhaW5lcl9vZihkZXYsIHN0cnVj dCBpMmNfY2xpZW50LCBkZXYpOw0KPj4gKyAgICAgICBzdHJ1Y3Qgc3RwbXUxX2RldiAqcG1pY19k ZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTsNCj4+ICsNCj4+ICsgICAgICAgaWYgKGRldmlj ZV9tYXlfd2FrZXVwKGRldikpDQo+PiArICAgICAgICAgICAgICAgZW5hYmxlX2lycV93YWtlKHBt aWNfZGV2LT5pcnFfd2FrZSk7DQo+PiArDQo+PiArICAgICAgIGRpc2FibGVfaXJxKHBtaWNfZGV2 LT5pcnEpOw0KPj4gKyAgICAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlu dCBzdHBtdTFfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikNCj4+ICt7DQo+PiArICAgICAgIHN0 cnVjdCBpMmNfY2xpZW50ICppMmMgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgaTJjX2NsaWVu dCwgZGV2KTsNCj4+ICsgICAgICAgc3RydWN0IHN0cG11MV9kZXYgKnBtaWNfZGV2ID0gaTJjX2dl dF9jbGllbnRkYXRhKGkyYyk7DQo+PiArDQo+PiArICAgICAgIHJlZ2NhY2hlX3N5bmMocG1pY19k ZXYtPnJlZ21hcCk7DQo+IE1heWJlIHlvdSB3b3VsZCBsaWtlIHRvIGNoZWNrIGZvciBhbiBlcnJv ciBoZXJlLg0KPg0KPj4gKw0KPj4gKyAgICAgICBpZiAoZGV2aWNlX21heV93YWtldXAoZGV2KSkN Cj4+ICsgICAgICAgICAgICAgICBkaXNhYmxlX2lycV93YWtlKHBtaWNfZGV2LT5pcnFfd2FrZSk7 DQo+PiArDQo+PiArICAgICAgIGVuYWJsZV9pcnEocG1pY19kZXYtPmlycSk7DQo+PiArICAgICAg IHJldHVybiAwOw0KPj4gK30NCj4+ICsjZW5kaWYNCj4+ICsNCj4+ICtzdGF0aWMgU0lNUExFX0RF Vl9QTV9PUFMoc3RwbXUxX3BtLCBzdHBtdTFfc3VzcGVuZCwgc3RwbXUxX3Jlc3VtZSk7DQo+PiAr DQo+PiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0cG11MV9kcml2ZXIgPSB7DQo+PiArICAg ICAgIC5kcml2ZXIgPSB7DQo+PiArICAgICAgICAgICAgICAgICAgLm5hbWUgPSAic3RwbXUxIiwN Cj4+ICsgICAgICAgICAgICAgICAgICAub3duZXIgPSBUSElTX01PRFVMRSwNCj4gVGhpcyBpcyBu b3QgbmVlZGVkLCB0aGUgY29yZSBkb2VzIGl0IGZvciB5b3UuDQo+DQo+PiArICAgICAgICAgICAg ICAgICAgLnBtID0gJnN0cG11MV9wbSwNCj4+ICsgICAgICAgICAgICAgICAgICAub2ZfbWF0Y2hf dGFibGUgPSBvZl9tYXRjaF9wdHIoc3RwbXUxX2R0X21hdGNoKSwNCj4gSXQgaXMgYSBEVC1vbmx5 IGRldmljZSBzbyBubyBuZWVkIHRoZSBvZl9tYXRjaF9wdHIuDQo+DQo+PiArICAgICAgICAgICAg ICAgICAgfSwNCj4+ICsgICAgICAgLnByb2JlID0gc3RwbXUxX3Byb2JlLA0KPj4gKyAgICAgICAu cmVtb3ZlID0gc3RwbXUxX3JlbW92ZSwNCj4gTm93IHlvdSBjYW4gcmVtb3ZlIHRoaXMNCj4NCj4+ ICsgICAgICAgLmlkX3RhYmxlID0gc3RwbXUxX2lkLA0KPiBBbmQgeW91IGNhbiByZW1vdmUgdGhp cyBhbHNvLg0KPg0KPj4gK307DQo+PiArDQo+PiArbW9kdWxlX2kyY19kcml2ZXIoc3RwbXUxX2Ry aXZlcik7DQo+PiArDQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJTVFBNVTEgUE1JQyBJMkMgQ2xp ZW50Iik7DQo+IG5pdDogUE1JQyBJMkMgQ2xpZW50IHNvdW5kcyB3ZWlyZCB0byBtZSwgIlNUUE1V MSBQTUlDIGRyaXZlciIgPyBOb3RlDQo+IHRoYXQgSSBhbSBub3QgZW5nbGlzaCBuYXRpdmUgc28g SSBjb3VsZCBiZSB3cm9uZy4NCj4NCj4+ICtNT0RVTEVfQVVUSE9SKCI8cGhpbGlwcGUucGV1cmlj aGFyZEBzdC5jb20+Iik7DQo+IFVzZSAiTmFtZSA8ZW1haWw+IiBvciBqdXN0ICJOYW1lIg0KPg0K Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gQXMgSSB0b2xkIHlvdSB0aGVyZSBpcyBhIGxp Y2Vuc2UgbWlzbWF0Y2ggd2l0aCBTUERYLg0KPg0KPiBbc25pcF0NCj4NCj4gQmVzdCByZWdhcmRz LA0KPiAgIEVucmljDQo+DQoNCkJlc3QgUmVnYXJkcywNCnBhc2NhbA==