From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mga11.intel.com ([192.55.52.93]:12172 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753133AbdEKEMI (ORCPT ); Thu, 11 May 2017 00:12:08 -0400 From: "Mani, Rajmohan" To: Tomasz Figa CC: "linux-media@vger.kernel.org" , "mchehab@kernel.org" , Hans Verkuil , "Toivonen, Tuukka" , Sakari Ailus Subject: RE: [PATCH v2] dw9714: Initial driver for dw9714 VCM Date: Thu, 11 May 2017 04:12:07 +0000 Message-ID: <6F87890CF0F5204F892DEA1EF0D77A595AA06541@FMSMSX114.amr.corp.intel.com> References: <1494254208-30045-1-git-send-email-rajmohan.mani@intel.com> In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org List-ID: SGkgVG9tYXN6LA0KVGhhbmtzIGZvciB0aGUgcmV2aWV3cy4gUGxlYXNlIHNlZSBjb21tZW50cyBp bmxpbmUuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVG9tYXN6IEZp Z2EgW21haWx0bzp0ZmlnYUBjaHJvbWl1bS5vcmddDQo+IFNlbnQ6IFR1ZXNkYXksIE1heSAwOSwg MjAxNyA0OjQ0IFBNDQo+IFRvOiBNYW5pLCBSYWptb2hhbiA8cmFqbW9oYW4ubWFuaUBpbnRlbC5j b20+DQo+IENjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7IG1jaGVoYWJAa2VybmVsLm9y ZzsgSGFucyBWZXJrdWlsDQo+IDxodmVya3VpbEB4czRhbGwubmw+DQo+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggdjJdIGR3OTcxNDogSW5pdGlhbCBkcml2ZXIgZm9yIGR3OTcxNCBWQ00NCj4gDQo+IEhp IFJham1vaGFuLA0KPiANCj4gU29tZSBjb21tZW50cyBiZWxvdy4NCj4gDQo+IE9uIE1vbiwgTWF5 IDgsIDIwMTcgYXQgMTA6MzYgUE0sIFJham1vaGFuIE1hbmkNCj4gPHJham1vaGFuLm1hbmlAaW50 ZWwuY29tPiB3cm90ZToNCj4gPiBEVzk3MTQgaXMgYSAxMCBiaXQgREFDLCBkZXNpZ25lZCBmb3Ig bGluZWFyIGNvbnRyb2wgb2Ygdm9pY2UgY29pbA0KPiA+IG1vdG9yLg0KPiA+DQo+ID4gVGhpcyBk cml2ZXIgY3JlYXRlcyBhIFY0TDIgc3ViZGV2aWNlIGFuZCBwcm92aWRlcyBjb250cm9sIHRvIHNl dCB0aGUNCj4gPiBkZXNpcmVkIGZvY3VzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogUmFqbW9o YW4gTWFuaSA8cmFqbW9oYW4ubWFuaUBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gQ2hhbmdlcyBp biB2MjoNCj4gPiAgICAgICAgIC0gQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBmcm9tIEhhbnMg VmVya3VpbA0KPiA+ICAgICAgICAgLSBGaXhlZCBhIGRlYnVnIG1lc3NhZ2UgdHlwbw0KPiA+ICAg ICAgICAgLSBHb3QgcmlkIG9mIGEgcmV0dXJuIHZhcmlhYmxlDQo+ID4gLS0tDQo+ID4gIGRyaXZl cnMvbWVkaWEvaTJjL0tjb25maWcgIHwgICA5ICsrDQo+ID4gIGRyaXZlcnMvbWVkaWEvaTJjL01h a2VmaWxlIHwgICAxICsNCj4gPiAgZHJpdmVycy9tZWRpYS9pMmMvZHc5NzE0LmMgfCAzMjANCj4g PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgMyBm aWxlcyBjaGFuZ2VkLCAzMzAgaW5zZXJ0aW9ucygrKQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9tZWRpYS9pMmMvZHc5NzE0LmMNCj4gW3NuaXBdDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvaTJjL2R3OTcxNC5jIGIvZHJpdmVycy9tZWRpYS9pMmMvZHc5NzE0LmMNCj4g PiBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwLi5jZDZjZGU3DQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL2R3OTcxNC5jDQo+ID4gQEAgLTAs MCArMSwzMjAgQEANCj4gPiArLyoNCj4gPiArICogQ29weXJpZ2h0IChjKSAyMDE1LS0yMDE3IElu dGVsIENvcnBvcmF0aW9uLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ID4gKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQo+ID4g K3ZlcnNpb24NCj4gPiArICogMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4NCj4gPiArICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+ID4gKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUNCj4gPiArICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvYWNwaS5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPiA+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50 aW1lLmg+DQo+ID4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWN0cmxzLmg+DQo+ID4gKyNpbmNsdWRl IDxtZWRpYS92NGwyLWRldmljZS5oPg0KPiA+ICsNCj4gPiArI2RlZmluZSBEVzk3MTRfTkFNRSAg ICAgICAgICAgICJkdzk3MTQiDQo+ID4gKyNkZWZpbmUgRFc5NzE0X01BWF9GT0NVU19QT1MgICAx MDIzDQo+ID4gKyNkZWZpbmUgRFc5NzE0X0NUUkxfU1RFUFMgICAgICAxNiAgICAgIC8qIEtlZXAg dGhpcyB2YWx1ZSBwb3dlciBvZiAyICovDQo+IA0KPiBCZWNhdXNlPw0KPiANCg0KVGhpcyBhY3Rz IGFzIHRoZSBtaW5pbXVtIGdyYW51bGFyaXR5IG9mIGxlbnMgbW92ZW1lbnQuDQpLZWVwIHRoaXMg dmFsdWUgcG93ZXIgb2YgMiwgc28gdGhlIGNvbnRyb2wgc3RlcHMgY2FuIGJlIHVuaWZvcm1seSBh ZGp1c3RlZCBmb3IgZ3JhZHVhbCBsZW5zIG1vdmVtZW50LCB3aXRoIGRlc2lyZWQgbnVtYmVyIG9m IGNvbnRyb2wgc3RlcHMuDQoNCj4gPiArI2RlZmluZSBEVzk3MTRfQ1RSTF9ERUxBWV9VUyAgIDEw MDANCj4gPiArLyoNCj4gPiArICogU1szOjJdID0gMHgwMCwgY29kZXMgcGVyIHN0ZXAgZm9yICJM aW5lYXIgU2xvcGUgQ29udHJvbCINCj4gPiArICogU1sxOjBdID0gMHgwMCwgc3RlcCBwZXJpb2QN Cj4gPiArICovDQo+ID4gKyNkZWZpbmUgRFc5NzE0X0RFRkFVTFRfUyAweDANCj4gPiArI2RlZmlu ZSBEVzk3MTRfVkFMKGRhdGEsIHMpICh1MTYpKChkYXRhKSA8PCA0IHwgKHMpKQ0KPiANCj4gRG8g d2UgbmVlZCB0aGlzIGNhc3Q/DQo+IA0KWWVzLiBUaGlzIGlzIGEgd3JpdGUgdG8gYSAyIGJ5dGUg cmVnaXN0ZXINCg0KPiA+ICsNCj4gPiArLyogZHc5NzE0IGRldmljZSBzdHJ1Y3R1cmUgKi8NCj4g PiArc3RydWN0IGR3OTcxNF9kZXZpY2Ugew0KPiA+ICsgICAgICAgc3RydWN0IGkyY19jbGllbnQg KmNsaWVudDsNCj4gPiArICAgICAgIHN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciBjdHJsc192Y207 DQo+ID4gKyAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgc2Q7DQo+ID4gKyAgICAgICB1MTYgY3Vy cmVudF92YWw7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIHRvX2R3OTcxNF92Y20oX2N0 cmwpICAgXA0KPiA+ICsgICAgICAgY29udGFpbmVyX29mKF9jdHJsLT5oYW5kbGVyLCBzdHJ1Y3Qg ZHc5NzE0X2RldmljZSwgY3RybHNfdmNtKQ0KPiANCj4gUGxlYXNlIHVzZSBhIHN0YXRpYyBpbmxp bmUgZnVuY3Rpb24gZm9yIHR5cGUgc2FmZXR5Lg0KPiANCg0KQWNrDQoNCj4gPiArDQo+ID4gK3N0 YXRpYyBpbnQgZHc5NzE0X2kyY193cml0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1MTYg ZGF0YSkgew0KPiA+ICsgICAgICAgY29uc3QgaW50IG51bV9tc2cgPSAxOw0KPiA+ICsgICAgICAg aW50IHJldDsNCj4gPiArICAgICAgIHUxNiB2YWwgPSBjcHVfdG9fYmUxNihkYXRhKTsNCj4gPiAr ICAgICAgIHN0cnVjdCBpMmNfbXNnIG1zZyA9IHsNCj4gPiArICAgICAgICAgICAgICAgLmFkZHIg PSBjbGllbnQtPmFkZHIsDQo+ID4gKyAgICAgICAgICAgICAgIC5mbGFncyA9IDAsDQo+ID4gKyAg ICAgICAgICAgICAgIC5sZW4gPSBzaXplb2YodmFsKSwNCj4gPiArICAgICAgICAgICAgICAgLmJ1 ZiA9ICh1OCAqKSAmdmFsLA0KPiA+ICsgICAgICAgfTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQg PSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVyLCAmbXNnLCBudW1fbXNnKTsNCj4gPiArDQo+ ID4gKyAgICAgICAvKk9uZSByZXRyeSAqLw0KPiA+ICsgICAgICAgaWYgKHJldCAhPSBudW1fbXNn KQ0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBpMmNfdHJhbnNmZXIoY2xpZW50LT5hZGFwdGVy LCAmbXNnLCBudW1fbXNnKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAocmV0ICE9IG51bV9tc2cp IHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycigmY2xpZW50LT5kZXYsICJJMkMgd3JpdGUg ZmFpbFxuIik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlPOw0KPiA+ICsgICAgICAg fQ0KPiANCj4gSSBiZWxpZXZlIGkyY19tYXN0ZXJfc2VuZCgpIHdvdWxkIHNpbXBsaWZ5IHRoaXMg ZnVuY3Rpb24gc2lnbmlmaWNhbnRseS4NCj4gDQoNCkFjaw0KDQo+ID4gKyAgICAgICByZXR1cm4g MDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkdzk3MTRfdF9mb2N1c192Y20oc3Ry dWN0IGR3OTcxNF9kZXZpY2UgKmR3OTcxNF9kZXYsIHUxNg0KPiA+ICt2YWwpIHsNCj4gPiArICAg ICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkdzk3MTRfZGV2LT5jbGllbnQ7DQo+ID4g Kw0KPiA+ICsgICAgICAgZGV2X2RiZygmY2xpZW50LT5kZXYsICJTZXR0aW5nIG5ldyB2YWx1ZSBW Q006ICVkXG4iLCB2YWwpOw0KPiA+ICsgICAgICAgZHc5NzE0X2Rldi0+Y3VycmVudF92YWwgPSB2 YWw7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIGR3OTcxNF9pMmNfd3JpdGUoY2xpZW50LCBE Vzk3MTRfVkFMKHZhbCwNCj4gPiArRFc5NzE0X0RFRkFVTFRfUykpOyB9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IGR3OTcxNF9zZXRfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKSB7DQo+ID4g KyAgICAgICBzdHJ1Y3QgZHc5NzE0X2RldmljZSAqZGV2X3ZjbSA9IHRvX2R3OTcxNF92Y20oY3Ry bCk7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGN0cmwtPmlkID09IFY0TDJfQ0lEX0ZPQ1VTX0FC U09MVVRFKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gZHc5NzE0X3RfZm9jdXNfdmNtKGRl dl92Y20sIGN0cmwtPnZhbCk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX29wcyBkdzk3 MTRfdmNtX2N0cmxfb3BzID0gew0KPiA+ICsgICAgICAgLnNfY3RybCA9IGR3OTcxNF9zZXRfY3Ry bCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZHc5NzE0X2luaXRfY29udHJvbHMo c3RydWN0IGR3OTcxNF9kZXZpY2UgKmRldl92Y20pIHsNCj4gPiArICAgICAgIHN0cnVjdCB2NGwy X2N0cmxfaGFuZGxlciAqaGRsID0gJmRldl92Y20tPmN0cmxzX3ZjbTsNCj4gPiArICAgICAgIGNv bnN0IHN0cnVjdCB2NGwyX2N0cmxfb3BzICpvcHMgPSAmZHc5NzE0X3ZjbV9jdHJsX29wczsNCj4g PiArICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBkZXZfdmNtLT5jbGllbnQ7DQo+ ID4gKw0KPiA+ICsgICAgICAgdjRsMl9jdHJsX2hhbmRsZXJfaW5pdChoZGwsIDEpOw0KPiA+ICsN Cj4gPiArICAgICAgIHY0bDJfY3RybF9uZXdfc3RkKGhkbCwgb3BzLCBWNEwyX0NJRF9GT0NVU19B QlNPTFVURSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIDAsIERXOTcxNF9NQVhfRk9D VVNfUE9TLCAxLCAwKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaGRsLT5lcnJvcikNCj4gPiAr ICAgICAgICAgICAgICAgZGV2X2VycigmY2xpZW50LT5kZXYsICJkdzk3MTRfaW5pdF9jb250cm9s cyBmYWlsXG4iKTsNCj4gPiArICAgICAgIGRldl92Y20tPnNkLmN0cmxfaGFuZGxlciA9IGhkbDsN Cj4gPiArICAgICAgIHJldHVybiBoZGwtPmVycm9yOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdm9pZCBkdzk3MTRfc3ViZGV2X2NsZWFudXAoc3RydWN0IGR3OTcxNF9kZXZpY2UgKmR3OTcx NF9kZXYpIHsNCj4gPiArICAgICAgIHY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmR3OTcxNF9kZXYt PmN0cmxzX3ZjbSk7DQo+ID4gKyAgICAgICB2NGwyX2FzeW5jX3VucmVnaXN0ZXJfc3ViZGV2KCZk dzk3MTRfZGV2LT5zZCk7DQo+ID4gKyAgICAgICB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRl digmZHc5NzE0X2Rldi0+c2QpOw0KPiA+ICsgICAgICAgbWVkaWFfZW50aXR5X2NsZWFudXAoJmR3 OTcxNF9kZXYtPnNkLmVudGl0eSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZHc5 NzE0X29wZW4oc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgc3RydWN0IHY0bDJfc3ViZGV2X2ZoDQo+ ID4gKypmaCkgew0KPiA+ICsgICAgICAgc3RydWN0IGR3OTcxNF9kZXZpY2UgKmR3OTcxNF9kZXYg PSBjb250YWluZXJfb2Yoc2QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHc5NzE0X2RldmljZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkKTsNCj4g PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZkdzk3MTRfZGV2LT5jbGllbnQtPmRldjsN Cj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOw0KPiAN Cj4gTmVlZCBwbV9ydW50aW1lX3B1dCgpIGlmIHRoaXMgZmFpbHMuDQo+IA0KDQpBY2suIFRoaXMg aXMgYWRkcmVzc2VkIGluIHYzIG9mIHRoaXMgcGF0Y2guDQoNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGludCBkdzk3MTRfY2xvc2Uoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgc3RydWN0IHY0 bDJfc3ViZGV2X2ZoDQo+ID4gKypmaCkgew0KPiA+ICsgICAgICAgc3RydWN0IGR3OTcxNF9kZXZp Y2UgKmR3OTcxNF9kZXYgPSBjb250YWluZXJfb2Yoc2QsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHc5NzE0X2Rldmlj ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNkKTsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZkdzk3MTRfZGV2 LT5jbGllbnQtPmRldjsNCj4gPiArDQo+ID4gKyAgICAgICBwbV9ydW50aW1lX3B1dChkZXYpOw0K PiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X2ludGVybmFsX29wcyBkdzk3MTRfaW50X29wcyA9IHsN Cj4gPiArICAgICAgIC5vcGVuID0gZHc5NzE0X29wZW4sDQo+ID4gKyAgICAgICAuY2xvc2UgPSBk dzk3MTRfY2xvc2UsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0 bDJfc3ViZGV2X29wcyBkdzk3MTRfb3BzID0geyB9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBk dzk3MTRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqZGV2aWQpIHsNCj4gPiArICAg ICAgIHN0cnVjdCBkdzk3MTRfZGV2aWNlICpkdzk3MTRfZGV2Ow0KPiA+ICsgICAgICAgaW50IHJ2 YWw7DQo+ID4gKw0KPiA+ICsgICAgICAgZHc5NzE0X2RldiA9IGRldm1fa3phbGxvYygmY2xpZW50 LT5kZXYsIHNpemVvZigqZHc5NzE0X2RldiksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdGUF9LRVJORUwpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChkdzk3MTRfZGV2 ID09IE5VTEwpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4g PiArICAgICAgIGR3OTcxNF9kZXYtPmNsaWVudCA9IGNsaWVudDsNCj4gPiArDQo+ID4gKyAgICAg ICB2NGwyX2kyY19zdWJkZXZfaW5pdCgmZHc5NzE0X2Rldi0+c2QsIGNsaWVudCwgJmR3OTcxNF9v cHMpOw0KPiA+ICsgICAgICAgZHc5NzE0X2Rldi0+c2QuZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxf SEFTX0RFVk5PREU7DQo+ID4gKyAgICAgICBkdzk3MTRfZGV2LT5zZC5pbnRlcm5hbF9vcHMgPSAm ZHc5NzE0X2ludF9vcHM7DQo+ID4gKw0KPiA+ICsgICAgICAgcnZhbCA9IGR3OTcxNF9pbml0X2Nv bnRyb2xzKGR3OTcxNF9kZXYpOw0KPiA+ICsgICAgICAgaWYgKHJ2YWwpDQo+ID4gKyAgICAgICAg ICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQo+ID4gKw0KPiA+ICsgICAgICAgcnZhbCA9IG1lZGlh X2VudGl0eV9wYWRzX2luaXQoJmR3OTcxNF9kZXYtPnNkLmVudGl0eSwgMCwgTlVMTCk7DQo+ID4g KyAgICAgICBpZiAocnZhbCA8IDApDQo+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2NsZWFu dXA7DQo+ID4gKw0KPiA+ICsgICAgICAgZHc5NzE0X2Rldi0+c2QuZW50aXR5LmZ1bmN0aW9uID0g TUVESUFfRU5UX0ZfTEVOUzsNCj4gPiArDQo+ID4gKyAgICAgICBydmFsID0gdjRsMl9hc3luY19y ZWdpc3Rlcl9zdWJkZXYoJmR3OTcxNF9kZXYtPnNkKTsNCj4gPiArICAgICAgIGlmIChydmFsIDwg MCkNCj4gPiArICAgICAgICAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCj4gPiArDQo+ID4gKyAg ICAgICBwbV9ydW50aW1lX2VuYWJsZSgmY2xpZW50LT5kZXYpOw0KPiA+ICsNCj4gPiArICAgICAg IHJldHVybiAwOw0KPiA+ICsNCj4gPiArZXJyX2NsZWFudXA6DQo+ID4gKyAgICAgICBkdzk3MTRf c3ViZGV2X2NsZWFudXAoZHc5NzE0X2Rldik7DQo+ID4gKyAgICAgICBkZXZfZXJyKCZjbGllbnQt PmRldiwgIlByb2JlIGZhaWxlZDogJWRcbiIsIHJ2YWwpOw0KPiA+ICsgICAgICAgcmV0dXJuIHJ2 YWw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZHc5NzE0X3JlbW92ZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50KSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNk ID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHc5NzE0 X2RldmljZSAqZHc5NzE0X2RldiA9IGNvbnRhaW5lcl9vZihzZCwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkdzk3MTRf ZGV2aWNlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2QpOw0KPiA+ICsNCj4gPiArICAgICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgm Y2xpZW50LT5kZXYpOw0KPiA+ICsgICAgICAgZHc5NzE0X3N1YmRldl9jbGVhbnVwKGR3OTcxNF9k ZXYpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsj aWZkZWYgQ09ORklHX1BNDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGR3OTcxNF9ydW50aW1lX3N1 c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KSB7DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBkdzk3MTRfcnVudGltZV9yZXN1bWUoc3RydWN0IGRl dmljZSAqZGV2KSB7DQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSB2Y20gcG9zaXRpb24sIHNvIGl0IGNvbnN1bWVzIGxl YXN0IGN1cnJlbnQNCj4gPiArKi8gc3RhdGljIGludCBkdzk3MTRfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpIHsNCj4gPiArICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB0b19p MmNfY2xpZW50KGRldik7DQo+ID4gKyAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+ID4gKyAgICAgICBzdHJ1Y3QgZHc5NzE0X2Rldmlj ZSAqZHc5NzE0X2RldiA9IGNvbnRhaW5lcl9vZihzZCwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkdzk3MTRfZGV2aWNl LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2QpOw0KPiA+ICsgICAgICAgaW50IHJldCwgdmFsOw0KPiA+ICsNCj4gPiArICAgICAg IGRldl9kYmcoZGV2LCAiJXNcbiIsIF9fZnVuY19fKTsNCj4gPiArDQo+ID4gKyAgICAgICBmb3Ig KHZhbCA9IGR3OTcxNF9kZXYtPmN1cnJlbnRfdmFsICYgfihEVzk3MTRfQ1RSTF9TVEVQUyAtIDEp Ow0KPiA+ICsgICAgICAgICAgICB2YWwgPj0gMDsgdmFsIC09IERXOTcxNF9DVFJMX1NURVBTKSB7 DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IGR3OTcxNF9pMmNfd3JpdGUoY2xpZW50LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXOTcxNF9WQUwoKHUxNikg dmFsLCBEVzk3MTRfREVGQVVMVF9TKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICIlcyBJMkMgZmFpbHVyZTog JWQiLCBfX2Z1bmNfXywgcmV0KTsNCj4gPiArICAgICAgICAgICAgICAgdXNsZWVwX3JhbmdlKERX OTcxNF9DVFJMX0RFTEFZX1VTLA0KPiA+ICsgRFc5NzE0X0NUUkxfREVMQVlfVVMgKyAxMCk7DQo+ IA0KPiBJcyBpdCBuZWNlc3NhcnkgdG8gY2hhbmdlIHRoZSB2YWx1ZSBpbiBzdWNoIHN0ZXBzPyBJ ZiBzbywgc2hvdWxkbid0IHRoZSBjb250cm9sDQo+IGhhbmRsZXIgYmVoYXZlIGluIHRoZSBzYW1l IHdheSwgbWFraW5nIHN1cmUgdGhhdCB1c2Vyc3BhY2UgZG9lcyBub3QgcmVxdWVzdA0KPiBjaGFu Z2VzIGluIGJpZ2dlciBzdGVwcz8NCj4gDQpBY2sNCkkgd2lsbCBtb2RpZnkgdGhlIGN0cmwgaGFu ZGxlciBzdGVwcyB0byByZWZsZWN0IHRoaXMuDQoNCj4gPiArICAgICAgIH0NCj4gPiArICAgICAg IHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IHNldHMgdGhlIHZjbSBwb3NpdGlvbiwgc28gdGhlIGZvY3VzIHBvc2l0aW9uIGlzIHNldA0KPiA+ ICsgKiBjbG9zZXIgdG8gdGhlIGNhbWVyYQ0KPiANCj4gSSB0aGluayBpdCBzaG91bGQgb25seSBz ZXQgdGhlIFZDTSBwb3NpdGlvbiB0byB0aGUgdmFsdWUgYXMgc2V0IGJlZm9yZSB0aGUNCj4gc3Vz cGVuZC4NCj4gDQoNCkFjaw0KVGhlIGNvZGUgYWxyZWFkeSBkb2VzIGl0LiBJIHdpbGwgZml4IHRo ZSBjb21tZW50cy4NCg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGludCBkdzk3MTRfcmVzdW1lKHN0 cnVjdCBkZXZpY2UgKmRldikgew0KPiA+ICsgICAgICAgc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCA9IHRvX2kyY19jbGllbnQoZGV2KTsNCj4gPiArICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldiAq c2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4gPiArICAgICAgIHN0cnVjdCBkdzk3 MTRfZGV2aWNlICpkdzk3MTRfZGV2ID0gY29udGFpbmVyX29mKHNkLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3OTcx NF9kZXZpY2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZCk7DQo+ID4gKyAgICAgICBpbnQgcmV0LCB2YWw7DQo+ID4gKw0KPiA+ ICsgICAgICAgZGV2X2RiZyhkZXYsICIlc1xuIiwgX19mdW5jX18pOw0KPiA+ICsNCj4gPiArICAg ICAgIGZvciAodmFsID0gZHc5NzE0X2Rldi0+Y3VycmVudF92YWwgJSBEVzk3MTRfQ1RSTF9TVEVQ UzsNCj4gPiArICAgICAgICAgICAgdmFsIDwgZHc5NzE0X2Rldi0+Y3VycmVudF92YWwgKyBEVzk3 MTRfQ1RSTF9TVEVQUyAtIDE7DQo+ID4gKyAgICAgICAgICAgIHZhbCArPSBEVzk3MTRfQ1RSTF9T VEVQUykgew0KPiA+ICsgICAgICAgICAgICAgICByZXQgPSBkdzk3MTRfaTJjX3dyaXRlKGNsaWVu dCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVzk3MTRfVkFM KCh1MTYpIHZhbCwgRFc5NzE0X0RFRkFVTFRfUykpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAo cmV0KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiJXMgSTJDIGZh aWx1cmU6ICVkIiwgX19mdW5jX18sIHJldCk7DQo+ID4gKyAgICAgICAgICAgICAgIHVzbGVlcF9y YW5nZShEVzk3MTRfQ1RSTF9ERUxBWV9VUywgRFc5NzE0X0NUUkxfREVMQVlfVVMNCj4gKyAxMCk7 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgLyogcmVzdG9yZSB2NGwyIGNvbnRy b2wgdmFsdWVzICovDQo+ID4gKyAgICAgICByZXQgPSB2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cCgm ZHc5NzE0X2Rldi0+Y3RybHNfdmNtKTsNCj4gPiArICAgICAgIGRldl9kYmcoZGV2LCAiJXMgcmV0 ID0gJWRcbiIsIF9fZnVuY19fLCByZXQpOw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArI2Vsc2UNCj4gPiArDQo+ID4gKyNkZWZpbmUgZHc5NzE0X3N1c3BlbmQg TlVMTA0KPiA+ICsjZGVmaW5lIGR3OTcxNF9yZXN1bWUgIE5VTEwNCj4gPiArI2RlZmluZSBkdzk3 MTRfcnVudGltZV9zdXNwZW5kIE5VTEwNCj4gPiArI2RlZmluZSBkdzk3MTRfcnVudGltZV9yZXN1 bWUgIE5VTEwNCj4gDQo+IFRoaXMgI2RlZmluZSB0cmlja2VyeSBzaG91bGRuJ3QgYmUgbmVjZXNz YXJ5LiBQbGVhc2Ugc2VlIGJlbG93Lg0KPiAoI2lmbmRlZi8jZW5kaWYgYXJvdW5kIHRoZSBmdW5j dGlvbnMgdGhlbXNlbHZlcyBpcyBzdGlsbCBuZWNlc3NhcnkuKQ0KPiANCg0KQWNrDQoNCj4gPiAr DQo+ID4gKyNlbmRpZiAvKiBDT05GSUdfUE0gKi8NCj4gPiArDQo+ID4gKyNpZmRlZiBDT05GSUdf QUNQSQ0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGR3OTcxNF9hY3Bp X21hdGNoW10gPSB7DQo+ID4gKyAgICAgICB7IkRXOTcxNCIsIDB9LA0KPiA+ICsgICAgICAge30s DQo+ID4gK307DQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoYWNwaSwgZHc5NzE0X2FjcGlfbWF0 Y2gpOyAjZW5kaWYNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9p ZCBkdzk3MTRfaWRfdGFibGVbXSA9IHsNCj4gPiArICAgICAgIHtEVzk3MTRfTkFNRSwgMH0sDQo+ ID4gKyAgICAgICB7fQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShp MmMsIGR3OTcxNF9pZF90YWJsZSk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRl dl9wbV9vcHMgZHc5NzE0X3BtX29wcyA9IHsNCj4gPiArICAgICAgIC5zdXNwZW5kID0gZHc5NzE0 X3N1c3BlbmQsDQo+ID4gKyAgICAgICAucmVzdW1lID0gZHc5NzE0X3Jlc3VtZSwNCj4gPiArICAg ICAgIC5ydW50aW1lX3N1c3BlbmQgPSBkdzk3MTRfcnVudGltZV9zdXNwZW5kLA0KPiA+ICsgICAg ICAgLnJ1bnRpbWVfcmVzdW1lID0gZHc5NzE0X3J1bnRpbWVfcmVzdW1lLA0KPiANCj4gWW91IGNh biAoYW5kIHByb2JhYmx5IHNob3VsZCkgdXNlIFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKCkgZm9y IGdsb2JhbA0KPiBzdXNwZW5kL3Jlc3VtZSBoYW5kbGVycyBhbmQgU0VUX1JVTlRJTUVfUE1fT1BT KCkgZm9yIHJ1bnRpbWUgb25lcy4NCj4gVGhpcyBhbHNvIHRha2VzIGNhcmUgb2YgZnVuY3Rpb25z IGJlaW5nIHVuZGVmaW5lZCBpZiAhQ09ORklHX1BNLg0KPiANCg0KQWNrDQoNCj4gPiArfTsNCj4g PiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkdzk3MTRfaTJjX2RyaXZlciA9IHsN Cj4gPiArICAgICAgIC5kcml2ZXIgPSB7DQo+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gRFc5 NzE0X05BTUUsDQo+ID4gKyAgICAgICAgICAgICAgIC5wbSA9ICZkdzk3MTRfcG1fb3BzLA0KPiA+ ICsjaWZkZWYgQ09ORklHX0FDUEkNCj4gPiArICAgICAgICAgICAgICAgLmFjcGlfbWF0Y2hfdGFi bGUgPSBBQ1BJX1BUUihkdzk3MTRfYWNwaV9tYXRjaCksDQo+ID4gKyNlbmRpZg0KPiANCj4gTm8g bmVlZCBmb3IgI2lmZGVmIENPTkZJR19BQ1BJLCBhcyAuYWNwaV9tYXRjaF90YWJsZSBpcyBhbHdh eXMgcHJlc2VudCBpbiB0aGUNCj4gc3RydWN0IGFuZCBBQ1BJX1BUUigpIHRha2VzIGNhcmUgb2Yg ZHc5NzE0X2FjcGlfbWF0Y2ggYmVpbmcgdW5kZWZpbmVkIGlmDQo+ICFDT05GSUdfQUNQSS4NCj4g DQoNCkFjaw0KDQo+IEJlc3QgcmVnYXJkcywNCj4gVG9tYXN6DQo=