From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Louis Bossart Subject: Re: [alsa-devel] [PATCH V2 1/7] drm/i915: setup bridge for HDMI LPE audio driver Date: Fri, 6 Jan 2017 14:12:46 -0600 Message-ID: References: <20170107012109.25744-1-jerome.anand@intel.com> <20170107012109.25744-2-jerome.anand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB3B46EA04 for ; Fri, 6 Jan 2017 20:12:49 +0000 (UTC) In-Reply-To: <20170107012109.25744-2-jerome.anand@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jerome Anand , intel-gfx@lists.freedesktop.org, alsa-devel@alsa-project.org Cc: tiwai@suse.de, broonie@kernel.org, rakesh.a.ughreja@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhhbmtzIGZvciB0aGUgdXBkYXRlIEplcm9tZS4gTG9va3MgbGlrZSB5b3UgbWlzc2VkIGEgY291 cGxlIG9mIGFncmVlZCAKY29tbWVudHMgZnJvbSB0aGUgbGFzdCByb3VuZD8KCk9uIDEvNi8xNyA3 OjIxIFBNLCBKZXJvbWUgQW5hbmQgd3JvdGU6Cj4gRW5hYmxlIHN1cHBvcnQgZm9yIEhETUkgTFBF IGF1ZGlvIG1vZGUgb24gQmF5dHJhaWwgYW5kCj4gQ2hlcnJ5dHJhaWwgd2hlbiBIRGF1ZGlvIGNv bnRyb2xsZXIgaXMgbm90IGRldGVjdGVkCj4KPiBTZXR1cCBtaW5pbXVtIHJlcXVpcmVkIHJlc291 cmNlcyBkdXJpbmcgaTkxNV9kcml2ZXJfbG9hZDoKPiAxLiBDcmVhdGUgYSBwbGF0Zm9ybSBkZXZp Y2UgdG8gc2hhcmUgTU1JTy9JUlEgcmVzb3VyY2VzCj4gMi4gTWFrZSB0aGUgcGxhdGZvcm0gZGV2 aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1lIFBNLgo+IDMuIENyZWF0ZSBJUlEg Y2hpcCB0byBmb3J3YXJkIEhETUkgTFBFIGF1ZGlvIGlycXMuCj4KPiBIRE1JIExQRSBhdWRpbyBk cml2ZXIgKGEgc3RhbmRhbG9uZSBzb3VuZCBkcml2ZXIpIHByb2JlcyB0aGUKPiBMUEUgYXVkaW8g ZGV2aWNlIGFuZCBjcmVhdGVzIGEgbmV3IHNvdW5kIGNhcmQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBQ aWVycmUtTG91aXMgQm9zc2FydCA8cGllcnJlLWxvdWlzLmJvc3NhcnRAbGludXguaW50ZWwuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEplcm9tZSBBbmFuZCA8amVyb21lLmFuYW5kQGludGVsLmNvbT4K PiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9ncHUvaTkxNS5yc3QgICAgICAgICAgICAgfCAgIDkgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICB8ICAgMyArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgIHwgIDE1ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfaXJxLmMgICAgICAgIHwgIDE2ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBl X2F1ZGlvLmMgfCAzNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1 ZGUvZHJtL2ludGVsX2xwZV9hdWRpby5oICAgICAgICAgIHwgIDQ1ICsrKysrCj4gIDggZmlsZXMg Y2hhbmdlZCwgNDUyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scGVfYXVkaW8uYwo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmgKPgo+IGRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2k5MTUucnN0 Cj4gaW5kZXggMTA0Mjk2ZC4uYmQ5Yjc2NyAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2dw dS9pOTE1LnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2k5MTUucnN0Cj4gQEAgLTIyNSw2 ICsyMjUsMTUgQEAgRGlzcGxheSBQTExzCj4gIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gICAgIDppbnRlcm5hbDoKPgo+ICtpbnRlbCBoZG1p IGxwZSBhdWRpbyBzdXBwb3J0Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArCj4g Ky4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scGVfYXVkaW8uYwo+ ICsgICA6ZG9jOiAgTFBFIEF1ZGlvIGludGVncmF0aW9uIGZvciBIRE1JIG9yIERQIHBsYXliYWNr Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1 ZGlvLmMKPiArICAgOmludGVybmFsOgo+ICsKPiAgTWVtb3J5IE1hbmFnZW1lbnQgYW5kIENvbW1h bmQgU3VibWlzc2lvbgo+ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDUxOTY1MDkuLjJiY2EyMzkgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0xMjcsNiArMTI3LDkgQEAgaTkxNS15ICs9IGludGVsX2d2 dC5vCj4gIGluY2x1ZGUgJChzcmMpL2d2dC9NYWtlZmlsZQo+ICBlbmRpZgo+Cj4gKyMgTFBFIEF1 ZGlvIGZvciBWTFYgYW5kIENIVAo+ICtpOTE1LXkgKz0gaW50ZWxfbHBlX2F1ZGlvLm8KPiArCj4g IG9iai0kKENPTkZJR19EUk1fSTkxNSkgKz0gaTkxNS5vCj4KPiAgQ0ZMQUdTX2k5MTVfdHJhY2Vf cG9pbnRzLm8gOj0gLUkkKHNyYykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA0ZDIy YjRiLi43MGQ3MjhiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTExMzEsNyAr MTEzMSw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmIChJU19HRU41KGRldl9wcml2KSkKPiAgCQlpbnRl bF9ncHVfaXBzX2luaXQoZGV2X3ByaXYpOwo+Cj4gLQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9pbml0 KGRldl9wcml2KTsKPiArCWlmIChpbnRlbF9scGVfYXVkaW9faW5pdChkZXZfcHJpdikgPCAwKQo+ ICsJCWk5MTVfYXVkaW9fY29tcG9uZW50X2luaXQoZGV2X3ByaXYpOwo+Cj4gIAkvKgo+ICAJICog U29tZSBwb3J0cyByZXF1aXJlIGNvcnJlY3RseSBzZXQtdXAgaHBkIHJlZ2lzdGVycyBmb3IgZGV0 ZWN0aW9uIHRvCj4gQEAgLTExNDksNyArMTE1MCwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZl cl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAqLwo+ICBz dGF0aWMgdm9pZCBpOTE1X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+IC0JaTkxNV9hdWRpb19jb21wb25lbnRfY2xlYW51cChkZXZfcHJp dik7Cj4gKwlpZiAoSEFTX0xQRV9BVURJTyhkZXZfcHJpdikpCj4gKwkJaW50ZWxfbHBlX2F1ZGlv X3RlYXJkb3duKGRldl9wcml2KTsKPiArCWVsc2UKPiArCQlpOTE1X2F1ZGlvX2NvbXBvbmVudF9j bGVhbnVwKGRldl9wcml2KTsKPgo+ICAJaW50ZWxfZ3B1X2lwc190ZWFyZG93bigpOwo+ICAJYWNw aV92aWRlb191bnJlZ2lzdGVyKCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggN2I0 MzY2Mi4uMmY4MTY1ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNDYwLDYg KzI0NjAsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJLyogVXNlZCB0byBzYXZl IHRoZSBwaXBlLXRvLWVuY29kZXIgbWFwcGluZyBmb3IgYXVkaW8gKi8KPiAgCXN0cnVjdCBpbnRl bF9lbmNvZGVyICphdl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVTXTsKPgo+ICsJLyogbmVjZXNzYXJ5 IHJlc291cmNlIHNoYXJpbmcgd2l0aCBIRE1JIExQRSBhdWRpbyBkcml2ZXIuICovCj4gKwlzdHJ1 Y3Qgewo+ICsJCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRkZXY7Cj4gKwkJaW50CWlycTsK PiArCX0gbHBlX2F1ZGlvOwo+ICsKPiAgCS8qCj4gIAkgKiBOT1RFOiBUaGlzIGlzIHRoZSBkcmkx L3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRjaAo+ICAJICogd2ls bCBiZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZvciBhIGJldHRlciBwbGFjZS4KPiBAQCAtMjg1 OSw2ICsyODY1LDggQEAgaW50ZWxfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4KPiAgI2RlZmluZSBIQVNfUE9PTEVEX0VVKGRldl9wcml2KQkoKGRldl9wcml2 KS0+aW5mby5oYXNfcG9vbGVkX2V1KQo+Cj4gKyNkZWZpbmUgSEFTX0xQRV9BVURJTyhkZXZfcHJp dikgKChkZXZfcHJpdiktPmxwZV9hdWRpby5wbGF0ZGV2ICE9IE5VTEwpCj4gKwo+ICAjZGVmaW5l IElOVEVMX1BDSF9ERVZJQ0VfSURfTUFTSwkJMHhmZjAwCj4gICNkZWZpbmUgSU5URUxfUENIX0lC WF9ERVZJQ0VfSURfVFlQRQkJMHgzYjAwCj4gICNkZWZpbmUgSU5URUxfUENIX0NQVF9ERVZJQ0Vf SURfVFlQRQkJMHgxYzAwCj4gQEAgLTM2MjAsNiArMzYyOCwxMyBAQCBleHRlcm4gaW50IGk5MTVf cmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lk IGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg dm9pZCBpOTE1X3RlYXJkb3duX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4KPiArLyogaTkxNV9scGVfYXVkaW8uYyAqLwo+ICtpbnQgIGludGVsX2xwZV9hdWRpb19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2ludCAgaW50ZWxfbHBl X2F1ZGlvX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQg aW50ZWxfbHBlX2F1ZGlvX3RlYXJkb3duKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gK3ZvaWQgaW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4gK2Jvb2wgaW50ZWxfbHBlX2F1ZGlvX2RldGVjdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiAgLyogaW50ZWxfaTJjLmMgKi8KPiAg ZXh0ZXJuIGludCBpbnRlbF9zZXR1cF9nbWJ1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ICBleHRlcm4gdm9pZCBpbnRlbF90ZWFyZG93bl9nbWJ1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGEw ZTcwZjUuLmQ5MzkzZDZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTE4OTMs NiArMTg5MywxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdmFsbGV5dmlld19pcnFfaGFuZGxlcihp bnQgaXJxLCB2b2lkICphcmcpCj4gIAkJICogc2lnbmFsbGVkIGluIGlpciAqLwo+ICAJCXZhbGxl eXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPgo+ICsJ CWlmIChpaXIgJiAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gKwkJCSAgIEk5MTVfTFBF X1BJUEVfQl9JTlRFUlJVUFQpKQo+ICsJCQlpbnRlbF9scGVfYXVkaW9faXJxX2hhbmRsZXIoZGV2 X3ByaXYpOwo+ICsKPiAgCQkvKgo+ICAJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBh bmQgcmVmbGVjdHMgdGhlIGxldmVsCj4gIAkJICogZnJvbSBQSVBFU1RBVC9QT1JUX0hPVFBMVUdf U1RBVCwgaGVuY2UgY2xlYXIgaXQgbGFzdC4KPiBAQCAtMTk3Myw2ICsxOTc3LDExIEBAIHN0YXRp YyBpcnFyZXR1cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykK PiAgCQkgKiBzaWduYWxsZWQgaW4gaWlyICovCj4gIAkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFf YWNrKGRldl9wcml2LCBpaXIsIHBpcGVfc3RhdHMpOwo+Cj4gKwkJaWYgKGlpciAmIChJOTE1X0xQ RV9QSVBFX0FfSU5URVJSVVBUIHwKPiArCQkJICAgSTkxNV9MUEVfUElQRV9CX0lOVEVSUlVQVCB8 Cj4gKwkJCSAgIEk5MTVfTFBFX1BJUEVfQ19JTlRFUlJVUFQpKQo+ICsJCQlpbnRlbF9scGVfYXVk aW9faXJxX2hhbmRsZXIoZGV2X3ByaXYpOwo+ICsKPiAgCQkvKgo+ICAJCSAqIFZMVl9JSVIgaXMg c2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVsCj4gIAkJICogZnJvbSBQSVBF U1RBVC9QT1JUX0hPVFBMVUdfU1RBVCwgaGVuY2UgY2xlYXIgaXQgbGFzdC4KPiBAQCAtMjkxNCw2 ICsyOTIzLDcgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXUzMiBwaXBlc3RhdF9tYXNrOwo+ICAJ dTMyIGVuYWJsZV9tYXNrOwo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gKwl1MzIgdmFsOwo+Cj4gIAlw aXBlc3RhdF9tYXNrID0gUExBTkVfRkxJUF9ET05FX0lOVF9TVEFUVVNfVkxWIHwKPiAgCQkJUElQ RV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTOwo+IEBAIC0yOTMwLDYgKzI5NDAsMTIgQEAgc3Rh dGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPgo+ICAJV0FSTl9PTihkZXZfcHJpdi0+aXJxX21hc2sgIT0gfjApOwo+ Cj4gKwl2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gKwkJSTkxNV9MUEVfUElQ RV9CX0lOVEVSUlVQVCB8Cj4gKwkJSTkxNV9MUEVfUElQRV9DX0lOVEVSUlVQVCk7Cj4gKwo+ICsJ ZW5hYmxlX21hc2sgfD0gdmFsOwo+ICsKPiAgCWRldl9wcml2LT5pcnFfbWFzayA9IH5lbmFibGVf bWFzazsKPgo+ICAJR0VONV9JUlFfSU5JVChWTFZfLCBkZXZfcHJpdi0+aXJxX21hc2ssIGVuYWJs ZV9tYXNrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCAwMDk3MGFhLi42NDNiYzZl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTI0MjgsNiArMjQyOCw5IEBAIGVu dW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lIEk5MTVfQVNMRV9JTlRFUlJVUFQJ CQkJKDE8PDApCj4gICNkZWZpbmUgSTkxNV9CU0RfVVNFUl9JTlRFUlJVUFQJCQkJKDE8PDI1KQo+ Cj4gKyNkZWZpbmUgSTkxNV9IRE1JX0xQRV9BVURJT19CQVNFCShWTFZfRElTUExBWV9CQVNFICsg MHg2NTAwMCkKPiArI2RlZmluZSBJOTE1X0hETUlfTFBFX0FVRElPX1NJWkUJMHgxMDAwCj4gKwo+ ICAjZGVmaW5lIEdFTjZfQlNEX1JOQ0lECQkJX01NSU8oMHgxMjE5OCkKPgo+ICAjZGVmaW5lIEdF TjdfRkZfVEhSRUFEX01PREUJCV9NTUlPKDB4MjBhMCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scGVfYXVkaW8uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMDVm NWU0ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cGVfYXVkaW8uYwo+IEBAIC0wLDAgKzEsMzU1IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAy MDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAq Cj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4g KyAqIEF1dGhvcnM6Cj4gKyAqICAgIFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVycmUtbG91aXMu Ym9zc2FydEBsaW51eC5pbnRlbC5jb20+Cj4gKyAqICAgIEplcm9tZSBBbmFuZCA8amVyb21lLmFu YW5kQGludGVsLmNvbT4KPiArICogICAgYmFzZWQgb24gVkVEIHBhdGNoZXMKPiArICoKPiArICov Cj4gKwo+ICsvKioKPiArICogRE9DOiBMUEUgQXVkaW8gaW50ZWdyYXRpb24gZm9yIEhETUkgb3Ig RFAgcGxheWJhY2sKPiArICoKPiArICogTW90aXZhdGlvbjoKPiArICogQXRvbSBwbGF0Zm9ybXMg KGUuZy4gdmFsbGV5dmlldyBhbmQgY2hlcnJ5VHJhaWwpIGludGVncmF0ZXMgYSBETUEtYmFzZWQK PiArICogaW50ZXJmYWNlIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSB0cmFkaXRpb25hbCBIRGF1 ZGlvIHBhdGguIFdoaWxlIHRoaXMKPiArICogbW9kZSBpcyB1bnJlbGF0ZWQgdG8gdGhlIExQRSBh a2EgU1NUIGF1ZGlvIGVuZ2luZSwgdGhlIGRvY3VtZW50YXRpb24gcmVmZXJzCj4gKyAqIHRvIHRo aXMgbW9kZSBhcyBMUEUgc28gd2Uga2VlcCB0aGlzIG5vdGF0aW9uIGZvciB0aGUgc2FrZSBvZiBj b25zaXN0ZW5jeS4KPiArICoKPiArICogVGhlIGludGVyZmFjZSBpcyBoYW5kbGVkIGJ5IGEgc2Vw YXJhdGUgc3RhbmRhbG9uZSBkcml2ZXIgbWFpbnRhaW5lZCBpbiB0aGUKPiArICogQUxTQSBzdWJz eXN0ZW0gZm9yIHNpbXBsaWNpdHkuIFRvIG1pbmltaXplIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVu IHRoZSB0d28KPiArICogc3Vic3lzdGVtcywgYSBicmlkZ2UgaXMgc2V0dXAgYmV0d2VlbiB0aGUg aGRtaS1scGUtYXVkaW8gYW5kIGk5MTU6Cj4gKyAqIDEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmlj ZSB0byBzaGFyZSBNTUlPL0lSUSByZXNvdXJjZXMKPiArICogMi4gTWFrZSB0aGUgcGxhdGZvcm0g ZGV2aWNlIGNoaWxkIG9mIGk5MTUgZGV2aWNlIGZvciBydW50aW1lIFBNLgo+ICsgKiAzLiBDcmVh dGUgSVJRIGNoaXAgdG8gZm9yd2FyZCB0aGUgTFBFIGF1ZGlvIGlycXMuCj4gKyAqIHRoZSBoZG1p LWxwZS1hdWRpbyBkcml2ZXIgcHJvYmVzIHRoZSBscGUgYXVkaW8gZGV2aWNlIGFuZCBjcmVhdGVz IGEgbmV3Cj4gKyAqIHNvdW5kIGNhcmQKPiArICoKPiArICogVGhyZWF0czoKPiArICogRHVlIHRv IHRoZSByZXN0cmljdGlvbiBpbiBMaW51eCBwbGF0Zm9ybSBkZXZpY2UgbW9kZWwsIHVzZXIgbmVl ZCBtYW51YWxseQo+ICsgKiB1bmluc3RhbGwgdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBiZWZv cmUgdW5pbnN0YWxsaW5nIGk5MTUgbW9kdWxlLAo+ICsgKiBvdGhlcndpc2Ugd2UgbWlnaHQgcnVu IGludG8gdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGFmdGVyIGk5MTUgcmVtb3ZlcyB0aGUKPiArICog cGxhdGZvcm0gZGV2aWNlOiBldmVuIHRob3VnaCBoZG1pLWxwZS1hdWRpbyBkcml2ZXIgaXMgcmVs ZWFzZWQsIHRoZSBtb2R1bGVzCj4gKyAqIGlzIHN0aWxsIGluICJpbnN0YWxsZWQiIHN0YXR1cy4K PiArICoKPiArICogSW1wbGVtZW50YXRpb246Cj4gKyAqIFRoZSBNTUlPL1JFRyBwbGF0Zm9ybSBy ZXNvdXJjZXMgYXJlIGNyZWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSByZWdpc3RlcnMKPiArICogc3Bl Y2lmaWNhdGlvbi4KPiArICogV2hlbiBmb3J3YXJkaW5nIExQRSBhdWRpbyBpcnFzLCB0aGUgZmxv dyBjb250cm9sIGhhbmRsZXIgc2VsZWN0aW9uIGRlcGVuZHMKPiArICogb24gdGhlIHBsYXRmb3Jt LCBmb3IgZXhhbXBsZSBvbiB2YWxsZXl2aWV3IGhhbmRsZV9zaW1wbGVfaXJxIGlzIGVub3VnaC4K PiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYWNwaS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiArCj4gKyNpbmNsdWRl ICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiArI2luY2x1ZGUgPGRy bS9pbnRlbF9scGVfYXVkaW8uaD4KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICoKPiArbHBlX2F1ZGlvX3BsYXRkZXZfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJt Owo+ICsJaW50IHJldDsKPiArCXN0cnVjdCByZXNvdXJjZSByc2NbMl0gPSB7fTsKPiArCXN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRkZXY7Cj4gKwl1NjQgKmRtYV9tYXNrOwo+ICsJc3RydWN0 IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0YTsKPiArCj4gKwlpZiAoZGV2X3ByaXYt PmxwZV9hdWRpby5pcnEgPCAwKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwoKZnJvbSBU YWthc2hpOiBUaGlzIHdhcyBhbHJlYWR5IHRlc3RlZCwgbm8/CkpBOiBPSyAtIGNhbiBiZSByZW1v dmVkCgo+ICsKPiArCXBsYXRkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoImhkbWktbHBlLWF1 ZGlvIiwgLTEpOwo+ICsJaWYgKCFwbGF0ZGV2KSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlE Uk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBMUEUgYXVkaW8gcGxhdGZvcm0gZGV2aWNlXG4i KTsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwkvKiB0byB3b3JrLWFyb3VuZCBjaGVja19h ZGRyIGluIG5vbW11X21hcF9zZygpICovCj4gKwlkbWFfbWFzayA9IGttYWxsb2Moc2l6ZW9mKCpw bGF0ZGV2LT5kZXYuZG1hX21hc2spLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZG1hX21hc2spIHsK PiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIGRt YV9tYXNrXG4iKTsKPiArCQlnb3RvIGVycl9wdXRfZGV2Owo+ICsJfQo+ICsJKmRtYV9tYXNrID0g RE1BX0JJVF9NQVNLKDMyKTsKPiArCXBsYXRkZXYtPmRldi5kbWFfbWFzayA9IGRtYV9tYXNrOwo+ ICsJcGxhdGRldi0+ZGV2LmNvaGVyZW50X2RtYV9tYXNrID0gKmRtYV9tYXNrOwo+ICsKPiArCXJz Y1swXS5zdGFydCAgICA9IHJzY1swXS5lbmQgPSBkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycTsKPiAr CXJzY1swXS5mbGFncyAgICA9IElPUkVTT1VSQ0VfSVJROwo+ICsJcnNjWzBdLm5hbWUgICAgID0g ImhkbWktbHBlLWF1ZGlvLWlycSI7Cj4gKwo+ICsJcnNjWzFdLnN0YXJ0ICAgID0gcGNpX3Jlc291 cmNlX3N0YXJ0KGRldi0+cGRldiwgMCkgKwo+ICsJCUk5MTVfSERNSV9MUEVfQVVESU9fQkFTRTsK PiArCXJzY1sxXS5lbmQgICAgICA9IHBjaV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApICsK PiArCQlJOTE1X0hETUlfTFBFX0FVRElPX0JBU0UgKyBJOTE1X0hETUlfTFBFX0FVRElPX1NJWkUg LSAxOwo+ICsJcnNjWzFdLmZsYWdzICAgID0gSU9SRVNPVVJDRV9NRU07Cj4gKwlyc2NbMV0ubmFt ZSAgICAgPSAiaGRtaS1scGUtYXVkaW8tbW1pbyI7Cj4gKwo+ICsJcmV0ID0gcGxhdGZvcm1fZGV2 aWNlX2FkZF9yZXNvdXJjZXMocGxhdGRldiwgcnNjLCAyKTsKPiArCWlmIChyZXQpIHsKPiArCQlE Uk1fRVJST1IoIkZhaWxlZCB0byBhZGQgcmVzb3VyY2UgZm9yIHBsYXRmb3JtIGRldmljZTogJWRc biIsCj4gKwkJCXJldCk7Cj4gKwkJZ290byBlcnJfcHV0X2RldjsKPiArCX0KPiArCj4gKwlwZGF0 YSA9IGt6YWxsb2Moc2l6ZW9mKCpwZGF0YSksIEdGUF9LRVJORUwpOwo+ICsKPiArCWlmIChwZGF0 YSA9PSBOVUxMKSB7Cj4gKwkJcmV0ID0gLUVOT01FTTsKPiArCQlnb3RvIGVycl9wdXRfZGV2Owo+ ICsJfQo+ICsJcGxhdGRldi0+ZGV2LnBsYXRmb3JtX2RhdGEgPSBwZGF0YTsKPiArCXNwaW5fbG9j a19pbml0KCZwZGF0YS0+bHBlX2F1ZGlvX3Nsb2NrKTsKPiArCj4gKwkvKiBmb3IgTFBFIGF1ZGlv IGRyaXZlcidzIHJ1bnRpbWUtUE0gKi8KPiArCXBsYXRkZXYtPmRldi5wYXJlbnQgPSBkZXYtPmRl djsKPiArCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGQocGxhdGRldik7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWRkIExQRSBhdWRpbyBwbGF0Zm9ybSBkZXZpY2U6 ICVkXG4iLAo+ICsJCQlyZXQpOwo+ICsJCWdvdG8gZXJyX3B1dF9kZXY7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIHBsYXRkZXY7Cj4gK2Vycl9wdXRfZGV2Ogo+ICsJcGxhdGZvcm1fZGV2aWNlX3B1dChw bGF0ZGV2KTsKPiArCWtmcmVlKGRtYV9tYXNrKTsKPiArZXJyOgo+ICsJcmV0dXJuIEVSUl9QVFIo cmV0KTsKPiArfQoKCmZyb20gVGFrYXNoaToKICBndWVzcyB1c2luZyBwbGF0Zm9ybV9kZXZpY2Vf cmVnaXN0ZXJfZnVsbCgpIG1ha2VzIHRoZSBjb2RlIGEgYml0CnNpbXBsZXIuCkpBOiBPSyAtIGFn cmVlZCwgYnV0IHdpbGwga2VlcCBpdCBzaW5jZSBpdHMgYWNrZWQgYnkgRGFuaWVsLgotPiB3aGF0 J3MgdGhlIGRvd25zaWRlIHRvIHVzaW5nIHNpbXBsZXIgY29kZT8KCgo+ICsKPiArc3RhdGljIHZv aWQgbHBlX2F1ZGlvX3BsYXRkZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3sKPiArCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGRldl9wcml2LT5scGVf YXVkaW8ucGxhdGRldik7Cj4gKwlrZnJlZShkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYtPmRl di5kbWFfbWFzayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxwZV9hdWRpb19pcnFfdW5tYXNr KHN0cnVjdCBpcnFfZGF0YSAqZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZC0+Y2hpcF9kYXRhOwo+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiArCXUz MiB2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gKwkJSTkxNV9MUEVfUElQRV9C X0lOVEVSUlVQVCk7CgogRnJvbSBEYW5pZWw6IFBJUEVfQyBtaXNzaW5nPwotPiBZZXMgZm9yIENo ZXJyeVRyYWlsCgo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ss IGlycWZsYWdzKTsKPiArCj4gKwlkZXZfcHJpdi0+aXJxX21hc2sgJj0gfnZhbDsKPiArCUk5MTVf V1JJVEUoVkxWX0lJUiwgdmFsKTsKPiArCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKPiArCUk5 MTVfV1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiArCVBPU1RJTkdfUkVBRChW TFZfSU1SKTsKPiArCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+aXJxX2xv Y2ssIGlycWZsYWdzKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbHBlX2F1ZGlvX2lycV9tYXNr KHN0cnVjdCBpcnFfZGF0YSAqZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZC0+Y2hpcF9kYXRhOwo+ICsJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiArCXUz MiB2YWwgPSAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gKwkJSTkxNV9MUEVfUElQRV9C X0lOVEVSUlVQVCk7CgogRnJvbSBEYW5pZWw6IFBJUEVfQyBtaXNzaW5nPwotPiBZZXMgZm9yIENo ZXJyeVRyYWlsCgo+ICsKPiArCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+aXJxX2xvY2ss IGlycWZsYWdzKTsKPiArCj4gKwlkZXZfcHJpdi0+aXJxX21hc2sgfD0gdmFsOwo+ICsJSTkxNV9X UklURShWTFZfSU1SLCBkZXZfcHJpdi0+aXJxX21hc2spOwo+ICsJSTkxNV9XUklURShWTFZfSUlS LCB2YWwpOwo+ICsJSTkxNV9XUklURShWTFZfSUlSLCB2YWwpOwo+ICsJUE9TVElOR19SRUFEKFZM Vl9JSVIpOwo+ICsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5pcnFfbG9j aywgaXJxZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGlycV9jaGlwIGxwZV9hdWRp b19pcnFjaGlwID0gewo+ICsJLm5hbWUgPSAiaGRtaV9scGVfYXVkaW9faXJxY2hpcCIsCj4gKwku aXJxX21hc2sgPSBscGVfYXVkaW9faXJxX21hc2ssCj4gKwkuaXJxX3VubWFzayA9IGxwZV9hdWRp b19pcnFfdW5tYXNrLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBscGVfYXVkaW9faXJxX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgaXJxID0gZGV2 X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4gKwo+ICsJV0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVk KGRldl9wcml2KSk7Cj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXJfbmFtZShpcnEsCj4gKwkJ CQkmbHBlX2F1ZGlvX2lycWNoaXAsCj4gKwkJCQloYW5kbGVfc2ltcGxlX2lycSwKPiArCQkJCSJo ZG1pX2xwZV9hdWRpb19pcnFfaGFuZGxlciIpOwo+ICsKPiArCXJldHVybiBpcnFfc2V0X2NoaXBf ZGF0YShpcnEsIGRldl9wcml2KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2xwZV9hdWRp b19pcnFfaGFuZGxlcigpIC0gZm9yd2FyZHMgdGhlIExQRSBhdWRpbyBpcnEKPiArICogQGRldl9w cml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKiB0aGUgTFBF IEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhlIGlycSBoYW5kbGVyIHJlZ2lzdGVyZWQgYnkg TFBFIGF1ZGlvCj4gKyAqIGRyaXZlci4KPiArICovCj4gK3ZvaWQgaW50ZWxfbHBlX2F1ZGlvX2ly cV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJaW50 IHJldDsKPiArCj4gKwlpZiAoIUhBU19MUEVfQVVESU8oZGV2X3ByaXYpKQo+ICsJCXJldHVybjsK PiArCj4gKwlyZXQgPSBnZW5lcmljX2hhbmRsZV9pcnEoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEp Owo+ICsJaWYgKHJldCkKPiArCQlEUk1fRVJST1JfUkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5n IExQRSBhdWRpbyBpcnE6ICVkXG4iLAo+ICsJCQkJcmV0KTsKPiArfQo+ICsKPiArLyoqCj4gKyAq IGludGVsX2xwZV9hdWRpb19kZXRlY3QoKSAtIGNoZWNrICYgc2V0dXAgbHBlIGF1ZGlvIGlmIHBy ZXNlbnQKPiArICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ ICsgKgo+ICsgKiBEZXRlY3QgaWYgbHBlIGF1ZGlvIGlzIHByZXNlbnQKPiArICoKPiArICogUmV0 dXJuOiB0cnVlIGlmIGxwZSBhdWRpbyBwcmVzZW50IGVsc2UgUmV0dXJuID0gZmFsc2UKPiArICov Cj4gK2Jvb2wgaW50ZWxfbHBlX2F1ZGlvX2RldGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gK3sKPiArCWludCBscGVfcHJlc2VudCA9IGZhbHNlOwo+ICsKPiArCWlmIChJ U19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ICsJ CXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBhdG9tX2hkYXVkaW9faWRzW10gPSB7 Cj4gKwkJCS8qIEJheXRyYWlsICovCj4gKwkJCXtQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfSU5U RUwsIDB4MGYwNCl9LAo+ICsJCQkvKiBCcmFzd2VsbCAqLwo+ICsJCQl7UENJX0RFVklDRShQQ0lf VkVORE9SX0lEX0lOVEVMLCAweDIyODQpfSwKPiArCQkJe30KPiArCQl9Owo+ICsKPiArCQlpZiAo IXBjaV9kZXZfcHJlc2VudChhdG9tX2hkYXVkaW9faWRzKSkgewo+ICsJCQlEUk1fSU5GTygiJXMl c1xuIiwgIkhEYXVkaW8gY29udHJvbGxlciBub3QgZGV0ZWN0ZWQsIiwKPiArCQkJCSJ1c2luZyBM UEUgYXVkaW8gaW5zdGVhZFxuIik7CgogRnJvbSBUYWthc2hpOgpXaHkgJXMlcz8gIEp1c3Qga2Vl cCBvbmUgbGluZSB3aXRob3V0IGxpbmUgYnJlYWthZ2UuClRoZSA4MCBjaGFycyBydWxlIGlzIGp1 c3QgYSBzdWdnZXN0aW9uLCBubyBzdHJpY3QgcnVsZSBhdCBhbGwuCkpBOiBPSwoKCj4gKwkJCWxw ZV9wcmVzZW50ID0gdHJ1ZTsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gbHBlX3ByZXNlbnQ7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9scGVfYXVkaW9fc2V0dXAoKSAtIHNldHVwIHRoZSBi cmlkZ2UgYmV0d2VlbiBIRE1JIExQRSBBdWRpbwo+ICsgKiBkcml2ZXIgYW5kIGk5MTUKPiArICog QGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKiBz ZXQgdXAgdGhlIG1pbmltdW0gcmVxdWlyZWQgcmVzb3VyY2VzIGZvciB0aGUgYnJpZGdlOiBpcnEg Y2hpcCwKPiArICogcGxhdGZvcm0gcmVzb3VyY2UgYW5kIHBsYXRmb3JtIGRldmljZS4gaTkxNSBk ZXZpY2UgaXMgc2V0IGFzIHBhcmVudAo+ICsgKiBvZiB0aGUgbmV3IHBsYXRmb3JtIGRldmljZS4K PiArICoKPiArICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwuIG5vbi16ZXJvIGlmIGFsbG9jYXRp b24vaW5pdGlhbGl6YXRpb24gZmFpbHMKPiArICovCj4gK2ludCBpbnRlbF9scGVfYXVkaW9fc2V0 dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCWRldl9wcml2LT5scGVfYXVkaW8uaXJxID0gaXJxX2FsbG9jX2Rlc2MoMCk7Cj4gKwlp ZiAoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEgPCAwKSB7Cj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gYWxsb2NhdGUgSVJRIGRlc2M6ICVkXG4iLAo+ICsJCQlkZXZfcHJpdi0+bHBlX2F1ZGlvLmly cSk7Cj4gKwkJcmV0ID0gZGV2X3ByaXYtPmxwZV9hdWRpby5pcnE7Cj4gKwkJZ290byBlcnI7Cj4g Kwl9Cj4gKwo+ICsJRFJNX0RFQlVHKCJpcnEgPSAlZFxuIiwgZGV2X3ByaXYtPmxwZV9hdWRpby5p cnEpOwo+ICsKPiArCXJldCA9IGxwZV9hdWRpb19pcnFfaW5pdChkZXZfcHJpdik7Cj4gKwo+ICsJ aWYgKHJldCkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxpemUgaXJxY2hpcCBm b3IgbHBlIGF1ZGlvOiAlZFxuIiwKPiArCQkJcmV0KTsKPiArCQlnb3RvIGVycl9mcmVlX2lycTsK PiArCX0KPiArCj4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYgPSBscGVfYXVkaW9fcGxh dGRldl9jcmVhdGUoZGV2X3ByaXYpOwo+ICsKPiArCWlmIChJU19FUlIoZGV2X3ByaXYtPmxwZV9h dWRpby5wbGF0ZGV2KSkgewo+ICsJCXJldCA9IFBUUl9FUlIoZGV2X3ByaXYtPmxwZV9hdWRpby5w bGF0ZGV2KTsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgbHBlIGF1ZGlvIHBsYXRm b3JtIGRldmljZTogJWRcbiIsCj4gKwkJCXJldCk7Cj4gKwkJZ290byBlcnJfZnJlZV9pcnE7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK2Vycl9mcmVlX2lycToKPiArCWlycV9mcmVlX2Rlc2Mo ZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+ICtlcnI6Cj4gKwlkZXZfcHJpdi0+bHBlX2F1ZGlv LmlycSA9IC0xOwo+ICsJZGV2X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2ID0gTlVMTDsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gKwo+ICsvKioKPiArICogaW50ZWxfbHBlX2F1ZGlvX2luaXQo KSAtIGRldGVjdCBhbmQgc2V0dXAgdGhlIGJyaWRnZSBiZXR3ZWVuIEhETUkgTFBFIEF1ZGlvCj4g KyAqIGRyaXZlciBhbmQgaTkxNQo+ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2Ug cHJpdmF0ZSBkYXRhCj4gKyAqCj4gKyAqIFJldHVybjogMCBpZiBzdWNjZXNzZnVsLiBub24temVy byBpZiBkZXRlY3Rpb24gb3IKPiArICogbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uIGZhaWxzCj4g KyAqLwo+ICtpbnQgaW50ZWxfbHBlX2F1ZGlvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgcmV0ID0gLUVOT0RFVjsKPiArCj4gKwlpZiAoaW50ZWxf bHBlX2F1ZGlvX2RldGVjdChkZXZfcHJpdikpIHsKPiArCQlyZXQgPSBpbnRlbF9scGVfYXVkaW9f c2V0dXAoZGV2X3ByaXYpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlEUk1fRVJST1IoImZhaWxl ZCB0byBzZXR1cCBMUEUgQXVkaW8gYnJpZGdlXG4iKTsKPiArCX0KPiArCXJldHVybiByZXQ7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oKSAtIGRlc3Ryb3kg dGhlIGJyaWRnZSBiZXR3ZWVuIEhETUkgTFBFCj4gKyAqIGF1ZGlvIGRyaXZlciBhbmQgaTkxNQo+ ICsgKiBAZGV2X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gKyAqCj4g KyAqIHJlbGVhc2UgYWxsIHRoZSByZXNvdXJjZXMgZm9yIExQRSBhdWRpbyA8LT4gaTkxNSBicmlk Z2UuCj4gKyAqLwo+ICt2b2lkIGludGVsX2xwZV9hdWRpb190ZWFyZG93bihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4g KwlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2M7Cj4gKwo+ICsJaWYgKCFIQVNfTFBFX0FVRElPKGRldl9w cml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJZGVzYyA9IGlycV90b19kZXNjKGRldl9wcml2LT5s cGVfYXVkaW8uaXJxKTsKPiArCj4gKwlscGVfYXVkaW9faXJxX21hc2soJmRlc2MtPmlycV9kYXRh KTsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFn cyk7Cj4gKwo+ICsJbHBlX2F1ZGlvX3BsYXRkZXZfZGVzdHJveShkZXZfcHJpdik7Cj4gKwo+ICsJ aXJxX2ZyZWVfZGVzYyhkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSk7Cj4gKwo+ICsJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFncyk7CgogRnJvbSBUYWth c2hpOiBXaGF0J3MgdGhlIHJlYXNvbiBvZiB0aGlzIHNwaW5sb2NrPwpKQTogSklDIC0gcHJvYmFi bHkgbm90IG5lZWRlZCBub3cKCj4gK30KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vaW50ZWxf bHBlX2F1ZGlvLmggYi9pbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaAo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTY0YzQ0OQo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9pbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaAo+IEBAIC0wLDAgKzEsNDUgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRI RSBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9JTlRFTF9MUEVfQVVESU9fSF8KPiAr I2RlZmluZSBfSU5URUxfTFBFX0FVRElPX0hfCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4KPiArCj4gKyNkZWZpbmUgSERNSV9NQVhfRUxEX0JZVEVTCTEyOAo+ICsKPiArc3RydWN0IGlu dGVsX2hkbWlfbHBlX2F1ZGlvX2VsZCB7Cj4gKwlpbnQgcG9ydF9pZDsKPiArCXVuc2lnbmVkIGNo YXIgZWxkX2RhdGFbSERNSV9NQVhfRUxEX0JZVEVTXTsKPiArfTsKPiArCj4gK3N0cnVjdCBpbnRl bF9oZG1pX2xwZV9hdWRpb19wZGF0YSB7Cj4gKwlib29sIG5vdGlmeV9wZW5kaW5nOwo+ICsJaW50 IHRtZHNfY2xvY2tfc3BlZWQ7Cj4gKwlib29sIGhkbWlfY29ubmVjdGVkOwo+ICsJc3RydWN0IGlu dGVsX2hkbWlfbHBlX2F1ZGlvX2VsZCBlbGQ7Cj4gKwl2b2lkICgqbm90aWZ5X2F1ZGlvX2xwZSko dm9pZCAqYXVkaW9fcHRyKTsKPiArCXNwaW5sb2NrX3QgbHBlX2F1ZGlvX3Nsb2NrOwo+ICt9Owo+ ICsKPiArI2VuZGlmIC8qIF9JOTE1X0xQRV9BVURJT19IXyAqLwo+CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK