From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC PATCH v2 1/8] drm/i915: setup bridge for HDMI LPE audio driver Date: Fri, 14 Oct 2016 12:10:00 +0300 Message-ID: <20161014091000.GV4329@intel.com> References: <20161001002242.31025-1-jerome.anand@intel.com> <20161001002242.31025-2-jerome.anand@intel.com> <20161011091501.GN4329@intel.com> <8fea1999-77e3-993a-224d-bf48406fc06d@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C4566EBDA for ; Fri, 14 Oct 2016 09:10:05 +0000 (UTC) Content-Disposition: inline In-Reply-To: <8fea1999-77e3-993a-224d-bf48406fc06d@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Pierre-Louis Bossart Cc: tiwai@suse.de, intel-gfx@lists.freedesktop.org, broonie@opensource.wolfsonmicro.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMTMsIDIwMTYgYXQgMDI6Mzg6MzBQTSAtMDUwMCwgUGllcnJlLUxvdWlzIEJv c3NhcnQgd3JvdGU6Cj4gVGhhbmtzIFZpbGxlIGZvciB0aGUgcmV2aWV3LiBBIGxvdCBvZiB0aGUg Y29tbWVudHMgYXJlIHJlbGF0ZWQgdG8gdGhlIAo+IGluaXRpYWwgVkVEIGNvZGUgd2UgdG9vayBw cmV0dHkgbXVjaCBhcyBpcywgbm8gaXNzdWVzIHRvIGNsZWFuLXVwIGZ1cnRoZXIuCj4gCj4gQlRX LCBpdCBsb29rcyBsaWtlIEplcm9tZSdzIHBhdGNoZXMgd2VyZSBzdHVjayBmb3IgMTArIGRheXMg b24gdGhlIAo+IGludGVsLWdmeCBzZXJ2ZXIgZm9yIHNvbWUgcmVhc29uIHNvIG5vdCBldmVyeW9u ZSBzYXcgdGhlIGluaXRpYWwgcG9zdD8KCkRpZCB0aGV5IG1ha2UgaXQgdG8gdGhlIGxpc3Q/IEph bmkgdG9sZCBtZSB0aGV5IGRpZG4ndCwgbm9yIHdlcmUgdGhleSBpbgp0aGUgbW9kZXJhdGlvbiBx dWV1ZSBhcHBhcmVudGx5LiBTbyBubyBpZGVhIHdoZXJlIHRoZXkgd2VudC4gSSB0cmllZApib3Vu Y2luZyB0aGVtIHRvIHRoZSBsaXN0LCBidXQgSSdtIG5vdCBzdXJlIHRoZXkgY2FtZSB0aHJvdWdo IHRoYXQgdGltZQplaXRoZXIuCgo+IAo+ID4+IEBAIC0xMTQxLDcgKzExNDEsMTMgQEAgc3RhdGlj IHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4+ICAJaWYgKElTX0dFTjUoZGV2X3ByaXYpKQo+ID4+ICAJCWludGVsX2dwdV9pcHNf aW5pdChkZXZfcHJpdik7Cj4gPj4KPiA+PiAtCWk5MTVfYXVkaW9fY29tcG9uZW50X2luaXQoZGV2 X3ByaXYpOwo+ID4+ICsJaWYgKGludGVsX2xwZV9hdWRpb19kZXRlY3QoZGV2X3ByaXYpKSB7Cj4g Pj4gKwkJaWYgKGludGVsX2xwZV9hdWRpb19zZXR1cChkZXZfcHJpdikgPCAwKQo+ID4+ICsJCQlE Uk1fRVJST1IoImZhaWxlZCB0byBzZXR1cCBMUEUgQXVkaW8gYnJpZGdlXG4iKTsKPiA+PiArCX0K PiA+Cj4gPiBJJ2QgbW92ZSBhbGwgdGhhdCBpbnRvIHRoZSBscGUgYXVkaW8gY29kZS4gTm8gbmVl ZCB0byBoYXZlIGFueXRoaW5nIGhlcmUKPiA+IGJ1dCBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsIElN Ty4KPiAKPiBzb21ldGhpbmcgbGlrZSBpbnRlbF9scGVfYXVkaW9faW5pdCgpIGZvciBzeW1tZXRy eSB3aXRoIHRoZSBoZGEgCj4gY29tcG9uZW50IHN0dWZmLCB3aXRoIGJvdGggZGV0ZWN0aW9uIGFu ZCBzZXR1cCBoYW5kbGVkIGludGVybmFsbHk/Cj4gPgo+ID4+ICsKPiA+PiArCWlmICghSVNfTFBF X0FVRElPX0VOQUJMRUQoZGV2X3ByaXYpKQo+ID4KPiA+IEkgZG9uJ3QgbGlrZSB0aGF0IHRvbyBt dWNoLiBJIHRoaW5rIEkgd291bGQganVzdCBtYWtlCj4gPiB0aGF0IEhBU19MUEVfQVVESU8oKS4g VGhlIGN1cnJlbnQgSVNfVkxWfHxJU19DSFYgY2hlY2sgY2FuIGp1c3QgYmUKPiA+IGlubGluZWQg aW50byB0aGUgaW5pdCBmdW5jdGlvbi4KPiAKPiBvawo+IAo+IAo+ID4+Cj4gPj4gICNkZWZpbmUg SEFTX1BPT0xFRF9FVShkZXYpCShJTlRFTF9JTkZPKGRldiktPmhhc19wb29sZWRfZXUpCj4gPj4K PiA+PiArI2RlZmluZSBIQVNfTFBFX0FVRElPKGRldikJKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpCj4gPj4gKyNkZWZpbmUgSVNfTFBFX0FVRElPX0VOQUJMRUQoZGV2 X3ByaXYpIFwKPiA+PiArCQkJCShfX0k5MTVfXyhkZXZfcHJpdiktPmxwZV9hdWRpby5wbGF0ZGV2 ICE9IE5VTEwpCj4gPj4gKyNkZWZpbmUgSVNfTFBFX0FVRElPX0lSUV9WQUxJRChkZXZfcHJpdikg XAo+ID4+ICsJCQkJKF9fSTkxNV9fKGRldl9wcml2KS0+bHBlX2F1ZGlvLmlycSA+PSAwKQo+ID4K PiA+IFNlZW1zIHVzZWxlc3MuIFdlIHNob3VsZCBqdXN0IG5vdCByZWdpc3RlciB0aGUgbHBlIGF1 ZGlvIHRoaW5nIGlmIHdlCj4gPiBoYXZlIG5vIGlycS4KPiAKPiBvawo+IAo+ID4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCj4gPj4gQEAgLTE4MjcsNiArMTgyNywxMyBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgdmFsbGV5dmlld19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gPj4gIAkJ ICogc2lnbmFsbGVkIGluIGlpciAqLwo+ID4+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2Fj ayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPiA+Pgo+ID4+ICsJCWlmIChJU19MUEVfQVVE SU9fRU5BQkxFRChkZXZfcHJpdikpCj4gPj4gKwkJCWlmIChJU19MUEVfQVVESU9fSVJRX1ZBTElE KGRldl9wcml2KSkKPiA+Cj4gPiBJIHRoaW5rIGJvdGggb2YgdGhlc2UgY2hlY2tzIGNhbiBiZSBy ZW1vdmVkLiBXZSB3b24ndCB1bm1hc2sgdGhlCj4gPiBpbnRlcnJ1cHRzIHVubGVzcyBscGUgaXMg ZW5hYmxlZCwgc28gdGhlIElJUiBiaXRzIHdpbGwgbmV2ZXIgYmUgc2V0IGluCj4gPiB0aGF0IGNh c2UuCj4gPgo+ID4+ICsJCQkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwK PiA+PiArCQkJCQlJOTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPiA+PiArCQkJCQlJOTE1X0xQ RV9QSVBFX0NfSU5URVJSVVBUKSkKPiA+PiArCQkJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRs ZXIoZGV2X3ByaXYpOwo+ID4+ICsKPiAKPiBvay4KPiAKPiA+PiAgCQkvKgo+ID4+ICAJCSAqIFZM Vl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVsCj4gPj4gIAkJ ICogZnJvbSBQSVBFU1RBVC9QT1JUX0hPVFBMVUdfU1RBVCwgaGVuY2UgY2xlYXIgaXQgbGFzdC4K PiA+PiBAQCAtMTkwNyw2ICsxOTE0LDEzIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjaGVycnl2aWV3 X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiA+PiAgCQkgKiBzaWduYWxsZWQgaW4g aWlyICovCj4gPj4gIAkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrKGRldl9wcml2LCBpaXIs IHBpcGVfc3RhdHMpOwo+ID4+Cj4gPj4gKwkJaWYgKElTX0xQRV9BVURJT19FTkFCTEVEKGRldl9w cml2KSkKPiA+PiArCQkJaWYgKElTX0xQRV9BVURJT19JUlFfVkFMSUQoZGV2X3ByaXYpKQo+ID4+ ICsJCQkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKPiA+PiArCQkJCQlJ OTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPiA+PiArCQkJCQlJOTE1X0xQRV9QSVBFX0NfSU5U RVJSVVBUKSkKPiA+PiArCQkJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoZGV2X3ByaXYp Owo+ID4+ICsKPiA+Cj4gPiBkaXR0bwo+IAo+IG9rCj4gCj4gCj4gPj4gKwlwbGF0ZGV2ID0gcGxh dGZvcm1fZGV2aWNlX2FsbG9jKCJoZG1pLWxwZS1hdWRpbyIsIC0xKTsKPiA+PiArCWlmICghcGxh dGRldikgewo+ID4+ICsJCXJldCA9IC1FTk9NRU07Cj4gPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgTFBFIGF1ZGlvIHBsYXRmb3JtIGRldmljZVxuIik7Cj4gPj4gKwkJZ290byBl cnI7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJLyogdG8gd29yay1hcm91bmQgY2hlY2tfYWRkciBp biBub21tdV9tYXBfc2coKSAqLwo+ID4KPiA+IFdoYXQncyB0aGlzIGFib3V0Pwo+IAo+IER1bm5v LCB0aGlzIHdhcyBpbiB0aGUgb3JpZ2luYWwgVkVEIHNlcmllcyB0aGF0IHdlIHVzZWQgYXMgYSBi YXNlbGluZS4gCj4gVW5sZXNzIHNvbWVvbmUgaGFzIG1lbW9yaWVzIGZyb20gdGhhdCB0aW1lLCBp J2xsIGp1c3QgcmVtb3ZlIHRoaXMgY29tbWVudC4KPiAKPiAKPiA+PiArCURSTV9ERUJVRygiJXM6 IEhETUlfQVVESU8gcnNjLnN0YXJ0WzBdID0gMHgleFxuIiwKPiA+PiArCQlfX2Z1bmNfXywgKGlu dCkocnNjWzBdLnN0YXJ0KSk7Cj4gPgo+ID4gX19mdW5jX18gcG9pbnRsZXNzIHNpbmNlIERSTV9E RUJVRyBhbHJlYXkgYWRkcyBpdC4gQWxzbyBzYXlpbmcKPiA+ICJyc2Muc3RhcnRbMF0iIGluIHRo ZSBtZXNzYWdlIGRvZXNuJ3QgdGVsbCBhbnlvbmUgYW55dGhpbmcgdXNlZnVsLgo+ID4gQW5kIEkg dGhpbmsgaXJxIG51bWJlcnMgYXJlIHVzdWFsbHkgcHJpbnRlZCBpbiBkZWNpbWFsLgo+IAo+IFNh bWUsIHRoaXMgd2FzIHRha2VuIGZyb20gdGhlIFZFRCBzZXJpZXMsIG5vIGlzc3VlIHRvIGNsZWFu LXVwLgo+IAo+ID4KPiA+PiArCj4gPj4gKwlyc2NbMV0uc3RhcnQgICAgPSBwY2lfcmVzb3VyY2Vf c3RhcnQoZGV2LT5wZGV2LCAwKSArCj4gPj4gKwkJSTkxNV9IRE1JX0xQRV9BVURJT19CQVNFOwo+ ID4+ICsJcnNjWzFdLmVuZCAgICAgID0gcGNpX3Jlc291cmNlX3N0YXJ0KGRldi0+cGRldiwgMCkg Kwo+ID4+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRSArIEk5MTVfSERNSV9MUEVfQVVESU9f U0laRSAtIDE7Cj4gPj4gKwlyc2NbMV0uZmxhZ3MgICAgPSBJT1JFU09VUkNFX01FTTsKPiA+PiAr CXJzY1sxXS5uYW1lICAgICA9ICJoZG1pLWxwZS1hdWRpby1tbWlvIjsKPiA+PiArCj4gPj4gKwlE Uk1fREVCVUcoIiVzOiBIRE1JX0FVRElPIHJzYy5zdGFydFsxXSA9IDB4JXhcbiIsCj4gPj4gKwkJ X19mdW5jX18sIChpbnQpKHJzY1sxXS5zdGFydCkpOwo+ID4KPiA+IEFnYWluICJyc2NbMF0uc3Rh cnQiIGRvZXNuJ3Qgc2VlbSBsaWtlIGFueXRoaW5nIHVzZWZ1bCB0byBwcmludCBpbiBhCj4gPiBk ZWJ1ZyBtZXNzYWdlLiBEb24ndCBzZWUgbXVjaCBwb2ludCBpbiB0aGUgd2hvbGUgZGVidWcgbWVz c2FnZSBUQkggc2luY2UKPiA+IHRoZSBzdGFydC9lbmQgYXJlIGZpeGVkLgo+IAo+IHNvIGFyZSB5 b3Ugc2F5aW5nIHdlIHNob3VsZCByZW1vdmUgdGhlIGNvZGUgb3IgbW92ZSB0aGUgbGV2ZWwgdG8g Cj4gRFJNX0lORk8gLSBmb3IgZXh0cmEgdmVyYm9zZSBkZWJ1Zz8KPiAKPiA+Cj4gPj4gKwo+ID4+ ICsJcmV0ID0gcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMocGxhdGRldiwgcnNjLCAyKTsK PiA+PiArCWlmIChyZXQpIHsKPiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgcmVzb3Vy Y2UgZm9yIHBsYXRmb3JtIGRldmljZTogJWRcbiIsCj4gPj4gKwkJCXJldCk7Cj4gPj4gKwkJZ290 byBlcnJfcHV0X2RldjsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlwZGF0YSA9IGt6YWxsb2Moc2l6 ZW9mKCpwZGF0YSksIEdGUF9LRVJORUwpOwo+ID4+ICsKPiA+PiArCWlmIChwZGF0YSA9PSBOVUxM KSB7Cj4gPj4gKwkJcmV0ID0gLUVOT01FTTsKPiA+PiArCQlnb3RvIGVycl9wdXRfZGV2Owo+ID4+ ICsJfQo+ID4+ICsJcGxhdGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBwZGF0YTsKPiA+PiArCj4g Pj4gKwkvKiBmb3IgTFBFIGF1ZGlvIGRyaXZlcidzIHJ1bnRpbWUtUE0gKi8KPiA+PiArCXBsYXRk ZXYtPmRldi5wYXJlbnQgPSBkZXYtPmRldjsKPiA+PiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9h ZGQocGxhdGRldik7Cj4gPj4gKwlpZiAocmV0KSB7Cj4gPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWRkIExQRSBhdWRpbyBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4iLAo+ID4+ICsJCQlyZXQpOwo+ ID4+ICsJCWdvdG8gZXJyX3B1dF9kZXY7Cj4gPj4gKwl9Cj4gPj4gKwlzcGluX2xvY2tfaW5pdCgm cGRhdGEtPmxwZV9hdWRpb19zbG9jayk7Cj4gPgo+ID4gU2hvdWxkIGluaXQgaXQgYmVmb3JlIGFk ZGluZyB0aGUgZGV2aWNlIEkgc3VwcG9zZT8gSXQncyBub3QgdXNlZCBpbiB0aGUKPiA+IHBhdGNo IHNvIGhhcmQgdG8gc2F5LiBJbiBnZW5lcmFsIHRoZSBwYXRjaCBzcGxpdCBpcyBub3QgdGhlIGJl c3QgZHVlIHRvCj4gPiBub3QgYmVpbmcgYWJsZSB0byBzZWUgdGhlIHVzZSBvZiB0aGluZ3MuCj4g Cj4gb2suIHdlJ2xsIGxvb2sgaW50byB0aGlzLgo+IAo+IAo+ID4+ICtzdGF0aWMgdm9pZCBscGVf YXVkaW9fcGxhdGRldl9kZXN0cm95KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+PiArewo+ID4+ICsJaWYgKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldikgewo+ID4+ICsJ CXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldik7 Cj4gPj4gKwkJa2ZyZWUoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2LT5kZXYuZG1hX21hc2sp Owo+ID4+ICsJfQo+ID4KPiA+IEkgdXN1YWxseSBwcmVmZXIKPiA+Cj4gPiB7Cj4gPiAJaWYgKCFz dHVmZikKPiA+IAkJcmV0dXJuOwo+ID4KPiA+IAlvdGhlciBzdHVmZjsKPiA+IH0KPiA+Cj4gPiBq dXN0IHRvIGtlZXAgdGhlIGluZGVudGF0aW9uIGJldHRlciBpbiBjaGVjay4KPiAKPiBvawo+IAo+ ID4KPiA+PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIHZvaWQgbHBlX2F1ZGlvX2lycV91bm1hc2so c3RydWN0IGlycV9kYXRhICpkKQo+ID4+ICt7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZC0+Y2hpcF9kYXRhOwo+ID4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+ID4+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiA+PiArCXUz MiB2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gPj4gKwkJSTkxNV9MUEVfUElQ RV9CX0lOVEVSUlVQVCB8Cj4gPj4gKwkJSTkxNV9MUEVfUElQRV9DX0lOVEVSUlVQVCk7Cj4gPj4g Kwo+ID4+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5pcnFfbG9jaywgaXJxZmxhZ3Mp Owo+ID4+ICsKPiA+PiArCS8qCj4gPj4gKwkgKiBWTFZfSUVSIGlzIGFscmVhZHkgc2V0IGluIHRo ZSB2bHZfZGlzcGxheV9wb3N0aW5zdGFsbCgpLAo+ID4+ICsJICogd2Ugb25seSBjaGFuZ2UgVkxW X0lJUiBhbmQgVkxWX0lNUgo+ID4+ICsJICovCj4gPj4gKwlkZXZfcHJpdi0+aXJxX21hc2sgJj0g fnZhbDsKPiA+PiArCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKPiA+PiArCUk5MTVfV1JJVEUo VkxWX0lJUiwgdmFsKTsKPiA+PiArCUk5MTVfV1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9t YXNrKTsKPiA+PiArCj4gPgo+ID4gRXh0cmEgbmV3bGluZSBoZXJlIGZvciBzb21lIHJlYXNvbi4g Tm8gc3VjaCB0aGluZyBpbiB0aGUgY291bnRlcnBhcnQuCj4gCj4gb2sKPiAKPiAKPiA+PiArc3Rh dGljIGludCBscGVfYXVkaW9faXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4+ICt7Cj4gPj4gKwlpbnQgaXJxID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4g Pj4gKwo+ID4+ICsJV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGRldl9wcml2KSk7Cj4gPgo+ ID4gQ291bGQgbGVhdmUgYSBibGFuayBsaWtlIGhlcmUgdG8gbWFrZSB0aGluZ3MgbG9vayBsZXNz IGNvbnZvbHV0ZWQuCj4gCj4gb2sKPiAKPiA+Cj4gPj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRs ZXJfbmFtZShpcnEsCj4gPj4gKwkJJmxwZV9hdWRpb19pcnFjaGlwLAo+ID4+ICsJCWhhbmRsZV9z aW1wbGVfaXJxLAo+ID4+ICsJCSJoZG1pX2xwZV9hdWRpb19pcnFfaGFuZGxlciIpOwo+ID4KPiA+ IEluZGVudGF0aW9uIGlzbid0IHF1aXRlIHJpZ2h0Lgo+IAo+IG9rCj4gCj4gPgo+ID4+ICsKPiA+ PiArCXJldHVybiBpcnFfc2V0X2NoaXBfZGF0YShpcnEsICZkZXZfcHJpdi0+ZHJtKTsKPiA+PiAr fQo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcigp IC0gZm9yd2FyZHMgdGhlIExQRSBhdWRpbyBpcnEKPiA+PiArICogQGRldl9wcml2OiB0aGUgaTkx NSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ID4+ICsgKgo+ID4+ICsgKiB0aGUgTFBFIEF1ZGlv IGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5kbGVyIHJlZ2lzdGVyZWQgYnkgTFBFIGF1 ZGlvCj4gPj4gKyAqIGRyaXZlci4KPiA+PiArICovCj4gPj4gK3ZvaWQgaW50ZWxfbHBlX2F1ZGlv X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+PiArewo+ ID4+ICsJaW50IHJldDsKPiA+PiArCj4gPj4gKwlyZXQgPSBnZW5lcmljX2hhbmRsZV9pcnEoZGV2 X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+ID4+ICsJaWYgKHJldCkKPiA+PiArCQlEUk1fRVJST1Jf UkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBhdWRpbyBpcnE6ICVkXG4iLAo+ID4+ICsJ CQkJcmV0KTsKPiA+PiArfQo+ID4+ICsKPiA+PiArLyoqCj4gPj4gKyAqIGludGVsX2xwZV9hdWRp b19kZXRlY3QoKSAtIGNoZWNrICYgc2V0dXAgbHBlIGF1ZGlvIGlmIHByZXNlbnQKPiA+PiArICog QGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ID4+ICsgKgo+ID4+ ICsgKiBEZXRlY3QgaWYgbHBlIGF1ZGlvIGlzIHByZXNlbnQKPiA+PiArICoKPiA+PiArICogUmV0 dXJuOiB0cnVlIGlmIGxwZSBhdWRpbyBwcmVzZW50IGVsc2UgUmV0dXJuID0gZmFsc2UKPiA+PiAr ICovCj4gPj4gK2ludCBpbnRlbF9scGVfYXVkaW9fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+PiArewo+ID4+ICsJaW50IGxwZV9wcmVzZW50ID0gZmFsc2U7Cj4g Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gPj4gKwo+ID4+ ICsJaWYgKEhBU19MUEVfQVVESU8oZGV2KSkgewo+ID4+ICsJCXN0YXRpYyBjb25zdCBzdHJ1Y3Qg cGNpX2RldmljZV9pZCBhdG9tX2hkYXVkaW9faWRzW10gPSB7Cj4gPj4gKwkJCS8qIEJheXRyYWls ICovCj4gPj4gKwkJCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5URUwsIDB4MGYwNCl9LAo+ ID4+ICsJCQkvKiBCcmFzd2VsbCAqLwo+ID4+ICsJCQl7UENJX0RFVklDRShQQ0lfVkVORE9SX0lE X0lOVEVMLCAweDIyODQpfSwKPiA+PiArCQkJe30KPiA+PiArCQl9Owo+ID4KPiA+IEhtbS4gTWF5 YmUgSSBhc2tlZCBhbHJlYWR5LCBidXQgY291bGQgd2UgdXNlIGEgY2xhc3MgbWF0Y2ggaW5zdGVh ZD8KPiA+IFRoZXJlJ3Mgc29tZSBraW5kIG9mIEhEQSBjbGFzcyByaWdodD8KPiAKPiBJIGFtIG5v dCBhd2FyZSBvZiBhbnkgY2xhc3MsIHRoaXMgaXMgcmVhbGx5IHRoZSBvbmx5IG1lYW5zIHdlIGZv dW5kIHRvIAo+IHRlc3QgaWYgdGhlIEhEYXVkaW8gY29udHJvbGxlciBpcyBkaXNhYmxlZCBvciBm dXNlZCBvdXQuIE1heWJlIGEgCj4gcXVlc3Rpb24gZm9yIFRha2FzaGk/Cj4gCj4gPgo+ID4+ICsK PiA+PiArCQlpZiAoIXBjaV9kZXZfcHJlc2VudChhdG9tX2hkYXVkaW9faWRzKSkgewo+ID4+ICsJ CQlEUk1fSU5GTygiJXMlc1xuIiwgIkhEYXVkaW8gY29udHJvbGxlciBub3QgZGV0ZWN0ZWQsIiwK PiA+PiArCQkJCSJ1c2luZyBMUEUgYXVkaW8gaW5zdGVhZFxuIik7Cj4gPj4gKwkJCWxwZV9wcmVz ZW50ID0gdHJ1ZTsKPiA+PiArCQl9Cj4gPj4gKwl9Cj4gPj4gKwlyZXR1cm4gbHBlX3ByZXNlbnQ7 Cj4gPj4gK30KPiA+PiArCj4gPj4gKy8qKgo+ID4+ICsgKiBpbnRlbF9scGVfYXVkaW9fc2V0dXAo KSAtIHNldHVwIHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1JIExQRSBBdWRpbwo+ID4+ICsgKiBkcml2 ZXIgYW5kIGk5MTUKPiA+PiArICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZh dGUgZGF0YQo+ID4+ICsgKgo+ID4+ICsgKiBzZXQgdXAgdGhlIG1pbmltdW0gcmVxdWlyZWQgcmVz b3VyY2VzIGZvciB0aGUgYnJpZGdlOiBpcnEgY2hpcCwKPiA+PiArICogcGxhdGZvcm0gcmVzb3Vy Y2UgYW5kIHBsYXRmb3JtIGRldmljZS4gaTkxNSBkZXZpY2UgaXMgc2V0IGFzIHBhcmVudAo+ID4+ ICsgKiBvZiB0aGUgbmV3IHBsYXRmb3JtIGRldmljZS4KPiA+PiArICoKPiA+PiArICogUmV0dXJu OiAwIGlmIHN1Y2Nlc3NmdWwuIG5vbi16ZXJvIGlmIGFsbG9jYXRpb24vaW5pdGlhbGl6YXRpb24g ZmFpbHMKPiA+PiArICovCj4gPj4gK2ludCBpbnRlbF9scGVfYXVkaW9fc2V0dXAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ICt7Cj4gPj4gKwlpbnQgcmV0Owo+ID4+ICsK PiA+PiArCWRldl9wcml2LT5scGVfYXVkaW8uaXJxID0gaXJxX2FsbG9jX2Rlc2NzKC0xLCAwLCAx LCAwKTsKPiA+Cj4gPiBha2EuIGlycV9hbGxvY19kZXNjKCkgPwo+IAo+IG5vdCBzdXJlLCB3aWxs IGxvb2sgaW50byB0aGlzLgo+IAo+ID4KPiA+PiArCWlmIChkZXZfcHJpdi0+bHBlX2F1ZGlvLmly cSA8IDApIHsKPiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBJUlEgZGVzYzog JWRcbiIsCj4gPj4gKwkJCWRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiA+PiArCQlyZXQgPSBk ZXZfcHJpdi0+bHBlX2F1ZGlvLmlycTsKPiA+PiArCQlnb3RvIGVycjsKPiA+PiArCX0KPiA+PiAr Cj4gPj4gKwlEUk1fREVCVUcoIiVzIDogaXJxID0gJWRcbiIsIF9fZnVuY19fLCBkZXZfcHJpdi0+ bHBlX2F1ZGlvLmlycSk7Cj4gPgo+ID4gQW5vdGhlciBfX2Z1bmNfXyB0aGF0J3Mgbm90IG5lZWRl ZC4gQW5kIHdlJ3JlIHByaW50aW5nIHRoZSBpcnEgdHdpY2UKPiA+IG5vdz8KPiAKPiBvawo+IAo+ ID4KPiA+PiArCj4gPj4gKwlyZXQgPSBscGVfYXVkaW9faXJxX2luaXQoZGV2X3ByaXYpOwo+ID4+ ICsKPiA+PiArCWlmIChyZXQpIHsKPiA+PiArCj4gPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g aW5pdGlhbGl6ZSBpcnFjaGlwIGZvciBscGUgYXVkaW86ICVkXG4iLAo+ID4+ICsJCQlyZXQpOwo+ ID4KPiA+IEluZGVudGF0aW9uIGxvb2tzIG9mZi4KPiAKPiBvawo+ID4KPiA+PiArCQlnb3RvIGVy cl9mcmVlX2lycTsKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlvLnBs YXRkZXYgPSBscGVfYXVkaW9fcGxhdGRldl9jcmVhdGUoZGV2X3ByaXYpOwo+ID4+ICsKPiA+PiAr CWlmIChJU19FUlIoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KSkgewo+ID4+ICsJCXJldCA9 IFBUUl9FUlIoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KTsKPiA+PiArCQlEUk1fRVJST1Io IkZhaWxlZCB0byBjcmVhdGUgbHBlIGF1ZGlvIHBsYXRmb3JtIGRldmljZTogJWRcbiIsCj4gPj4g KwkJCXJldCk7Cj4gPgo+ID4gZGl0dG8KPiAKPiBvawo+IAo+ID4+ICt2b2lkIGludGVsX2xwZV9h dWRpb190ZWFyZG93bihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPj4gK3sK PiA+PiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gPj4gKwlzdHJ1Y3QgaXJxX2Rlc2MgKmRl c2M7Cj4gPj4gKwo+ID4+ICsJZGVzYyA9IElTX0xQRV9BVURJT19JUlFfVkFMSUQoZGV2X3ByaXYp ID8KPiA+PiArCQkJaXJxX3RvX2Rlc2MoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpIDogTlVMTDsK PiA+PiArCj4gPj4gKwkvKioKPiA+PiArCSAqIG1hc2sgTFBFIGF1ZGlvIGlycSBiZWZvcmUgZGVz dHJveWluZwo+ID4+ICsJICovCj4gPj4gKwlpZiAoZGVzYykKPiA+Cj4gPiBTZWVtcyBvdmVybHkg ZGVmZW5zaXZlLiBTaG91bGQganVzdCBjaGVjayBpZiB3ZSBoYXZlIHRoZSBwbGF0Zm9ybSBkZXZp Y2UKPiA+IGF0IHRoZSBzdGFydCwgYW5kIG90aGVyd2lzZSB3ZSBjYW4gYXNzdW1lIHRoYXQgYWxs IHRoZSB0aGluZ3Mgd2UgbmVlZCB0bwo+ID4gZnJlZSBhcmUgdGhlcmUuCj4gPgo+ID4gVGhpcyBs b29rcyByYWN5IHRvby4gV2Ugc2hvdWxkIHVucmVnaXN0ZXIgdGhlIHBsYXRmb3JtIGRldmljZSBh cyB0aGUKPiA+IGZpcnN0IHRoaW5nLCBhbmQgb25seSB0aGVuIGZyZWUgdXAgdGhlIHJlc291cmNl cyBhbmQgd2hhdG5vdC4KPiAKPiB3aWxsIGNsZWFuIHVwCj4gCgotLSAKVmlsbGUgU3lyasOkbMOk CkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK