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: [v1,2/2] usb:cdns3 Add Cadence USB3 DRD Driver From: Kishon Vijay Abraham I Message-Id: Date: Fri, 14 Dec 2018 09:16:18 +0530 To: Felipe Balbi , Pawel Laszczak , "devicetree@vger.kernel.org" Cc: "gregkh@linuxfoundation.org" , "linux-usb@vger.kernel.org" , "rogerq@ti.com" , "linux-kernel@vger.kernel.org" , Alan Douglas , "jbergsagel@ti.com" , "nsekhar@ti.com" , "nm@ti.com" , Suresh Punnoose , "peter.chen@nxp.com" , Pawel Jez , Rahul Kumar List-ID: T24gMTIvMTIvMTggMTI6MjIgUE0sIEZlbGlwZSBCYWxiaSB3cm90ZToKPiAKPiBIaQo+IAo+IFBh d2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+IHdyaXRlczoKPj4+PiArCWNkbnMtPnBo eSA9IGRldm1fcGh5X2dldChkZXYsICJjZG5zMyx1c2JwaHkiKTsKPj4+PiArCWlmIChJU19FUlIo Y2Rucy0+cGh5KSkgewo+Pj4+ICsJCXJldCA9IFBUUl9FUlIoY2Rucy0+cGh5KTsKPj4+PiArCQlp ZiAocmV0ID09IC1FTk9TWVMgfHwgcmV0ID09IC1FTk9ERVYpIHsKPj4+Cj4+PiBBcmUgeW91IHN1 cmUgeW91IGNhbiBnZXQgRU5PU1lTIGhlcmU/IEhhdmUgeW91IGNoZWNrZWQgb3V0cHV0IG9mCj4+ PiBjaGVja3BhdGNoIC0tc3RyaWN0Pwo+Pj4gLTo4NTI6IFdBUk5JTkc6IEVOT1NZUyBtZWFucyAn aW52YWxpZCBzeXNjYWxsIG5yJyBhbmQgbm90aGluZyBlbHNlCj4+Cj4+IFllcyB0aGlzIGVycm9y IGNvZGUgY2FuIGJlIHJldHVybmVkIGJ5IHJlbGF0ZWQgdG8gcGh5IGZ1bmN0aW9uIGlmCj4+IENP TkZJR19HRU5FUklDX1BIWSBpcyBkaXNhYmxlZC4KPj4KPj4gSSBoYXZlIHNlZW4gdGhpcyB3YXJu aW5nIGluIG91dHB1dCBvZiBjaGVja3BhdGNoIC0tc3RyaWN0IC4KPiAKPiBLaXNob24sIHNlZW1z IGxpa2UgeW91IHNob3VsZG4ndCBiZSB1c2luZyB0aGF0IGVycm9yIHZhbHVlLgoKaG1tLCB5ZWFo IHNob3VsZCBjaGFuZ2UgdGhlIHJldHVybiB2YWx1ZSB0byAtRU5PREVWIHdoZW4gR0VORVJJQ19Q SFkgaXMgZGlzYWJsZWQuCgpUaGFua3MKS2lzaG9uCj4gCj4gPHNuaXA+Cj4gCj4+Pj4gKwljYXNl IFVTQl9SRVFfU0VUX0lTT0NIX0RFTEFZOgo+Pj4+ICsJCXNwcmludGYoc3RyLCAiU2V0IElzb2No cm9ub3VzIERlbGF5IERlbGF5OiAlZCBucyIsIHdWYWx1ZSk7Cj4+Pj4gKwkJYnJlYWs7Cj4+Pj4g KwlkZWZhdWx0Ogo+Pj4+ICsJCXNwcmludGYoc3RyLAo+Pj4+ICsJCQkiU0VUVVAgQlJUOiAlMDJ4 IEJSOiAlMDJ4IFY6ICUwNHggSTogJTA0eCBMOiAlMDR4XG4iLAo+Pj4+ICsJCQliUmVxdWVzdFR5 cGUsIGJSZXF1ZXN0LAo+Pj4+ICsJCQl3VmFsdWUsIHdJbmRleCwgd0xlbmd0aCk7Cj4+Pj4gKwl9 Cj4+Pj4gKwo+Pj4+ICsJcmV0dXJuIHN0cjsKPj4+PiArfQo+Pj4KPj4+IEFsbCBvZiB0aGVzZSBh cmUgYSBmbGF0IG91dCBjb3B5IG9mIGR3YzMncyBpbXBsZW1lbnRhdGlvbi4gSXQncyBtdWNoLAo+ Pj4gbXVjaCBiZXR0ZXIgdG8gdHVybiBkd2MzJ3MgaW1wbGVtZW50YXRpb24gaW50byBhIGdlbmVy aWMsIHJldXNhYmxlCj4+PiBsaWJyYXJ5IGZ1bmN0aW9uIHRoZW4gc3Bpbm5pbmcgeW91ciBvd24g YXMgYSBkdXBsaWNhdGVkIGVmZm9ydC4KPj4gSSBhZ3JlZSwgCj4+IEl0IHdvdWxkIGJlIG5pY2Ug dG8gaGF2ZSBhIHNldCBvZiBkZWNvZGluZyBmdW5jdGlvbiAgaW4gc29tZSBnZW5lcmljIGxpYnJh cnkuIEl0IGNvdWxkIGJlIHVzZWQgCj4+IGFsc28gYnkgb3RoZXIgZHJpdmVycy4KPj4gV2hvIHNo b3VsZCBkbyB0aGlzID8KPiAKPiBzaW5jZSB5b3UncmUgdGhlIGZpcnN0IHRvIHJldXNlIGl0LCB0 aGVuIGl0IHNob3VsZCBiZSB5b3UgOi0pCj4gCj4+Pj4gK3N0YXRpYyBpbnQgY2RuczNfcmVxX2Vw MF9zZXRfY29uZmlndXJhdGlvbihzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiwKPj4+PiAr CQkJCQkgICBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsX3JlcSkKPj4+PiArewo+Pj4+ICsJ ZW51bSB1c2JfZGV2aWNlX3N0YXRlIGRldmljZV9zdGF0ZSA9IHByaXZfZGV2LT5nYWRnZXQuc3Rh dGU7Cj4+Pj4gKwlzdHJ1Y3QgY2RuczNfZW5kcG9pbnQgKnByaXZfZXA7Cj4+Pj4gKwl1MzIgY29u ZmlnID0gbGUxNl90b19jcHUoY3RybF9yZXEtPndWYWx1ZSk7Cj4+Pj4gKwlpbnQgcmVzdWx0ID0g MDsKPj4+PiArCWludCBpOwo+Pj4+ICsKPj4+PiArCXN3aXRjaCAoZGV2aWNlX3N0YXRlKSB7Cj4+ Pj4gKwljYXNlIFVTQl9TVEFURV9BRERSRVNTOgo+Pj4+ICsJCS8qIENvbmZpZ3VyZSBub24tY29u dHJvbCBFUHMgKi8KPj4+PiArCQlmb3IgKGkgPSAwOyBpIDwgQ0ROUzNfRU5EUE9JTlRTX01BWF9D T1VOVDsgaSsrKSB7Cj4+Pj4gKwkJCXByaXZfZXAgPSBwcml2X2Rldi0+ZXBzW2ldOwo+Pj4+ICsJ CQlpZiAoIXByaXZfZXApCj4+Pj4gKwkJCQljb250aW51ZTsKPj4+PiArCj4+Pj4gKwkJCWlmIChw cml2X2VwLT5mbGFncyAmIEVQX0NMQUlNRUQpCj4+Pj4gKwkJCQljZG5zM19lcF9jb25maWcocHJp dl9lcCk7Cj4+Pj4gKwkJfQo+Pj4+ICsKPj4+PiArCQlyZXN1bHQgPSBjZG5zM19lcDBfZGVsZWdh dGVfcmVxKHByaXZfZGV2LCBjdHJsX3JlcSk7Cj4+Pj4gKwo+Pj4+ICsJCWlmIChyZXN1bHQpCj4+ Pj4gKwkJCXJldHVybiByZXN1bHQ7Cj4+Pj4gKwo+Pj4+ICsJCWlmIChjb25maWcpIHsKPj4+PiAr CQkJY2RuczNfc2V0X2h3X2NvbmZpZ3VyYXRpb24ocHJpdl9kZXYpOwo+Pj4+ICsJCX0gZWxzZSB7 Cj4+Pj4gKwkJCWNkbnMzX2dhZGdldF91bmNvbmZpZyhwcml2X2Rldik7Cj4+Pj4gKwkJCXVzYl9n YWRnZXRfc2V0X3N0YXRlKCZwcml2X2Rldi0+Z2FkZ2V0LAo+Pj4+ICsJCQkJCSAgICAgVVNCX1NU QVRFX0FERFJFU1MpOwo+Pj4KPj4+IHRoaXMgaXMgd3JvbmcuIElmIGFkZHJlc3MgaXMgemVybywg c3RhdGUgc2hvdWxkIGJlIGRlZmF1bHQsIG5vdAo+Pj4gYWRkcmVzc2VkLiBBZGRyZXNzZWQgd291 bGQgYmUgdXNlZCBvbiB0aGUgb3RoZXIgYnJhbmNoIGhlcmUsIHdoZW4geW91Cj4+PiBoYXZlIGEg bm9uLXplcm8gYWRkcmVzcwo+Pgo+PiBJZiBhZGRyZXNzIGlzIHplcm8gdGhlbiBzdGF0ZSBzaG91 bGQgYmUgVVNCX1NUQVRFX0RFRkFVTFQuIERyaXZlcgo+PiBlbnRlcnMgdG8gdGhpcyBicmFuY2gg b25seSBpZiBnYWRnZXQuc3RhdGUgPSBVU0JfU1RBVEVfQUREUkVTUwo+PiAoYWRkcmVzcyAhPSAw KS4gVGhpcyBzdGF0ZSBjYW4gYmUgY2hhbmdlZCBpbiBjb21wb3NpdGUuYyBmaWxlIGFmdGVyCj4+ IGRlbGVnYXRpbmcgcmVxdWVzdCB0byBnYWRnZXQgZHJpdmVyLiBCZWNhdXNlIHRoaXMgc3RhdGUg Y291bGQgYmUKPj4gY2hhbmdlZCBkcml2ZXIgc2ltcGxlIHJlc3RvcmUgVVNCX1NUQVRFX0FERFJF U1MgaWYgY29uZmlnID0gMC4KPiAKPiBuZXZlcm1pbmQsIEkgcmVhZCB0aGlzIGFzIGJlaW5nIHRo ZSBoYW5kbGVyIGZvciBTZXQgQWRkcmVzcy4gVGhpcyBpcyBTZXQKPiBDb25maWcsIGluc3RlYWQu Cj4gCj4+Pj4gKwkJfQo+Pj4+ICsJCWJyZWFrOwo+Pj4+ICsJY2FzZSBVU0JfU1RBVEVfQ09ORklH VVJFRDoKPj4+Cj4+PiB3aGVyZSBkbyB5b3Ugc2V0IHRoaXMgc3RhdGU/Cj4+IEl0J3Mgc2V0IGlu IHNldF9jb25maWcgaW4gY29tcG9zaXRlLmMgZmlsZS4gCj4gCj4gaW5kZWVkCj4gCj4+Pj4gKwlj YXNlIFVTQl9ERVZJQ0VfVEVTVF9NT0RFOgo+Pj4+ICsJCWlmIChzdGF0ZSAhPSBVU0JfU1RBVEVf Q09ORklHVVJFRCB8fCBzcGVlZCA+IFVTQl9TUEVFRF9ISUdIKQo+Pj4+ICsJCQlyZXR1cm4gLUVJ TlZBTDsKPj4+PiArCj4+Pj4gKwkJdG1vZGUgPSBsZTE2X3RvX2NwdShjdHJsLT53SW5kZXgpOwo+ Pj4+ICsKPj4+PiArCQlpZiAoIXNldCB8fCAodG1vZGUgJiAweGZmKSAhPSAwKQo+Pj4+ICsJCQly ZXR1cm4gLUVJTlZBTDsKPj4+PiArCj4+Pj4gKwkJc3dpdGNoICh0bW9kZSA+PiA4KSB7Cj4+Pj4g KwkJY2FzZSBURVNUX0o6Cj4+Pj4gKwkJY2FzZSBURVNUX0s6Cj4+Pj4gKwkJY2FzZSBURVNUX1NF MF9OQUs6Cj4+Pj4gKwkJY2FzZSBURVNUX1BBQ0tFVDoKPj4+PiArCQkJY2RuczNfc2V0X3JlZ2lz dGVyX2JpdCgmcHJpdl9kZXYtPnJlZ3MtPnVzYl9jbWQsCj4+Pj4gKwkJCQkJICAgICAgIFVTQl9D TURfU1RNT0RFIHwKPj4+PiArCQkJCQkgICAgICAgVVNCX1NUU19UTU9ERV9TRUwodG1vZGUgLSAx KSk7Cj4+Pgo+Pj4gSSdtIDkwJSBzdXJlIHRoaXMgd29uJ3Qgd29yay4gVGhlcmUncyBhIHJlYXNv biB3aHkgd2Ugb25seSBlbnRlciB0aGUKPj4+IHJlcXVlc3RlZCB0ZXN0IG1vZGUgZnJvbSBzdGF0 dXMgc3RhZ2UuIEhvdyBoYXZlIHlvdSB0ZXN0ZWQgdGhpcz8KPj4KPj4gRnJvbSBVU0Igc3BlYzoK Pj4gIlRoZSB0cmFuc2l0aW9uIHRvIHRlc3QgbW9kZSBtdXN0IGJlIGNvbXBsZXRlIG5vIGxhdGVy IHRoYW4gMyBtcyBhZnRlciB0aGUgY29tcGxldGlvbiBvZiB0aGUgc3RhdHVzIHN0YWdlIG9mIHRo ZQo+PiByZXF1ZXN0LiIKPiAKPiBleGFjdGx5LCBfYWZ0ZXJfIGNvbXBsZXRpb24gb2Ygc3RhdHVz IHN0YWdlIDotKQo+IAo+PiBCdXQgSSBkb24ndCByZW1lbWJlciBhbnkgaXNzdWVzIHdpdGggdGhp cyB0ZXN0IG9uIG90aGVyIG91cnMKPj4gZHJpdmVycy4gTWF5YmUgc3RhdHVzIHN0YWdlIGlzIGFy bWVkIGluIHRoaXMgY2FzZSBieSBjb250cm9sbGVyLiBJCj4+IGhhdmUgdG8gY29uZmlybSBob3cg aXQgd29ya3Mgd2l0aCBoYXJkd2FyZSB0ZWFtLiAgRHJpdmVyIGRvZXNuJ3Qga25vdwo+PiB3aGVu IHN0YXR1cyBzdGFnZSB3YXMgY29tcGxldGVkLiBXZSBkb24ndCBoYXZlIGFueSBldmVudCBvbiBz dGF0dXMKPj4gc3RhZ2UgY29tcGxldGlvbi4gIEkgaGF2ZW4ndCBjaGVja2VkIGl0IHlldCB3aXRo IHRlc3RlciBvbiB0aGlzCj4+IGRyaXZlci4KPiAKPiBMZXQncyBjb25zaWRlciB0aGUgc2NlbmFy aW8gd2hlcmUgeW91J3JlIHJlcXVlc3RpbmcgVGVzdF9QYWNrZXQgbW9kZS4gSWYKPiB5b3Ugc3Rh cnQgdHJhbnNtaXR0aW5nIHRoZSB0ZXN0IHBhdHRlcm4gZnJvbSBzZXR1cCBzdGFnZSwgaG93IGNh biB5b3UKPiBldmVuIHRyYW5zbWl0IHN0YXR1cyBzdGFnZT8KPiAKPj4+PiArdm9pZCBjZG5zM19n YWRnZXRfdW5jb25maWcoc3RydWN0IGNkbnMzX2RldmljZSAqcHJpdl9kZXYpCj4+Pj4gK3sKPj4+ PiArCS8qIFJFU0VUIENPTkZJR1VSQVRJT04gKi8KPj4+PiArCXdyaXRlbChVU0JfQ09ORl9DRkdS U1QsICZwcml2X2Rldi0+cmVncy0+dXNiX2NvbmYpOwo+Pj4+ICsKPj4+PiArCWNkbnMzX2FsbG93 X2VuYWJsZV9sMShwcml2X2RldiwgMCk7Cj4+Pj4gKwlwcml2X2Rldi0+aHdfY29uZmlndXJlZF9m bGFnID0gMDsKPj4+PiArCXByaXZfZGV2LT5vbmNoaXBfbWVtX2FsbG9jYXRlZF9zaXplID0gMDsK Pj4+Cj4+PiBjbGVhciBhbGwgdGVzdCBtb2Rlcz8gUmVzZXQgZXAwIG1heF9wYWNrZXRfc2l6ZSB0 byA1MTI/Cj4+IFRlc3QgbW9kZSBzaG91bGQgYmUgcmVzZXQgYXV0b21hdGljYWxseSBvbiBleGl0 LiAKPiAKPiBvbiBleGl0PyBXaGljaCBleGl0PyBEaWQgeW91IHRlc3QgdGhpcyBvbiBVU0IgUmVz ZXQ/IERpZCB5b3UgcnVuIFVTQkNWCj4gb24gU3VwZXIgYW5kIEhpZ2ggc3BlZWQgd2l0aCBhbnkg Z2FkZ2V0Pwo+IAo+PiBXIGNhbid0IGNsZWFyIHRoaXMgbW9kZSBpbiByZWdpc3Rlci4gSXQncyBX QUMgKHdyaXRlIG9ubHkgYW5kIGF1dG8gY2xlYXIpICBiaXQuCj4+IFRoaXMgZnVuY3Rpb24gb25s eSByZXNldCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGluIGNvbnRyb2xsZXIgcmVnaXN0ZXIuIAo+ PiBFcDAgbWF4X3BhY2tldF9zaXplIHNob3VsZCBiZSB1bmNoYW5nZWQgaGVyZS4gIEVwMCBtYXhf cGFja2V0IGl0J3MgdXBkYXRlZCBvbiAKPj4gQ29ubmVjdC9EaXNjb25uZWN0L1Jlc2V0IGV2ZW50 cy4gIAo+IAo+IHJpZ2h0LCBhbmQgdGhpcyBpcyBjYWxsZWQgZm9yIGJvdGggcmVzZXQgYW5kIGRp c2Nvbm5lY3QgKHNlZSBiZWxvdykuIElmCj4geW91J3JlIHRlbGxpbmcgbWUgdGhhdCB0ZXN0IG1v ZGUgYW5kIGVwMCB3TWF4UGFja2V0U2l6ZSBpcyBoYW5kbGVkCj4gZWxzZXdoZXJlLCB0aGF0J3Mg ZmluZS4KPiAKPiArCS8qIERpc2Nvbm5lY3Rpb24gZGV0ZWN0ZWQgKi8KPiArCWlmICh1c2JfaXN0 cyAmIChVU0JfSVNUU19ESVMySSB8IFVTQl9JU1RTX0RJU0kpKSB7Cj4gKwkJaWYgKHByaXZfZGV2 LT5nYWRnZXRfZHJpdmVyICYmCj4gKwkJICAgIHByaXZfZGV2LT5nYWRnZXRfZHJpdmVyLT5kaXNj b25uZWN0KSB7Cj4gKwkJCXNwaW5fdW5sb2NrKCZwcml2X2Rldi0+bG9jayk7Cj4gKwkJCXByaXZf ZGV2LT5nYWRnZXRfZHJpdmVyLT5kaXNjb25uZWN0KCZwcml2X2Rldi0+Z2FkZ2V0KTsKPiArCQkJ c3Bpbl9sb2NrKCZwcml2X2Rldi0+bG9jayk7Cj4gKwkJfQo+ICsKPiArCQlwcml2X2Rldi0+Z2Fk Z2V0LnNwZWVkID0gVVNCX1NQRUVEX1VOS05PV047Cj4gKwkJdXNiX2dhZGdldF9zZXRfc3RhdGUo JnByaXZfZGV2LT5nYWRnZXQsIFVTQl9TVEFURV9OT1RBVFRBQ0hFRCk7Cj4gKwkJY2RuczNfZ2Fk Z2V0X3VuY29uZmlnKHByaXZfZGV2KTsKPiArCX0KPiArCj4gKwkvKiByZXNldCovCj4gKwlpZiAo dXNiX2lzdHMgJiAoVVNCX0lTVFNfVVdSRVNJIHwgVVNCX0lTVFNfVUhSRVNJIHwgVVNCX0lTVFNf VTJSRVNJKSkgewo+ICsJCS8qcmVhZCBhZ2FpbiB0byBjaGVjayB0aGUgYWN0dWFsbCBzcGVlZCov Cj4gKwkJc3BlZWQgPSBjZG5zM19nZXRfc3BlZWQocHJpdl9kZXYpOwo+ICsJCXVzYl9nYWRnZXRf c2V0X3N0YXRlKCZwcml2X2Rldi0+Z2FkZ2V0LCBVU0JfU1RBVEVfREVGQVVMVCk7Cj4gKwkJcHJp dl9kZXYtPmdhZGdldC5zcGVlZCA9IHNwZWVkOwo+ICsJCWNkbnMzX2dhZGdldF91bmNvbmZpZyhw cml2X2Rldik7Cj4gKwkJY2RuczNfZXAwX2NvbmZpZyhwcml2X2Rldik7Cj4gKwl9Cj4gCj4gCj4+ IE1heWJlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBjZG5zM19od19yZXNldF9lcHNf Y29uZmlnLiAKPiAKPiBwZXJoYXBzCj4gCj4+IEl0IGRvZXNuJ3QgdW5jb25maWd1cmUgd2hvbGUg Z2FkZ2V0IGJ1dCBvbmx5IHJlc2V0IGVuZHBvaW50cyBjb25maWd1cmF0aW9uIGtlcHQgYnkgCj4+ IGNvbnRyb2xsZXIuCj4+IEkgd2lsbCBjaGFuZ2UgdGhpcyBmdW5jdGlvbi4gCj4gCj4gb2sKPiAK Pj4+PiArc3RhdGljIGlycXJldHVybl90IGNkbnMzX2RldmljZV9pcnFfaGFuZGxlcihpbnQgaXJx LCB2b2lkICpkYXRhKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2Rl djsKPj4+PiArCXN0cnVjdCBjZG5zMyAqY2RucyA9IGRhdGE7Cj4+Pj4gKwlpcnFyZXR1cm5fdCBy ZXQgPSBJUlFfTk9ORTsKPj4+PiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4gKwl1MzIgcmVn Owo+Pj4+ICsKPj4+PiArCXByaXZfZGV2ID0gY2Rucy0+Z2FkZ2V0X2RldjsKPj4+PiArCXNwaW5f bG9ja19pcnFzYXZlKCZwcml2X2Rldi0+bG9jaywgZmxhZ3MpOwo+Pj4KPj4+IHlvdSdyZSBhbHJl YWR5IHJ1bm5pbmcgaW4gaGFyZGlycSBjb250ZXh0LiBXaHkgZG8geW91IG5lZWQgdGhpcyBsb2Nr IGF0Cj4+PiBhbGw/IEkgd291bGQgYmUgYmV0dGVyIHRvIHVzZSB0aGUgaGFyZGlycSBoYW5kbGVy IHRvIG1hc2sgeW91cgo+Pj4gaW50ZXJydXB0cywgc28gdGhleSBkb24ndCBmaXJlIGFnYWluLCB0 aGVuIHVzZWQgdGhlIHRvcC1oYWxmIChzb2Z0aXJxKQo+Pj4gaGFuZGxlciB0byBhY3R1YWxseSBo YW5kbGUgdGhlIGludGVycnVwdHMuCj4+Cj4+IFllcywgc3Bpbl9sb2NrX2lycXNhdmUgaXMgbm90 IG5lY2Vzc2FyeSBoZXJlLiAKPj4KPj4gRG8geW91IG1lYW4gcmVwbGFjaW5nIGRldm1fcmVxdWVz dF9pcnEgd2l0aCBhIHJlcXVlc3RfdGhyZWFkZWRfaXJxID8KPj4gSSBoYXZlIHNpbmdsZSBpbnRl cnJ1cHQgbGluZSBzaGFyZWQgYmV0d2VlbiAgSG9zdCwgRHJpdmVyLCBEUkQvT1RHLiAKPj4gSSdt IG5vdCBzdXJlIGlmIGl0IHdpbGwgd29yayBtb3JlIGVmZmljaWVudGx5LiAKPiAKPiBUaGUgd2hv bGUgaWRlYSBmb3IgcnVubmluZyB2ZXJ5IGxpdHRsZSBpbiBoYXJkaXJxIGNvbnRleHQgaXMgdG8g Z2l2ZSB0aGUKPiBzY2hlZHVsZXIgYSBjaGFuY2UgdG8gZGVjaWRlIHdoYXQgc2hvdWxkIHJ1bi4g VGhpcyBpcyBpbXBvcnRhbnQgdG8KPiByZWR1Y2UgbGF0ZW5jeSB3aGVuIHJ1bm5pbmcgd2l0aCBS VCBwYXRjaHNldCBhcHBsaWVkLCBmb3IKPiBleGFtcGxlLiBIb3dldmVyLCBJJ2xsIGdpdmUgeW91 IHRoYXQsIGl0J3MgYSBtaW5vciByZXF1aXJlbWVudC4gSXQncwo+IGp1c3QgdGhhdCwgdG8gbWUs IGl0J3MgYSBzbWFsbCBkZXRhaWwgdGhhdCdzIGVhc3kgdG8gaW1wbGVtZW50Lgo+IAo+Pj4+ICsJ LyogY2hlY2sgVVNCIGRldmljZSBpbnRlcnJ1cHQgKi8KPj4+PiArCXJlZyA9IHJlYWRsKCZwcml2 X2Rldi0+cmVncy0+dXNiX2lzdHMpOwo+Pj4+ICsJd3JpdGVsKHJlZywgJnByaXZfZGV2LT5yZWdz LT51c2JfaXN0cyk7Cj4+Pj4gKwo+Pj4+ICsJaWYgKHJlZykgewo+Pj4+ICsJCWRldl9kYmcocHJp dl9kZXYtPmRldiwgIklSUTogdXNiX2lzdHM6ICUwOFhcbiIsIHJlZyk7Cj4+Pgo+Pj4gSSBzdHJv bmdseSBhZHZpc2UgYWdhaW5zdCB1c2luZyBkZXZfZGJnKCkgZm9yIGRlYnVnZ2luZy4gRXZlbiBt b3JlIHNvCj4+PiBpbnNpZGUgeW91ciBJUlEgaGFuZGxlci4KPj4gT2ssIEl0J3Mgbm90IG5lY2Vz c2FyeSBpbiB0aGlzIHBsYWNlLCBlc3BlY2lhbGx5LCB0aGF0IHRoZXJlIGlzIGludm9rZWQgdHJh Y2UgcG9pbnQgCj4+IGluc2lkZSBjZG5zM19jaGVja191c2JfaW50ZXJydXB0X3Byb2NlZWQgd2hp Y2ggbWFrZXMgdGhlIHNhbWUuCj4gCj4gb3ZlcmhlYWQuIFRyYWNlcG9pbnRzIGFyZSByZWFsbHks IHJlYWxseSBsb3cgb3ZlcmhlYWQuIFRoZSBzdHJpbmcKPiBkZWNvZGluZyBkb2Vzbid0IGhhcHBl biB1bnRpbCB5b3UgcmVhZCB0aGUgdHJhY2UgZmlsZS4KPgo=