From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cosmin Samoila Subject: Re: [RFC 2/2] ASoC: Add MICFIL SoC Digital Audio Interface driver. Date: Thu, 13 Dec 2018 10:20:47 +0000 Message-ID: <1544696446.7700.31.camel@nxp.com> References: <1544433661-32496-1-git-send-email-cosmin.samoila@nxp.com> <1544433661-32496-3-git-send-email-cosmin.samoila@nxp.com> <20181212181414.GE6920@sirena.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181212181414.GE6920@sirena.org.uk> Content-Language: en-US Content-ID: <1393C8CDDFFFDA4FBCC69684DFD3B551@eurprd04.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: "broonie@kernel.org" Cc: "devicetree@vger.kernel.org" , "alsa-devel@alsa-project.org" , "robh@kernel.org" , "S.j. Wang" , dl-linux-imx , "gabrielcsmo@gmail.com" List-Id: devicetree@vger.kernel.org SGVsbG8gTWFyaywNCg0KVGhhbmsgeW91IGZvciB0aGUgcmV2aWV3Lg0KUGxlYXNlIHNlZSBteSBj b21tZW50cyBpbmxpbmUuDQoNCkJlc3QgcmVnYXJkcywNCkNvc21pbg0KDQpPbiBNaSwgMjAxOC0x Mi0xMiBhdCAxODoxNCArMDAwMCwgTWFyayBCcm93biB3cm90ZToNCj4gT24gTW9uLCBEZWMgMTAs IDIwMTggYXQgMDk6MjE6MTVBTSArMDAwMCwgQ29zbWluIFNhbW9pbGEgd3JvdGU6DQo+IA0KPiA+ IA0KPiA+ICtzdGF0aWMgY2hhciAqZW52cFtdID0gew0KPiA+ICsJCSJFVkVOVD1QRE1fVk9JQ0Vf REVURUNUIiwNCj4gPiArCQlOVUxMLA0KPiA+ICsJfTsNCj4gVGhlIGluZGVudGF0aW9uIGhlcmUg aXMgd2VpcmQuDQoNCldpbGwgZml4IGl0Lg0KDQo+IA0KPiA+IA0KPiA+ICtzdGF0aWMgY29uc3Qg Y2hhciAqIGNvbnN0IG1pY2ZpbF9od3ZhZF96Y2RfZW5hYmxlW10gPSB7DQo+ID4gKwkiT0ZGIiwg Ik9OIiwNCj4gPiArfTsNCj4gU2ltcGxlIG9uL29mZiBzd2l0Y2hlcyBzaG91bGQganVzdCBiZSBy ZWd1bGFyIGNvbnRyb2xzIHdpdGggIlN3aXRjaCINCj4gYXQNCj4gdGhlIGVuZCBvZiB0aGVpciBu YW1lIHNvIHVzZXJzcGFjZSBjYW4gaGFuZGxlIHRoZW0uDQo+IA0KPiA+IA0KPiA+ICtzdGF0aWMg Y29uc3QgY2hhciAqIGNvbnN0IG1pY2ZpbF9od3ZhZF9ub2lzZV9kZWNpbWF0aW9uW10gPSB7DQo+ ID4gKwkiRGlzYWJsZWQiLCAiRW5hYmxlZCIsDQo+ID4gK307DQo+IFNhbWUgaGVyZS4NCg0KV2ls bCBmaXggaXQuDQoNCj4gDQo+ID4gDQo+ID4gKy8qIHdoZW4gYWRkaW5nIG5ldyByYXRlIHRleHQs IGFsc28gYWRkIGl0IHRvIHRoZQ0KPiA+ICsgKiBtaWNmaWxfaHd2YWRfcmF0ZV9pbnRzDQo+ID4g KyAqLw0KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG1pY2ZpbF9od3ZhZF9yYXRlW10g PSB7DQo+ID4gKwkiNDhLSHoiLCAiNDQuMUtIeiIsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0 aWMgY29uc3QgaW50IG1pY2ZpbF9od3ZhZF9yYXRlX2ludHNbXSA9IHsNCj4gPiArCTQ4MDAwLCA0 NDEwMCwNCj4gPiArfTsNCj4gQ2FuIHRoZSBkcml2ZXIgbm90IGRldGVybWluZSB0aGlzIGF1dG9t YXRpY2FsbHkgZnJvbSBzYW1wbGUgcmF0ZXM/DQoNCkkgdGhpbmsgSSBjb3VsZCBhZGQgIjQ4MDAw IiwgIjQ0MTAwIiBpbnN0ZWFkIG9mICI0OEtIeiIsICI0NC4xS0h6IiBhbmQNCnVzZSBrc3RydG9s KCkNCg0KPiANCj4gPiANCj4gPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtaWNmaWxfY2xr X3NyY190ZXh0c1tdID0gew0KPiA+ICsJIkF1dG8iLCAiQXVkaW9QTEwxIiwgIkF1ZGlvUExMMiIs ICJFeHRDbGszIiwNCj4gPiArfTsNCj4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUg dXNlciBzZWxlY3RhYmxlIG9yIGlzIGl0IGdvaW5nIHRvIGJlDQo+IGNvbnRyb2xsZWQgYnkgdGhl IGJvYXJkIGRlc2lnbj8NCg0KVXNlciBzaG91bGQgYmUgYWJsZSB0byBzZWxlY3QgdGhlIGNsb2Nr IHNvdXJjZSBzaW5jZSwgaW4gdGhlb3J5LA0KaGFyZHdhcmUgY291bGQgc3VwcG9ydCBhbnkgY3Vz dG9tIHJhdGUgYXMgbG9uZyBhcyB5b3UgY2FuIHByb3ZpZGUgdGhlDQpjbG9jayBvbiBleHRjbGsu DQrCoA0KPiANCj4gPiANCj4gPiArc3RhdGljIGludCBod3ZhZF9wdXRfaHBmKHN0cnVjdCBzbmRf a2NvbnRyb2wgKmtjb250cm9sLA0KPiA+ICsJCQnCoHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUg KnVjb250cm9sKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXAg PQ0KPiA+IHNuZF9rY29udHJvbF9jaGlwKGtjb250cm9sKTsNCj4gPiArCXN0cnVjdCBzb2NfZW51 bSAqZSA9IChzdHJ1Y3Qgc29jX2VudW0gKilrY29udHJvbC0NCj4gPiA+cHJpdmF0ZV92YWx1ZTsN Cj4gPiArCXVuc2lnbmVkIGludCAqaXRlbSA9IHVjb250cm9sLT52YWx1ZS5lbnVtZXJhdGVkLml0 ZW07DQo+ID4gKwlzdHJ1Y3QgZnNsX21pY2ZpbCAqbWljZmlsID0NCj4gPiBzbmRfc29jX2NvbXBv bmVudF9nZXRfZHJ2ZGF0YShjb21wKTsNCj4gPiArCWludCB2YWwgPSBzbmRfc29jX2VudW1faXRl bV90b192YWwoZSwgaXRlbVswXSk7DQo+ID4gKw0KPiA+ICsJLyogMDAgLSBIUEYgQnlwYXNzDQo+ ID4gKwnCoCogMDEgLSBDdXQtb2ZmIGZyZXF1ZW5jeSAxNzUwSHoNCj4gPiArCcKgKiAxMCAtIEN1 dC1vZmYgZnJlcXVlbmN5IDIxNUh6DQo+ID4gKwnCoCogMTEgLSBDdXQtb2ZmIGZyZXF1ZW5jeSAx MDJIeg0KPiA+ICsJwqAqLw0KPiA+ICsJbWljZmlsLT52YWRfaHBmID0gdmFsOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+IFdoYXQgaGFwcGVucyBpZiB0aGlzIGdldHMgY2hhbmdl ZCB3aGlsZSBhIHN0cmVhbSBpcyBhY3RpdmUgLSB0aGUgdXNlcg0KPiB3aWxsIHRoaW5rIHRoZXkg Y2hhbmdlZCB0aGUgY29uZmlndXJhdGlvbiBidXQgaXQgd29uJ3QgdGFrZSBlZmZlY3QNCj4gdW50 aWwNCj4gdGhlIG5leHQgc3RyZWFtIGlzIHN0YXJ0ZWQgQUZBSUNUPw0KDQpJZiB0aGUgc3RyZWFt IGlzIGFjdGl2ZSwgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbCBpbmRlZWQgdGFrZSBlZmVjdCBvbg0K dGhlIG5leHQgc3RyZWFtIGJ1dCB0aGlzIGlzIHRoZSBkZXNpcmVkIGJlaGF2aW9yLiBJZiB3ZSB3 b3VsZCB3YW50IHRvDQpkbyB0aGUgY29uZmlnIG9uIHRoZSBmbHksIHdlIHNob3VsZCB1c2Ugc3lu YyBmdW5jdGlvbnMgdGhhdCBhbHNvIHJlc2V0cw0KdGhlIHBkbSBtb2R1bGUgd2hpY2ggaXMgbm90 IHdoYXQgd2UgaW50ZW5kLg0KVXNlciBtdXN0IGZpcnN0IGNvbmZpZ3VyZSB0aGUgbW9kdWxlIHRo ZW4gc3RhcnQgdGhlIHJlY29yZGluZyBzaW5jZQ0KdGhpcyBzZWVtcyB0byBiZSB0aGUgbmF0dXJh bCBmbG93Lg0KDQo+IA0KPiA+IA0KPiA+ICsJLyogYSB2YWx1ZSByZW1hcHBpbmcgbXVzdCBiZSBk b25lIHNpbmNlIHRoZSBnYWluIGZpZWxkDQo+ID4gaGF2ZQ0KPiA+ICsJwqAqIHRoZSBmb2xsb3dp bmcgbWVhbmluZzoNCj4gPiArCcKgKiAqIDAgOiBubyBnYWluDQo+ID4gKwnCoCogKiAxIC0gNyA6 ICsxIHRvICs3IGJpdHMgZ2Fpbg0KPiA+ICsJwqAqICogOCAtIDE1IDogLTggdG8gLTEgYml0cyBn YWluDQo+ID4gKwnCoCogQWZ0ZXIgdGhlIHJlbWFwcCwgdGhlIHNjYWxlIHNob3VsZCBzdGFydCBm cm9tIC04IHRvICs3DQo+ID4gKwnCoCovDQo+IFRoaXMgbG9va3MgbGlrZSBhIHNpZ25lZCB2YWx1 ZSBzbyBvbmUgb2YgdGhlIF9TX1ZBTFVFIG1hY3JvcyBzaG91bGQNCj4gaGFuZGxlIHRoaW5ncyBJ IHRoaW5rPw0KPiANCg0KT2suDQoNCj4gPiANCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf a2NvbnRyb2xfbmV3IGZzbF9taWNmaWxfc25kX2NvbnRyb2xzW10gPSB7DQo+ID4gKwlTT0NfU0lO R0xFX1JBTkdFX0VYVF9UTFYoIkNIMCBHYWluIiwgLTEsDQo+ID4gTUlDRklMX09VVEdBSU5fQ0hY X1NISUZUKDApLA0KPiA+ICsJCQkJwqAweDAsIDB4RiwgMCwNCj4gPiArCQkJCcKgZ2V0X2NoYW5u ZWxfZ2FpbiwNCj4gPiBwdXRfY2hhbm5lbF9nYWluLCBnYWluX3RsdiksDQo+IEFsbCB2b2x1bWUg Y29udHJvbHMgc2hvdWxkIGhhdmUgbmFtZXMgZW5kaW5nIGluIFZvbHVtZSBzbyB1c2Vyc3BhY2UN Cj4ga25vd3MgaG93IHRvIGhhbmRsZSB0aGVtLg0KDQpPaywgSSB3aWxsIGNoYW5nZSB0aGUgbmFt ZS4NCg0KPiANCj4gPiANCj4gPiArLyogSGFyZHdhcmUgVm9pY2UgQWN0aXZlIERldGVjdGlvbjog VGhlIEhXVkFEIHRha2VzIGRhdGEgZnJvbSB0aGUNCj4gPiBpbnB1dA0KPiA+ICsgKiBvZiBhIHNl bGVjdGVkIFBETSBtaWNyb3Bob25lIHRvIGRldGVjdCBpZiB0aGVyZSBpcyBhbnkNCj4gPiArICog dm9pY2UgYWN0aXZpdHkuIFdoZW4gYSB2b2ljZSBhY3Rpdml0eSBpcyBkZXRlY3RlZCwgYW4gaW50 ZXJydXB0DQo+ID4gY291bGQNCj4gPiArICogYmUgZGVsaXZlcmVkIHRvIHRoZSBzeXN0ZW0uIElu aXRpYWxpemF0aW9uIGluIHNlY3Rpb24gOC40Og0KPiA+ICsgKiBDYW4gd29yayBpbiB0d28gbW9k ZXM6DQo+ID4gKyAqwqDCoC0+IEVuZXZlb3BlLWJhc2VkIG1vZGUgKHNlY3Rpb24gOC40LjEpDQo+ ID4gKyAqwqDCoC0+IEVuZXJneS1iYXNlZCBtb2RlIChzZWN0aW9uIDguNC4yKQ0KPiA+ICsgKg0K PiA+ICsgKiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVtYXJrIHRoYXQgdGhlIEhXVkFEIGRldGVjdG9y IGNvdWxkIGJlDQo+ID4gZW5hYmxlZA0KPiA+ICsgKiBvciByZXNldCBvbmx5IHdoZW4gdGhlIE1J Q0ZJTCBpc24ndCBydW5uaW5nIGkuZS4gd2hlbiB0aGUNCj4gPiBCU1lfRklMDQo+ID4gKyAqIGJp dCBpbiBTVEFUIHJlZ2lzdGVyIGlzIGNsZWFyZWQNCj4gPiArICovDQo+ID4gK3N0YXRpYyBpbnQg X19tYXliZV91bnVzZWQgaW5pdF9od3ZhZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+IFdoeSBpcyB0 aGlzIGFubm90YXRlZCBfX21heWJleV91bnVzZWQ/DQo+IA0KDQpJdCByZW1haW5lZCBmcm9tIGVh cmx5IHN0YWdlcyBvZiBkZXZlbG9wbWVudCB3aGVuIEhXVkFEIHdhcyBub3QNCnN1cHBvcnRlZCBp biBmaXJzdCB2ZXJzaW9uIGFuZCB3ZSBvbmx5IGRlZmluZWQgdGhlIEFQSS4NCkkgd2lsbCByZW1v dmUgdGhlIGFubm90YXRpb24uDQoNCj4gPiANCj4gPiArc3RhdGljIGludCBmc2xfbWljZmlsX2h3 X2ZyZWUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sDQo+ID4gKwkJCcKgwqDC oMKgwqDCoHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZnNs X21pY2ZpbCAqbWljZmlsID0gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEoZGFpKTsNCj4gPiArDQo+ ID4gKwlhdG9taWNfc2V0KCZtaWNmaWwtPnJlY29yZGluZ19zdGF0ZSwNCj4gPiBNSUNGSUxfUkVD T1JESU5HX09GRik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gQXJlIHlvdSAq c3VyZSogeW91IG5lZWQgdG8gYW5kIHdhbnQgdG8gdXNlIGF0b21pY19zZXQoKSBoZXJlIGFuZCB0 aGF0DQo+IHRoZXJlJ3Mgbm8gcmFjZSBjb25kaXRpb25zIHJlc3VsdGluZyBmcm9tIHRyeWluZyB0 byB1c2UgYW4gYXRvbWljDQo+IHZhcmlhYmxlP8KgwqBJdCdzIG11Y2ggc2ltcGxlciBhbmQgY2xl YXJlciB0byB1c2UgbXV0ZXhlcywgaWYgZm9yIHNvbWUNCj4gcmVhc29uIGF0b21pYyB2YXJpYWJs ZXMgbWFrZSBzZW5zZSB0aGVuIHRoZSByZWFzb25pbmcgbmVlZHMgdG8gYmUNCj4gY2xlYXJseSBk b2N1bWVudGVkIGFzIHRoZXkncmUgcXVpdGUgdHJpY2t5IGFuZCBlYXN5IHRvIGJyZWFrIG9yDQo+ IG1pc3VuZGVyc3RhbmQuDQo+IA0KDQpXZSB3YW50IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlY29y ZGluZyBzdGF0ZSBhbmQgdGhlIGh3dmFkIHN0YXRlIHNpbmNlDQpyZWNvcmRpbmcgYW5kIHZvaWNl IGRldGVjdGlvbiBjYW4gd29yayBpbiBwYXJhbGxlbC4gVGhlIG1haW4gcmVhc29uIHdoeQ0Kd2Ug d2FudCB0byBrZWVwIHRyYWNrIGlzIGJlY2F1c2UgdGhlIHJlY29yZGluZyBhbmQgaHd2YWQgc2hh cmUgdGhlIHNhbWUNCmNsb2NrIGFuZCB3ZSBzaG91bGQgbm90IHRvdWNoIHRoZSBjbG9jayB3aGVu IG9uZSBvciBhbm90aGVyIGlzIG9uLg0KQW5vdGhlciByZXN0cmljdGlvbiBpcyB0aGF0IHdlIHdh bnQgdG8gbWFrZSBzdXJlIHdlIHVzZSB0aGUgc2FtZSByYXRlDQpmb3IgcmVjb3JkaW5nIGFuZCB2 b2ljZSBkZXRlY3Rpb24gd2hlbiBkb2luZyBpdCBpbiBwYXJhbGxlbC4NClRoaXMgd2FzIHRoZSBv bmx5IHNvbHV0aW9uIHdlIGZvdW5kIHZpYWJsZSBhdCB0aGF0IHRpbWUgYW5kIGl0IHdvcmtlZA0K aW4gYW55IHN1cHBvcnRlZCBzY2VuYXJpb3MgYnV0IHdlIGFyZSBvcGVuIGZvciBzdWdnZXN0aW9u cyBpZiB0aGUNCmZ1bmN0aW9uYWxpdHkgaXMga2VwdCBhbmQgY29kZSB3aWxsIGhhdmUgYSBiZXR0 ZXIgcXVhbGl0eS4NCg0KPiA+IA0KPiA+ICtzdGF0aWMgaW50IGZzbF9taWNmaWxfc2V0X2RhaV9m bXQoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksDQo+ID4gdW5zaWduZWQgaW50IGZtdCkNCj4gPiAr ew0KPiA+ICsJc3RydWN0IGZzbF9taWNmaWwgKm1pY2ZpbCA9IHNuZF9zb2NfZGFpX2dldF9kcnZk YXRhKGRhaSk7DQo+ID4gKw0KPiA+ICsJLyogREFJIE1PREUgKi8NCj4gPiArCXN3aXRjaCAoZm10 ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsNCj4gPiArCWNhc2UgU05EX1NPQ19EQUlG TVRfSTJTOg0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJZGVmYXVsdDoNCj4gPiArCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArCX0NCj4gSXMgdGhpcyBhY3R1YWxseSBhbiBJMlMgY29udHJvbGxlcj/CoMKg SXQgbG9va3MgbGlrZSBhIFBETSBjb250cm9sbGVyDQo+IHRvDQo+IG1lIGFuZCB0aGF0J3Mgd2hh dCB5b3VyIGNvdmVyIGxldHRlciBzYWlkLsKgwqBKdXN0IG9taXQgdGhpcyBlbnRpcmVseQ0KPiBp Zg0KPiB0aGUgREFJIGZvcm1hdCBpc24ndCBjb25maWd1cmFibGUgaW4gdGhlIGhhcmR3YXJlLg0K DQpZZXMsIHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQNCg0KPiANCj4gPiANCj4gPiArCS8qIHNldCBk ZWZhdWx0IGdhaW4gdG8gbWF4X2dhaW4gKi8NCj4gPiArCXJlZ21hcF93cml0ZShtaWNmaWwtPnJl Z21hcCwgUkVHX01JQ0ZJTF9PVVRfQ1RSTCwNCj4gPiAweDc3Nzc3Nzc3KTsNCj4gPiArCWZvciAo aSA9IDA7IGkgPCA4OyBpKyspDQo+ID4gKwkJbWljZmlsLT5jaGFubmVsX2dhaW5baV0gPSAweEY7 DQo+IEknbSBhc3N1bWluZyB0aGUgaGFyZHdhcmUgaGFzIG5vIGRlZmF1bHRzIGhlcmUgYnV0IGlm IHdlJ3ZlIGdvdCB0bw0KPiBwaWNrDQo+IGEgZ2FpbiB3b3VsZG4ndCBhIGxvdyBnYWluIGJlIGxl c3MgbGlrZWx5IHRvIGJsYXN0IG91dCBzb21lb25lJ3MNCj4gZWFyZHJ1bXMgdGhhbiBhIG1heGlt dW0gZ2Fpbj8NCj4gDQoNCkZhaXIgZW5vdWdoLiBXZSBkaWQgdGhpcyBiZWNhdXNlIHRoZSBtYXhp bXVtIG91dHB1dCB2b2x1bWUgaXNuJ3QgdGhhdA0KaGlnaCBidXQgSSBndWVzcyB3ZSBzaG91bGQg c2V0IGl0IHRvIG1pbmltdW0gYW5kIHVzZXIgc2hvdWxkIHNldCB2b2x1bWUNCnZpYSBhbWl4ZXIu DQoNCj4gPiANCj4gPiArc3RhdGljIGlycXJldHVybl90IHZvaWNlX2RldGVjdGVkX2ZuKGludCBp cnEsIHZvaWQgKmRldmlkKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgZnNsX21pY2ZpbCAqbWljZmls ID0gKHN0cnVjdCBmc2xfbWljZmlsICopZGV2aWQ7DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmbWljZmlsLT5wZGV2LT5kZXY7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCS8qIGRp c2FibGUgaHd2YWQgKi8NCj4gPiArCXJldCA9IGRpc2FibGVfaHd2YWQoZGV2LCB0cnVlKTsNCj4g PiArCWlmIChyZXQpDQo+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZGlzYWJsZSBIV1ZB RCBtb2R1bGVcbiIpOw0KPiA+ICsNCj4gPiArCS8qIG5vdGlmeSB1c2Vyc3BhY2UgdGhhdCB2b2lj ZSB3YXMgZGV0ZWN0ZWQgKi8NCj4gPiArCWtvYmplY3RfdWV2ZW50X2VudigmZGV2LT5rb2JqLCBL T0JKX0NIQU5HRSwgZW52cCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIElSUV9IQU5ETEVEOw0KPiA+ ICt9DQo+IFNvLCB0aGlzIGxvb2tzIGxpa2UgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBr ZXl3b3JkIGRldGVjdGlvbg0KPiB0eXBlDQo+IGFwcGxpY2F0aW9ucyAodGhvdWdoIHdpdGhvdXQg dGhlIG9mZmxvYWQgRFNQIHRoYXQgdGhvc2UgdGVuZCB0bw0KPiBoYXZlKS4NCj4gV2hhdCB0aGUg b3RoZXIgaW1wbGVtZW50YXRpb25zIEkndmUgc2VlbiBoYXZlIGVuZGVkIHVwIGRvaW5nIGlzIHVz aW5nDQo+IGENCj4gY29tcHJlc3NlZCBhdWRpbyBzdHJlYW0gdG8gcmV0dXJuIHRoZSBhdWRpbyBk YXRhIHRvIHVzZXJzcGFjZSwNCj4gYWxsb3dpbmcNCj4gdGhlIGF1ZGlvbiBzdHJlYW0gdG8gYmUg cGF1c2VkIHdoZW4gbm8gYXVkaW8gaXMgZGV0ZWN0ZWQuwqDCoFlvdXINCj4gYXBwcm9hY2gNCj4g aGVyZSBpcyBhIGJpdCBtb3JlIG1hbnVhbCBhbmQgbWF5IGJlIG1vcmUgc2Vuc2libGUgZm9yIHN5 c3RlbXMNCj4gd2l0aG91dA0KPiB0aGUgb2ZmbG9hZCBEU1AgaG93ZXZlciB0aGUgZGVjaXNpb24g dG8gZ28gb3V0c2lkZSBBTFNBIGFuZCB1c2UgYQ0KPiBrb2JqZWN0IG5lZWRzIHRvIGJlIHRob3Vn aHQgYWJvdXQgYSBiaXQsIHdlJ2Qgd2FudCB0byBlbnN1cmUgdGhhdA0KPiB0aGVyZSdzIGEgc3Rh bmRhcmQgd2F5IG9mIGhhbmRsaW5nIGhhcmR3YXJlIGxpa2UgdGhpcyBzbyBhcHBsaWNhdGlvbnMN Cj4gY2FuIHdvcmsgYXMgY29uc2lzdGVudGx5IGFzIHBvc3NpYmxlIHdpdGggdGhlbS4NCj4gDQo+ IEl0J3MgcHJvYmFibHkgYmVzdCB0byBzcGxpdCBhbGwgdGhpcyBWQUQgaGFuZGxpbmcgY29kZSBv dXQgaW50byBhDQo+IHNlcGFyYXRlIHBhdGNoIHNvIHRoYXQgdGhlIGJhc2ljIHN1cHBvcnQgY2Fu IGdldCBtZXJnZWQgYW5kIHRoaXMgY2FuDQo+IGJlDQo+IHJldmlld2VkIHNlcGFyYXRlbHkuwqDC oFRoZSByZXN0IG9mIHRoZSBkcml2ZXIgaGFzIHNvbWUgbWlub3IgaXNzdWVzDQo+IGJ1dA0KPiBp dCBsb29rcyBsaWtlIGFsbCB0aGUgY29tcGxleGl0eSBpcyBpbiB0aGlzIFZBRCBjb2RlLg0KDQpJ IHdhcyBhbHNvIHRoaW5raW5nIHRvIHNwbGl0IHRoZSBWQUQgZnJvbSBkcml2ZXIgYW5kIHNlbnQg aXQgaW4gYSBsYXRlcg0KdmVyc2lvbiBzaW5jZSB0aGlzIGhhcmR3YXJlIGhhcyB0d28gaW5kZXBl bmRlbnQgZnVuY3Rpb25hbGl0aWVzOg0KcmVjb3JkaW5nIGFuZCB2b2ljZSBkZXRlY3Rpb24uDQpX ZSBoYXZlIGNob3NlbiB0aGlzIGFwcHJvYWNoIGJlY2F1c2Ugd2UgY2FuIGFsc28gc3VwcG9ydCB0 aGUgcmVjb3JkaW5nDQppbiBwYXJhbGxlbCBhbmQgaXQgaXMgdXNlcidzIGNob2ljZSBob3cgdG8g aGFuZGxlIHRoZSBWT0lDRV9ERVRFQ1RFRA0KZXZlbnQuDQpIb3dldmVyLCB3ZSBhcmUgb3BlbiBm b3Igc3VnZ2VzdGlvbnMgb24gaG93IHRvIGhhbmRsZSB0aGUgZGV0ZWN0aW9uDQpldmVudCBhbmQg aG93IHRvIG5vdGlmeSB0aGUgdXNlcnNwYWNlLiBJIGFtIHByZXR0eSBzdXJlIHRoYXQgd2l0aCB0 aGUNCmN1cnJlbnQgaGFyZHdhcmUgaXQgaXMgaGFyZCB0byByZXR1cm4gdGhlIHN0cmVhbSBiYWNr IHRvIHVzZXIgc2luY2UgeW91DQp3aWxsIG9ubHkgaGF2ZSBhY2Nlc3MgdG8gc2FtcGxlcyBzdG9y ZWQgaW4gaW50ZXJuYWwgYnVmZmVycywgcHJvYmFibHkNCmxlc3MgdGhhbiAxMDAgaW4gdGhlIGJl c3QgY2FzZSBzY2VuYXJpby4NCg0KSWYgdGhpcyBpcyBvayBmb3IgeW91LCB3ZSB3aWxsIGRyb3Ag dGhlIEhXVkFEIGNoYW5nZXMgZm9yIHRoZSBtb21lbnQNCmFuZCBzZW5kIHRoZSBuZXh0IHZlcnNp b24gb25seSBmb3IgcmVjb3JkaW5nIGZ1bmN0aW9uYWxpdHkuIFdlIHdpbGwNCnNlbmQgYSBkaWZm ZXJlbnQgcGF0Y2ggd2hlbiB0aGlzIGdldHMgYWNjZXB0ZWQgd2l0aCB2b2ljZSBkZXRlY3Rpb24N CnN1cHBvcnQuDQoNCj4gDQo+ID4gDQo+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdCBtaWNmaWxfZXJy X2lzcihpbnQgaXJxLCB2b2lkICpkZXZpZCkNCj4gPiArew0KPiA+ICsJc3RydWN0IGZzbF9taWNm aWwgKm1pY2ZpbCA9IChzdHJ1Y3QgZnNsX21pY2ZpbCAqKWRldmlkOw0KPiA+ICsJc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiA9IG1pY2ZpbC0+cGRldjsNCj4gPiArCXUzMiBzdGF0X3JlZzsN Cj4gPiArDQo+ID4gKwlyZWdtYXBfcmVhZChtaWNmaWwtPnJlZ21hcCwgUkVHX01JQ0ZJTF9TVEFU LCAmc3RhdF9yZWcpOw0KPiA+ICsNCj4gPiArCWlmIChzdGF0X3JlZyAmIE1JQ0ZJTF9TVEFUX0JT WV9GSUxfTUFTSykNCj4gPiArCQlkZXZfZGJnKCZwZGV2LT5kZXYsICJpc3I6IERlY2ltYXRpb24g RmlsdGVyIGlzDQo+ID4gcnVubmluZ1xuIik7DQo+ID4gKw0KPiA+ICsJaWYgKHN0YXRfcmVnICYg TUlDRklMX1NUQVRfRklSX1JEWV9NQVNLKQ0KPiA+ICsJCWRldl9kYmcoJnBkZXYtPmRldiwgImlz cjogRklSIEZpbHRlciBEYXRhDQo+ID4gcmVhZHlcbiIpOw0KPiA+ICsNCj4gPiArCWlmIChzdGF0 X3JlZyAmIE1JQ0ZJTF9TVEFUX0xPV0ZSRVFGX01BU0spIHsNCj4gPiArCQlkZXZfZGJnKCZwZGV2 LT5kZXYsICJpc3I6IGlwZ19jbGtfYXBwIGlzIHRvbw0KPiA+IGxvd1xuIik7DQo+ID4gKwkJcmVn bWFwX3dyaXRlX2JpdHMobWljZmlsLT5yZWdtYXAsIFJFR19NSUNGSUxfU1RBVCwNCj4gPiArCQkJ CcKgwqBNSUNGSUxfU1RBVF9MT1dGUkVRRl9NQVNLLCAxKTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4gK30NCj4gVGhpcyB3aWxsIHVuY29uZHRpb25hbGx5 IHJlcG9ydCB0aGUgaW50ZXJydXB0IGFzIGhhbmRsZWQgYnV0IGlmIGl0DQo+IHNlZXMNCj4gYW4g ZXJyb3IgaXQgZG9lc24ndCByZWNvZ25pemUgaXQgd29uJ3QgbG9nIGFueXRoaW5nIC0gdGhhdCBz ZWVtcyBub3QNCj4gaWRlYWwsIGl0J2QgYmUgYmV0dGVyIHRvIGxvZyB0aGUgdmFsdWUgd2UgcmVh ZCBpbiBjYXNlIHRoZXJlJ3MNCj4gc29tZXRoaW5nDQo+IGVsc2UgZ29lcyB3cm9uZyB0byBhaWQg ZGVidWcuDQoNCk9rLiBXaWxsIGRvIGl0Lg0KDQo+IA0KPiA+IA0KPiA+ICtzdGF0aWMgaW50IGVu YWJsZV9od3ZhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgc3luYykNCj4gPiArew0KPiA+ICsJ c3RydWN0IGZzbF9taWNmaWwgKm1pY2ZpbCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+ICsJ aW50IHJldDsNCj4gPiArCWludCByYXRlOw0KPiA+ICsJdTMyIHN0YXRlOw0KPiA+ICsNCj4gPiAr CWlmIChzeW5jKQ0KPiA+ICsJCXBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsNCj4gPiArDQo+ID4g KwlzdGF0ZSA9IGF0b21pY19jbXB4Y2hnKCZtaWNmaWwtPmh3dmFkX3N0YXRlLA0KPiA+ICsJCQnC oMKgwqDCoMKgwqDCoE1JQ0ZJTF9IV1ZBRF9PRkYsDQo+ID4gKwkJCcKgwqDCoMKgwqDCoMKgTUlD RklMX0hXVkFEX09OKTsNCj4gVGhpcyAqcmVhbGx5KiBuZWVkcyBzb21lIGRvY3VtZW50YXRpb24g YWJvdXQgd2hhdCdzIGdvaW5nIG9uIGZvcg0KPiBjb25jdXJyZW5jeSBoZXJlLg0KDQpUaGUgaHd2 YWRfc3RhdGUgaXMgdXNlZCBhcyBJIGhhdmUgZXhwbGFpbmVkIGZvciByZWNvZGluZ19zdGF0ZSBh bmQgaXQNCmFsc28gaGVscHMgdXMgdG8gZGVjaWRlIHdoYXQgaGFwcGVucyB3aXRoIGh3dmFkIGR1 cmluZyBzdXNwZW5kL3Jlc3VtZS4NCkF0IHRoaXMgbW9tZW50LCB3ZSBoYXZlIGRlY2lkZWQgdG8g ZGlzYWJsZSBpdCBhdCBzdXNwZW5kIGFuZCByZS1lbmFibGUNCmF0IHJlc3VtZSBidXQgd2UgbWlj ZmlsIGNvdWxkIGFsc28gd29yayBhcyB3YWtlLXVwIHNvdXJjZSAoYnV0IGl0IGlzDQpub3QgaW1w bGVtZW50ZWQgeWV0IGluIGRyaXZlcikuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1w cm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8vYWxzYS1kZXZlbAo=