From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,8/8] usb: dwc3: Add Amlogic G12A DWC3 glue From: Chunfeng Yun Message-Id: <1553046181.10179.160.camel@mhfsdcap03> Date: Wed, 20 Mar 2019 09:43:01 +0800 To: Neil Armstrong Cc: gregkh@linuxfoundation.org, hminas@synopsys.com, balbi@kernel.org, kishon@ti.com, linux-amlogic@lists.infradead.org, linux-usb@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org List-ID: SGksCk9uIFR1ZSwgMjAxOS0wMy0xOSBhdCAwOToxNSArMDEwMCwgTmVpbCBBcm1zdHJvbmcgd3Jv dGU6Cj4gSGksCj4gCj4gT24gMTkvMDMvMjAxOSAwMjo1NywgQ2h1bmZlbmcgWXVuIHdyb3RlOgo+ ID4gSGkgTmVpbCwKPiA+IE9uIE1vbiwgMjAxOS0wMy0xOCBhdCAxMToxMSArMDEwMCwgTmVpbCBB cm1zdHJvbmcgd3JvdGU6Cj4gPj4gQWRkcyBzdXBwb3J0IGZvciBBbWxvZ2ljIEcxMkEgVVNCIENv bnRyb2wgR2x1ZSBIVy4KPiA+Pgo+ID4+IFRoZSBBbWxvZ2ljIEcxMkEgU29DIEZhbWlseSBlbWJl ZHMgMiBVU0IgQ29udHJvbGxlcnMgOgo+ID4+IC0gYSBEV0MzIElQIGNvbmZpZ3VyZWQgYXMgSG9z dCBmb3IgVVNCMiBhbmQgVVNCMwo+ID4+IC0gYSBEV0MyIElQIGNvbmZpZ3VyZWQgYXMgUGVyaXBo ZXJhbCBVU0IyIE9ubHkKPiA+Pgo+ID4+IEEgZ2x1ZSBjb25uZWN0cyB0aGVzZSBib3RoIGNvbnRy b2xsZXJzIHRvIDIgVVNCMiBQSFlzLCBhbmQgb3B0aW9ubmFsbHkKPiA+PiB0byBhbiBVU0IzK1BD SUUgQ29tYm8gUEhZIHNoYXJlZCB3aXRoIHRoZSBQQ0lFIGNvbnRyb2xsZXIuCj4gPj4KPiA+PiBU aGUgR2x1ZSBjb25maWd1cmVzIHRoZSBVVE1JIDhiaXQgaW50ZXJmYWNlcyBmb3IgdGhlIFVTQjIg UEhZcywgaW5jbHVkaW5nCj4gPj4gcm91dGluZyBvZiB0aGUgT1RHIFBIWSBiZXR3ZWVuIHRoZSBE V0MzIGFuZCBEV0MyIGNvbnRyb2xsZXJzLCBhbmQKPiA+PiBzZXR1cHMgdGhlIG9uLWNoaXAgT1RH IG1vZGUgc2VsZWN0aW9uIGZvciB0aGlzIFBIWS4KPiA+Pgo+ID4+IFRoaXMgZHJpdmVycyBzdXBw b3J0cyB0aGUgb24tcHJvYmUgc2V0dXAgb2YgdGhlIE9URyBtb2RlLCBhbmQgbWFudWFsbHkKPiA+ PiB2aWEgYSBkZWJ1Z2ZzIGludGVyZmFjZS4gVGhlIElSUSBtb2RlIGNoYW5nZSBkZXRlY3QgaXMg eWV0IHRvIGJlIGFkZGVkCj4gPj4gaW4gYSBmdXR1cmUgcGF0Y2hzZXQsIG1haW5seSBkdWUgdG8g bGFjayBvZiBoYXJkd2FyZSB0byB2YWxpZGF0ZSBvbi4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6 IE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KPiA+PiAtLS0KPiA+PiAg ZHJpdmVycy91c2IvZHdjMy9LY29uZmlnICAgICAgICAgICB8ICAxMCArCj4gPj4gIGRyaXZlcnMv dXNiL2R3YzMvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwo+ID4+ICBkcml2ZXJzL3VzYi9kd2Mz L2R3YzMtbWVzb24tZzEyYS5jIHwgNjAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g Pj4gIDMgZmlsZXMgY2hhbmdlZCwgNjEzIGluc2VydGlvbnMoKykKPiA+PiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvdXNiL2R3YzMvZHdjMy1tZXNvbi1nMTJhLmMKPiA+Pgo+ID4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9kd2MzL0tjb25maWcgYi9kcml2ZXJzL3VzYi9kd2MzL0tjb25m aWcKPiA+PiBpbmRleCAyYjE0OTQ0NjBkMGMuLmQyZWE5NjcwNTYzYyAxMDA2NDQKPiA+PiAtLS0g YS9kcml2ZXJzL3VzYi9kd2MzL0tjb25maWcKPiA+PiArKysgYi9kcml2ZXJzL3VzYi9kd2MzL0tj b25maWcKPiA+PiBAQCAtOTUsNiArOTUsMTYgQEAgY29uZmlnIFVTQl9EV0MzX0tFWVNUT05FCj4g Pj4gIAkgIFN1cHBvcnQgb2YgVVNCMi8zIGZ1bmN0aW9uYWxpdHkgaW4gVEkgS2V5c3RvbmUyIGFu ZCBBTTY1NCBwbGF0Zm9ybXMuCj4gPj4gIAkgIFNheSAnWScgb3IgJ00nIGhlcmUgaWYgeW91IGhh dmUgb25lIHN1Y2ggZGV2aWNlCj4gPj4gIAo+ID4+ICtjb25maWcgVVNCX0RXQzNfTUVTT05fRzEy QQo+ID4+ICsgICAgICAgdHJpc3RhdGUgIkFtbG9naWMgTWVzb24gRzEyQSBQbGF0Zm9ybXMiCj4g Pj4gKyAgICAgICBkZXBlbmRzIG9uIE9GICYmIENPTU1PTl9DTEsKPiA+PiArICAgICAgIGRlcGVu ZHMgb24gQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QKPiA+PiArICAgICAgIGRlZmF1bHQgVVNC X0RXQzMKPiA+PiArICAgICAgIHNlbGVjdCBVU0JfUk9MRV9TV0lUQ0gKPiA+PiArICAgICAgIGhl bHAKPiA+PiArICAgICAgICAgU3VwcG9ydCBVU0IyLzMgZnVuY3Rpb25hbGl0eSBpbiBBbWxvZ2lj IEcxMkEgcGxhdGZvcm1zLgo+ID4+ICsJIFNheSAnWScgb3IgJ00nIGlmIHlvdSBoYXZlIG9uZSBz dWNoIGRldmljZS4KPiA+PiArCj4gPj4gIGNvbmZpZyBVU0JfRFdDM19PRl9TSU1QTEUKPiA+PiAg ICAgICAgIHRyaXN0YXRlICJHZW5lcmljIE9GIFNpbXBsZSBHbHVlIExheWVyIgo+ID4+ICAgICAg ICAgZGVwZW5kcyBvbiBPRiAmJiBDT01NT05fQ0xLCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL2R3YzMvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9kd2MzL01ha2VmaWxlCj4gPj4gaW5kZXgg NmUzZWY2MTQ0ZTVkLi5hZTg2ZGEwZGM1YmQgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy91c2Iv ZHdjMy9NYWtlZmlsZQo+ID4+ICsrKyBiL2RyaXZlcnMvdXNiL2R3YzMvTWFrZWZpbGUKPiA+PiBA QCAtNDcsNiArNDcsNyBAQCBvYmotJChDT05GSUdfVVNCX0RXQzNfRVhZTk9TKQkJKz0gZHdjMy1l eHlub3Mubwo+ID4+ICBvYmotJChDT05GSUdfVVNCX0RXQzNfUENJKQkJKz0gZHdjMy1wY2kubwo+ ID4+ICBvYmotJChDT05GSUdfVVNCX0RXQzNfSEFQUykJCSs9IGR3YzMtaGFwcy5vCj4gPj4gIG9i ai0kKENPTkZJR19VU0JfRFdDM19LRVlTVE9ORSkJCSs9IGR3YzMta2V5c3RvbmUubwo+ID4+ICtv YmotJChDT05GSUdfVVNCX0RXQzNfTUVTT05fRzEyQSkJKz0gZHdjMy1tZXNvbi1nMTJhLm8KPiA+ PiAgb2JqLSQoQ09ORklHX1VTQl9EV0MzX09GX1NJTVBMRSkJKz0gZHdjMy1vZi1zaW1wbGUubwo+ ID4+ICBvYmotJChDT05GSUdfVVNCX0RXQzNfU1QpCQkrPSBkd2MzLXN0Lm8KPiA+PiAgb2JqLSQo Q09ORklHX1VTQl9EV0MzX1FDT00pCQkrPSBkd2MzLXFjb20ubwo+ID4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9kd2MzL2R3YzMtbWVzb24tZzEyYS5jIGIvZHJpdmVycy91c2IvZHdjMy9kd2Mz LW1lc29uLWcxMmEuYwo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4gaW5kZXggMDAwMDAw MDAwMDAwLi45ZjQ1NTRlOGU2ZTcKPiA+PiAtLS0gL2Rldi9udWxsCj4gPj4gKysrIGIvZHJpdmVy cy91c2IvZHdjMy9kd2MzLW1lc29uLWcxMmEuYwo+ID4+IEBAIC0wLDAgKzEsNjAyIEBACj4gPj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPj4gKy8qCj4gPj4gKyAqIFVT QiBHbHVlIGZvciBBbWxvZ2ljIEcxMkEgU29Dcwo+ID4+ICsgKgo+ID4+ICsgKiBDb3B5cmlnaHQg KGMpIDIwMTkgQmF5TGlicmUsIFNBUwo+ID4+ICsgKiBBdXRob3I6IE5laWwgQXJtc3Ryb25nIDxu YXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KPiA+PiArICovCj4gPj4gKwo+ID4+ICsvKgo+ID4+ICsg KiBUaGUgVVNCIGlzIG9yZ2FuaXplZCB3aXRoIGEgZ2x1ZSBhcm91bmQgdGhlIERXQzMgQ29udHJv bGxlciBJUCBhcyA6Cj4gPj4gKyAqIC0gQ29udHJvbCByZWdpc3RlcnMgZm9yIGVhY2ggVVNCMiBQ b3J0cwo+ID4+ICsgKiAtIENvbnRyb2wgcmVnaXN0ZXJzIGZvciB0aGUgVVNCIFBIWSBsYXllcgo+ ID4+ICsgKiAtIFN1cGVyU3BlZWQgUEhZIGNhbiBiZSBlbmFibGVkIG9ubHkgaWYgcG9ydCBpcyB1 c2VkCj4gPj4gKyAqCj4gPj4gKyAqIFRPRklYOgo+ID4+ICsgKiAtIEFkZCBkeW5hbWljIE9URyBz d2l0Y2hpbmcgd2l0aCBJRCBjaGFuZ2UgaW50ZXJydXB0Cj4gPj4gKyAqLwo+ID4+ICsKPiAKPiBb Li5dCj4gCj4gPj4gKwo+ID4+ICsJcmV0ID0gb2ZfcGxhdGZvcm1fcG9wdWxhdGUobnAsIE5VTEws IE5VTEwsIGRldik7Cj4gPj4gKwlpZiAocmV0KSB7Cj4gPj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHByaXYtPmNsayk7Cj4gPj4gKwkJY2xrX3B1dChwcml2LT5jbGspOwo+ID4gTm8gbmVlZCBj bGtfcHV0KCkKPiAKPiBFeGFjdAo+IAo+ID4+ICsKPiA+PiArCQlnb3RvIGVycl9waHlzX2V4aXQ7 Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJLyogU2V0dXAgT1RHIG1vZGUgY29ycmVzcG9uZGluZyB0 byB0aGUgSUQgcGluICovCj4gPj4gKwlpZiAocHJpdi0+b3RnX21vZGUgPT0gVVNCX0RSX01PREVf T1RHKSB7Cj4gPj4gKwkJLyogVE9GSVggSGFuZGxlIElEIG1vZGUgdG9nZ2xpbmcgdmlhIElSUSAq Lwo+ID4+ICsJCW90Z19pZCA9IGR3YzNfbWVzb25fZzEyYV9nZXRfaWQocHJpdik7Cj4gPj4gKwkJ aWYgKG90Z19pZCAhPSBwcml2LT5vdGdfcGh5X21vZGUpIHsKPiA+PiArCQkJaWYgKGR3YzNfbWVz b25fZzEyYV9vdGdfbW9kZV9zZXQocHJpdiwgb3RnX2lkKSkKPiA+PiArCQkJCWRldl93YXJuKGRl diwgIkZhaWxlZCB0byBzd2l0Y2ggT1RHIG1vZGVcbiIpOwo+ID4+ICsJCX0KPiA+PiArCX0KPiA+ PiArCj4gPj4gKwkvKiBTZXR1cCByb2xlIHN3aXRjaGVyICovCj4gPj4gKwlwcml2LT5zd2l0Y2hf ZGVzYy51c2IyX3BvcnQgPSBkd2MzX21lc29uX2cxMl9maW5kX2NoaWxkKGRldiwKPiA+PiArCQkJ CQkJCQkic25wcyxkd2MzIik7Cj4gPj4gKwlwcml2LT5zd2l0Y2hfZGVzYy51ZGMgPSBkd2MzX21l c29uX2cxMl9maW5kX2NoaWxkKGRldiwgInNucHMsZHdjMiIpOwo+ID4+ICsJcHJpdi0+c3dpdGNo X2Rlc2MuYWxsb3dfdXNlcnNwYWNlX2NvbnRyb2wgPSB0cnVlOwo+ID4+ICsJcHJpdi0+c3dpdGNo X2Rlc2Muc2V0ID0gZHdjM19tZXNvbl9nMTJhX3JvbGVfc2V0Owo+ID4+ICsJcHJpdi0+c3dpdGNo X2Rlc2MuZ2V0ID0gZHdjM19tZXNvbl9nMTJhX3JvbGVfZ2V0Owo+ID4+ICsKPiA+PiArCXByaXYt PnJvbGVfc3dpdGNoID0gdXNiX3JvbGVfc3dpdGNoX3JlZ2lzdGVyKGRldiwgJnByaXYtPnN3aXRj aF9kZXNjKTsKPiA+PiArCWlmIChJU19FUlIocHJpdi0+cm9sZV9zd2l0Y2gpKQo+ID4+ICsJCWRl dl93YXJuKGRldiwgIlVuYWJsZSB0byByZWdpc3RlciBSb2xlIFN3aXRjaFxuIik7Cj4gPj4gKwo+ ID4+ICsJcG1fcnVudGltZV9zZXRfYWN0aXZlKGRldik7Cj4gPj4gKwlwbV9ydW50aW1lX2VuYWJs ZShkZXYpOwo+ID4+ICsJcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwo+ID4+ICsKPiA+PiArCXJl dHVybiAwOwo+ID4+ICsKPiA+PiArZXJyX3BoeXNfZXhpdDoKPiA+PiArCWZvciAoaSA9IDAgOyBp IDwgUEhZX0NPVU5UIDsgKytpKQo+ID4+ICsJCXBoeV9leGl0KHByaXYtPnBoeXNbaV0pOwo+ID4+ ICsKPiA+PiArZXJyX3BoeXNfcG93ZXI6Cj4gPj4gKwlmb3IgKGkgPSAwIDsgaSA8IFBIWV9DT1VO VCA7ICsraSkKPiA+PiArCQlwaHlfcG93ZXJfb2ZmKHByaXYtPnBoeXNbaV0pOwo+ID4+ICsKPiA+ PiArZXJyX3BoeXNfcHV0Ogo+ID4+ICsJZm9yIChpID0gMCA7IGkgPCBQSFlfQ09VTlQgOyArK2kp Cj4gPj4gKwkJcGh5X3B1dChwcml2LT5waHlzW2ldKTsKPiA+IHlvdSBnZXQgcGh5IGJ5IGRldm1f cGh5X29wdGlvbmFsX2dldCgpLCBubyBuZWVkIGNhbGwgcGh5X3B1dCgpLCAKPiAKPiBJbmRlZWQs IGFsc28gZm9yZ290IHRoZXNlCj4gCj4gPj4gKwo+ID4+ICsJcmV0dXJuIHJldDsKPiA+PiArfQo+ ID4+ICsKPiA+PiArc3RhdGljIGludCBkd2MzX21lc29uX2cxMmFfcmVtb3ZlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPj4gK3sKPiA+PiArCXN0cnVjdCBkd2MzX21lc29uX2cxMmEg KnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiA+PiArCXN0cnVjdCBkZXZpY2Ug KmRldiA9ICZwZGV2LT5kZXY7Cj4gPj4gKwlpbnQgaTsKPiA+PiArCj4gPj4gKwl1c2Jfcm9sZV9z d2l0Y2hfdW5yZWdpc3Rlcihwcml2LT5yb2xlX3N3aXRjaCk7Cj4gPj4gKwo+ID4+ICsJb2ZfcGxh dGZvcm1fZGVwb3B1bGF0ZShkZXYpOwo+ID4+ICsKPiA+PiArCWZvciAoaSA9IDAgOyBpIDwgUEhZ X0NPVU5UIDsgKytpKSB7Cj4gPj4gKwkJcGh5X3Bvd2VyX29mZihwcml2LT5waHlzW2ldKTsKPiA+ PiArCQlwaHlfZXhpdChwcml2LT5waHlzW2ldKTsKPiA+PiArCQlwaHlfcHV0KHByaXYtPnBoeXNb aV0pOwo+ID4gaGVyZSwgYW5kIHJlbW92ZSBvdGhlcnMgaWYgaGF2ZS4KPiAKPiBUaGlzIGlzIHRo ZSBsYXN0IG9uZSBJIGhvcGUKPiAKPiA+PiArCX0KPiA+PiArCj4gPj4gKwlwbV9ydW50aW1lX2Rp c2FibGUoZGV2KTsKPiA+PiArCXBtX3J1bnRpbWVfcHV0X25vaWRsZShkZXYpOwo+ID4+ICsJcG1f cnVudGltZV9zZXRfc3VzcGVuZGVkKGRldik7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIDA7Cj4gPj4g K30KPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgZHdjM19tZXNvbl9nMTJh X3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj4gK3sKPiA+PiArCXN0cnVj dCBkd2MzX21lc29uX2cxMmEJKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+PiArCj4g Pj4gKwljbGtfZGlzYWJsZShwcml2LT5jbGspOwo+ID4+ICsKPiA+PiArCXJldHVybiAwOwo+ID4+ ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGR3YzNfbWVzb25fZzEy YV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPj4gK3sKPiA+PiArCXN0cnVj dCBkd2MzX21lc29uX2cxMmEJKnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiA+PiArCj4g Pj4gKwlyZXR1cm4gY2xrX2VuYWJsZShwcml2LT5jbGspOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtz dGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGR3YzNfbWVzb25fZzEyYV9zdXNwZW5kKHN0cnVjdCBk ZXZpY2UgKmRldikKPiA+PiArewo+ID4+ICsJc3RydWN0IGR3YzNfbWVzb25fZzEyYSAqcHJpdiA9 IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ID4+ICsJaW50IGk7Cj4gPj4gKwo+ID4+ICsJZm9yIChp ID0gMCA7IGkgPCBQSFlfQ09VTlQgOyArK2kpCj4gPj4gKwkJcGh5X2V4aXQocHJpdi0+cGh5c1tp XSk7Cj4gPj4gKwo+ID4+ICsJcmVzZXRfY29udHJvbF9hc3NlcnQocHJpdi0+cmVzZXQpOwo+ID4+ ICsKPiA+PiArCXJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IF9fbWF5 YmVfdW51c2VkIGR3YzNfbWVzb25fZzEyYV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQo+ID4+ ICt7Cj4gPj4gKwlzdHJ1Y3QgZHdjM19tZXNvbl9nMTJhICpwcml2ID0gZGV2X2dldF9kcnZkYXRh KGRldik7Cj4gPj4gKwlpbnQgaSwgcmV0Owo+ID4+ICsKPiA+PiArCXJlc2V0X2NvbnRyb2xfZGVh c3NlcnQocHJpdi0+cmVzZXQpOwo+ID4+ICsKPiA+PiArCWR3YzNfbWVzb25fZzEyYV91c2JfaW5p dChwcml2KTsKPiA+PiArCj4gPj4gKwkvKiBJbml0IFBIWXMgKi8KPiA+PiArCWZvciAoaSA9IDAg OyBpIDwgUEhZX0NPVU5UIDsgKytpKSB7Cj4gPj4gKwkJcmV0ID0gcGh5X2luaXQocHJpdi0+cGh5 c1tpXSk7Cj4gPj4gKwkJaWYgKHJldCkKPiA+PiArCQkJcmV0dXJuIHJldDsKPiA+PiArCX0KPiA+ IERvIHlvdSBuZWVkIHBvd2VyIG9uIHBoeXM/Cj4gCj4gUmVndWxhdG9ycyBjYW4gYmUgdGllZCB0 byB0aGUgUEhZcywgc2hvdWxkIEkgZGlzYWJsZSBwb3dlciBvbiBzdXNwZW5kIGFzd2VsbCA/Ckkg ZmluZCB0aGF0IHRoZSBwaHkgZHJpdmVyIHlvdSB1c2VkIGRvZXNuJ3QgcHJvdmlkZSAucG93ZXJf b24vb2ZmLCBzbwp0aGUgY3VycmVudCBmbG93IHdvbid0IGNhdXNlIHNvbWV0aGluZyB3cm9uZywg YnV0IGlmIHRoZSBwaHkgZHJpdmVyCnByb3ZpZGVzIC5wb3dlcl9vbi9vZmYsIGl0IHdpbGwgZG8u Cgo+IAo+ID4+ICsKPiA+PiArCXJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRldl9wbV9vcHMgZHdjM19tZXNvbl9nMTJhX2Rldl9wbV9vcHMgPSB7Cj4g Pj4gKwlTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyhkd2MzX21lc29uX2cxMmFfc3VzcGVuZCwgZHdj M19tZXNvbl9nMTJhX3Jlc3VtZSkKPiA+PiArCVNFVF9SVU5USU1FX1BNX09QUyhkd2MzX21lc29u X2cxMmFfcnVudGltZV9zdXNwZW5kLAo+ID4+ICsJCQlkd2MzX21lc29uX2cxMmFfcnVudGltZV9y ZXN1bWUsIE5VTEwpCj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBkd2MzX21lc29uX2cxMmFfbWF0Y2hbXSA9IHsKPiA+PiArCXsgLmNvbXBhdGli bGUgPSAiYW1sb2dpYyxtZXNvbi1nMTJhLXVzYi1jdHJsIiB9LAo+ID4+ICsJeyAvKiBTZW50aW5l bCAqLyB9Cj4gPj4gK307Cj4gPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3YzNfbWVzb25f ZzEyYV9tYXRjaCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBk d2MzX21lc29uX2cxMmFfZHJpdmVyID0gewo+ID4+ICsJLnByb2JlCQk9IGR3YzNfbWVzb25fZzEy YV9wcm9iZSwKPiA+PiArCS5yZW1vdmUJCT0gZHdjM19tZXNvbl9nMTJhX3JlbW92ZSwKPiA+PiAr CS5kcml2ZXIJCT0gewo+ID4+ICsJCS5uYW1lCT0gImR3YzMtbWVzb24tZzEyYSIsCj4gPj4gKwkJ Lm9mX21hdGNoX3RhYmxlID0gZHdjM19tZXNvbl9nMTJhX21hdGNoLAo+ID4+ICsJCS5wbQk9ICZk d2MzX21lc29uX2cxMmFfZGV2X3BtX29wcywKPiA+PiArCX0sCj4gPj4gK307Cj4gPj4gKwo+ID4+ ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3YzNfbWVzb25fZzEyYV9kcml2ZXIpOwo+ID4+ICtN T0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gPj4gK01PRFVMRV9ERVNDUklQVElPTigiQW1sb2dp YyBNZXNvbiBHMTJBIFVTQiBHbHVlIExheWVyIik7Cj4gPj4gK01PRFVMRV9BVVRIT1IoIk5laWwg QXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4iKTsKPiA+IAo+ID4gCj4gCj4gVGhh bmtzLAo+IE5laWwK