From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Louis Bossart Subject: Re: [RFC PATCH v2 1/8] drm/i915: setup bridge for HDMI LPE audio driver Date: Thu, 13 Oct 2016 14:38:30 -0500 Message-ID: <8fea1999-77e3-993a-224d-bf48406fc06d@linux.intel.com> References: <20161001002242.31025-1-jerome.anand@intel.com> <20161001002242.31025-2-jerome.anand@intel.com> <20161011091501.GN4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 488AC6EB2E for ; Thu, 13 Oct 2016 19:38:33 +0000 (UTC) In-Reply-To: <20161011091501.GN4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Jerome Anand Cc: tiwai@suse.de, intel-gfx@lists.freedesktop.org, broonie@opensource.wolfsonmicro.com List-Id: intel-gfx@lists.freedesktop.org VGhhbmtzIFZpbGxlIGZvciB0aGUgcmV2aWV3LiBBIGxvdCBvZiB0aGUgY29tbWVudHMgYXJlIHJl bGF0ZWQgdG8gdGhlIAppbml0aWFsIFZFRCBjb2RlIHdlIHRvb2sgcHJldHR5IG11Y2ggYXMgaXMs IG5vIGlzc3VlcyB0byBjbGVhbi11cCBmdXJ0aGVyLgoKQlRXLCBpdCBsb29rcyBsaWtlIEplcm9t ZSdzIHBhdGNoZXMgd2VyZSBzdHVjayBmb3IgMTArIGRheXMgb24gdGhlIAppbnRlbC1nZnggc2Vy dmVyIGZvciBzb21lIHJlYXNvbiBzbyBub3QgZXZlcnlvbmUgc2F3IHRoZSBpbml0aWFsIHBvc3Q/ Cgo+PiBAQCAtMTE0MSw3ICsxMTQxLDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lz dGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlpZiAoSVNfR0VONShk ZXZfcHJpdikpCj4+ICAJCWludGVsX2dwdV9pcHNfaW5pdChkZXZfcHJpdik7Cj4+Cj4+IC0JaTkx NV9hdWRpb19jb21wb25lbnRfaW5pdChkZXZfcHJpdik7Cj4+ICsJaWYgKGludGVsX2xwZV9hdWRp b19kZXRlY3QoZGV2X3ByaXYpKSB7Cj4+ICsJCWlmIChpbnRlbF9scGVfYXVkaW9fc2V0dXAoZGV2 X3ByaXYpIDwgMCkKPj4gKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIExQRSBBdWRpbyBi cmlkZ2VcbiIpOwo+PiArCX0KPgo+IEknZCBtb3ZlIGFsbCB0aGF0IGludG8gdGhlIGxwZSBhdWRp byBjb2RlLiBObyBuZWVkIHRvIGhhdmUgYW55dGhpbmcgaGVyZQo+IGJ1dCBhIHNpbmdsZSBmdW5j dGlvbiBjYWxsIElNTy4KCnNvbWV0aGluZyBsaWtlIGludGVsX2xwZV9hdWRpb19pbml0KCkgZm9y IHN5bW1ldHJ5IHdpdGggdGhlIGhkYSAKY29tcG9uZW50IHN0dWZmLCB3aXRoIGJvdGggZGV0ZWN0 aW9uIGFuZCBzZXR1cCBoYW5kbGVkIGludGVybmFsbHk/Cj4KPj4gKwo+PiArCWlmICghSVNfTFBF X0FVRElPX0VOQUJMRUQoZGV2X3ByaXYpKQo+Cj4gSSBkb24ndCBsaWtlIHRoYXQgdG9vIG11Y2gu IEkgdGhpbmsgSSB3b3VsZCBqdXN0IG1ha2UKPiB0aGF0IEhBU19MUEVfQVVESU8oKS4gVGhlIGN1 cnJlbnQgSVNfVkxWfHxJU19DSFYgY2hlY2sgY2FuIGp1c3QgYmUKPiBpbmxpbmVkIGludG8gdGhl IGluaXQgZnVuY3Rpb24uCgpvawoKCj4+Cj4+ICAjZGVmaW5lIEhBU19QT09MRURfRVUoZGV2KQko SU5URUxfSU5GTyhkZXYpLT5oYXNfcG9vbGVkX2V1KQo+Pgo+PiArI2RlZmluZSBIQVNfTFBFX0FV RElPKGRldikJKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ICsj ZGVmaW5lIElTX0xQRV9BVURJT19FTkFCTEVEKGRldl9wcml2KSBcCj4+ICsJCQkJKF9fSTkxNV9f KGRldl9wcml2KS0+bHBlX2F1ZGlvLnBsYXRkZXYgIT0gTlVMTCkKPj4gKyNkZWZpbmUgSVNfTFBF X0FVRElPX0lSUV9WQUxJRChkZXZfcHJpdikgXAo+PiArCQkJCShfX0k5MTVfXyhkZXZfcHJpdikt PmxwZV9hdWRpby5pcnEgPj0gMCkKPgo+IFNlZW1zIHVzZWxlc3MuIFdlIHNob3VsZCBqdXN0IG5v dCByZWdpc3RlciB0aGUgbHBlIGF1ZGlvIHRoaW5nIGlmIHdlCj4gaGF2ZSBubyBpcnEuCgpvawoK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+IEBAIC0xODI3LDYgKzE4MjcsMTMgQEAgc3RhdGlj IGlycXJldHVybl90IHZhbGxleXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ PiAgCQkgKiBzaWduYWxsZWQgaW4gaWlyICovCj4+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJx X2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPj4KPj4gKwkJaWYgKElTX0xQRV9BVURJ T19FTkFCTEVEKGRldl9wcml2KSkKPj4gKwkJCWlmIChJU19MUEVfQVVESU9fSVJRX1ZBTElEKGRl dl9wcml2KSkKPgo+IEkgdGhpbmsgYm90aCBvZiB0aGVzZSBjaGVja3MgY2FuIGJlIHJlbW92ZWQu IFdlIHdvbid0IHVubWFzayB0aGUKPiBpbnRlcnJ1cHRzIHVubGVzcyBscGUgaXMgZW5hYmxlZCwg c28gdGhlIElJUiBiaXRzIHdpbGwgbmV2ZXIgYmUgc2V0IGluCj4gdGhhdCBjYXNlLgo+Cj4+ICsJ CQkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKPj4gKwkJCQkJSTkxNV9M UEVfUElQRV9CX0lOVEVSUlVQVCB8Cj4+ICsJCQkJCUk5MTVfTFBFX1BJUEVfQ19JTlRFUlJVUFQp KQo+PiArCQkJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoZGV2X3ByaXYpOwo+PiArCgpv ay4KCj4+ICAJCS8qCj4+ICAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVm bGVjdHMgdGhlIGxldmVsCj4+ICAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQs IGhlbmNlIGNsZWFyIGl0IGxhc3QuCj4+IEBAIC0xOTA3LDYgKzE5MTQsMTMgQEAgc3RhdGljIGly cXJldHVybl90IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+PiAg CQkgKiBzaWduYWxsZWQgaW4gaWlyICovCj4+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2Fj ayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPj4KPj4gKwkJaWYgKElTX0xQRV9BVURJT19F TkFCTEVEKGRldl9wcml2KSkKPj4gKwkJCWlmIChJU19MUEVfQVVESU9fSVJRX1ZBTElEKGRldl9w cml2KSkKPj4gKwkJCQlpZiAoaWlyICYgKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+PiAr CQkJCQlJOTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPj4gKwkJCQkJSTkxNV9MUEVfUElQRV9D X0lOVEVSUlVQVCkpCj4+ICsJCQkJCWludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcihkZXZfcHJp dik7Cj4+ICsKPgo+IGRpdHRvCgpvawoKCj4+ICsJcGxhdGRldiA9IHBsYXRmb3JtX2RldmljZV9h bGxvYygiaGRtaS1scGUtYXVkaW8iLCAtMSk7Cj4+ICsJaWYgKCFwbGF0ZGV2KSB7Cj4+ICsJCXJl dCA9IC1FTk9NRU07Cj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIExQRSBhdWRp byBwbGF0Zm9ybSBkZXZpY2VcbiIpOwo+PiArCQlnb3RvIGVycjsKPj4gKwl9Cj4+ICsKPj4gKwkv KiB0byB3b3JrLWFyb3VuZCBjaGVja19hZGRyIGluIG5vbW11X21hcF9zZygpICovCj4KPiBXaGF0 J3MgdGhpcyBhYm91dD8KCkR1bm5vLCB0aGlzIHdhcyBpbiB0aGUgb3JpZ2luYWwgVkVEIHNlcmll cyB0aGF0IHdlIHVzZWQgYXMgYSBiYXNlbGluZS4gClVubGVzcyBzb21lb25lIGhhcyBtZW1vcmll cyBmcm9tIHRoYXQgdGltZSwgaSdsbCBqdXN0IHJlbW92ZSB0aGlzIGNvbW1lbnQuCgoKPj4gKwlE Uk1fREVCVUcoIiVzOiBIRE1JX0FVRElPIHJzYy5zdGFydFswXSA9IDB4JXhcbiIsCj4+ICsJCV9f ZnVuY19fLCAoaW50KShyc2NbMF0uc3RhcnQpKTsKPgo+IF9fZnVuY19fIHBvaW50bGVzcyBzaW5j ZSBEUk1fREVCVUcgYWxyZWF5IGFkZHMgaXQuIEFsc28gc2F5aW5nCj4gInJzYy5zdGFydFswXSIg aW4gdGhlIG1lc3NhZ2UgZG9lc24ndCB0ZWxsIGFueW9uZSBhbnl0aGluZyB1c2VmdWwuCj4gQW5k IEkgdGhpbmsgaXJxIG51bWJlcnMgYXJlIHVzdWFsbHkgcHJpbnRlZCBpbiBkZWNpbWFsLgoKU2Ft ZSwgdGhpcyB3YXMgdGFrZW4gZnJvbSB0aGUgVkVEIHNlcmllcywgbm8gaXNzdWUgdG8gY2xlYW4t dXAuCgo+Cj4+ICsKPj4gKwlyc2NbMV0uc3RhcnQgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2 LT5wZGV2LCAwKSArCj4+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRTsKPj4gKwlyc2NbMV0u ZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSArCj4+ICsJCUk5MTVf SERNSV9MUEVfQVVESU9fQkFTRSArIEk5MTVfSERNSV9MUEVfQVVESU9fU0laRSAtIDE7Cj4+ICsJ cnNjWzFdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9NRU07Cj4+ICsJcnNjWzFdLm5hbWUgICAgID0g ImhkbWktbHBlLWF1ZGlvLW1taW8iOwo+PiArCj4+ICsJRFJNX0RFQlVHKCIlczogSERNSV9BVURJ TyByc2Muc3RhcnRbMV0gPSAweCV4XG4iLAo+PiArCQlfX2Z1bmNfXywgKGludCkocnNjWzFdLnN0 YXJ0KSk7Cj4KPiBBZ2FpbiAicnNjWzBdLnN0YXJ0IiBkb2Vzbid0IHNlZW0gbGlrZSBhbnl0aGlu ZyB1c2VmdWwgdG8gcHJpbnQgaW4gYQo+IGRlYnVnIG1lc3NhZ2UuIERvbid0IHNlZSBtdWNoIHBv aW50IGluIHRoZSB3aG9sZSBkZWJ1ZyBtZXNzYWdlIFRCSCBzaW5jZQo+IHRoZSBzdGFydC9lbmQg YXJlIGZpeGVkLgoKc28gYXJlIHlvdSBzYXlpbmcgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgY29kZSBv ciBtb3ZlIHRoZSBsZXZlbCB0byAKRFJNX0lORk8gLSBmb3IgZXh0cmEgdmVyYm9zZSBkZWJ1Zz8K Cj4KPj4gKwo+PiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHBsYXRkZXYs IHJzYywgMik7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQg cmVzb3VyY2UgZm9yIHBsYXRmb3JtIGRldmljZTogJWRcbiIsCj4+ICsJCQlyZXQpOwo+PiArCQln b3RvIGVycl9wdXRfZGV2Owo+PiArCX0KPj4gKwo+PiArCXBkYXRhID0ga3phbGxvYyhzaXplb2Yo KnBkYXRhKSwgR0ZQX0tFUk5FTCk7Cj4+ICsKPj4gKwlpZiAocGRhdGEgPT0gTlVMTCkgewo+PiAr CQlyZXQgPSAtRU5PTUVNOwo+PiArCQlnb3RvIGVycl9wdXRfZGV2Owo+PiArCX0KPj4gKwlwbGF0 ZGV2LT5kZXYucGxhdGZvcm1fZGF0YSA9IHBkYXRhOwo+PiArCj4+ICsJLyogZm9yIExQRSBhdWRp byBkcml2ZXIncyBydW50aW1lLVBNICovCj4+ICsJcGxhdGRldi0+ZGV2LnBhcmVudCA9IGRldi0+ ZGV2Owo+PiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGQocGxhdGRldik7Cj4+ICsJaWYgKHJl dCkgewo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgTFBFIGF1ZGlvIHBsYXRmb3JtIGRl dmljZTogJWRcbiIsCj4+ICsJCQlyZXQpOwo+PiArCQlnb3RvIGVycl9wdXRfZGV2Owo+PiArCX0K Pj4gKwlzcGluX2xvY2tfaW5pdCgmcGRhdGEtPmxwZV9hdWRpb19zbG9jayk7Cj4KPiBTaG91bGQg aW5pdCBpdCBiZWZvcmUgYWRkaW5nIHRoZSBkZXZpY2UgSSBzdXBwb3NlPyBJdCdzIG5vdCB1c2Vk IGluIHRoZQo+IHBhdGNoIHNvIGhhcmQgdG8gc2F5LiBJbiBnZW5lcmFsIHRoZSBwYXRjaCBzcGxp dCBpcyBub3QgdGhlIGJlc3QgZHVlIHRvCj4gbm90IGJlaW5nIGFibGUgdG8gc2VlIHRoZSB1c2Ug b2YgdGhpbmdzLgoKb2suIHdlJ2xsIGxvb2sgaW50byB0aGlzLgoKCj4+ICtzdGF0aWMgdm9pZCBs cGVfYXVkaW9fcGxhdGRldl9kZXN0cm95KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gK3sKPj4gKwlpZiAoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KSB7Cj4+ICsJCXBs YXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldik7Cj4+ ICsJCWtmcmVlKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldi0+ZGV2LmRtYV9tYXNrKTsKPj4g Kwl9Cj4KPiBJIHVzdWFsbHkgcHJlZmVyCj4KPiB7Cj4gCWlmICghc3R1ZmYpCj4gCQlyZXR1cm47 Cj4KPiAJb3RoZXIgc3R1ZmY7Cj4gfQo+Cj4ganVzdCB0byBrZWVwIHRoZSBpbmRlbnRhdGlvbiBi ZXR0ZXIgaW4gY2hlY2suCgpvawoKPgo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBscGVfYXVk aW9faXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGQtPmNoaXBfZGF0YTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPj4g Kwl1MzIgdmFsID0gKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+PiArCQlJOTE1X0xQRV9Q SVBFX0JfSU5URVJSVVBUIHwKPj4gKwkJSTkxNV9MUEVfUElQRV9DX0lOVEVSUlVQVCk7Cj4+ICsK Pj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4+ ICsKPj4gKwkvKgo+PiArCSAqIFZMVl9JRVIgaXMgYWxyZWFkeSBzZXQgaW4gdGhlIHZsdl9kaXNw bGF5X3Bvc3RpbnN0YWxsKCksCj4+ICsJICogd2Ugb25seSBjaGFuZ2UgVkxWX0lJUiBhbmQgVkxW X0lNUgo+PiArCSAqLwo+PiArCWRldl9wcml2LT5pcnFfbWFzayAmPSB+dmFsOwo+PiArCUk5MTVf V1JJVEUoVkxWX0lJUiwgdmFsKTsKPj4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7Cj4+ICsJ STkxNV9XUklURShWTFZfSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwo+PiArCj4KPiBFeHRyYSBu ZXdsaW5lIGhlcmUgZm9yIHNvbWUgcmVhc29uLiBObyBzdWNoIHRoaW5nIGluIHRoZSBjb3VudGVy cGFydC4KCm9rCgoKPj4gK3N0YXRpYyBpbnQgbHBlX2F1ZGlvX2lycV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKwlpbnQgaXJxID0gZGV2X3ByaXYtPmxw ZV9hdWRpby5pcnE7Cj4+ICsKPj4gKwlXQVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3By aXYpKTsKPgo+IENvdWxkIGxlYXZlIGEgYmxhbmsgbGlrZSBoZXJlIHRvIG1ha2UgdGhpbmdzIGxv b2sgbGVzcyBjb252b2x1dGVkLgoKb2sKCj4KPj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXJf bmFtZShpcnEsCj4+ICsJCSZscGVfYXVkaW9faXJxY2hpcCwKPj4gKwkJaGFuZGxlX3NpbXBsZV9p cnEsCj4+ICsJCSJoZG1pX2xwZV9hdWRpb19pcnFfaGFuZGxlciIpOwo+Cj4gSW5kZW50YXRpb24g aXNuJ3QgcXVpdGUgcmlnaHQuCgpvawoKPgo+PiArCj4+ICsJcmV0dXJuIGlycV9zZXRfY2hpcF9k YXRhKGlycSwgJmRldl9wcml2LT5kcm0pOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGludGVs X2xwZV9hdWRpb19pcnFfaGFuZGxlcigpIC0gZm9yd2FyZHMgdGhlIExQRSBhdWRpbyBpcnEKPj4g KyAqIEBkZXZfcHJpdjogdGhlIGk5MTUgZHJtIGRldmljZSBwcml2YXRlIGRhdGEKPj4gKyAqCj4+ ICsgKiB0aGUgTFBFIEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5kbGVyIHJl Z2lzdGVyZWQgYnkgTFBFIGF1ZGlvCj4+ICsgKiBkcml2ZXIuCj4+ICsgKi8KPj4gK3ZvaWQgaW50 ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gK3sKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcmV0ID0gZ2VuZXJpY19oYW5kbGVfaXJx KGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPj4gKwlpZiAocmV0KQo+PiArCQlEUk1fRVJST1Jf UkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBhdWRpbyBpcnE6ICVkXG4iLAo+PiArCQkJ CXJldCk7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogaW50ZWxfbHBlX2F1ZGlvX2RldGVjdCgp IC0gY2hlY2sgJiBzZXR1cCBscGUgYXVkaW8gaWYgcHJlc2VudAo+PiArICogQGRldl9wcml2OiB0 aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+PiArICoKPj4gKyAqIERldGVjdCBpZiBs cGUgYXVkaW8gaXMgcHJlc2VudAo+PiArICoKPj4gKyAqIFJldHVybjogdHJ1ZSBpZiBscGUgYXVk aW8gcHJlc2VudCBlbHNlIFJldHVybiA9IGZhbHNlCj4+ICsgKi8KPj4gK2ludCBpbnRlbF9scGVf YXVkaW9fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4g KwlpbnQgbHBlX3ByZXNlbnQgPSBmYWxzZTsKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g JmRldl9wcml2LT5kcm07Cj4+ICsKPj4gKwlpZiAoSEFTX0xQRV9BVURJTyhkZXYpKSB7Cj4+ICsJ CXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdG9tX2hkYXVkaW9faWRzW10gPSB7 Cj4+ICsJCQkvKiBCYXl0cmFpbCAqLwo+PiArCQkJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9J TlRFTCwgMHgwZjA0KX0sCj4+ICsJCQkvKiBCcmFzd2VsbCAqLwo+PiArCQkJe1BDSV9ERVZJQ0Uo UENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgyMjg0KX0sCj4+ICsJCQl7fQo+PiArCQl9Owo+Cj4gSG1t LiBNYXliZSBJIGFza2VkIGFscmVhZHksIGJ1dCBjb3VsZCB3ZSB1c2UgYSBjbGFzcyBtYXRjaCBp bnN0ZWFkPwo+IFRoZXJlJ3Mgc29tZSBraW5kIG9mIEhEQSBjbGFzcyByaWdodD8KCkkgYW0gbm90 IGF3YXJlIG9mIGFueSBjbGFzcywgdGhpcyBpcyByZWFsbHkgdGhlIG9ubHkgbWVhbnMgd2UgZm91 bmQgdG8gCnRlc3QgaWYgdGhlIEhEYXVkaW8gY29udHJvbGxlciBpcyBkaXNhYmxlZCBvciBmdXNl ZCBvdXQuIE1heWJlIGEgCnF1ZXN0aW9uIGZvciBUYWthc2hpPwoKPgo+PiArCj4+ICsJCWlmICgh cGNpX2Rldl9wcmVzZW50KGF0b21faGRhdWRpb19pZHMpKSB7Cj4+ICsJCQlEUk1fSU5GTygiJXMl c1xuIiwgIkhEYXVkaW8gY29udHJvbGxlciBub3QgZGV0ZWN0ZWQsIiwKPj4gKwkJCQkidXNpbmcg TFBFIGF1ZGlvIGluc3RlYWRcbiIpOwo+PiArCQkJbHBlX3ByZXNlbnQgPSB0cnVlOwo+PiArCQl9 Cj4+ICsJfQo+PiArCXJldHVybiBscGVfcHJlc2VudDsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsg KiBpbnRlbF9scGVfYXVkaW9fc2V0dXAoKSAtIHNldHVwIHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1J IExQRSBBdWRpbwo+PiArICogZHJpdmVyIGFuZCBpOTE1Cj4+ICsgKiBAZGV2X3ByaXY6IHRoZSBp OTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4+ICsgKgo+PiArICogc2V0IHVwIHRoZSBtaW5p bXVtIHJlcXVpcmVkIHJlc291cmNlcyBmb3IgdGhlIGJyaWRnZTogaXJxIGNoaXAsCj4+ICsgKiBw bGF0Zm9ybSByZXNvdXJjZSBhbmQgcGxhdGZvcm0gZGV2aWNlLiBpOTE1IGRldmljZSBpcyBzZXQg YXMgcGFyZW50Cj4+ICsgKiBvZiB0aGUgbmV3IHBsYXRmb3JtIGRldmljZS4KPj4gKyAqCj4+ICsg KiBSZXR1cm46IDAgaWYgc3VjY2Vzc2Z1bC4gbm9uLXplcm8gaWYgYWxsb2NhdGlvbi9pbml0aWFs aXphdGlvbiBmYWlscwo+PiArICovCj4+ICtpbnQgaW50ZWxfbHBlX2F1ZGlvX3NldHVwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gK3sKPj4gKwlpbnQgcmV0Owo+PiArCj4+ ICsJZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPSBpcnFfYWxsb2NfZGVzY3MoLTEsIDAsIDEsIDAp Owo+Cj4gYWthLiBpcnFfYWxsb2NfZGVzYygpID8KCm5vdCBzdXJlLCB3aWxsIGxvb2sgaW50byB0 aGlzLgoKPgo+PiArCWlmIChkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSA8IDApIHsKPj4gKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gYWxsb2NhdGUgSVJRIGRlc2M6ICVkXG4iLAo+PiArCQkJZGV2X3By aXYtPmxwZV9hdWRpby5pcnEpOwo+PiArCQlyZXQgPSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycTsK Pj4gKwkJZ290byBlcnI7Cj4+ICsJfQo+PiArCj4+ICsJRFJNX0RFQlVHKCIlcyA6IGlycSA9ICVk XG4iLCBfX2Z1bmNfXywgZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+Cj4gQW5vdGhlciBfX2Z1 bmNfXyB0aGF0J3Mgbm90IG5lZWRlZC4gQW5kIHdlJ3JlIHByaW50aW5nIHRoZSBpcnEgdHdpY2UK PiBub3c/CgpvawoKPgo+PiArCj4+ICsJcmV0ID0gbHBlX2F1ZGlvX2lycV9pbml0KGRldl9wcml2 KTsKPj4gKwo+PiArCWlmIChyZXQpIHsKPj4gKwo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBp bml0aWFsaXplIGlycWNoaXAgZm9yIGxwZSBhdWRpbzogJWRcbiIsCj4+ICsJCQlyZXQpOwo+Cj4g SW5kZW50YXRpb24gbG9va3Mgb2ZmLgoKb2sKPgo+PiArCQlnb3RvIGVycl9mcmVlX2lycTsKPj4g Kwl9Cj4+ICsKPj4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYgPSBscGVfYXVkaW9fcGxh dGRldl9jcmVhdGUoZGV2X3ByaXYpOwo+PiArCj4+ICsJaWYgKElTX0VSUihkZXZfcHJpdi0+bHBl X2F1ZGlvLnBsYXRkZXYpKSB7Cj4+ICsJCXJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPmxwZV9hdWRp by5wbGF0ZGV2KTsKPj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGxwZSBhdWRpbyBw bGF0Zm9ybSBkZXZpY2U6ICVkXG4iLAo+PiArCQkJcmV0KTsKPgo+IGRpdHRvCgpvawoKPj4gK3Zv aWQgaW50ZWxfbHBlX2F1ZGlvX3RlYXJkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPj4gK3sKPj4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+PiArCXN0cnVjdCBpcnFf ZGVzYyAqZGVzYzsKPj4gKwo+PiArCWRlc2MgPSBJU19MUEVfQVVESU9fSVJRX1ZBTElEKGRldl9w cml2KSA/Cj4+ICsJCQlpcnFfdG9fZGVzYyhkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSkgOiBOVUxM Owo+PiArCj4+ICsJLyoqCj4+ICsJICogbWFzayBMUEUgYXVkaW8gaXJxIGJlZm9yZSBkZXN0cm95 aW5nCj4+ICsJICovCj4+ICsJaWYgKGRlc2MpCj4KPiBTZWVtcyBvdmVybHkgZGVmZW5zaXZlLiBT aG91bGQganVzdCBjaGVjayBpZiB3ZSBoYXZlIHRoZSBwbGF0Zm9ybSBkZXZpY2UKPiBhdCB0aGUg c3RhcnQsIGFuZCBvdGhlcndpc2Ugd2UgY2FuIGFzc3VtZSB0aGF0IGFsbCB0aGUgdGhpbmdzIHdl IG5lZWQgdG8KPiBmcmVlIGFyZSB0aGVyZS4KPgo+IFRoaXMgbG9va3MgcmFjeSB0b28uIFdlIHNo b3VsZCB1bnJlZ2lzdGVyIHRoZSBwbGF0Zm9ybSBkZXZpY2UgYXMgdGhlCj4gZmlyc3QgdGhpbmcs IGFuZCBvbmx5IHRoZW4gZnJlZSB1cCB0aGUgcmVzb3VyY2VzIGFuZCB3aGF0bm90LgoKd2lsbCBj bGVhbiB1cAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=