From mboxrd@z Thu Jan 1 00:00:00 1970 From: CK Hu Subject: Re: [PATCH v4 07/11] drm/mediatek: separate hdmi phy to different file Date: Tue, 2 Oct 2018 16:40:39 +0800 Message-ID: <1538469639.24335.2.camel@mtksdaap41> References: <20181002081041.32629-1-bibby.hsieh@mediatek.com> <20181002081041.32629-8-bibby.hsieh@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181002081041.32629-8-bibby.hsieh@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Bibby Hsieh Cc: linux-kernel@vger.kernel.org, Sascha Hauer , chunhui dai , David Airlie , Daniel Vetter , Cawa Cheng , dri-devel@lists.freedesktop.org, Mao Huang , Thierry Reding , linux-mediatek@lists.infradead.org, Matthias Brugger , Yingjoe Chen , linux-arm-kernel@lists.infradead.org List-Id: linux-mediatek@lists.infradead.org SGksIEJpYmJ5OgoKT24gVHVlLCAyMDE4LTEwLTAyIGF0IDE2OjEwICswODAwLCBCaWJieSBIc2ll aCB3cm90ZToKPiBGcm9tOiBjaHVuaHVpIGRhaSA8Y2h1bmh1aS5kYWlAbWVkaWF0ZWsuY29tPgo+ IAo+IERpZmZlcmVudCBJQyBoYXMgZGlmZmVyZW50IHBoeSBzZXR0aW5nIG9mIEhETUkuCj4gVGhp cyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHBoeSBoYXJkd2FyZSByZWxhdGUgcGFydCBmb3IgbXQ4MTcz Lgo+IAoKUmV2aWV3ZWQtYnk6IENLIEh1IDxjay5odUBtZWRpYXRlaz4KCj4gU2lnbmVkLW9mZi1i eTogY2h1bmh1aSBkYWkgPGNodW5odWkuZGFpQG1lZGlhdGVrLmNvbT4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuYyAgICAgICAgICAgIHwgICAxICsKPiAgZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmggICAgICAgICAgICB8ICAgMiArLQo+ICBk cml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWlfcGh5LmMgICAgICAgIHwgMjEwICsrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1p X3BoeS5oICAgICAgICB8ICA1NCArKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfbXQ4MTczX2hkbWlfcGh5LmMgfCAyMDQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDYg ZmlsZXMgY2hhbmdlZCwgMjc2IGluc2VydGlvbnMoKyksIDIwMSBkZWxldGlvbnMoLSkKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuYwo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3Bo eS5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQo+IGluZGV4IGNlODNjMzk2YTc0Mi4u NjFjZjBkMmFiMjhhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtl ZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtlZmlsZQo+IEBAIC0xLDQg KzEsNSBAQAo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKwo+ICBtZWRp YXRlay1kcm0teSA6PSBtdGtfZGlzcF9jb2xvci5vIFwKPiAgCQkgIG10a19kaXNwX292bC5vIFwK PiAgCQkgIG10a19kaXNwX3JkbWEubyBcCj4gQEAgLTE4LDYgKzE5LDcgQEAgb2JqLSQoQ09ORklH X0RSTV9NRURJQVRFSykgKz0gbWVkaWF0ZWstZHJtLm8KPiAgbWVkaWF0ZWstZHJtLWhkbWktb2Jq cyA6PSBtdGtfY2VjLm8gXAo+ICAJCQkgIG10a19oZG1pLm8gXAo+ICAJCQkgIG10a19oZG1pX2Rk Yy5vIFwKPiAtCQkJICBtdGtfbXQ4MTczX2hkbWlfcGh5Lm8KPiArCQkJICBtdGtfbXQ4MTczX2hk bWlfcGh5Lm8gXAo+ICsJCQkgIG10a19oZG1pX3BoeS5vCj4gIAo+IC1vYmotJChDT05GSUdfRFJN X01FRElBVEVLX0hETUkpICs9IG1lZGlhdGVrLWRybS1oZG1pLm8KPiArb2JqLSQoQ09ORklHX0RS TV9NRURJQVRFS19IRE1JKSArPSBtZWRpYXRlay1kcm0taGRtaS5vCj4gXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pLmMKPiBpbmRleCAyZDQ1 ZDFkZDk1NTQuLjJjYTlmNmE2NGRhYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2hkbWkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRt aS5jCj4gQEAgLTIzMyw2ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCBtdGtfaGRtaV9od192aWRfYmxh Y2soc3RydWN0IG10a19oZG1pICpoZG1pLCBib29sIGJsYWNrKQo+ICBzdGF0aWMgdm9pZCBtdGtf aGRtaV9od19tYWtlX3JlZ193cml0YWJsZShzdHJ1Y3QgbXRrX2hkbWkgKmhkbWksIGJvb2wgZW5h YmxlKQo+ICB7Cj4gIAlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXM7Cj4gKwlzdHJ1Y3QgbXRrX2hk bWlfcGh5ICpoZG1pX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShoZG1pLT5waHkpOwo+ICAKPiAgCS8q Cj4gIAkgKiBNVDgxNzMgSERNSSBoYXJkd2FyZSBoYXMgYW4gb3V0cHV0IGNvbnRyb2wgYml0IHRv IGVuYWJsZS9kaXNhYmxlIEhETUkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19oZG1pLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2hkbWkuaAo+IGlu ZGV4IDYzNzFiM2RlMWZmNi4uM2U5ZmI4ZDE5ODAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tZWRpYXRlay9tdGtfaGRtaS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19oZG1pLmgKPiBAQCAtMTMsMTEgKzEzLDExIEBACj4gICAqLwo+ICAjaWZuZGVmIF9NVEtf SERNSV9DVFJMX0gKPiAgI2RlZmluZSBfTVRLX0hETUlfQ1RSTF9ICj4gKyNpbmNsdWRlICJtdGtf aGRtaV9waHkuaCIKPiAgCj4gIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXI7Cj4gIAo+ICBleHRlcm4g c3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtfY2VjX2RyaXZlcjsKPiAgZXh0ZXJuIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgbXRrX2hkbWlfZGRjX2RyaXZlcjsKPiAtZXh0ZXJuIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgbXRrX2hkbWlfcGh5X2RyaXZlcjsKPiAgCj4gICNlbmRpZiAvKiBfTVRLX0hE TUlfQ1RSTF9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf aGRtaV9waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9waHkuYwo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMmRjNTBkYjFmZWIKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19oZG1pX3Bo eS5jCj4gQEAgLTAsMCArMSwyMTAgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChjKSAyMDE4IE1lZGlhVGVrIEluYy4KPiArICog QXV0aG9yOiBKaWUgUWl1IDxqaWUucWl1QG1lZGlhdGVrLmNvbT4KPiArICovCj4gKwo+ICsjaW5j bHVkZSAibXRrX2hkbWlfcGh5LmgiCj4gKwo+ICtzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wb3dl cl9vbihzdHJ1Y3QgcGh5ICpwaHkpOwo+ICtzdGF0aWMgaW50IG10a19oZG1pX3BoeV9wb3dlcl9v ZmYoc3RydWN0IHBoeSAqcGh5KTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBt dGtfaGRtaV9waHlfZGV2X29wcyA9IHsKPiArCS5wb3dlcl9vbiA9IG10a19oZG1pX3BoeV9wb3dl cl9vbiwKPiArCS5wb3dlcl9vZmYgPSBtdGtfaGRtaV9waHlfcG93ZXJfb2ZmLAo+ICsJLm93bmVy ID0gVEhJU19NT0RVTEUsCj4gK307Cj4gKwo+ICt2b2lkIG10a19oZG1pX3BoeV9jbGVhcl9iaXRz KHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAo+ICsJCQkgICAgIHUz MiBiaXRzKQo+ICt7Cj4gKwl2b2lkIF9faW9tZW0gKnJlZyA9IGhkbWlfcGh5LT5yZWdzICsgb2Zm c2V0Owo+ICsJdTMyIHRtcDsKPiArCj4gKwl0bXAgPSByZWFkbChyZWcpOwo+ICsJdG1wICY9IH5i aXRzOwo+ICsJd3JpdGVsKHRtcCwgcmVnKTsKPiArfQo+ICsKPiArdm9pZCBtdGtfaGRtaV9waHlf c2V0X2JpdHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHksIHUzMiBvZmZzZXQsCj4gKwkJ CSAgIHUzMiBiaXRzKQo+ICt7Cj4gKwl2b2lkIF9faW9tZW0gKnJlZyA9IGhkbWlfcGh5LT5yZWdz ICsgb2Zmc2V0Owo+ICsJdTMyIHRtcDsKPiArCj4gKwl0bXAgPSByZWFkbChyZWcpOwo+ICsJdG1w IHw9IGJpdHM7Cj4gKwl3cml0ZWwodG1wLCByZWcpOwo+ICt9Cj4gKwo+ICt2b2lkIG10a19oZG1p X3BoeV9tYXNrKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAo+ICsJ CSAgICAgICB1MzIgdmFsLCB1MzIgbWFzaykKPiArewo+ICsJdm9pZCBfX2lvbWVtICpyZWcgPSBo ZG1pX3BoeS0+cmVncyArIG9mZnNldDsKPiArCXUzMiB0bXA7Cj4gKwo+ICsJdG1wID0gcmVhZGwo cmVnKTsKPiArCXRtcCA9ICh0bXAgJiB+bWFzaykgfCAodmFsICYgbWFzayk7Cj4gKwl3cml0ZWwo dG1wLCByZWcpOwo+ICt9Cj4gKwo+ICtpbmxpbmUgc3RydWN0IG10a19oZG1pX3BoeSAqdG9fbXRr X2hkbWlfcGh5KHN0cnVjdCBjbGtfaHcgKmh3KQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29m KGh3LCBzdHJ1Y3QgbXRrX2hkbWlfcGh5LCBwbGxfaHcpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19oZG1pX3BoeV9wb3dlcl9vbihzdHJ1Y3QgcGh5ICpwaHkpCj4gK3sKPiArCXN0cnVjdCBt dGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4gKwlpbnQgcmV0 Owo+ICsKPiArCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShoZG1pX3BoeS0+cGxsKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaGRtaV9waHktPmNvbmYtPmhkbWlf cGh5X2VuYWJsZV90bWRzKGhkbWlfcGh5KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG10a19oZG1pX3BoeV9wb3dlcl9vZmYoc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKwlz dHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ICsK PiArCWhkbWlfcGh5LT5jb25mLT5oZG1pX3BoeV9kaXNhYmxlX3RtZHMoaGRtaV9waHkpOwo+ICsJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhkbWlfcGh5LT5wbGwpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBoeV9vcHMgKgo+ICttdGtfaGRtaV9waHlf ZGV2X2dldF9vcHMoY29uc3Qgc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpCj4gK3sKPiAr CWlmIChoZG1pX3BoeSAmJiBoZG1pX3BoeS0+Y29uZiAmJgo+ICsJICAgIGhkbWlfcGh5LT5jb25m LT5oZG1pX3BoeV9lbmFibGVfdG1kcyAmJgo+ICsJICAgIGhkbWlfcGh5LT5jb25mLT5oZG1pX3Bo eV9kaXNhYmxlX3RtZHMpCj4gKwkJcmV0dXJuICZtdGtfaGRtaV9waHlfZGV2X29wczsKPiArCj4g KwlkZXZfZXJyKGhkbWlfcGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGRldiBvcHMgb2YgcGh5XG4i KTsKPiArCQlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2hkbWlfcGh5 X2Nsa19nZXRfb3BzKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LAo+ICsJCQkJICAgICBj b25zdCBzdHJ1Y3QgY2xrX29wcyAqKm9wcykKPiArewo+ICsJaWYgKGhkbWlfcGh5ICYmIGhkbWlf cGh5LT5jb25mICYmIGhkbWlfcGh5LT5jb25mLT5oZG1pX3BoeV9jbGtfb3BzKQo+ICsJCSpvcHMg PSBoZG1pX3BoeS0+Y29uZi0+aGRtaV9waHlfY2xrX29wczsKPiArCWVsc2UKPiArCQlkZXZfZXJy KGhkbWlfcGh5LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGNsayBvcHMgb2YgcGh5XG4iKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBtdGtfaGRtaV9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPiArewo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0 cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5Owo+ICsJc3RydWN0IHJlc291cmNlICptZW07Cj4g KwlzdHJ1Y3QgY2xrICpyZWZfY2xrOwo+ICsJY29uc3QgY2hhciAqcmVmX2Nsa19uYW1lOwo+ICsJ c3RydWN0IGNsa19pbml0X2RhdGEgY2xrX2luaXQgPSB7Cj4gKwkJLm51bV9wYXJlbnRzID0gMSwK PiArCQkucGFyZW50X25hbWVzID0gKGNvbnN0IGNoYXIgKiBjb25zdCAqKSZyZWZfY2xrX25hbWUs Cj4gKwkJLmZsYWdzID0gQ0xLX1NFVF9SQVRFX1BBUkVOVCB8IENMS19TRVRfUkFURV9HQVRFLAo+ ICsJfTsKPiArCj4gKwlzdHJ1Y3QgcGh5ICpwaHk7Cj4gKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpw aHlfcHJvdmlkZXI7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWhkbWlfcGh5ID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpoZG1pX3BoeSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFoZG1pX3BoeSkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltZW0gPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2Uo cGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+ICsJaGRtaV9waHktPnJlZ3MgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoZGV2LCBtZW0pOwo+ICsJaWYgKElTX0VSUihoZG1pX3BoeS0+cmVncykpIHsK PiArCQlyZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5yZWdzKTsKPiArCQlkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBnZXQgbWVtb3J5IHJlc291cmNlOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0 Owo+ICsJfQo+ICsKPiArCXJlZl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGxsX3JlZiIpOwo+ ICsJaWYgKElTX0VSUihyZWZfY2xrKSkgewo+ICsJCXJldCA9IFBUUl9FUlIocmVmX2Nsayk7Cj4g KwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBQTEwgcmVmZXJlbmNlIGNsb2Nr OiAlZFxuIiwKPiArCQkJcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsJcmVmX2Nsa19u YW1lID0gX19jbGtfZ2V0X25hbWUocmVmX2Nsayk7Cj4gKwo+ICsJcmV0ID0gb2ZfcHJvcGVydHlf cmVhZF9zdHJpbmcoZGV2LT5vZl9ub2RlLCAiY2xvY2stb3V0cHV0LW5hbWVzIiwKPiArCQkJCSAg ICAgICZjbGtfaW5pdC5uYW1lKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2VycihkZXYs ICJGYWlsZWQgdG8gcmVhZCBjbG9jay1vdXRwdXQtbmFtZXM6ICVkXG4iLCByZXQpOwo+ICsJCXJl dHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJaGRtaV9waHktPmRldiA9IGRldjsKPiArCWhkbWlfcGh5 LT5jb25mID0KPiArCQkoc3RydWN0IG10a19oZG1pX3BoeV9jb25mICopb2ZfZGV2aWNlX2dldF9t YXRjaF9kYXRhKGRldik7Cj4gKwltdGtfaGRtaV9waHlfY2xrX2dldF9vcHMoaGRtaV9waHksICZj bGtfaW5pdC5vcHMpOwo+ICsJaGRtaV9waHktPnBsbF9ody5pbml0ID0gJmNsa19pbml0Owo+ICsJ aGRtaV9waHktPnBsbCA9IGRldm1fY2xrX3JlZ2lzdGVyKGRldiwgJmhkbWlfcGh5LT5wbGxfaHcp Owo+ICsJaWYgKElTX0VSUihoZG1pX3BoeS0+cGxsKSkgewo+ICsJCXJldCA9IFBUUl9FUlIoaGRt aV9waHktPnBsbCk7Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgUExMOiAl ZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IG9mX3Byb3Bl cnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgIm1lZGlhdGVrLGliaWFzIiwKPiArCQkJCSAgICZo ZG1pX3BoeS0+aWJpYXMpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICJGYWlsZWQgdG8gZ2V0IGliaWFzOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ ICsJfQo+ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgIm1l ZGlhdGVrLGliaWFzX3VwIiwKPiArCQkJCSAgICZoZG1pX3BoeS0+aWJpYXNfdXApOwo+ICsJaWYg KHJldCA8IDApIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGliaWFz IHVwOiAlZFxuIiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWRldl9pbmZv KGRldiwgIlVzaW5nIGRlZmF1bHQgVFggRFJWIGltcGVkYW5jZTogNC4yay8zNlxuIik7Cj4gKwlo ZG1pX3BoeS0+ZHJ2X2ltcF9jbGsgPSAweDMwOwo+ICsJaGRtaV9waHktPmRydl9pbXBfZDIgPSAw eDMwOwo+ICsJaGRtaV9waHktPmRydl9pbXBfZDEgPSAweDMwOwo+ICsJaGRtaV9waHktPmRydl9p bXBfZDAgPSAweDMwOwo+ICsKPiArCXBoeSA9IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsIG10 a19oZG1pX3BoeV9kZXZfZ2V0X29wcyhoZG1pX3BoeSkpOwo+ICsJaWYgKElTX0VSUihwaHkpKSB7 Cj4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gY3JlYXRlIEhETUkgUEhZXG4iKTsKPiArCQly ZXR1cm4gUFRSX0VSUihwaHkpOwo+ICsJfQo+ICsJcGh5X3NldF9kcnZkYXRhKHBoeSwgaGRtaV9w aHkpOwo+ICsKPiArCXBoeV9wcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVy KGRldiwgb2ZfcGh5X3NpbXBsZV94bGF0ZSk7Cj4gKwlpZiAoSVNfRVJSKHBoeV9wcm92aWRlcikp IHsKPiArCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWdpc3RlciBIRE1JIFBIWVxuIik7Cj4g KwkJcmV0dXJuIFBUUl9FUlIocGh5X3Byb3ZpZGVyKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gb2Zf Y2xrX2FkZF9wcm92aWRlcihkZXYtPm9mX25vZGUsIG9mX2Nsa19zcmNfc2ltcGxlX2dldCwKPiAr CQkJCSAgIGhkbWlfcGh5LT5wbGwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBtdGtfaGRtaV9waHlfbWF0Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ4MTczLWhkbWktcGh5IiwKPiArCSAgLmRhdGEgPSAmbXRrX2hkbWlfcGh5Xzgx NzNfY29uZiwKPiArCX0sCj4gKwl7fSwKPiArfTsKPiArCj4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgbXRrX2hkbWlfcGh5X2RyaXZlciA9IHsKPiArCS5wcm9iZSA9IG10a19oZG1pX3BoeV9wcm9i ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAibWVkaWF0ZWstaGRtaS1waHkiLAo+ICsJ CS5vZl9tYXRjaF90YWJsZSA9IG10a19oZG1pX3BoeV9tYXRjaCwKPiArCX0sCj4gK307Cj4gKwo+ ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1lZGlhVGVrIEhETUkgUEhZIERyaXZlciIpOwo+ICtNT0RV TEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRp YXRlay9tdGtfaGRtaV9waHkuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfaGRtaV9w aHkuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMzQ2ZmUz MTk2MjEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210 a19oZG1pX3BoeS5oCj4gQEAgLTAsMCArMSw1NCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTggTWVkaWFUZWsg SW5jLgo+ICsgKiBBdXRob3I6IENodW5odWkgRGFpIDxjaHVuaHVpLmRhaUBtZWRpYXRlay5jb20+ Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfTVRLX0hETUlfUEhZX0gKPiArI2RlZmluZSBfTVRLX0hE TUlfUEhZX0gKPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xr LXByb3ZpZGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvaW8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4gKwo+ICtzdHJ1Y3QgbXRrX2hkbWlfcGh5Owo+ ICsKPiArc3RydWN0IG10a19oZG1pX3BoeV9jb25mIHsKPiArCWNvbnN0IHN0cnVjdCBjbGtfb3Bz ICpoZG1pX3BoeV9jbGtfb3BzOwo+ICsJdm9pZCAoKmhkbWlfcGh5X2VuYWJsZV90bWRzKShzdHJ1 Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSk7Cj4gKwl2b2lkICgqaGRtaV9waHlfZGlzYWJsZV90 bWRzKShzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSk7Cj4gK307Cj4gKwo+ICtzdHJ1Y3Qg bXRrX2hkbWlfcGh5IHsKPiArCXZvaWQgX19pb21lbSAqcmVnczsKPiArCXN0cnVjdCBkZXZpY2Ug KmRldjsKPiArCXN0cnVjdCBtdGtfaGRtaV9waHlfY29uZiAqY29uZjsKPiArCXN0cnVjdCBjbGsg KnBsbDsKPiArCXN0cnVjdCBjbGtfaHcgcGxsX2h3Owo+ICsJdW5zaWduZWQgbG9uZyBwbGxfcmF0 ZTsKPiArCXVuc2lnbmVkIGNoYXIgZHJ2X2ltcF9jbGs7Cj4gKwl1bnNpZ25lZCBjaGFyIGRydl9p bXBfZDI7Cj4gKwl1bnNpZ25lZCBjaGFyIGRydl9pbXBfZDE7Cj4gKwl1bnNpZ25lZCBjaGFyIGRy dl9pbXBfZDA7Cj4gKwl1bnNpZ25lZCBpbnQgaWJpYXM7Cj4gKwl1bnNpZ25lZCBpbnQgaWJpYXNf dXA7Cj4gK307Cj4gKwo+ICt2b2lkIG10a19oZG1pX3BoeV9jbGVhcl9iaXRzKHN0cnVjdCBtdGtf aGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAo+ICsJCQkgICAgIHUzMiBiaXRzKTsKPiAr dm9pZCBtdGtfaGRtaV9waHlfc2V0X2JpdHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHks IHUzMiBvZmZzZXQsCj4gKwkJCSAgIHUzMiBiaXRzKTsKPiArdm9pZCBtdGtfaGRtaV9waHlfbWFz ayhzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKPiArCQkgICAgICAg dTMyIHZhbCwgdTMyIG1hc2spOwo+ICtzdHJ1Y3QgbXRrX2hkbWlfcGh5ICp0b19tdGtfaGRtaV9w aHkoc3RydWN0IGNsa19odyAqaHcpOwo+ICsKPiArZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgbXRrX2hkbWlfcGh5X2RyaXZlcjsKPiArZXh0ZXJuIHN0cnVjdCBtdGtfaGRtaV9waHlfY29u ZiBtdGtfaGRtaV9waHlfODE3M19jb25mOwo+ICsKPiArI2VuZGlmIC8qIF9NVEtfSERNSV9QSFlf SCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19o ZG1pX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19tdDgxNzNfaGRtaV9waHku Ywo+IGluZGV4IDUxY2I5Y2ZiNjY0Ni4uNWRlYTAzMzM0MDQyIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbXQ4MTczX2hkbWlfcGh5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX210ODE3M19oZG1pX3BoeS5jCj4gQEAgLTEyLDE1ICsxMiw3 IEBACj4gICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4g ICAqLwo+ICAKPiAtI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+IC0jaW5jbHVkZSA8bGludXgvY2xr LXByb3ZpZGVyLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+IC0jaW5jbHVkZSA8bGlu dXgvaW8uaD4KPiAtI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiAtI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+IC0jaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+IC0jaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsj aW5jbHVkZSAibXRrX2hkbWlfcGh5LmgiCj4gIAo+ICAjZGVmaW5lIEhETUlfQ09OMAkJMHgwMAo+ ICAjZGVmaW5lIFJHX0hETUlUWF9QTExfRU4JCUJJVCgzMSkKPiBAQCAtMTIzLDIwICsxMTUsNiBA QAo+ICAjZGVmaW5lIFJHU19IRE1JVFhfNVQxX0VERwkJKDB4ZiA8PCA0KQo+ICAjZGVmaW5lIFJH U19IRE1JVFhfUExVR19UU1QJCUJJVCgwKQo+ICAKPiAtc3RydWN0IG10a19oZG1pX3BoeSB7Cj4g LQl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gLQlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3Qg Y2xrICpwbGw7Cj4gLQlzdHJ1Y3QgY2xrX2h3IHBsbF9odzsKPiAtCXVuc2lnbmVkIGxvbmcgcGxs X3JhdGU7Cj4gLQl1OCBkcnZfaW1wX2NsazsKPiAtCXU4IGRydl9pbXBfZDI7Cj4gLQl1OCBkcnZf aW1wX2QxOwo+IC0JdTggZHJ2X2ltcF9kMDsKPiAtCXUzMiBpYmlhczsKPiAtCXUzMiBpYmlhc191 cDsKPiAtfTsKPiAtCj4gIHN0YXRpYyBjb25zdCB1OCBQUkVESVZbM11bNF0gPSB7Cj4gIAl7MHgw LCAweDAsIDB4MCwgMHgwfSwJLyogMjdNaHogKi8KPiAgCXsweDEsIDB4MSwgMHgxLCAweDF9LAkv KiA3NE1oeiAqLwo+IEBAIC0xODUsNDQgKzE2Myw2IEBAIHN0YXRpYyBjb25zdCB1OCBIVFBMTEJS WzNdWzRdID0gewo+ICAJezB4MSwgMHgyLCAweDIsIDB4MX0JLyogMTQ4TWh6ICovCj4gIH07Cj4g IAo+IC1zdGF0aWMgdm9pZCBtdGtfaGRtaV9waHlfY2xlYXJfYml0cyhzdHJ1Y3QgbXRrX2hkbWlf cGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKPiAtCQkJCSAgICB1MzIgYml0cykKPiAtewo+IC0J dm9pZCBfX2lvbWVtICpyZWcgPSBoZG1pX3BoeS0+cmVncyArIG9mZnNldDsKPiAtCXUzMiB0bXA7 Cj4gLQo+IC0JdG1wID0gcmVhZGwocmVnKTsKPiAtCXRtcCAmPSB+Yml0czsKPiAtCXdyaXRlbCh0 bXAsIHJlZyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9zZXRfYml0cyhz dHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSwgdTMyIG9mZnNldCwKPiAtCQkJCSAgdTMyIGJp dHMpCj4gLXsKPiAtCXZvaWQgX19pb21lbSAqcmVnID0gaGRtaV9waHktPnJlZ3MgKyBvZmZzZXQ7 Cj4gLQl1MzIgdG1wOwo+IC0KPiAtCXRtcCA9IHJlYWRsKHJlZyk7Cj4gLQl0bXAgfD0gYml0czsK PiAtCXdyaXRlbCh0bXAsIHJlZyk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIG10a19oZG1pX3Bo eV9tYXNrKHN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5LCB1MzIgb2Zmc2V0LAo+IC0JCQkg ICAgICB1MzIgdmFsLCB1MzIgbWFzaykKPiAtewo+IC0Jdm9pZCBfX2lvbWVtICpyZWcgPSBoZG1p X3BoeS0+cmVncyArIG9mZnNldDsKPiAtCXUzMiB0bXA7Cj4gLQo+IC0JdG1wID0gcmVhZGwocmVn KTsKPiAtCXRtcCA9ICh0bXAgJiB+bWFzaykgfCAodmFsICYgbWFzayk7Cj4gLQl3cml0ZWwodG1w LCByZWcpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBtdGtfaGRtaV9waHkgKnRv X210a19oZG1pX3BoeShzdHJ1Y3QgY2xrX2h3ICpodykKPiAtewo+IC0JcmV0dXJuIGNvbnRhaW5l cl9vZihodywgc3RydWN0IG10a19oZG1pX3BoeSwgcGxsX2h3KTsKPiAtfQo+IC0KPiAgc3RhdGlj IGludCBtdGtfaGRtaV9wbGxfcHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKPiAgewo+ICAJc3Ry dWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkgPSB0b19tdGtfaGRtaV9waHkoaHcpOwo+IEBAIC0z NjcsNyArMzA3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbXRrX2hkbWlfcGxsX3JlY2FsY19y YXRlKHN0cnVjdCBjbGtfaHcgKmh3LAo+ICAJcmV0dXJuIGhkbWlfcGh5LT5wbGxfcmF0ZTsKPiAg fQo+ICAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIG10a19oZG1pX3BsbF9vcHMgPSB7 Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBtdGtfaGRtaV9waHlfcGxsX29wcyA9IHsK PiAgCS5wcmVwYXJlID0gbXRrX2hkbWlfcGxsX3ByZXBhcmUsCj4gIAkudW5wcmVwYXJlID0gbXRr X2hkbWlfcGxsX3VucHJlcGFyZSwKPiAgCS5zZXRfcmF0ZSA9IG10a19oZG1pX3BsbF9zZXRfcmF0 ZSwKPiBAQCAtMzkwLDE0MiArMzMwLDEwIEBAIHN0YXRpYyB2b2lkIG10a19oZG1pX3BoeV9kaXNh YmxlX3RtZHMoc3RydWN0IG10a19oZG1pX3BoeSAqaGRtaV9waHkpCj4gIAkJCQlSR19IRE1JVFhf U0VSX0VOKTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBtdGtfaGRtaV9waHlfcG93ZXJfb24oc3Ry dWN0IHBoeSAqcGh5KQo+IC17Cj4gLQlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeSA9IHBo eV9nZXRfZHJ2ZGF0YShwaHkpOwo+IC0JaW50IHJldDsKPiAtCj4gLQlyZXQgPSBjbGtfcHJlcGFy ZV9lbmFibGUoaGRtaV9waHktPnBsbCk7Cj4gLQlpZiAocmV0IDwgMCkKPiAtCQlyZXR1cm4gcmV0 Owo+IC0KPiAtCW10a19oZG1pX3BoeV9lbmFibGVfdG1kcyhoZG1pX3BoeSk7Cj4gLQo+IC0JcmV0 dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Bvd2VyX29mZihzdHJ1 Y3QgcGh5ICpwaHkpCj4gLXsKPiAtCXN0cnVjdCBtdGtfaGRtaV9waHkgKmhkbWlfcGh5ID0gcGh5 X2dldF9kcnZkYXRhKHBoeSk7Cj4gLQo+IC0JbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcyhoZG1p X3BoeSk7Cj4gLQljbGtfZGlzYWJsZV91bnByZXBhcmUoaGRtaV9waHktPnBsbCk7Cj4gLQo+IC0J cmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBtdGtfaGRt aV9waHlfb3BzID0gewo+IC0JLnBvd2VyX29uID0gbXRrX2hkbWlfcGh5X3Bvd2VyX29uLAo+IC0J LnBvd2VyX29mZiA9IG10a19oZG1pX3BoeV9wb3dlcl9vZmYsCj4gLQkub3duZXIgPSBUSElTX01P RFVMRSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgbXRrX2hkbWlfcGh5X3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gLXsKPiAtCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2 LT5kZXY7Cj4gLQlzdHJ1Y3QgbXRrX2hkbWlfcGh5ICpoZG1pX3BoeTsKPiAtCXN0cnVjdCByZXNv dXJjZSAqbWVtOwo+IC0Jc3RydWN0IGNsayAqcmVmX2NsazsKPiAtCWNvbnN0IGNoYXIgKnJlZl9j bGtfbmFtZTsKPiAtCXN0cnVjdCBjbGtfaW5pdF9kYXRhIGNsa19pbml0ID0gewo+IC0JCS5vcHMg PSAmbXRrX2hkbWlfcGxsX29wcywKPiAtCQkubnVtX3BhcmVudHMgPSAxLAo+IC0JCS5wYXJlbnRf bmFtZXMgPSAoY29uc3QgY2hhciAqIGNvbnN0ICopJnJlZl9jbGtfbmFtZSwKPiAtCQkuZmxhZ3Mg PSBDTEtfU0VUX1JBVEVfUEFSRU5UIHwgQ0xLX1NFVF9SQVRFX0dBVEUsCj4gLQl9Owo+IC0Jc3Ry dWN0IHBoeSAqcGh5Owo+IC0Jc3RydWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOwo+IC0J aW50IHJldDsKPiAtCj4gLQloZG1pX3BoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaGRt aV9waHkpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghaGRtaV9waHkpCj4gLQkJcmV0dXJuIC1FTk9N RU07Cj4gLQo+IC0JbWVtID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsKPiAtCWhkbWlfcGh5LT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg bWVtKTsKPiAtCWlmIChJU19FUlIoaGRtaV9waHktPnJlZ3MpKSB7Cj4gLQkJcmV0ID0gUFRSX0VS UihoZG1pX3BoeS0+cmVncyk7Cj4gLQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IG1lbW9y eSByZXNvdXJjZTogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQly ZWZfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgInBsbF9yZWYiKTsKPiAtCWlmIChJU19FUlIocmVm X2NsaykpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKHJlZl9jbGspOwo+IC0JCWRldl9lcnIoJnBkZXYt PmRldiwgIkZhaWxlZCB0byBnZXQgUExMIHJlZmVyZW5jZSBjbG9jazogJWRcbiIsCj4gLQkJCXJl dCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCXJlZl9jbGtfbmFtZSA9IF9fY2xrX2dldF9u YW1lKHJlZl9jbGspOwo+IC0KPiAtCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRldi0+ b2Zfbm9kZSwgImNsb2NrLW91dHB1dC1uYW1lcyIsCj4gLQkJCQkgICAgICAmY2xrX2luaXQubmFt ZSk7Cj4gLQlpZiAocmV0IDwgMCkgewo+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlYWQg Y2xvY2stb3V0cHV0LW5hbWVzOiAlZFxuIiwgcmV0KTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+ IC0KPiAtCWhkbWlfcGh5LT5wbGxfaHcuaW5pdCA9ICZjbGtfaW5pdDsKPiAtCWhkbWlfcGh5LT5w bGwgPSBkZXZtX2Nsa19yZWdpc3RlcihkZXYsICZoZG1pX3BoeS0+cGxsX2h3KTsKPiAtCWlmIChJ U19FUlIoaGRtaV9waHktPnBsbCkpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGhkbWlfcGh5LT5wbGwp Owo+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIFBMTDogJWRcbiIsIHJldCk7 Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3Uz MihkZXYtPm9mX25vZGUsICJtZWRpYXRlayxpYmlhcyIsCj4gLQkJCQkgICAmaGRtaV9waHktPmli aWFzKTsKPiAtCWlmIChyZXQgPCAwKSB7Cj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVk IHRvIGdldCBpYmlhczogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4g LQlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJtZWRpYXRlayxpYmlh c191cCIsCj4gLQkJCQkgICAmaGRtaV9waHktPmliaWFzX3VwKTsKPiAtCWlmIChyZXQgPCAwKSB7 Cj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCBpYmlhcyB1cDogJWRcbiIs IHJldCk7Cj4gLQkJcmV0dXJuIHJldDsKPiAtCX0KPiAtCj4gLQlkZXZfaW5mbyhkZXYsICJVc2lu ZyBkZWZhdWx0IFRYIERSViBpbXBlZGFuY2U6IDQuMmsvMzZcbiIpOwo+IC0JaGRtaV9waHktPmRy dl9pbXBfY2xrID0gMHgzMDsKPiAtCWhkbWlfcGh5LT5kcnZfaW1wX2QyID0gMHgzMDsKPiAtCWhk bWlfcGh5LT5kcnZfaW1wX2QxID0gMHgzMDsKPiAtCWhkbWlfcGh5LT5kcnZfaW1wX2QwID0gMHgz MDsKPiAtCj4gLQlwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAmbXRrX2hkbWlfcGh5 X29wcyk7Cj4gLQlpZiAoSVNfRVJSKHBoeSkpIHsKPiAtCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBjcmVhdGUgSERNSSBQSFlcbiIpOwo+IC0JCXJldHVybiBQVFJfRVJSKHBoeSk7Cj4gLQl9Cj4g LQlwaHlfc2V0X2RydmRhdGEocGh5LCBoZG1pX3BoeSk7Cj4gLQo+IC0JcGh5X3Byb3ZpZGVyID0g ZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBvZl9waHlfc2ltcGxlX3hsYXRlKTsK PiAtCWlmIChJU19FUlIocGh5X3Byb3ZpZGVyKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihwaHlfcHJv dmlkZXIpOwo+IC0KPiAtCWhkbWlfcGh5LT5kZXYgPSBkZXY7Cj4gLQlyZXR1cm4gb2ZfY2xrX2Fk ZF9wcm92aWRlcihkZXYtPm9mX25vZGUsIG9mX2Nsa19zcmNfc2ltcGxlX2dldCwKPiAtCQkJCSAg IGhkbWlfcGh5LT5wbGwpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IG10a19oZG1pX3BoeV9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAtewo+IC0JcmV0dXJuIDA7Cj4gLX0K PiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19oZG1pX3BoeV9tYXRj aFtdID0gewo+IC0JeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaGRtaS1waHkiLCB9 LAo+IC0Je30sCj4gLX07Cj4gLQo+IC1zdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10a19oZG1pX3Bo eV9kcml2ZXIgPSB7Cj4gLQkucHJvYmUgPSBtdGtfaGRtaV9waHlfcHJvYmUsCj4gLQkucmVtb3Zl ID0gbXRrX2hkbWlfcGh5X3JlbW92ZSwKPiAtCS5kcml2ZXIgPSB7Cj4gLQkJLm5hbWUgPSAibWVk aWF0ZWstaGRtaS1waHkiLAo+IC0JCS5vZl9tYXRjaF90YWJsZSA9IG10a19oZG1pX3BoeV9tYXRj aCwKPiAtCX0sCj4gK3N0cnVjdCBtdGtfaGRtaV9waHlfY29uZiBtdGtfaGRtaV9waHlfODE3M19j b25mID0gewo+ICsJLmhkbWlfcGh5X2Nsa19vcHMgPSAmbXRrX2hkbWlfcGh5X3BsbF9vcHMsCj4g KwkuaGRtaV9waHlfZW5hYmxlX3RtZHMgPSBtdGtfaGRtaV9waHlfZW5hYmxlX3RtZHMsCj4gKwku aGRtaV9waHlfZGlzYWJsZV90bWRzID0gbXRrX2hkbWlfcGh5X2Rpc2FibGVfdG1kcywKPiAgfTsK PiAgCj4gIE1PRFVMRV9BVVRIT1IoIkppZSBRaXUgPGppZS5xaXVAbWVkaWF0ZWsuY29tPiIpOwoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=