From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC PATCH v2 1/8] drm/i915: setup bridge for HDMI LPE audio driver Date: Fri, 14 Oct 2016 16:50:42 +0300 Message-ID: <87h98fujil.fsf@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> <20161014091000.GV4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id B62756EC7E for ; Fri, 14 Oct 2016 13:50:45 +0000 (UTC) In-Reply-To: <20161014091000.GV4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?utf-8?B?U3lyasOkbMOk?= , Pierre-Louis Bossart Cc: tiwai@suse.de, intel-gfx@lists.freedesktop.org, broonie@opensource.wolfsonmicro.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAxNCBPY3QgMjAxNiwgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4gd3JvdGU6Cj4gT24gVGh1LCBPY3QgMTMsIDIwMTYgYXQgMDI6Mzg6MzBQTSAt MDUwMCwgUGllcnJlLUxvdWlzIEJvc3NhcnQgd3JvdGU6Cj4+IFRoYW5rcyBWaWxsZSBmb3IgdGhl IHJldmlldy4gQSBsb3Qgb2YgdGhlIGNvbW1lbnRzIGFyZSByZWxhdGVkIHRvIHRoZSAKPj4gaW5p dGlhbCBWRUQgY29kZSB3ZSB0b29rIHByZXR0eSBtdWNoIGFzIGlzLCBubyBpc3N1ZXMgdG8gY2xl YW4tdXAgZnVydGhlci4KPj4gCj4+IEJUVywgaXQgbG9va3MgbGlrZSBKZXJvbWUncyBwYXRjaGVz IHdlcmUgc3R1Y2sgZm9yIDEwKyBkYXlzIG9uIHRoZSAKPj4gaW50ZWwtZ2Z4IHNlcnZlciBmb3Ig c29tZSByZWFzb24gc28gbm90IGV2ZXJ5b25lIHNhdyB0aGUgaW5pdGlhbCBwb3N0Pwo+Cj4gRGlk IHRoZXkgbWFrZSBpdCB0byB0aGUgbGlzdD8gSmFuaSB0b2xkIG1lIHRoZXkgZGlkbid0LCBub3Ig d2VyZSB0aGV5IGluCj4gdGhlIG1vZGVyYXRpb24gcXVldWUgYXBwYXJlbnRseS4gU28gbm8gaWRl YSB3aGVyZSB0aGV5IHdlbnQuIEkgdHJpZWQKPiBib3VuY2luZyB0aGVtIHRvIHRoZSBsaXN0LCBi dXQgSSdtIG5vdCBzdXJlIHRoZXkgY2FtZSB0aHJvdWdoIHRoYXQgdGltZQo+IGVpdGhlci4KClRo ZSBwYXRjaGVzIGFzIGJvdW5jZWQgYnkgVmlsbGUgbWFkZSBpdCB0byB0aGUgbGlzdCwgYnV0IHRo ZSBvcmlnaW5hbApvbmVzIHdlcmUgbG9zdCBhbmQgSSBoYXZlIG5vIGlkZWEgd2hhdCBoYXBwZW5l ZC4gVGhleSB3ZXJlIG5vdCBpbgptb2RlcmF0aW9uIGFuZCB0aGVyZSB3YXMgbm8gdHJhY2Ugb2Yg dGhlbS4KCkJSLApKYW5pLgoKCgo+Cj4+IAo+PiA+PiBAQCAtMTE0MSw3ICsxMTQxLDEzIEBAIHN0 YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPj4gPj4gIAlpZiAoSVNfR0VONShkZXZfcHJpdikpCj4+ID4+ICAJCWludGVsX2dw dV9pcHNfaW5pdChkZXZfcHJpdik7Cj4+ID4+Cj4+ID4+IC0JaTkxNV9hdWRpb19jb21wb25lbnRf aW5pdChkZXZfcHJpdik7Cj4+ID4+ICsJaWYgKGludGVsX2xwZV9hdWRpb19kZXRlY3QoZGV2X3By aXYpKSB7Cj4+ID4+ICsJCWlmIChpbnRlbF9scGVfYXVkaW9fc2V0dXAoZGV2X3ByaXYpIDwgMCkK Pj4gPj4gKwkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIExQRSBBdWRpbyBicmlkZ2VcbiIp Owo+PiA+PiArCX0KPj4gPgo+PiA+IEknZCBtb3ZlIGFsbCB0aGF0IGludG8gdGhlIGxwZSBhdWRp byBjb2RlLiBObyBuZWVkIHRvIGhhdmUgYW55dGhpbmcgaGVyZQo+PiA+IGJ1dCBhIHNpbmdsZSBm dW5jdGlvbiBjYWxsIElNTy4KPj4gCj4+IHNvbWV0aGluZyBsaWtlIGludGVsX2xwZV9hdWRpb19p bml0KCkgZm9yIHN5bW1ldHJ5IHdpdGggdGhlIGhkYSAKPj4gY29tcG9uZW50IHN0dWZmLCB3aXRo IGJvdGggZGV0ZWN0aW9uIGFuZCBzZXR1cCBoYW5kbGVkIGludGVybmFsbHk/Cj4+ID4KPj4gPj4g Kwo+PiA+PiArCWlmICghSVNfTFBFX0FVRElPX0VOQUJMRUQoZGV2X3ByaXYpKQo+PiA+Cj4+ID4g SSBkb24ndCBsaWtlIHRoYXQgdG9vIG11Y2guIEkgdGhpbmsgSSB3b3VsZCBqdXN0IG1ha2UKPj4g PiB0aGF0IEhBU19MUEVfQVVESU8oKS4gVGhlIGN1cnJlbnQgSVNfVkxWfHxJU19DSFYgY2hlY2sg Y2FuIGp1c3QgYmUKPj4gPiBpbmxpbmVkIGludG8gdGhlIGluaXQgZnVuY3Rpb24uCj4+IAo+PiBv awo+PiAKPj4gCj4+ID4+Cj4+ID4+ICAjZGVmaW5lIEhBU19QT09MRURfRVUoZGV2KQkoSU5URUxf SU5GTyhkZXYpLT5oYXNfcG9vbGVkX2V1KQo+PiA+Pgo+PiA+PiArI2RlZmluZSBIQVNfTFBFX0FV RElPKGRldikJKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+ID4+ ICsjZGVmaW5lIElTX0xQRV9BVURJT19FTkFCTEVEKGRldl9wcml2KSBcCj4+ID4+ICsJCQkJKF9f STkxNV9fKGRldl9wcml2KS0+bHBlX2F1ZGlvLnBsYXRkZXYgIT0gTlVMTCkKPj4gPj4gKyNkZWZp bmUgSVNfTFBFX0FVRElPX0lSUV9WQUxJRChkZXZfcHJpdikgXAo+PiA+PiArCQkJCShfX0k5MTVf XyhkZXZfcHJpdiktPmxwZV9hdWRpby5pcnEgPj0gMCkKPj4gPgo+PiA+IFNlZW1zIHVzZWxlc3Mu IFdlIHNob3VsZCBqdXN0IG5vdCByZWdpc3RlciB0aGUgbHBlIGF1ZGlvIHRoaW5nIGlmIHdlCj4+ ID4gaGF2ZSBubyBpcnEuCj4+IAo+PiBvawo+PiAKPj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwo+PiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCj4+ID4+IEBAIC0xODI3LDYgKzE4MjcsMTMgQEAgc3RhdGljIGlycXJldHVybl90IHZhbGxl eXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+PiA+PiAgCQkgKiBzaWduYWxs ZWQgaW4gaWlyICovCj4+ID4+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJp diwgaWlyLCBwaXBlX3N0YXRzKTsKPj4gPj4KPj4gPj4gKwkJaWYgKElTX0xQRV9BVURJT19FTkFC TEVEKGRldl9wcml2KSkKPj4gPj4gKwkJCWlmIChJU19MUEVfQVVESU9fSVJRX1ZBTElEKGRldl9w cml2KSkKPj4gPgo+PiA+IEkgdGhpbmsgYm90aCBvZiB0aGVzZSBjaGVja3MgY2FuIGJlIHJlbW92 ZWQuIFdlIHdvbid0IHVubWFzayB0aGUKPj4gPiBpbnRlcnJ1cHRzIHVubGVzcyBscGUgaXMgZW5h YmxlZCwgc28gdGhlIElJUiBiaXRzIHdpbGwgbmV2ZXIgYmUgc2V0IGluCj4+ID4gdGhhdCBjYXNl Lgo+PiA+Cj4+ID4+ICsJCQkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwK Pj4gPj4gKwkJCQkJSTkxNV9MUEVfUElQRV9CX0lOVEVSUlVQVCB8Cj4+ID4+ICsJCQkJCUk5MTVf TFBFX1BJUEVfQ19JTlRFUlJVUFQpKQo+PiA+PiArCQkJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hh bmRsZXIoZGV2X3ByaXYpOwo+PiA+PiArCj4+IAo+PiBvay4KPj4gCj4+ID4+ICAJCS8qCj4+ID4+ ICAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVs Cj4+ID4+ICAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQsIGhlbmNlIGNsZWFy IGl0IGxhc3QuCj4+ID4+IEBAIC0xOTA3LDYgKzE5MTQsMTMgQEAgc3RhdGljIGlycXJldHVybl90 IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+PiA+PiAgCQkgKiBz aWduYWxsZWQgaW4gaWlyICovCj4+ID4+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2Fjayhk ZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPj4gPj4KPj4gPj4gKwkJaWYgKElTX0xQRV9BVURJ T19FTkFCTEVEKGRldl9wcml2KSkKPj4gPj4gKwkJCWlmIChJU19MUEVfQVVESU9fSVJRX1ZBTElE KGRldl9wcml2KSkKPj4gPj4gKwkJCQlpZiAoaWlyICYgKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJV UFQgfAo+PiA+PiArCQkJCQlJOTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPj4gPj4gKwkJCQkJ STkxNV9MUEVfUElQRV9DX0lOVEVSUlVQVCkpCj4+ID4+ICsJCQkJCWludGVsX2xwZV9hdWRpb19p cnFfaGFuZGxlcihkZXZfcHJpdik7Cj4+ID4+ICsKPj4gPgo+PiA+IGRpdHRvCj4+IAo+PiBvawo+ PiAKPj4gCj4+ID4+ICsJcGxhdGRldiA9IHBsYXRmb3JtX2RldmljZV9hbGxvYygiaGRtaS1scGUt YXVkaW8iLCAtMSk7Cj4+ID4+ICsJaWYgKCFwbGF0ZGV2KSB7Cj4+ID4+ICsJCXJldCA9IC1FTk9N RU07Cj4+ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIExQRSBhdWRpbyBwbGF0 Zm9ybSBkZXZpY2VcbiIpOwo+PiA+PiArCQlnb3RvIGVycjsKPj4gPj4gKwl9Cj4+ID4+ICsKPj4g Pj4gKwkvKiB0byB3b3JrLWFyb3VuZCBjaGVja19hZGRyIGluIG5vbW11X21hcF9zZygpICovCj4+ ID4KPj4gPiBXaGF0J3MgdGhpcyBhYm91dD8KPj4gCj4+IER1bm5vLCB0aGlzIHdhcyBpbiB0aGUg b3JpZ2luYWwgVkVEIHNlcmllcyB0aGF0IHdlIHVzZWQgYXMgYSBiYXNlbGluZS4gCj4+IFVubGVz cyBzb21lb25lIGhhcyBtZW1vcmllcyBmcm9tIHRoYXQgdGltZSwgaSdsbCBqdXN0IHJlbW92ZSB0 aGlzIGNvbW1lbnQuCj4+IAo+PiAKPj4gPj4gKwlEUk1fREVCVUcoIiVzOiBIRE1JX0FVRElPIHJz Yy5zdGFydFswXSA9IDB4JXhcbiIsCj4+ID4+ICsJCV9fZnVuY19fLCAoaW50KShyc2NbMF0uc3Rh cnQpKTsKPj4gPgo+PiA+IF9fZnVuY19fIHBvaW50bGVzcyBzaW5jZSBEUk1fREVCVUcgYWxyZWF5 IGFkZHMgaXQuIEFsc28gc2F5aW5nCj4+ID4gInJzYy5zdGFydFswXSIgaW4gdGhlIG1lc3NhZ2Ug ZG9lc24ndCB0ZWxsIGFueW9uZSBhbnl0aGluZyB1c2VmdWwuCj4+ID4gQW5kIEkgdGhpbmsgaXJx IG51bWJlcnMgYXJlIHVzdWFsbHkgcHJpbnRlZCBpbiBkZWNpbWFsLgo+PiAKPj4gU2FtZSwgdGhp cyB3YXMgdGFrZW4gZnJvbSB0aGUgVkVEIHNlcmllcywgbm8gaXNzdWUgdG8gY2xlYW4tdXAuCj4+ IAo+PiA+Cj4+ID4+ICsKPj4gPj4gKwlyc2NbMV0uc3RhcnQgICAgPSBwY2lfcmVzb3VyY2Vfc3Rh cnQoZGV2LT5wZGV2LCAwKSArCj4+ID4+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRTsKPj4g Pj4gKwlyc2NbMV0uZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2LCAwKSAr Cj4+ID4+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRSArIEk5MTVfSERNSV9MUEVfQVVESU9f U0laRSAtIDE7Cj4+ID4+ICsJcnNjWzFdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9NRU07Cj4+ID4+ ICsJcnNjWzFdLm5hbWUgICAgID0gImhkbWktbHBlLWF1ZGlvLW1taW8iOwo+PiA+PiArCj4+ID4+ ICsJRFJNX0RFQlVHKCIlczogSERNSV9BVURJTyByc2Muc3RhcnRbMV0gPSAweCV4XG4iLAo+PiA+ PiArCQlfX2Z1bmNfXywgKGludCkocnNjWzFdLnN0YXJ0KSk7Cj4+ID4KPj4gPiBBZ2FpbiAicnNj WzBdLnN0YXJ0IiBkb2Vzbid0IHNlZW0gbGlrZSBhbnl0aGluZyB1c2VmdWwgdG8gcHJpbnQgaW4g YQo+PiA+IGRlYnVnIG1lc3NhZ2UuIERvbid0IHNlZSBtdWNoIHBvaW50IGluIHRoZSB3aG9sZSBk ZWJ1ZyBtZXNzYWdlIFRCSCBzaW5jZQo+PiA+IHRoZSBzdGFydC9lbmQgYXJlIGZpeGVkLgo+PiAK Pj4gc28gYXJlIHlvdSBzYXlpbmcgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgY29kZSBvciBtb3ZlIHRo ZSBsZXZlbCB0byAKPj4gRFJNX0lORk8gLSBmb3IgZXh0cmEgdmVyYm9zZSBkZWJ1Zz8KPj4gCj4+ ID4KPj4gPj4gKwo+PiA+PiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKHBs YXRkZXYsIHJzYywgMik7Cj4+ID4+ICsJaWYgKHJldCkgewo+PiA+PiArCQlEUk1fRVJST1IoIkZh aWxlZCB0byBhZGQgcmVzb3VyY2UgZm9yIHBsYXRmb3JtIGRldmljZTogJWRcbiIsCj4+ID4+ICsJ CQlyZXQpOwo+PiA+PiArCQlnb3RvIGVycl9wdXRfZGV2Owo+PiA+PiArCX0KPj4gPj4gKwo+PiA+ PiArCXBkYXRhID0ga3phbGxvYyhzaXplb2YoKnBkYXRhKSwgR0ZQX0tFUk5FTCk7Cj4+ID4+ICsK Pj4gPj4gKwlpZiAocGRhdGEgPT0gTlVMTCkgewo+PiA+PiArCQlyZXQgPSAtRU5PTUVNOwo+PiA+ PiArCQlnb3RvIGVycl9wdXRfZGV2Owo+PiA+PiArCX0KPj4gPj4gKwlwbGF0ZGV2LT5kZXYucGxh dGZvcm1fZGF0YSA9IHBkYXRhOwo+PiA+PiArCj4+ID4+ICsJLyogZm9yIExQRSBhdWRpbyBkcml2 ZXIncyBydW50aW1lLVBNICovCj4+ID4+ICsJcGxhdGRldi0+ZGV2LnBhcmVudCA9IGRldi0+ZGV2 Owo+PiA+PiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGQocGxhdGRldik7Cj4+ID4+ICsJaWYg KHJldCkgewo+PiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgTFBFIGF1ZGlvIHBsYXRm b3JtIGRldmljZTogJWRcbiIsCj4+ID4+ICsJCQlyZXQpOwo+PiA+PiArCQlnb3RvIGVycl9wdXRf ZGV2Owo+PiA+PiArCX0KPj4gPj4gKwlzcGluX2xvY2tfaW5pdCgmcGRhdGEtPmxwZV9hdWRpb19z bG9jayk7Cj4+ID4KPj4gPiBTaG91bGQgaW5pdCBpdCBiZWZvcmUgYWRkaW5nIHRoZSBkZXZpY2Ug SSBzdXBwb3NlPyBJdCdzIG5vdCB1c2VkIGluIHRoZQo+PiA+IHBhdGNoIHNvIGhhcmQgdG8gc2F5 LiBJbiBnZW5lcmFsIHRoZSBwYXRjaCBzcGxpdCBpcyBub3QgdGhlIGJlc3QgZHVlIHRvCj4+ID4g bm90IGJlaW5nIGFibGUgdG8gc2VlIHRoZSB1c2Ugb2YgdGhpbmdzLgo+PiAKPj4gb2suIHdlJ2xs IGxvb2sgaW50byB0aGlzLgo+PiAKPj4gCj4+ID4+ICtzdGF0aWMgdm9pZCBscGVfYXVkaW9fcGxh dGRldl9kZXN0cm95KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPj4gK3sK Pj4gPj4gKwlpZiAoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KSB7Cj4+ID4+ICsJCXBsYXRm b3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldik7Cj4+ID4+ ICsJCWtmcmVlKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldi0+ZGV2LmRtYV9tYXNrKTsKPj4g Pj4gKwl9Cj4+ID4KPj4gPiBJIHVzdWFsbHkgcHJlZmVyCj4+ID4KPj4gPiB7Cj4+ID4gCWlmICgh c3R1ZmYpCj4+ID4gCQlyZXR1cm47Cj4+ID4KPj4gPiAJb3RoZXIgc3R1ZmY7Cj4+ID4gfQo+PiA+ Cj4+ID4ganVzdCB0byBrZWVwIHRoZSBpbmRlbnRhdGlvbiBiZXR0ZXIgaW4gY2hlY2suCj4+IAo+ PiBvawo+PiAKPj4gPgo+PiA+PiArfQo+PiA+PiArCj4+ID4+ICtzdGF0aWMgdm9pZCBscGVfYXVk aW9faXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4+ID4+ICt7Cj4+ID4+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGQtPmNoaXBfZGF0YTsKPj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ID4+ICsJdW5zaWduZWQgbG9uZyBp cnFmbGFnczsKPj4gPj4gKwl1MzIgdmFsID0gKEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+ PiA+PiArCQlJOTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPj4gPj4gKwkJSTkxNV9MUEVfUElQ RV9DX0lOVEVSUlVQVCk7Cj4+ID4+ICsKPj4gPj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3By aXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4+ID4+ICsKPj4gPj4gKwkvKgo+PiA+PiArCSAqIFZM Vl9JRVIgaXMgYWxyZWFkeSBzZXQgaW4gdGhlIHZsdl9kaXNwbGF5X3Bvc3RpbnN0YWxsKCksCj4+ ID4+ICsJICogd2Ugb25seSBjaGFuZ2UgVkxWX0lJUiBhbmQgVkxWX0lNUgo+PiA+PiArCSAqLwo+ PiA+PiArCWRldl9wcml2LT5pcnFfbWFzayAmPSB+dmFsOwo+PiA+PiArCUk5MTVfV1JJVEUoVkxW X0lJUiwgdmFsKTsKPj4gPj4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7Cj4+ID4+ICsJSTkx NV9XUklURShWTFZfSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwo+PiA+PiArCj4+ID4KPj4gPiBF eHRyYSBuZXdsaW5lIGhlcmUgZm9yIHNvbWUgcmVhc29uLiBObyBzdWNoIHRoaW5nIGluIHRoZSBj b3VudGVycGFydC4KPj4gCj4+IG9rCj4+IAo+PiAKPj4gPj4gK3N0YXRpYyBpbnQgbHBlX2F1ZGlv X2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPj4gK3sKPj4g Pj4gKwlpbnQgaXJxID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4+ID4+ICsKPj4gPj4gKwlX QVJOX09OKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKTsKPj4gPgo+PiA+IENvdWxkIGxl YXZlIGEgYmxhbmsgbGlrZSBoZXJlIHRvIG1ha2UgdGhpbmdzIGxvb2sgbGVzcyBjb252b2x1dGVk Lgo+PiAKPj4gb2sKPj4gCj4+ID4KPj4gPj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXJfbmFt ZShpcnEsCj4+ID4+ICsJCSZscGVfYXVkaW9faXJxY2hpcCwKPj4gPj4gKwkJaGFuZGxlX3NpbXBs ZV9pcnEsCj4+ID4+ICsJCSJoZG1pX2xwZV9hdWRpb19pcnFfaGFuZGxlciIpOwo+PiA+Cj4+ID4g SW5kZW50YXRpb24gaXNuJ3QgcXVpdGUgcmlnaHQuCj4+IAo+PiBvawo+PiAKPj4gPgo+PiA+PiAr Cj4+ID4+ICsJcmV0dXJuIGlycV9zZXRfY2hpcF9kYXRhKGlycSwgJmRldl9wcml2LT5kcm0pOwo+ PiA+PiArfQo+PiA+PiArCj4+ID4+ICsvKioKPj4gPj4gKyAqIGludGVsX2xwZV9hdWRpb19pcnFf aGFuZGxlcigpIC0gZm9yd2FyZHMgdGhlIExQRSBhdWRpbyBpcnEKPj4gPj4gKyAqIEBkZXZfcHJp djogdGhlIGk5MTUgZHJtIGRldmljZSBwcml2YXRlIGRhdGEKPj4gPj4gKyAqCj4+ID4+ICsgKiB0 aGUgTFBFIEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5kbGVyIHJlZ2lzdGVy ZWQgYnkgTFBFIGF1ZGlvCj4+ID4+ICsgKiBkcml2ZXIuCj4+ID4+ICsgKi8KPj4gPj4gK3ZvaWQg aW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPj4gPj4gK3sKPj4gPj4gKwlpbnQgcmV0Owo+PiA+PiArCj4+ID4+ICsJcmV0ID0gZ2Vu ZXJpY19oYW5kbGVfaXJxKGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPj4gPj4gKwlpZiAocmV0 KQo+PiA+PiArCQlEUk1fRVJST1JfUkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBhdWRp byBpcnE6ICVkXG4iLAo+PiA+PiArCQkJCXJldCk7Cj4+ID4+ICt9Cj4+ID4+ICsKPj4gPj4gKy8q Kgo+PiA+PiArICogaW50ZWxfbHBlX2F1ZGlvX2RldGVjdCgpIC0gY2hlY2sgJiBzZXR1cCBscGUg YXVkaW8gaWYgcHJlc2VudAo+PiA+PiArICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNl IHByaXZhdGUgZGF0YQo+PiA+PiArICoKPj4gPj4gKyAqIERldGVjdCBpZiBscGUgYXVkaW8gaXMg cHJlc2VudAo+PiA+PiArICoKPj4gPj4gKyAqIFJldHVybjogdHJ1ZSBpZiBscGUgYXVkaW8gcHJl c2VudCBlbHNlIFJldHVybiA9IGZhbHNlCj4+ID4+ICsgKi8KPj4gPj4gK2ludCBpbnRlbF9scGVf YXVkaW9fZGV0ZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPj4gK3sK Pj4gPj4gKwlpbnQgbHBlX3ByZXNlbnQgPSBmYWxzZTsKPj4gPj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4+ID4+ICsKPj4gPj4gKwlpZiAoSEFTX0xQRV9BVURJ TyhkZXYpKSB7Cj4+ID4+ICsJCXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdG9t X2hkYXVkaW9faWRzW10gPSB7Cj4+ID4+ICsJCQkvKiBCYXl0cmFpbCAqLwo+PiA+PiArCQkJe1BD SV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgwZjA0KX0sCj4+ID4+ICsJCQkvKiBCcmFz d2VsbCAqLwo+PiA+PiArCQkJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRFTCwgMHgyMjg0 KX0sCj4+ID4+ICsJCQl7fQo+PiA+PiArCQl9Owo+PiA+Cj4+ID4gSG1tLiBNYXliZSBJIGFza2Vk IGFscmVhZHksIGJ1dCBjb3VsZCB3ZSB1c2UgYSBjbGFzcyBtYXRjaCBpbnN0ZWFkPwo+PiA+IFRo ZXJlJ3Mgc29tZSBraW5kIG9mIEhEQSBjbGFzcyByaWdodD8KPj4gCj4+IEkgYW0gbm90IGF3YXJl IG9mIGFueSBjbGFzcywgdGhpcyBpcyByZWFsbHkgdGhlIG9ubHkgbWVhbnMgd2UgZm91bmQgdG8g Cj4+IHRlc3QgaWYgdGhlIEhEYXVkaW8gY29udHJvbGxlciBpcyBkaXNhYmxlZCBvciBmdXNlZCBv dXQuIE1heWJlIGEgCj4+IHF1ZXN0aW9uIGZvciBUYWthc2hpPwo+PiAKPj4gPgo+PiA+PiArCj4+ ID4+ICsJCWlmICghcGNpX2Rldl9wcmVzZW50KGF0b21faGRhdWRpb19pZHMpKSB7Cj4+ID4+ICsJ CQlEUk1fSU5GTygiJXMlc1xuIiwgIkhEYXVkaW8gY29udHJvbGxlciBub3QgZGV0ZWN0ZWQsIiwK Pj4gPj4gKwkJCQkidXNpbmcgTFBFIGF1ZGlvIGluc3RlYWRcbiIpOwo+PiA+PiArCQkJbHBlX3By ZXNlbnQgPSB0cnVlOwo+PiA+PiArCQl9Cj4+ID4+ICsJfQo+PiA+PiArCXJldHVybiBscGVfcHJl c2VudDsKPj4gPj4gK30KPj4gPj4gKwo+PiA+PiArLyoqCj4+ID4+ICsgKiBpbnRlbF9scGVfYXVk aW9fc2V0dXAoKSAtIHNldHVwIHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1JIExQRSBBdWRpbwo+PiA+ PiArICogZHJpdmVyIGFuZCBpOTE1Cj4+ID4+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBk ZXZpY2UgcHJpdmF0ZSBkYXRhCj4+ID4+ICsgKgo+PiA+PiArICogc2V0IHVwIHRoZSBtaW5pbXVt IHJlcXVpcmVkIHJlc291cmNlcyBmb3IgdGhlIGJyaWRnZTogaXJxIGNoaXAsCj4+ID4+ICsgKiBw bGF0Zm9ybSByZXNvdXJjZSBhbmQgcGxhdGZvcm0gZGV2aWNlLiBpOTE1IGRldmljZSBpcyBzZXQg YXMgcGFyZW50Cj4+ID4+ICsgKiBvZiB0aGUgbmV3IHBsYXRmb3JtIGRldmljZS4KPj4gPj4gKyAq Cj4+ID4+ICsgKiBSZXR1cm46IDAgaWYgc3VjY2Vzc2Z1bC4gbm9uLXplcm8gaWYgYWxsb2NhdGlv bi9pbml0aWFsaXphdGlvbiBmYWlscwo+PiA+PiArICovCj4+ID4+ICtpbnQgaW50ZWxfbHBlX2F1 ZGlvX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPj4gK3sKPj4g Pj4gKwlpbnQgcmV0Owo+PiA+PiArCj4+ID4+ICsJZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPSBp cnFfYWxsb2NfZGVzY3MoLTEsIDAsIDEsIDApOwo+PiA+Cj4+ID4gYWthLiBpcnFfYWxsb2NfZGVz YygpID8KPj4gCj4+IG5vdCBzdXJlLCB3aWxsIGxvb2sgaW50byB0aGlzLgo+PiAKPj4gPgo+PiA+ PiArCWlmIChkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSA8IDApIHsKPj4gPj4gKwkJRFJNX0VSUk9S KCJGYWlsZWQgdG8gYWxsb2NhdGUgSVJRIGRlc2M6ICVkXG4iLAo+PiA+PiArCQkJZGV2X3ByaXYt PmxwZV9hdWRpby5pcnEpOwo+PiA+PiArCQlyZXQgPSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycTsK Pj4gPj4gKwkJZ290byBlcnI7Cj4+ID4+ICsJfQo+PiA+PiArCj4+ID4+ICsJRFJNX0RFQlVHKCIl cyA6IGlycSA9ICVkXG4iLCBfX2Z1bmNfXywgZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+PiA+ Cj4+ID4gQW5vdGhlciBfX2Z1bmNfXyB0aGF0J3Mgbm90IG5lZWRlZC4gQW5kIHdlJ3JlIHByaW50 aW5nIHRoZSBpcnEgdHdpY2UKPj4gPiBub3c/Cj4+IAo+PiBvawo+PiAKPj4gPgo+PiA+PiArCj4+ ID4+ICsJcmV0ID0gbHBlX2F1ZGlvX2lycV9pbml0KGRldl9wcml2KTsKPj4gPj4gKwo+PiA+PiAr CWlmIChyZXQpIHsKPj4gPj4gKwo+PiA+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFs aXplIGlycWNoaXAgZm9yIGxwZSBhdWRpbzogJWRcbiIsCj4+ID4+ICsJCQlyZXQpOwo+PiA+Cj4+ ID4gSW5kZW50YXRpb24gbG9va3Mgb2ZmLgo+PiAKPj4gb2sKPj4gPgo+PiA+PiArCQlnb3RvIGVy cl9mcmVlX2lycTsKPj4gPj4gKwl9Cj4+ID4+ICsKPj4gPj4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlv LnBsYXRkZXYgPSBscGVfYXVkaW9fcGxhdGRldl9jcmVhdGUoZGV2X3ByaXYpOwo+PiA+PiArCj4+ ID4+ICsJaWYgKElTX0VSUihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpKSB7Cj4+ID4+ICsJ CXJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2KTsKPj4gPj4gKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGxwZSBhdWRpbyBwbGF0Zm9ybSBkZXZpY2U6ICVkXG4i LAo+PiA+PiArCQkJcmV0KTsKPj4gPgo+PiA+IGRpdHRvCj4+IAo+PiBvawo+PiAKPj4gPj4gK3Zv aWQgaW50ZWxfbHBlX2F1ZGlvX3RlYXJkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPj4gPj4gK3sKPj4gPj4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+PiA+PiArCXN0 cnVjdCBpcnFfZGVzYyAqZGVzYzsKPj4gPj4gKwo+PiA+PiArCWRlc2MgPSBJU19MUEVfQVVESU9f SVJRX1ZBTElEKGRldl9wcml2KSA/Cj4+ID4+ICsJCQlpcnFfdG9fZGVzYyhkZXZfcHJpdi0+bHBl X2F1ZGlvLmlycSkgOiBOVUxMOwo+PiA+PiArCj4+ID4+ICsJLyoqCj4+ID4+ICsJICogbWFzayBM UEUgYXVkaW8gaXJxIGJlZm9yZSBkZXN0cm95aW5nCj4+ID4+ICsJICovCj4+ID4+ICsJaWYgKGRl c2MpCj4+ID4KPj4gPiBTZWVtcyBvdmVybHkgZGVmZW5zaXZlLiBTaG91bGQganVzdCBjaGVjayBp ZiB3ZSBoYXZlIHRoZSBwbGF0Zm9ybSBkZXZpY2UKPj4gPiBhdCB0aGUgc3RhcnQsIGFuZCBvdGhl cndpc2Ugd2UgY2FuIGFzc3VtZSB0aGF0IGFsbCB0aGUgdGhpbmdzIHdlIG5lZWQgdG8KPj4gPiBm cmVlIGFyZSB0aGVyZS4KPj4gPgo+PiA+IFRoaXMgbG9va3MgcmFjeSB0b28uIFdlIHNob3VsZCB1 bnJlZ2lzdGVyIHRoZSBwbGF0Zm9ybSBkZXZpY2UgYXMgdGhlCj4+ID4gZmlyc3QgdGhpbmcsIGFu ZCBvbmx5IHRoZW4gZnJlZSB1cCB0aGUgcmVzb3VyY2VzIGFuZCB3aGF0bm90Lgo+PiAKPj4gd2ls bCBjbGVhbiB1cAo+PiAKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==