Path: csiph.com!aioe.org!bofh.it!news.nic.it!robomod From: "Yang, Wenyou" Newsgroups: linux.kernel Subject: RE: [PATCH v6 1/2] power: act8945a: add charger driver for ACT8945A Date: Fri, 22 Jan 2016 07:50:01 +0100 Message-ID: References: X-Original-To: Peter Korsgaard Thread-Topic: [PATCH v6 1/2] power: act8945a: add charger driver for ACT8945A Thread-Index: AQHRU8CrDGwcH0jeikqpViQc7yAtc58HGBsg Accept-Language: en-US Content-Language: en-US X-Originating-IP: [10.168.5.13] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: robomod@news.nic.it List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Approved: robomod@news.nic.it Lines: 233 Organization: linux.* mail to news gateway X-Original-Cc: Sebastian Reichel , Dmitry Eremin-Solenikov , David Woodhouse , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , "Kumar Gala" , Krzysztof Kozlowski , Javier Martinez Canillas , Lee Jones , Peter Korsgaard , "Ferre, Nicolas" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-pm@vger.kernel.org" X-Original-Date: Fri, 22 Jan 2016 06:42:54 +0000 X-Original-Message-ID: X-Original-References: <1453274383-24835-1-git-send-email-wenyou.yang@atmel.com> <1453274383-24835-2-git-send-email-wenyou.yang@atmel.com> <87ziw0rob8.fsf@dell.be.48ers.dk> X-Original-Sender: linux-kernel-owner@vger.kernel.org Xref: csiph.com linux.kernel:1314776 SGkgUGV0ZXIsDQoNClRoYW5rIHlvdSBmb3Igc28gbXVjaCBhZHZpY2UuDQoNCg0KPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBQZXRlciBLb3JzZ2FhcmQgW21haWx0bzpqYWNt ZXRAZ21haWwuY29tXSBPbiBCZWhhbGYgT2YgUGV0ZXIgS29yc2dhYXJkDQo+IFNlbnQ6IDIwMTbE 6jHUwjIxyNUgNDoyNQ0KPiBUbzogWWFuZywgV2VueW91IDxXZW55b3UuWWFuZ0BhdG1lbC5jb20+ DQo+IENjOiBTZWJhc3RpYW4gUmVpY2hlbCA8c3JlQGtlcm5lbC5vcmc+OyBEbWl0cnkgRXJlbWlu LVNvbGVuaWtvdg0KPiA8ZGJhcnlzaGtvdkBnbWFpbC5jb20+OyBEYXZpZCBXb29kaG91c2UgPGR3 bXcyQGluZnJhZGVhZC5vcmc+OyBSb2INCj4gSGVycmluZyA8cm9iaCtkdEBrZXJuZWwub3JnPjsg UGF3ZWwgTW9sbCA8cGF3ZWwubW9sbEBhcm0uY29tPjsgTWFyaw0KPiBSdXRsYW5kIDxtYXJrLnJ1 dGxhbmRAYXJtLmNvbT47IElhbiBDYW1wYmVsbCA8aWpjK2RldmljZXRyZWVAaGVsbGlvbi5vcmcu dWs+Ow0KPiBLdW1hciBHYWxhIDxnYWxha0Bjb2RlYXVyb3JhLm9yZz47IEtyenlzenRvZiBLb3ps b3dza2kNCj4gPGsua296bG93c2tpQHNhbXN1bmcuY29tPjsgSmF2aWVyIE1hcnRpbmV6IENhbmls bGFzIDxqYXZpZXJAZG93aGlsZTAub3JnPjsNCj4gTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJv Lm9yZz47IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QGdtYWlsLmNvbT47IEZlcnJlLA0KPiBOaWNv bGFzIDxOaWNvbGFzLkZFUlJFQGF0bWVsLmNvbT47IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZzsNCj4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtcG1Admdl ci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjYgMS8yXSBwb3dlcjogYWN0ODk0 NWE6IGFkZCBjaGFyZ2VyIGRyaXZlciBmb3IgQUNUODk0NUENCj4gDQo+ID4+Pj4+ICJXZW55b3Ui ID09IFdlbnlvdSBZYW5nIDx3ZW55b3UueWFuZ0BhdG1lbC5jb20+IHdyaXRlczoNCj4gDQo+ICA+ IFRoaXMgcGF0Y2ggYWRkcyBuZXcgZHJpdmVyIGZvciBBY3RpdmUtc2VtaSBBQ1Q4OTQ1QSBBY3Rp dmVQYXRoICA+IGNoYXJnZXINCj4gKHBhcnQgb2YgQUNUODk0NUEgTUZEIGRyaXZlcikgcHJvdmlk aW5nIHBvd2VyIHN1cHBseSBjbGFzcyAgPiBpbmZvcm1hdGlvbiB0bw0KPiB1c2Vyc3BhY2UuDQo+ IA0KPiAgPiBUaGUgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHRocm91Z2ggRFQgKHN1Y2ggYXMs IHRvdGFsIHRpbWVyLCAgPiBwcmVjb25kaXRpb24NCj4gdGltZXIgYW5kIGlucHV0IG92ZXItdm9s dGFnZSB0aHJlc2hvbGQpLg0KPiANCj4gID4gU2lnbmVkLW9mZi1ieTogV2VueW91IFlhbmcgPHdl bnlvdS55YW5nQGF0bWVsLmNvbT4gID4gLS0tDQo+IA0KPiAgPiBDaGFuZ2VzIGluIHY2Og0KPiAg PiAgLSBjaGFuZ2UgdGhlIHR5cGUgdmFsdWUgdG8gdW5zaWduZWQgaW50Lg0KPiANCj4gW3NuaXBd DQo+IA0KPiA+ICsrKyBiL2RyaXZlcnMvcG93ZXIvYWN0ODk0NWFfY2hhcmdlci5jDQo+ICA+IEBA IC0wLDAgKzEsMzc1IEBADQo+ICA+ICsvKg0KPiAgPiArICogUG93ZXIgc3VwcGx5IGRyaXZlciBm b3IgdGhlIEFjdGl2ZS1zZW1pIEFDVDg5NDVBIFBNSUMgID4gKyAqICA+ICsgKg0KPiBDb3B5cmln aHQgKEMpIDIwMTUgQXRtZWwgQ29ycG9yYXRpb24gID4gKyAqICA+ICsgKiBBdXRob3I6IFdlbnlv dSBZYW5nDQo+IDx3ZW55b3UueWFuZ0BhdG1lbC5jb20+ICA+ICsgKiAgPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4NCj4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj DQo+IExpY2Vuc2UgdmVyc2lvbiAyIGFzICA+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4NCj4gID4gKyAqDQo+ICA+ICsgKi8NCj4gID4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCj4gID4gKyNpbmNsdWRlIDxsaW51eC9tZmQvYWN0ODk0NWEuaD4NCj4g ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiAgPiArI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8u aD4NCj4gID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gID4gKyNpbmNs dWRlIDxsaW51eC9wb3dlcl9zdXBwbHkuaD4NCj4gID4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAu aD4NCj4gID4gKw0KPiAgPiArc3RhdGljIGNvbnN0IGNoYXIgKmFjdDg5NDVhX2NoYXJnZXJfbW9k ZWwgPSAiQUNUODk0NUEiOyAgPiArc3RhdGljIGNvbnN0DQo+IGNoYXIgKmFjdDg5NDVhX2NoYXJn ZXJfbWFudWZhY3R1cmVyID0gIkFjdGl2ZS1zZW1pIjsgID4gKyAgPiArLyoqICA+ICsgKg0KPiBB Q1Q4OTQ1QSBDaGFyZ2VyIFJlZ2lzdGVyIE1hcCAgPiArICovICA+ICsgID4gKy8qIDB4NzA6IFJl c2VydmVkICovDQo+ICA+ICsjZGVmaW5lIEFDVDg5NDVBX0FQQ0hfQ0ZHCQkweDcxDQo+ICA+ICsj ZGVmaW5lIEFDVDg5NDVBX0FQQ0hfU1RBVFVTCQkweDc4DQo+ICA+ICsjZGVmaW5lIEFDVDg5NDVB X0FQQ0hfQ1RSTAkJMHg3OQ0KPiAgPiArI2RlZmluZSBBQ1Q4OTQ1QV9BUENIX1NUQVRFCQkweDdB DQo+ICA+ICsNCj4gID4gKy8qIEFDVDg5NDVBX0FQQ0hfQ0ZHICovDQo+ICA+ICsjZGVmaW5lIEFQ Q0hfQ0ZHX09WUFNFVAkJCSgweDMgPDwgMCkNCj4gID4gKyNkZWZpbmUgQVBDSF9DRkdfT1ZQU0VU XzZWNgkJKDB4MCA8PCAwKQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19PVlBTRVRfN1YJCSgweDEg PDwgMCkNCj4gID4gKyNkZWZpbmUgQVBDSF9DRkdfT1ZQU0VUXzdWNQkJKDB4MiA8PCAwKQ0KPiAg PiArI2RlZmluZSBBUENIX0NGR19PVlBTRVRfOFYJCSgweDMgPDwgMCkNCj4gID4gKyNkZWZpbmUg QVBDSF9DRkdfUFJFVElNTwkJKDB4MyA8PCAyKQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19QUkVU SU1PXzQwX01JTgkJKDB4MCA8PCAyKQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19QUkVUSU1PXzYw X01JTgkJKDB4MSA8PCAyKQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19QUkVUSU1PXzgwX01JTgkJ KDB4MiA8PCAyKQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19QUkVUSU1PX0RJU0FCTEVECSgweDMg PDwgMikNCj4gID4gKyNkZWZpbmUgQVBDSF9DRkdfVE9UVElNTwkJKDB4MyA8PCA0KQ0KPiAgPiAr I2RlZmluZSBBUENIX0NGR19UT1RUSU1PXzNfSE9VUgkJKDB4MCA8PCA0KQ0KPiAgPiArI2RlZmlu ZSBBUENIX0NGR19UT1RUSU1PXzRfSE9VUgkJKDB4MSA8PCA0KQ0KPiAgPiArI2RlZmluZSBBUENI X0NGR19UT1RUSU1PXzVfSE9VUgkJKDB4MiA8PCA0KQ0KPiAgPiArI2RlZmluZSBBUENIX0NGR19U T1RUSU1PX0RJU0FCTEVECSgweDMgPDwgNCkNCj4gID4gKyNkZWZpbmUgQVBDSF9DRkdfU1VTQ0hH CQkJKDB4MSA8PCA3KQ0KPiAgPiArDQo+ICA+ICsjZGVmaW5lIEFQQ0hfU1RBVFVTX0NIR0RBVAkJ QklUKDApDQo+ICA+ICsjZGVmaW5lIEFQQ0hfU1RBVFVTX0lOREFUCQlCSVQoMSkNCj4gID4gKyNk ZWZpbmUgQVBDSF9TVEFUVVNfVEVNUERBVAkJQklUKDIpDQo+ICA+ICsjZGVmaW5lIEFQQ0hfU1RB VFVTX1RJTVJEQVQJCUJJVCgzKQ0KPiAgPiArI2RlZmluZSBBUENIX1NUQVRVU19DSEdTVEFUCQlC SVQoNCkNCj4gID4gKyNkZWZpbmUgQVBDSF9TVEFUVVNfSU5TVEFUCQlCSVQoNSkNCj4gID4gKyNk ZWZpbmUgQVBDSF9TVEFUVVNfVEVNUFNUQVQJCUJJVCg2KQ0KPiAgPiArI2RlZmluZSBBUENIX1NU QVRVU19USU1SU1RBVAkJQklUKDcpDQo+ICA+ICsNCj4gID4gKyNkZWZpbmUgQVBDSF9DVFJMX0NI R0VPQ09VVAkJQklUKDApDQo+ICA+ICsjZGVmaW5lIEFQQ0hfQ1RSTF9JTkRJUwkJCUJJVCgxKQ0K PiAgPiArI2RlZmluZSBBUENIX0NUUkxfVEVNUE9VVAkJQklUKDIpDQo+ICA+ICsjZGVmaW5lIEFQ Q0hfQ1RSTF9USU1SUFJFCQlCSVQoMykNCj4gID4gKyNkZWZpbmUgQVBDSF9DVFJMX0NIR0VPQ0lO CQlCSVQoNCkNCj4gID4gKyNkZWZpbmUgQVBDSF9DVFJMX0lOQ09OCQkJQklUKDUpDQo+ICA+ICsj ZGVmaW5lIEFQQ0hfQ1RSTF9URU1QSU4JCUJJVCg2KQ0KPiAgPiArI2RlZmluZSBBUENIX0NUUkxf VElNUlRPVAkJQklUKDcpDQo+ICA+ICsNCj4gID4gKyNkZWZpbmUgQVBDSF9TVEFURV9BQ0lOU1RB VAkJKDB4MSA8PCAxKQ0KPiAgPiArI2RlZmluZSBBUENIX1NUQVRFX0NTVEFURQkJKDB4MyA8PCA0 KQ0KPiAgPiArI2RlZmluZSBBUENIX1NUQVRFX0NTVEFURV9TSElGVAkJNA0KPiAgPiArI2RlZmlu ZSBBUENIX1NUQVRFX0NTVEFURV9ESVNBQkxFRAkweDAwDQo+ICA+ICsjZGVmaW5lIEFQQ0hfU1RB VEVfQ1NUQVRFX0VPQwkJMHgwMQ0KPiAgPiArI2RlZmluZSBBUENIX1NUQVRFX0NTVEFURV9GQVNU CQkweDAyDQo+ICA+ICsjZGVmaW5lIEFQQ0hfU1RBVEVfQ1NUQVRFX1BSRQkJMHgwMw0KPiAgPiAr DQo+ICA+ICtzdHJ1Y3QgYWN0ODk0NWFfY2hhcmdlciB7DQo+ICA+ICsJc3RydWN0IGFjdDg5NDVh X2RldiAqYWN0ODk0NWFfZGV2Ow0KPiANCj4gSSBzdGlsbCBkb24ndCBzZWUgdGhlIHBvaW50IGlu IHRoaXMgc3RydWN0IGFjdDg5NDVhX2RldiBpbnN0ZWFkIG9mIGp1c3QgaGF2aW5nIGENCj4gcG9p bnRlciB0byBhIHJlZ21hcCBoZXJlIChtb3JlIGFib3V0IHRoYXQgbGF0ZXIpLg0KPiANCj4gPiAr CXN0cnVjdCBwb3dlcl9zdXBwbHkgKnBzeTsNCj4gDQo+IFlvdSB1c2UgZGV2bSBhbmQgb25seSB1 c2UgdGhpcyBpbiB0aGUgcHJvYmUsIHNvIG5vdCBuZWVkZWQuDQo+IA0KPiA+ICsNCj4gID4gKwl1 MzIgdG9sYWxfdGltZV9vdXQ7DQo+IA0KPiBUeXBvLCBzaG91bGQgYmUgdG90YWxfdGltZV9vdXQN Cj4gDQo+ID4gKwl1MzIgcHJlX3RpbWVfb3V0Ow0KPiAgPiArCXUzMiBpbnB1dF92b2x0YWdlX3Ro cmVzaG9sZDsNCj4gDQo+IFRoZXNlIDMgcGFyYW1ldGVycyBhcmUgb25seSB1c2VkIHRvIGtlZXAg dHJhY2sgb2YgZGF0YSBiZXR3ZWVuDQo+IF9wYXJzZV9kdCgpIGFuZCBfY2hhcmdlcl9jb25maWco KSB3aGljaCB5b3UgY2FsbCByaWdodCBhZnRlciBlYWNob3RoZXIuIElmIHlvdQ0KPiBtZXJnZSB0 aG9zZSB0d28gZnVuY3Rpb25zIHRoZW4gdGhlc2UgY2FuIGJlIGRyb3BwZWQuDQoNClllcywgeW91 IGFyZSByaWdodCwgIGl0IGlzIGNsZWFyZXIuDQoNCj4gDQo+IA0KPiA+ICsJYm9vbCBiYXR0ZXJ5 X3RlbXBlcmF0dXJlOw0KPiAgPiArCWludCBjaGdsZXZfcGluOw0KPiAgPiArCWludCBjaGdsZXZf dmFsdWU7DQo+IA0KPiBTYW1lIGZvciB0aGVzZSB0d28uDQo+IA0KPiANCj4gPiArfTsNCj4gID4g Kw0KPiAgPiArc3RhdGljIGludCBhY3Q4OTQ1YV9nZXRfY2hhcmdlcl9zdGF0ZShzdHJ1Y3QgcmVn bWFwICpyZWdtYXAsIGludCAqdmFsKSAgPiArew0KPiAgPiArCWludCByZXQ7DQo+ICA+ICsJdW5z aWduZWQgaW50IHN0YXR1cywgc3RhdGU7DQo+ICA+ICsNCj4gID4gKwlyZXQgPSByZWdtYXBfcmVh ZChyZWdtYXAsIEFDVDg5NDVBX0FQQ0hfU1RBVFVTLCAmc3RhdHVzKTsNCj4gID4gKwlpZiAocmV0 IDwgMCkNCj4gID4gKwkJcmV0dXJuIHJldDsNCj4gID4gKw0KPiAgPiArCXJldCA9IHJlZ21hcF9y ZWFkKHJlZ21hcCwgQUNUODk0NUFfQVBDSF9TVEFURSwgJnN0YXRlKTsNCj4gID4gKwlpZiAocmV0 IDwgMCkNCj4gID4gKwkJcmV0dXJuIHJldDsNCj4gID4gKw0KPiAgPiArCXN0YXRlICY9IEFQQ0hf U1RBVEVfQ1NUQVRFOw0KPiAgPiArCXN0YXRlID4+PSBBUENIX1NUQVRFX0NTVEFURV9TSElGVDsN Cj4gID4gKw0KPiAgPiArCWlmIChzdGF0ZSA9PSBBUENIX1NUQVRFX0NTVEFURV9FT0MpIHsNCj4g ID4gKwkJaWYgKHN0YXR1cyAmIEFQQ0hfU1RBVFVTX0NIR0RBVCkNCj4gID4gKwkJCSp2YWwgPSBQ T1dFUl9TVVBQTFlfU1RBVFVTX0ZVTEw7DQo+ICA+ICsJCWVsc2UNCj4gID4gKwkJCSp2YWwgPSBQ T1dFUl9TVVBQTFlfU1RBVFVTX05PVF9DSEFSR0lORzsNCj4gID4gKwl9IGVsc2UgaWYgKChzdGF0 ZSA9PSBBUENIX1NUQVRFX0NTVEFURV9GQVNUKSB8fA0KPiAgPiArCQkgICAoc3RhdGUgPT0gQVBD SF9TVEFURV9DU1RBVEVfUFJFKSkgew0KPiAgPiArCQkqdmFsID0gUE9XRVJfU1VQUExZX1NUQVRV U19DSEFSR0lORzsNCj4gID4gKwl9IGVsc2Ugew0KPiAgPiArCQkqdmFsID0gUE9XRVJfU1VQUExZ X1NUQVRVU19OT1RfQ0hBUkdJTkc7DQo+ICA+ICsJfQ0KPiAgPiArDQo+ICA+ICsJcmV0dXJuIDA7 DQo+ICA+ICt9DQo+ICA+ICsNCj4gID4gK3N0YXRpYyBpbnQgYWN0ODk0NWFfZ2V0X2NoYXJnZV90 eXBlKHN0cnVjdCByZWdtYXAgKnJlZ21hcCwgaW50ICp2YWwpICA+ICt7DQo+ICA+ICsJaW50IHJl dDsNCj4gID4gKwl1bnNpZ25lZCBpbnQgc3RhdGU7DQo+ICA+ICsNCj4gID4gKwlyZXQgPSByZWdt YXBfcmVhZChyZWdtYXAsIEFDVDg5NDVBX0FQQ0hfU1RBVEUsICZzdGF0ZSk7DQo+ICA+ICsJaWYg KHJldCA8IDApDQo+ICA+ICsJCXJldHVybiByZXQ7DQo+ICA+ICsNCj4gID4gKwlzdGF0ZSAmPSBB UENIX1NUQVRFX0NTVEFURTsNCj4gID4gKwlzdGF0ZSA+Pj0gQVBDSF9TVEFURV9DU1RBVEVfU0hJ RlQ7DQo+ICA+ICsNCj4gID4gKwlzd2l0Y2ggKHN0YXRlKSB7DQo+ICA+ICsJY2FzZSBBUENIX1NU QVRFX0NTVEFURV9QUkU6DQo+ICA+ICsJCSp2YWwgPSBQT1dFUl9TVVBQTFlfQ0hBUkdFX1RZUEVf VFJJQ0tMRTsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJY2FzZSBBUENIX1NUQVRFX0NTVEFURV9G QVNUOg0KPiAgPiArCQkqdmFsID0gUE9XRVJfU1VQUExZX0NIQVJHRV9UWVBFX0ZBU1Q7DQo+ICA+ ICsJCWJyZWFrOw0KPiAgPiArCWNhc2UgQVBDSF9TVEFURV9DU1RBVEVfRU9DOg0KPiAgPiArCWNh c2UgQVBDSF9TVEFURV9DU1RBVEVfRElTQUJMRUQ6DQo+ICA+ICsJZGVmYXVsdDoNCj4gID4gKwkJ KnZhbCA9IFBPV0VSX1NVUFBMWV9DSEFSR0VfVFlQRV9OT05FOw0KPiAgPiArCX0NCj4gID4gKw0K PiAgPiArCXJldHVybiAwOw0KPiAgPiArfQ0KPiAgPiArDQo+ICA+ICtzdGF0aWMgaW50IGFjdDg5 NDVhX2dldF9iYXR0ZXJ5X2hlYWx0aChzdHJ1Y3QgYWN0ODk0NWFfY2hhcmdlciAqY2hhcmdlciwN Cj4gID4gKwkJCQkgICAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwLCBpbnQgKnZhbCkNCj4gID4g K3sNCj4gID4gKwlpbnQgcmV0Ow0KPiAgPiArCXVuc2lnbmVkIGludCBzdGF0dXM7DQo+ICA+ICsN Cj4gID4gKwlyZXQgPSByZWdtYXBfcmVhZChyZWdtYXAsIEFDVDg5NDVBX0FQQ0hfU1RBVFVTLCAm c3RhdHVzKTsNCj4gID4gKwlpZiAocmV0IDwgMCkNCj4gID4gKwkJcmV0dXJuIHJldDsNCj4gID4g Kw0KPiAgPiArCWlmIChjaGFyZ2VyLT5iYXR0ZXJ5X3RlbXBlcmF0dXJlICYmICEoc3RhdHVzICYN Cj4gQVBDSF9TVEFUVVNfVEVNUERBVCkpDQo+ICA+ICsJCSp2YWwgPSBQT1dFUl9TVVBQTFlfSEVB TFRIX09WRVJIRUFUOw0KPiAgPiArCWVsc2UgaWYgKCEoc3RhdHVzICYgQVBDSF9TVEFUVVNfSU5E QVQpKQ0KPiAgPiArCQkqdmFsID0gUE9XRVJfU1VQUExZX0hFQUxUSF9PVkVSVk9MVEFHRTsNCj4g ID4gKwllbHNlIGlmIChzdGF0dXMgJiBBUENIX1NUQVRVU19USU1SREFUKQ0KPiAgPiArCQkqdmFs ID0gUE9XRVJfU1VQUExZX0hFQUxUSF9TQUZFVFlfVElNRVJfRVhQSVJFOw0KPiAgPiArCWVsc2UN Cj4gID4gKwkJKnZhbCA9IFBPV0VSX1NVUFBMWV9IRUFMVEhfR09PRDsNCj4gID4gKw0KPiAgPiAr CXJldHVybiAwOw0KPiAgPiArfQ0KPiAgPiArDQo+ICA+ICtzdGF0aWMgZW51bSBwb3dlcl9zdXBw bHlfcHJvcGVydHkgYWN0ODk0NWFfY2hhcmdlcl9wcm9wc1tdID0gew0KPiAgPiArCVBPV0VSX1NV UFBMWV9QUk9QX1NUQVRVUywNCj4gID4gKwlQT1dFUl9TVVBQTFlfUFJPUF9DSEFSR0VfVFlQRSwN Cj4gID4gKwlQT1dFUl9TVVBQTFlfUFJPUF9URUNITk9MT0dZLA0KPiAgPiArCVBPV0VSX1NVUFBM WV9QUk9QX0hFQUxUSCwNCj4gID4gKwlQT1dFUl9TVVBQTFlfUFJPUF9NT0RFTF9OQU1FLA0KPiAg PiArCVBPV0VSX1NVUFBMWV9QUk9QX01BTlVGQUNUVVJFUg0KPiAgPiArfTsNCj4gID4gKw0KPiAg PiArc3RhdGljIGludCBhY3Q4OTQ1YV9jaGFyZ2VyX2dldF9wcm9wZXJ0eShzdHJ1Y3QgcG93ZXJf c3VwcGx5ICpwc3ksDQo+ICA+ICsJCQkJCSBlbnVtIHBvd2VyX3N1cHBseV9wcm9wZXJ0eSBwcm9w LA0KPiAgPiArCQkJCQkgdW5pb24gcG93ZXJfc3VwcGx5X3Byb3B2YWwgKnZhbCkNCj4gID4gK3sN Cj4gID4gKwlzdHJ1Y3QgYWN0ODk0NWFfY2hhcmdlciAqY2hhcmdlciA9IHBvd2VyX3N1cHBseV9n ZXRfZHJ2ZGF0YShwc3kpOw0KPiAgPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcCA9IGNoYXJnZXIt PmFjdDg5NDVhX2Rldi0+cmVnbWFwOw0KPiAgPiArCWludCByZXQgPSAwOw0KPiAgPiArDQo+ICA+ ICsJc3dpdGNoIChwcm9wKSB7DQo+ICA+ICsJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9TVEFUVVM6 DQo+ICA+ICsJCXJldCA9IGFjdDg5NDVhX2dldF9jaGFyZ2VyX3N0YXRlKHJlZ21hcCwgJnZhbC0+ aW50dmFsKTsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9D SEFSR0VfVFlQRToNCj4gID4gKwkJcmV0ID0gYWN0ODk0NWFfZ2V0X2NoYXJnZV90eXBlKHJlZ21h cCwgJnZhbC0+aW50dmFsKTsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJY2FzZSBQT1dFUl9TVVBQ TFlfUFJPUF9URUNITk9MT0dZOg0KPiAgPiArCQl2YWwtPmludHZhbCA9IFBPV0VSX1NVUFBMWV9U RUNITk9MT0dZX0xJT047DQo+ICA+ICsJCWJyZWFrOw0KPiAgPiArCWNhc2UgUE9XRVJfU1VQUExZ X1BST1BfSEVBTFRIOg0KPiAgPiArCQlyZXQgPSBhY3Q4OTQ1YV9nZXRfYmF0dGVyeV9oZWFsdGgo Y2hhcmdlciwNCj4gID4gKwkJCQkJCSAgcmVnbWFwLCAmdmFsLT5pbnR2YWwpOw0KPiAgPiArCQli cmVhazsNCj4gID4gKwljYXNlIFBPV0VSX1NVUFBMWV9QUk9QX01PREVMX05BTUU6DQo+ICA+ICsJ CXZhbC0+c3RydmFsID0gYWN0ODk0NWFfY2hhcmdlcl9tb2RlbDsNCj4gID4gKwkJYnJlYWs7DQo+ ICA+ICsJY2FzZSBQT1dFUl9TVVBQTFlfUFJPUF9NQU5VRkFDVFVSRVI6DQo+ICA+ICsJCXZhbC0+ c3RydmFsID0gYWN0ODk0NWFfY2hhcmdlcl9tYW51ZmFjdHVyZXI7DQo+ICA+ICsJCWJyZWFrOw0K PiAgPiArCWRlZmF1bHQ6DQo+ICA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiAgPiArCX0NCj4gID4g Kw0KPiAgPiArCXJldHVybiByZXQ7DQo+ICA+ICt9DQo+ICA+ICsNCj4gID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcG93ZXJfc3VwcGx5X2Rlc2MgYWN0ODk0NWFfY2hhcmdlcl9kZXNjID0gew0KPiAg PiArCS5uYW1lCQk9ICJhY3Q4OTQ1YS1jaGFyZ2VyIiwNCj4gID4gKwkudHlwZQkJPSBQT1dFUl9T VVBQTFlfVFlQRV9CQVRURVJZLA0KPiAgPiArCS5nZXRfcHJvcGVydHkJPSBhY3Q4OTQ1YV9jaGFy Z2VyX2dldF9wcm9wZXJ0eSwNCj4gID4gKwkucHJvcGVydGllcwk9IGFjdDg5NDVhX2NoYXJnZXJf cHJvcHMsDQo+ICA+ICsJLm51bV9wcm9wZXJ0aWVzCT0gQVJSQVlfU0laRShhY3Q4OTQ1YV9jaGFy Z2VyX3Byb3BzKSwNCj4gID4gK307DQo+ICA+ICsNCj4gID4gKyNkZWZpbmUgREVGQVVMVF9UT1RB TF9USU1FX09VVAkJMw0KPiAgPiArI2RlZmluZSBERUZBVUxUX1BSRV9USU1FX09VVAkJNDANCj4g ID4gKyNkZWZpbmUgREVGQVVMVF9JTlBVVF9PVlBfVEhSRVNIT0xECTY2MDANCj4gID4gKw0KPiAg PiArc3RhdGljIGludCBhY3Q4OTQ1YV9jaGFyZ2VyX3BhcnNlX2R0KHN0cnVjdCBkZXZpY2UgKmRl diwNCj4gID4gKwkJCQkgICAgIHN0cnVjdCBhY3Q4OTQ1YV9jaGFyZ2VyICpjaGFyZ2VyKQ0KPiAg PiArew0KPiAgPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7DQo+ICA+ ICsJZW51bSBvZl9ncGlvX2ZsYWdzIGZsYWdzOw0KPiAgPiArDQo+ICA+ICsJaWYgKCFucCkgew0K PiAgPiArCQlkZXZfZXJyKGRldiwgIm5vIGNoYXJnZXIgb2Ygbm9kZVxuIik7DQo+ICA+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiAgPiArCX0NCj4gID4gKw0KPiAgPiArCWNoYXJnZXItPmNoZ2xldl9w aW4gPSBvZl9nZXRfbmFtZWRfZ3Bpb19mbGFncyhucCwNCj4gID4gKwkJCQkiYWN0aXZlLXNlbWks Y2hnbGV2LWdwaW9zIiwgMCwgJmZsYWdzKTsNCj4gID4gKw0KPiAgPiArCWNoYXJnZXItPmNoZ2xl dl92YWx1ZSA9IChmbGFncyA9PSBPRl9HUElPX0FDVElWRV9MT1cpID8gMCA6IDE7DQo+ICA+ICsN Cj4gID4gKwljaGFyZ2VyLT5iYXR0ZXJ5X3RlbXBlcmF0dXJlID0gb2ZfcHJvcGVydHlfcmVhZF9i b29sKG5wLA0KPiAgPiArCQkJCSJhY3RpdmUtc2VtaSxjaGVjay1iYXR0ZXJ5LXRlbXBlcmF0dXJl Iik7DQo+ICA+ICsNCj4gID4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsDQo+ICA+ICsJ CQkiYWN0aXZlLXNlbWksaW5wdXQtdm9sdGFnZS10aHJlc2hvbGQtbWljcm92b2x0IiwNCj4gID4g KwkJCSZjaGFyZ2VyLT5pbnB1dF92b2x0YWdlX3RocmVzaG9sZCkpDQo+ICA+ICsJCWNoYXJnZXIt PmlucHV0X3ZvbHRhZ2VfdGhyZXNob2xkID0gREVGQVVMVF9QUkVfVElNRV9PVVQ7DQo+ICA+ICsN Cj4gID4gKwlpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhY3RpdmUtc2VtaSxwcmVjb25k aXRpb24tdGltZW91dCIsDQo+ICA+ICsJCQkJICZjaGFyZ2VyLT5wcmVfdGltZV9vdXQpKQ0KPiAg PiArCQljaGFyZ2VyLT5wcmVfdGltZV9vdXQgPSBERUZBVUxUX1BSRV9USU1FX09VVDsNCj4gID4g Kw0KPiAgPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFjdGl2ZS1zZW1pLHRvdGFs LXRpbWVvdXQiLA0KPiAgPiArCQkJCSAmY2hhcmdlci0+dG9sYWxfdGltZV9vdXQpKQ0KPiAgPiAr CQljaGFyZ2VyLT50b2xhbF90aW1lX291dCA9IERFRkFVTFRfVE9UQUxfVElNRV9PVVQ7DQo+ICA+ ICsNCj4gID4gKwlyZXR1cm4gMDsNCj4gID4gK30NCj4gID4gKw0KPiAgPiArc3RhdGljIGludCBh Y3Q4OTQ1YV9jaGFyZ2VyX2NvbmZpZyhzdHJ1Y3QgYWN0ODk0NWFfY2hhcmdlciAqY2hhcmdlcikg ID4gK3sNCj4gID4gKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXAgPSBjaGFyZ2VyLT5hY3Q4OTQ1YV9k ZXYtPnJlZ21hcDsNCj4gID4gKwl1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOw0KPiAgPiArDQo+ICA+ ICsJaWYgKGdwaW9faXNfdmFsaWQoY2hhcmdlci0+Y2hnbGV2X3BpbikpDQo+ICA+ICsJCWdwaW9f c2V0X3ZhbHVlKGNoYXJnZXItPmNoZ2xldl9waW4sIGNoYXJnZXItPmNoZ2xldl92YWx1ZSk7DQo+ ICA+ICsNCj4gID4gKwlzd2l0Y2ggKGNoYXJnZXItPmlucHV0X3ZvbHRhZ2VfdGhyZXNob2xkKSB7 DQo+ICA+ICsJY2FzZSA4MDAwOg0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19PVlBTRVRfOFY7 DQo+ICA+ICsJCWJyZWFrOw0KPiAgPiArCWNhc2UgNzUwMDoNCj4gID4gKwkJdmFsdWUgfD0gQVBD SF9DRkdfT1ZQU0VUXzdWNTsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJY2FzZSA3MDAwOg0KPiAg PiArCQl2YWx1ZSB8PSBBUENIX0NGR19PVlBTRVRfN1Y7DQo+ICA+ICsJCWJyZWFrOw0KPiAgPiAr CWNhc2UgNjYwMDoNCj4gID4gKwlkZWZhdWx0Og0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19P VlBTRVRfNlY2Ow0KPiAgPiArCQlicmVhazsNCj4gID4gKwl9DQo+ICA+ICsNCj4gID4gKwlzd2l0 Y2ggKGNoYXJnZXItPnByZV90aW1lX291dCkgew0KPiAgPiArCWNhc2UgNjA6DQo+ICA+ICsJCXZh bHVlIHw9IEFQQ0hfQ0ZHX1BSRVRJTU9fNjBfTUlOOw0KPiAgPiArCQlicmVhazsNCj4gID4gKwlj YXNlIDgwOg0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19QUkVUSU1PXzgwX01JTjsNCj4gID4g KwkJYnJlYWs7DQo+ICA+ICsJY2FzZSAwOg0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19QUkVU SU1PX0RJU0FCTEVEOw0KPiAgPiArCQlicmVhazsNCj4gID4gKwljYXNlIDQwOg0KPiAgPiArCWRl ZmF1bHQ6DQo+ICA+ICsJCXZhbHVlIHw9IEFQQ0hfQ0ZHX1BSRVRJTU9fNDBfTUlOOw0KPiAgPiAr CQlicmVhazsNCj4gID4gKwl9DQo+ICA+ICsNCj4gID4gKwlzd2l0Y2ggKGNoYXJnZXItPnRvbGFs X3RpbWVfb3V0KSB7DQo+ICA+ICsJY2FzZSA0Og0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19U T1RUSU1PXzRfSE9VUjsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJY2FzZSA1Og0KPiAgPiArCQl2 YWx1ZSB8PSBBUENIX0NGR19UT1RUSU1PXzVfSE9VUjsNCj4gID4gKwkJYnJlYWs7DQo+ICA+ICsJ Y2FzZSAwOg0KPiAgPiArCQl2YWx1ZSB8PSBBUENIX0NGR19UT1RUSU1PX0RJU0FCTEVEOw0KPiAg PiArCQlicmVhazsNCj4gID4gKwljYXNlIDM6DQo+ICA+ICsJZGVmYXVsdDoNCj4gID4gKwkJdmFs dWUgfD0gQVBDSF9DRkdfVE9UVElNT18zX0hPVVI7DQo+ICA+ICsJCWJyZWFrOw0KPiAgPiArCX0N Cj4gID4gKw0KPiAgPiArCXJldHVybiByZWdtYXBfd3JpdGUocmVnbWFwLCBBQ1Q4OTQ1QV9BUENI X0NGRywgdmFsdWUpOw0KPiAgPiArfQ0KPiAgPiArDQo+ICA+ICtzdGF0aWMgaW50IGFjdDg5NDVh X2NoYXJnZXJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgID4gK3sNCj4gID4g KwlzdHJ1Y3QgYWN0ODk0NWFfZGV2ICphY3Q4OTQ1YV9kZXYgPSBkZXZfZ2V0X2RydmRhdGEocGRl di0+ZGV2LnBhcmVudCk7DQo+ICA+ICsJc3RydWN0IGFjdDg5NDVhX2NoYXJnZXIgKmNoYXJnZXI7 DQo+ICA+ICsJc3RydWN0IHBvd2VyX3N1cHBseV9jb25maWcgcHN5X2NmZyA9IHt9Ow0KPiAgPiAr CWludCByZXQ7DQo+ICA+ICsNCj4gID4gKwljaGFyZ2VyID0gZGV2bV9remFsbG9jKCZwZGV2LT5k ZXYsIHNpemVvZigqY2hhcmdlciksIEdGUF9LRVJORUwpOw0KPiAgPiArCWlmICghY2hhcmdlcikN Cj4gID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICA+ICsNCj4gID4gKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBjaGFyZ2VyKTsNCj4gDQo+IE5ldmVyIHVzZWQsIHNvIHlvdSBjYW4gZHJvcCB0 aGlzLg0KPiANCj4gID4gKw0KPiAgPiArCWNoYXJnZXItPmFjdDg5NDVhX2RldiA9IGFjdDg5NDVh X2RldjsNCj4gDQo+IE9uY2UgYWdhaW4sIHdoeSBjYW4ndCB5b3UganVzdCBkbyBzb21ldGhpbmcg bGlrZToNCj4gDQo+ICAgICAgY2hhcmdlci0+cmVnbWFwID0gZGV2X2dldF9yZWdtYXAocGRldi0+ ZGV2LnBhcmVudCk7DQo+IA0KPiBBbmQgZHJvcCB0aGlzIGFjdDg5NDVfZGV2IHN0cnVjdHVyZT8N Cj4gDQo+IC0tDQo+IEJ5ZSwgUGV0ZXIgS29yc2dhYXJkDQoNCg0KQmVzdCBSZWdhcmRzLA0KV2Vu eW91IFlhbmcNCg==