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: [usb-next,v10,3/8] usb: core: add a wrapper for the USB PHYs on the HCD From: Roger Quadros Message-Id: Date: Thu, 22 Mar 2018 14:41:49 +0200 To: Chunfeng Yun Cc: Martin Blumenstingl , linux-usb@vger.kernel.org, mathias.nyman@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, felipe.balbi@linux.intel.com, linux-omap@vger.kernel.org, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, jonathanh@nvidia.com, thierry.reding@gmail.com, stern@rowland.harvard.edu, linux@prisktech.co.nz, Peter.Chen@nxp.com, matthias.bgg@gmail.com, mark.rutland@arm.com, robh+dt@kernel.org, Neil Armstrong , linux-amlogic@lists.infradead.org, yixun.lan@amlogic.com, Keerthy , "Gerlach, Dave" , KISHON VIJAY ABRAHAM List-ID: T24gMjIvMDMvMTggMTA6MTAsIENodW5mZW5nIFl1biB3cm90ZToKPiBIaSwKPiBPbiBXZWQsIDIw MTgtMDMtMjEgYXQgMTM6MzAgKzAyMDAsIFJvZ2VyIFF1YWRyb3Mgd3JvdGU6Cj4+IE1hcnRpbiwK Pj4KPj4gT24gMjEvMDMvMTggMDA6MDEsIE1hcnRpbiBCbHVtZW5zdGluZ2wgd3JvdGU6Cj4+PiBI aSBSb2dlciwgSGkgQ2h1bmZlbmcsCj4+Pgo+Pj4gT24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMTow NCBQTSwgQ2h1bmZlbmcgWXVuIDxjaHVuZmVuZy55dW5AbWVkaWF0ZWsuY29tPiB3cm90ZToKPj4+ PiBIaSBNYXJ0aW4gJiBSb2dlcjoKPj4+Pgo+Pj4+IE9uIE1vbiwgMjAxOC0wMy0xOSBhdCAxNzox MiArMDEwMCwgTWFydGluIEJsdW1lbnN0aW5nbCB3cm90ZToKPj4+Pj4gSGkgUm9nZXIsCj4+Pj4+ Cj4+Pj4+IE9uIE1vbiwgTWFyIDE5LCAyMDE4IGF0IDk6NDkgQU0sIFJvZ2VyIFF1YWRyb3MgPHJv Z2VycUB0aS5jb20+IHdyb3RlOgo+Pj4+Pj4gSGksCj4+Pj4+Pgo+Pj4+Pj4gT24gMTkvMDMvMTgg MDA6MjksIE1hcnRpbiBCbHVtZW5zdGluZ2wgd3JvdGU6Cj4+Pj4+Pj4gSGkgUm9nZXIsCj4+Pj4+ Pj4KPj4+Pj4+PiBPbiBGcmksIE1hciAxNiwgMjAxOCBhdCAzOjMyIFBNLCBSb2dlciBRdWFkcm9z IDxyb2dlcnFAdGkuY29tPiB3cm90ZToKPj4+Pj4+Pj4gK3NvbWUgVEkgZm9sa3MKPj4+Pj4+Pj4K Pj4+Pj4+Pj4gSGkgTWFydGluLAo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBPbiAxOC8wMi8xOCAyMDo0NCwg TWFydGluIEJsdW1lbnN0aW5nbCB3cm90ZToKPj4+Pj4+Pj4+IE1hbnkgU29DIHBsYXRmb3JtcyBo YXZlIHNlcGFyYXRlIGRldmljZXMgZm9yIHRoZSBVU0IgUEhZIHdoaWNoIGFyZQo+Pj4+Pj4+Pj4g cmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBnZW5lcmljIFBIWSBmcmFtZXdvcmsuIFRoZXNlIFBIWXMg aGF2ZSB0byBiZQo+Pj4+Pj4+Pj4gZW5hYmxlZCB0byBtYWtlIHRoZSBVU0IgY29udHJvbGxlciBh Y3R1YWxseSB3b3JrLiBUaGV5IGFsc28gaGF2ZSB0byBiZQo+Pj4+Pj4+Pj4gZGlzYWJsZWQgYWdh aW4gb24gc2h1dGRvd24vc3VzcGVuZC4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBDdXJyZW50bHkgKGF0 IGxlYXN0KSB0aGUgZm9sbG93aW5nIEhDSSBwbGF0Zm9ybSBkcml2ZXJzIGFyZSB1c2luZyBjdXN0 b20KPj4+Pj4+Pj4+IGNvZGUgdG8gb2J0YWluIGFsbCBQSFlzIHZpYSBkZXZpY2V0cmVlIGZvciB0 aGUgcm9vdGh1Yi9jb250cm9sbGVyIGFuZAo+Pj4+Pj4+Pj4gZGlzYWJsZS9lbmFibGUgdGhlbSB3 aGVuIHJlcXVpcmVkOgo+Pj4+Pj4+Pj4gLSBlaGNpLXBsYXRmb3JtLmMgaGFzIGVoY2lfcGxhdGZv cm1fcG93ZXJfe29uLG9mZn0KPj4+Pj4+Pj4+IC0geGhjaS1tdGsuYyBoYXMgeGhjaV9tdGtfcGh5 X3tpbml0LGV4aXQscG93ZXJfb24scG93ZXJfb2ZmfQo+Pj4+Pj4+Pj4gLSBvaGNpLXBsYXRmb3Jt LmMgaGFzIG9oY2lfcGxhdGZvcm1fcG93ZXJfe29uLG9mZn0KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBX aXRoIHRoaXMgbmV3IHdyYXBwZXIgdGhlIFVTQiBQSFlzIGNhbiBiZSBzcGVjaWZpZWQgZGlyZWN0 bHkgaW4gdGhlCj4+Pj4+Pj4+PiBVU0IgY29udHJvbGxlcidzIGRldmljZXRyZWUgbm9kZSAoanVz dCBsaWtlIG9uIHRoZSBkcml2ZXJzIGxpc3RlZAo+Pj4+Pj4+Pj4gYWJvdmUpLiBUaGlzIGFsbG93 cyBTb0NzIGxpa2UgdGhlIEFtbG9naWMgTWVzb24gR1hMIGZhbWlseSB0byBvcGVyYXRlCj4+Pj4+ Pj4+PiBjb3JyZWN0bHkgb25jZSB0aGlzIGlzIHdpcmVkIHVwIGNvcnJlY3RseS4gVGhlc2UgU29D cyB1c2UgYSBkd2MzCj4+Pj4+Pj4+PiBjb250cm9sbGVyIGFuZCByZXF1aXJlIGFsbCBVU0IgUEhZ cyB0byBiZSBpbml0aWFsaXplZCAoaWYgb25lIG9mIHRoZSBVU0IKPj4+Pj4+Pj4+IFBIWXMgaXQg bm90IGluaXRpYWxpemVkIHRoZW4gbm9uZSBvZiBVU0IgcG9ydCB3b3JrcyBhdCBhbGwpLgo+Pj4+ Pj4+Pj4KPj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBCbHVtZW5zdGluZ2wgPG1hcnRp bi5ibHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+Cj4+Pj4+Pj4+PiBUZXN0ZWQtYnk6IFlpeHVu IExhbiA8eWl4dW4ubGFuQGFtbG9naWMuY29tPgo+Pj4+Pj4+Pj4gQ2M6IE5laWwgQXJtc3Ryb25n IDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT4KPj4+Pj4+Pj4+IENjOiBDaHVuZmVuZyBZdW4gPGNo dW5mZW5nLnl1bkBtZWRpYXRlay5jb20+Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoaXMgcGF0Y2ggaXMg YnJlYWtpbmcgbG93IHBvd2VyIGNhc2VzIG9uIFRJIFNvQ3Mgd2hlbiBVU0IgaXMgaW4gaG9zdCBt b2RlLgo+Pj4+Pj4+PiBJJ2xsIGV4cGxhaW4gd2h5IGJlbG93Lgo+Pj4+Pj4+IGJhc2VkIG9uIHlv dXIgZXhwbGFuYXRpb24gYW5kIHJlYWRpbmcgdGhlIFRJIFBIWSBkcml2ZXJzIEkgYW0gYXNzdW1p bmcKPj4+Pj4+PiB0aGF0IHRoZSBhZmZlY3RlZCBTb0NzIGFyZSB1c2luZyB0aGUgInBoeS1vbWFw LXVzYjIiIGRyaXZlcgo+Pj4+Pj4+Cj4+Pj4+PiB5ZXMgYW5kIHBoeS10aS1waXBlMyBhcyB3ZWxs IGkuZS4gInRpLHBoeS11c2IzIiBhbmQgInRpLG9tYXAtdXNiMyIKPj4+Pj4gSSBtaXNzZWQgdGhh dCwgdGhhbmtzCj4+Pj4+Cj4+Pj4+Pj4+PiAtLS0KPj4+Pj4+Pj4+ICBkcml2ZXJzL3VzYi9jb3Jl L01ha2VmaWxlIHwgICAyICstCj4+Pj4+Pj4+PiAgZHJpdmVycy91c2IvY29yZS9waHkuYyAgICB8 IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ Pj4+PiAgZHJpdmVycy91c2IvY29yZS9waHkuaCAgICB8ICAgNyArKwo+Pj4+Pj4+Pj4gIDMgZmls ZXMgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4+Pj4+Pj4+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY29yZS9waHkuYwo+Pj4+Pj4+Pj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jb3JlL3BoeS5oCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9jb3Jl L01ha2VmaWxlCj4+Pj4+Pj4+PiBpbmRleCA5MmM5Y2VmYjQzMTcuLjE4ZTg3NGIwNDQxZSAxMDA2 NDQKPj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvTWFrZWZpbGUKPj4+Pj4+Pj4+ICsr KyBiL2RyaXZlcnMvdXNiL2NvcmUvTWFrZWZpbGUKPj4+Pj4+Pj4+IEBAIC02LDcgKzYsNyBAQAo+ Pj4+Pj4+Pj4gIHVzYmNvcmUteSA6PSB1c2IubyBodWIubyBoY2QubyB1cmIubyBtZXNzYWdlLm8g ZHJpdmVyLm8KPj4+Pj4+Pj4+ICB1c2Jjb3JlLXkgKz0gY29uZmlnLm8gZmlsZS5vIGJ1ZmZlci5v IHN5c2ZzLm8gZW5kcG9pbnQubwo+Pj4+Pj4+Pj4gIHVzYmNvcmUteSArPSBkZXZpby5vIG5vdGlm eS5vIGdlbmVyaWMubyBxdWlya3MubyBkZXZpY2VzLm8KPj4+Pj4+Pj4+IC11c2Jjb3JlLXkgKz0g cG9ydC5vCj4+Pj4+Pj4+PiArdXNiY29yZS15ICs9IHBoeS5vIHBvcnQubwo+Pj4+Pj4+Pj4KPj4+ Pj4+Pj4+ICB1c2Jjb3JlLSQoQ09ORklHX09GKSAgICAgICAgICs9IG9mLm8KPj4+Pj4+Pj4+ICB1 c2Jjb3JlLSQoQ09ORklHX1VTQl9QQ0kpICAgICAgICAgICAgKz0gaGNkLXBjaS5vCj4+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9waHkuYyBiL2RyaXZlcnMvdXNiL2NvcmUv cGh5LmMKPj4+Pj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+Pj4+PiBpbmRleCAwMDAw MDAwMDAwMDAuLjA5YjdjNDNjMGVhNAo+Pj4+Pj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+Pj4+Pj4g KysrIGIvZHJpdmVycy91c2IvY29yZS9waHkuYwo+Pj4+Pj4+Pj4gQEAgLTAsMCArMSwxNTggQEAK Pj4+Pj4+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKPj4+Pj4+Pj4+ ICsvKgo+Pj4+Pj4+Pj4gKyAqIEEgd3JhcHBlciBmb3IgbXVsdGlwbGUgUEhZcyB3aGljaCBwYXNz ZXMgYWxsIHBoeV8qIGZ1bmN0aW9uIGNhbGxzIHRvCj4+Pj4+Pj4+PiArICogbXVsdGlwbGUgKGFj dHVhbCkgUEhZIGRldmljZXMuIFRoaXMgaXMgY29tZXMgaGFuZHkgd2hlbiBpbml0aWFsaXppbmcK Pj4+Pj4+Pj4+ICsgKiBhbGwgUEhZcyBvbiBhIEhDRCBhbmQgdG8ga2VlcCB0aGVtIGFsbCBpbiB0 aGUgc2FtZSBzdGF0ZS4KPj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4gKyAqIENvcHlyaWdodCAoQykg MjAxOCBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3RpbmdsQGdvb2dsZW1haWwu Y29tPgo+Pj4+Pj4+Pj4gKyAqLwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4KPj4+Pj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+Pj4+Pj4+Pj4g KyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L29m Lmg+Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiArI2luY2x1ZGUgInBoeS5oIgo+Pj4+Pj4+Pj4gKwo+ Pj4+Pj4+Pj4gK3N0cnVjdCB1c2JfcGh5X3Jvb3RodWIgewo+Pj4+Pj4+Pj4gKyAgICAgc3RydWN0 IHBoeSAgICAgICAgICAgICAgKnBoeTsKPj4+Pj4+Pj4+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQg ICAgICAgIGxpc3Q7Cj4+Pj4+Pj4+PiArfTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICtzdGF0aWMg c3RydWN0IHVzYl9waHlfcm9vdGh1YiAqdXNiX3BoeV9yb290aHViX2FsbG9jKHN0cnVjdCBkZXZp Y2UgKmRldikKPj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+PiArICAgICBzdHJ1Y3QgdXNiX3BoeV9yb290 aHViICpyb290aHViX2VudHJ5Owo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgcm9vdGh1Yl9l bnRyeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcm9vdGh1Yl9lbnRyeSksIEdGUF9LRVJO RUwpOwo+Pj4+Pj4+Pj4gKyAgICAgaWYgKCFyb290aHViX2VudHJ5KQo+Pj4+Pj4+Pj4gKyAgICAg ICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsg ICAgIElOSVRfTElTVF9IRUFEKCZyb290aHViX2VudHJ5LT5saXN0KTsKPj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4+ICsgICAgIHJldHVybiByb290aHViX2VudHJ5Owo+Pj4+Pj4+Pj4gK30KPj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+ICtzdGF0aWMgaW50IHVzYl9waHlfcm9vdGh1Yl9hZGRfcGh5KHN0cnVjdCBk ZXZpY2UgKmRldiwgaW50IGluZGV4LAo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKPj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+PiAr ICAgICBzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpyb290aHViX2VudHJ5Owo+Pj4+Pj4+Pj4gKyAg ICAgc3RydWN0IHBoeSAqcGh5ID0gZGV2bV9vZl9waHlfZ2V0X2J5X2luZGV4KGRldiwgZGV2LT5v Zl9ub2RlLCBpbmRleCk7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiArICAgICBpZiAoSVNfRVJSX09S X05VTEwocGh5KSkgewo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICBpZiAoIXBoeSB8fCBQVFJfRVJS KHBoeSkgPT0gLUVOT0RFVikKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4g MDsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgZWxzZQo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBQVFJfRVJSKHBoeSk7Cj4+Pj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+PiArICAgICByb290aHViX2VudHJ5ID0gdXNiX3BoeV9yb290aHViX2FsbG9jKGRl dik7Cj4+Pj4+Pj4+PiArICAgICBpZiAoSVNfRVJSKHJvb3RodWJfZW50cnkpKQo+Pj4+Pj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihyb290aHViX2VudHJ5KTsKPj4+Pj4+Pj4+ICsK Pj4+Pj4+Pj4+ICsgICAgIHJvb3RodWJfZW50cnktPnBoeSA9IHBoeTsKPj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4+ICsgICAgIGxpc3RfYWRkX3RhaWwoJnJvb3RodWJfZW50cnktPmxpc3QsIGxpc3QpOwo+ Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgcmV0dXJuIDA7Cj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4gK3N0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9p bml0KHN0cnVjdCBkZXZpY2UgKmRldikKPj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+PiArICAgICBzdHJ1 Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1YjsKPj4+Pj4+Pj4+ICsgICAgIHN0cnVjdCB1 c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4+Pj4+Pj4+PiArICAgICBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkOwo+Pj4+Pj4+Pj4gKyAgICAgaW50IGksIG51bV9waHlzLCBlcnI7Cj4+Pj4+ Pj4+PiArCj4+Pj4+Pj4+PiArICAgICBudW1fcGh5cyA9IG9mX2NvdW50X3BoYW5kbGVfd2l0aF9h cmdzKGRldi0+b2Zfbm9kZSwgInBoeXMiLAo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiI3BoeS1jZWxscyIpOwo+Pj4+Pj4+Pj4gKyAgICAgaWYg KG51bV9waHlzIDw9IDApCj4+Pj4+Pj4+PiArICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+Pj4+ Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgcGh5X3Jvb3RodWIgPSB1c2JfcGh5X3Jvb3RodWJfYWxs b2MoZGV2KTsKPj4+Pj4+Pj4+ICsgICAgIGlmIChJU19FUlIocGh5X3Jvb3RodWIpKQo+Pj4+Pj4+ Pj4gKyAgICAgICAgICAgICByZXR1cm4gcGh5X3Jvb3RodWI7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ PiArICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3BoeXM7IGkrKykgewo+Pj4+Pj4+Pj4gKyAgICAg ICAgICAgICBlcnIgPSB1c2JfcGh5X3Jvb3RodWJfYWRkX3BoeShkZXYsIGksICZwaHlfcm9vdGh1 Yi0+bGlzdCk7Cj4+Pj4+Pj4+PiArICAgICAgICAgICAgIGlmIChlcnIpCj4+Pj4+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgZ290byBlcnJfb3V0Owo+Pj4+Pj4+Pj4gKyAgICAgfQo+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgaGVhZCA9ICZwaHlfcm9vdGh1Yi0+bGlzdDsKPj4+Pj4+Pj4+ ICsKPj4+Pj4+Pj4+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocm9vdGh1Yl9lbnRyeSwgaGVh ZCwgbGlzdCkgewo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICBlcnIgPSBwaHlfaW5pdChyb290aHVi X2VudHJ5LT5waHkpOwo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGUgcGh5X2luaXQoKSBmdW5jdGlvbiBh Y3R1YWxseSBlbmFibGVzIHRoZSBQSFkgY2xvY2tzLgo+Pj4+Pj4+PiBJdCBzaG91bGQgYmUgbW92 ZWQgdG8gdGhlIHVzYl9waHlfcm9vdGh1Yl9leGl0KCkgcm91dGluZSBqdXN0IGJlZm9yZSBjYWxs aW5nIHBoeV9wb3dlcl9vbigpLgo+Pj4+Pj4+IGRvIHlvdSBtZWFuIHRoYXQgcGh5X2luaXQgc2hv dWxkIGJlIG1vdmVkIHRvIHVzYl9waHlfcm9vdGh1Yl9wb3dlcl9vbgo+Pj4+Pj4+IChqdXN0IGJl Zm9yZSBwaHlfcG93ZXJfb24gaXMgY2FsbGVkIHdpdGhpbiB1c2JfcGh5X3Jvb3RodWJfcG93ZXJf b24pPwo+Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gWWVzLgo+Pj4+Pj4KPj4+Pj4+PiBhbiBlYXJsaWVy IHZlcnNpb24gb2YgbXkgcGF0Y2ggZGlkIGV4YWN0bHkgdGhpcywgYnV0IGl0IGNhdXNlZAo+Pj4+ Pj4+IHByb2JsZW1zIGR1cmluZyBhIHN1c3BlbmQvcmVzdW1lIGN5Y2xlIG9uIE1lZGlhdGVrIGRl dmljZXMKPj4+Pj4+PiBDaHVuZmVuZyBZdW4gcmVwb3J0ZWQgdGhhdCBpc3N1ZSBoZXJlIFswXSwg cXVvdGUgZnJvbSB0aGF0IG1haWwgZm9yCj4+Pj4+Pj4gZWFzaWVyIHJlYWRpbmc6Cj4+Pj4+Pj4g IkluIG9yZGVyIHRvIGtlZXAgbGluayBzdGF0ZSBvbiBtdDgxNzMsIHdlIGp1c3QgcG93ZXIgb2Zm IGFsbCBwaHlzKG5vdAo+Pj4+Pj4+IGV4aXQpIHdoZW4gc3lzdGVtIGVudGVyIHN1c3BlbmQsIHRo ZW4gcG93ZXIgb24gdGhlbSBhZ2FpbiAobmVlZG4ndAo+Pj4+Pj4+IGluaXQsIG90aGVyd2lzZSBk ZXZpY2Ugd2lsbCBiZSBkaXNjb25uZWN0ZWQpIHdoZW4gc3lzdGVtIHJlc3VtZSwgdGhpcwo+Pj4+ Pj4+IGNhbiBhdm9pZCByZS1lbnVtZXJhdGluZyBkZXZpY2UuIgo+Pj4+Pj4+Cj4+Pj4+Pj4+PiAr ICAgICAgICAgICAgIGlmIChlcnIpCj4+Pj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZ290 byBlcnJfZXhpdF9waHlzOwo+Pj4+Pj4+Pj4gKyAgICAgfQo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4g KyAgICAgcmV0dXJuIHBoeV9yb290aHViOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gK2Vycl9leGl0 X3BoeXM6Cj4+Pj4+Pj4+PiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVy c2Uocm9vdGh1Yl9lbnRyeSwgaGVhZCwgbGlzdCkKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgcGh5 X2V4aXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICtlcnJfb3V0 Ogo+Pj4+Pj4+Pj4gKyAgICAgcmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4+Pj4+Pj4+ICt9Cj4+Pj4+ Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwodXNiX3BoeV9yb290aHViX2luaXQpOwo+Pj4+Pj4+Pj4g Kwo+Pj4+Pj4+Pj4gK2ludCB1c2JfcGh5X3Jvb3RodWJfZXhpdChzdHJ1Y3QgdXNiX3BoeV9yb290 aHViICpwaHlfcm9vdGh1YikKPj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+PiArICAgICBzdHJ1Y3QgdXNi X3BoeV9yb290aHViICpyb290aHViX2VudHJ5Owo+Pj4+Pj4+Pj4gKyAgICAgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZDsKPj4+Pj4+Pj4+ICsgICAgIGludCBlcnIsIHJldCA9IDA7Cj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+PiArICAgICBpZiAoIXBoeV9yb290aHViKQo+Pj4+Pj4+Pj4gKyAgICAgICAgICAg ICByZXR1cm4gMDsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsgICAgIGhlYWQgPSAmcGh5X3Jvb3Ro dWItPmxpc3Q7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5 KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgZXJy ID0gcGh5X2V4aXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAg aWYgKGVycikKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXQgPSByZXQ7Cj4+Pj4+ Pj4+PiArICAgICB9Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IHBoeV9leGl0KCkgc2hvdWxkIGJlIG1vdmVk IHRvIHVzYl9waHlfcm9vdGh1Yl9wb3dlcm9mZigpIGp1c3QgYWZ0ZXIgY2FsbGluZyBwaHlfcG93 ZXJfb2ZmKCkuCj4+Pj4+Pj4gaWYgSSB1bmRlcnN0b29kIENodW5mZW5nIFl1biBjb3JyZWN0bHkg dGhpcyB3aWxsIHJlcXVpcmUKPj4+Pj4+PiByZS1lbnVtZXJhdGlvbiBvZiB0aGUgVVNCIGRldmlj ZXMgYWZ0ZXIgYSBzdXNwZW5kL3Jlc3VtZSBjeWNsZSBvbgo+Pj4+Pj4+IE1lZGlhdGVrIFNvQ3MK Pj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IE9LLiBJIHN1cHBvc2UgdGhhdCB0aGVyZSBhcmUgMiBjYXNl cwo+Pj4+Pj4gMSkgTWVkaWF0ZWsncyBjYXNlOiBVU0IgY29udHJvbGxlciBjb250ZXh0IHJldGFp bmVkIGFjcm9zcyBzdXNwZW5kL3Jlc3VtZS4KPj4+Pj4+IFJlbW90ZSB3YWtldXAgcHJvYmFibHkg cmVxdWlyZWQuCj4+Pj4+PiBObyByZS1lbnVtZXJhdGlvbiBwcmVmZXJyZWQgYWZ0ZXIgcmVzdW1l LiBwaHlfZXhpdCgpL3BoeV9pbml0KCkgbXVzdCBub3QgYmUgY2FsbGVkCj4+Pj4+PiBkdXJpbmcg c3VzcGVuZC9yZXN1bWUgdG8ga2VlcCBQSFkgbGluayBhY3RpdmUuCj4+Pj4+IERvY3VtZW50YXRp b24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvbWVkaWF0ZWssbXR1My50eHQgaW5kZWVkIHNob3dz Cj4+Pj4+IHRoYXQgdGhlIHBhcmVudCBvZiB0aGUgVVNCIGNvbnRyb2xsZXIgY2FuIGJlIG1hcmtl ZCBhcyAid2FrZXVwLXNvdXJjZSIKPj4+Pj4KPj4+Pj4+IDIpIFRJJ3MgY2FzZTogbG93IHBvd2Vy IGltcG9ydGFudDogVVNCIGNvbnRleHQgaXMgbG9zdCwgT0sgdG8gcmUtZW51bWVyYXRlLgo+Pj4+ Pj4gcGh5X2V4aXQoKS9waHlfaW5pdCgpIG11c3QgYmUgY2FsbGVkIGR1cmluZyBzdXNwZW5kL3Jl c3VtZS4KPj4+Pj4gQUNLCj4+Pj4+Cj4+Pj4+Pj4+IFdpdGggdGhhdCB0aGVyZSBpcyBub3RoaW5n IGVsc2UgYmVpbmcgZG9uZSBoZXJlLiBTaG91bGRuJ3Qgd2UgYmUgZG9pbmcgdGhlIGVxdWl2YWxl bnQgb2YKPj4+Pj4+Pj4gdXNiX3BoeV9yb290aHViX2RlbF9waHkoKSBhbmQgdXNiX3BoeV9yb290 aHViX2ZyZWUoKSBoZXJlPwo+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgcmV0 dXJuIHJldDsKPj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwodXNiX3Bo eV9yb290aHViX2V4aXQpOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gK2ludCB1c2JfcGh5X3Jvb3Ro dWJfcG93ZXJfb24oc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpCj4+Pj4+Pj4+ PiArewo+Pj4+Pj4+Pj4gKyAgICAgc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRy eTsKPj4+Pj4+Pj4+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQ7Cj4+Pj4+Pj4+PiArICAg ICBpbnQgZXJyOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgaWYgKCFwaHlfcm9vdGh1YikK Pj4+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+PiAr ICAgICBoZWFkID0gJnBoeV9yb290aHViLT5saXN0Owo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAg ICAgbGlzdF9mb3JfZWFjaF9lbnRyeShyb290aHViX2VudHJ5LCBoZWFkLCBsaXN0KSB7Cj4+Pj4+ Pj4+PiArICAgICAgICAgICAgIGVyciA9IHBoeV9wb3dlcl9vbihyb290aHViX2VudHJ5LT5waHkp Owo+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+Pj4+Pj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIGdvdG8gZXJyX291dDsKPj4+Pj4+Pj4+ICsgICAgIH0KPj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4+ICsgICAgIHJldHVybiAwOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gK2Vycl9vdXQ6Cj4+ Pj4+Pj4+PiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1 Yl9lbnRyeSwgaGVhZCwgbGlzdCkKPj4+Pj4+Pj4+ICsgICAgICAgICAgICAgcGh5X3Bvd2VyX29m Zihyb290aHViX2VudHJ5LT5waHkpOwo+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4gKyAgICAgcmV0dXJu IGVycjsKPj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwodXNiX3BoeV9y b290aHViX3Bvd2VyX29uKTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICt2b2lkIHVzYl9waHlfcm9v dGh1Yl9wb3dlcl9vZmYoc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpCj4+Pj4+ Pj4+PiArewo+Pj4+Pj4+Pj4gKyAgICAgc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9l bnRyeTsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsgICAgIGlmICghcGh5X3Jvb3RodWIpCj4+Pj4+ Pj4+PiArICAgICAgICAgICAgIHJldHVybjsKPj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ICsgICAgIGxp c3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShyb290aHViX2VudHJ5LCAmcGh5X3Jvb3RodWItPmxp c3QsIGxpc3QpCj4+Pj4+Pj4+PiArICAgICAgICAgICAgIHBoeV9wb3dlcl9vZmYocm9vdGh1Yl9l bnRyeS0+cGh5KTsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gTm90IGRvaW5nIHRoZSBwaHlfZXhpdCgpIGhl cmUgbGVhdmVzIHRoZSBjbG9ja3MgZW5hYmxlZCBvbiBvdXIgU29DIGFuZAo+Pj4+Pj4+PiB3ZSdy ZSBubyBsb25nZXIgYWJsZSB0byByZWFjaCBsb3cgcG93ZXIgc3RhdGVzIG9uIHN5c3RlbSBzdXNw ZW5kLgo+Pj4+Pj4+IEknbSBub3Qgc3VyZSB3aGVyZSB0aGlzIHByb2JsZW0gc2hvdWxkIGJlIHNv bHZlZDoKPj4+Pj4+PiAtIHNldCBza2lwX3BoeV9pbml0aWFsaXphdGlvbiBpbiBzdHJ1Y3QgdXNi X2hjZCB0byAxIGZvciB0aGUgYWZmZWN0ZWQKPj4+Pj4+PiBUSSBwbGF0Zm9ybXMKPj4+Pj4+Cj4+ Pj4+PiBNYW55IFRJIHBsYXRmb3JtcyBhcmUgYWZmZWN0ZWQsIG9tYXA1KiwgZHJhNyosIGFtNDMq Cj4+Pj4+Pgo+Pj4+Pj4+IC0gZml4IHRoaXMgaW4gdGhlIHVzYl9waHlfcm9vdGh1YiBjb2RlCj4+ Pj4+Pgo+Pj4+Pj4gSSdkIHZvdGUgZm9yIGZpeGluZyBpdCBpbiB0aGUgdXNiX3BoeV9yb290aHVi IGNvZGUuIEhvdz8KPj4+Pj4+IEhvdyBhYm91dCB1c2luZyB0aGUgZGV2aWNlX2Nhbl93YWtldXAo KSB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIGNhbGwgcGh5X2V4aXQoKS9pbml0KCkgb3Igbm90Pwo+ Pj4+Pj4gSWYgdGhlIFVTQiBkZXZpY2UgY2FuJ3Qgd2FrZXVwIHRoZSBzeXN0ZW0gdGhlcmUgaXMg bm8gcG9pbnQgaW4ga2VlcGluZyBpdCBwb3dlcmVkL2Nsb2NrZWQgcmlnaHQ/Cj4+Pj4+IEBDaHVu ZmVuZzogY2FuIHlvdSBjb25maXJtIFJvZ2VyJ3MgaWRlYSB0aGF0IHdlIGNvdWxkIGNhbGwgcGh5 X2V4aXQgaWYKPj4+Pj4gdGhlIGNvbnRyb2xsZXIgaXMgKk5PVCogbWFya2VkIGFzICJ3YWtldXAt c291cmNlIj8KPj4+Pj4gSSBhbSBhbHNvIG5vdCBzdXJlIGlmIGl0IHdvdWxkIHdvcmssIHNpbmNl IHRoZSAid2FrZXVwLXNvdXJjZSIKPj4+Pj4gcHJvcGVydHkgaXMgZGVmaW5lZCBvbiB0aGUgVVNC IGNvbnRyb2xsZXIncyBwYXJlbnQgbm9kZSBpbiBjYXNlIG9mIHRoZQo+Pj4+PiBNZWRpYXRlayBN VFUzIChNZWRpYXRlayBVU0IzLjAgRFJEKSBjb250cm9sbGVyCj4+Pj4+Cj4+Pj4gVmVyeSBzb3Jy eSwgSSBmb3Jnb3QgdGhhdCBNVFUzICYgeEhDSSBkcml2ZXJzIGFsd2F5cyBzZXQgdGhlbSBhcyB3 YWtldXAKPj4+PiBkZXZpY2VzIGJ5IGRldmljZV9pbml0X3dha2V1cChkZXYsIHRydWUpLGJ1dCBu b3QgZGVwZW5kZW50IG9uCj4+Pj4gIndha2V1cC1zb3VyY2UiIHByb3BlcnR5LCBzbyBtYXliZSB3 ZSBjYW4gdXNlIGRldmljZV9jYW5fd2FrZXVwKCkgdG8KPj4+PiBkZWNpZGUgd2hldGhlciBjYWxs IHBoeV9leGl0KCkvaW5pdCgpIG9yIG5vdC4KPj4+IHRoZSA2NC1iaXQgQW1sb2dpYyBNZXNvbiBH WEwvR1hNIFNvQ3MgZG9uJ3Qgc3VwcG9ydCBzdXNwZW5kL3Jlc3VtZQo+Pj4geWV0LCBzbyBJIGNh bm5vdCB0ZXN0IHRoaXMKPj4+IGJhc2VkIG9uIHRoaXMgc3VnZ2VzdGlvbiBJIHRocmV3IHVwIHR3 byBwYXRjaGVzIHdoaWNoIGFyZSAqY29tcGlsZQo+Pj4gdGVzdGVkIG9ubHkqIGJhc2VkIG9uIEdy ZWcncyB1c2ItbmV4dCBicmFuY2gKPj4+IHlvdSBjYW4gZmluZCB0aGVtIGhlcmU6IFswXSAoYXMg d2VsbCBhcyBhdHRhY2hlZCB0byB0aGlzIG1haWwpCj4+Pgo+Pj4gQENodW5mZW5nOiBjYW4geW91 IHBsZWFzZSB0ZXN0IHRoaXMgb24gb25lIG9mIHlvdXIgTWVkaWF0ZWsgU29Dcz8KPj4+IEBSb2dl cjogY2FuIHlvdSBwbGVhc2UgdGVzdCB0aGlzIG9uIGEgVEkgU29DPwo+Pj4KPj4+IChhcG9sb2dp ZXMgaW4gYWR2YW5jZSBpZiB0aGVzZSBwYXRjaGVzIGRvbid0IHdvcmspCj4+Pgo+Pj4gcGxlYXNl IG5vdGUgdGhhdCBJIHdvbid0IGhhdmUgYWNjZXNzIHRvIG15IGNvbXB1dGVyIHVudGlsIFNhdHVy ZGF5Lgo+Pj4gaWYgdGhlc2UgcGF0Y2hlcyBuZWVkIHRvIGJlIHJld3JpdHRlbi9yZXBsYWNlZC9l dGMuIHRoZW4gZmVlbCBmcmVlIHRvCj4+PiBzZW5kIHlvdXIgb3duIHZlcnNpb24gdG8gdGhlIGxp c3QKPj4KPj4gSGFkIHRvIGRvIHRoZSBmb2xsb3dpbmcgdG8gYnVpbGQKPj4KPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5jCj4+IGlu ZGV4IDZkNGE0MTkuLjI4ODQ2MDcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaGNk LmMKPj4gKysrIGIvZHJpdmVycy91c2IvY29yZS9oY2QuYwo+PiBAQCAtMjI2Miw3ICsyMjYyLDcg QEAgaW50IGhjZF9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2RldmljZSAqcmhkZXYsIHBtX21lc3Nh Z2VfdCBtc2cpCj4+ICAJCWhjZC0+c3RhdGUgPSBIQ19TVEFURV9TVVNQRU5ERUQ7Cj4+ICAKPj4g IAkJaWYgKCFQTVNHX0lTX0FVVE8obXNnKSkKPj4gLQkJCXVzYl9waHlfcm9vdGh1Yl9zdXNwZW5k KGhjZC0+cGh5X3Jvb3RodWIpOwo+PiArCQkJdXNiX3BoeV9yb290aHViX3N1c3BlbmQoJnJoZGV2 LT5kZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwo+IAo+IFRyeSB0byB1c2UgaGNkLT5zZWxmLmNvbnRy b2xsZXIgaW5zdGVhZCBvZiAmcmhkZXYtPmRldjsKCkFjdHVhbGx5IGl0IHNob3VsZCBiZSBoY2Qt PnNlbGYuc3lzZGV2Lgo+IAo+PiAgCj4+ICAJCS8qIERpZCB3ZSByYWNlIHdpdGggYSByb290LWh1 YiB3YWtldXAgZXZlbnQ/ICovCj4+ICAJCWlmIChyaGRldi0+ZG9fcmVtb3RlX3dha2V1cCkgewo+ PiBAQCAtMjMwMiw3ICsyMzAyLDcgQEAgaW50IGhjZF9idXNfcmVzdW1lKHN0cnVjdCB1c2JfZGV2 aWNlICpyaGRldiwgcG1fbWVzc2FnZV90IG1zZykKPj4gIAl9Cj4+ICAKPj4gIAlpZiAoIVBNU0df SVNfQVVUTyhtc2cpKSB7Cj4+IC0JCXN0YXR1cyA9IHVzYl9waHlfcm9vdGh1Yl9yZXN1bWUoaGNk LT5waHlfcm9vdGh1Yik7Cj4+ICsJCXN0YXR1cyA9IHVzYl9waHlfcm9vdGh1Yl9yZXN1bWUoJnJo ZGV2LT5kZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwo+IGRpdHRvCj4+ICAJCWlmIChzdGF0dXMpCj4+ ICAJCQlyZXR1cm4gc3RhdHVzOwo+PiAgCX0KPj4gQEAgLTIzNDQsNyArMjM0NCw3IEBAIGludCBo Y2RfYnVzX3Jlc3VtZShzdHJ1Y3QgdXNiX2RldmljZSAqcmhkZXYsIHBtX21lc3NhZ2VfdCBtc2cp Cj4+ICAJCX0KPj4gIAl9IGVsc2Ugewo+PiAgCQloY2QtPnN0YXRlID0gb2xkX3N0YXRlOwo+PiAt CQl1c2JfcGh5X3Jvb3RodWJfc3VzcGVuZChoY2QtPnBoeV9yb290aHViKTsKPj4gKwkJdXNiX3Bo eV9yb290aHViX3N1c3BlbmQoJnJoZGV2LT5kZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwo+IGRpdHRv Cj4+ICAJCWRldl9kYmcoJnJoZGV2LT5kZXYsICJidXMgJXMgZmFpbCwgZXJyICVkXG4iLAo+PiAg CQkJCSJyZXN1bWUiLCBzdGF0dXMpOwo+PiAgCQlpZiAoc3RhdHVzICE9IC1FU0hVVERPV04pCj4+ Cj4+Cj4+IEFuZCB0aGUgZm9sbG93aW5nIHRvIGZpeCBydW50aW1lIGlzc3Vlcwo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9waHkuYyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMK Pj4gaW5kZXggMmVjYTM3MS4uODU5ODkwNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy91c2IvY29y ZS9waHkuYwo+PiArKysgYi9kcml2ZXJzL3VzYi9jb3JlL3BoeS5jCj4+IEBAIC0zMiw5ICszMiw5 IEBAIHN0YXRpYyBpbnQgdXNiX3BoeV9yb290aHViX2FkZF9waHkoc3RydWN0IGRldmljZSAqZGV2 LCBpbnQgaW5kZXgsCj4+ICAJCQlyZXR1cm4gUFRSX0VSUihwaHkpOwo+PiAgCX0KPj4gIAo+PiAt CXJvb3RodWJfZW50cnkgPSB1c2JfcGh5X3Jvb3RodWJfYWxsb2MoZGV2KTsKPj4gLQlpZiAoSVNf RVJSKHJvb3RodWJfZW50cnkpKQo+PiAtCQlyZXR1cm4gUFRSX0VSUihyb290aHViX2VudHJ5KTsK Pj4gKwlyb290aHViX2VudHJ5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpyb290aHViX2Vu dHJ5KSwgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCFyb290aHViX2VudHJ5KQo+PiArCQlyZXR1cm4g LUVOT01FTTsKPj4gIAo+PiAgCXJvb3RodWJfZW50cnktPnBoeSA9IHBoeTsKPj4gIAo+PiBAQCAt MTYyLDcgKzE2Miw3IEBAIGludCB1c2JfcGh5X3Jvb3RodWJfc3VzcGVuZChzdHJ1Y3QgZGV2aWNl ICpkZXYsCj4+ICAJdXNiX3BoeV9yb290aHViX3Bvd2VyX29mZihwaHlfcm9vdGh1Yik7Cj4+ICAK Pj4gIAkvKiBrZWVwIHRoZSBQSFlzIGluaXRpYWxpemVkIHNvIHRoZSBkZXZpY2UgY2FuIHdha2Ug dXAgdGhlIHN5c3RlbSAqLwo+PiAtCWlmIChkZXZpY2VfY2FuX3dha2V1cChkZXYpKQo+PiArCWlm IChkZXZpY2VfbWF5X3dha2V1cChkZXYpKQo+IEl0J3Mgb2sKCkkgaGFkIHRvIGFkZGl0aW9uYWxs eSBmaXggdXNiX3BoeV9yb290aHViX3Jlc3VtZSgpIGZyb20KCWlmIChkZXZpY2VfY2FuX3dha2V1 cChkZXYpKQp0bwoJaWYgKCFkZXZpY2VfbWF5X3dha2V1cChkZXYpKQoKPj4gIAkJcmV0dXJuIDA7 Cj4+ICAKPj4gIAlyZXR1cm4gdXNiX3BoeV9yb290aHViX2V4aXQocGh5X3Jvb3RodWIpOwo+Pgo+ Pgo+PiBIZXJlIGFyZSBteSBvYmVydmF0aW9ucwo+PiAtIGlmIHdha2V1cCBpcyBkaXNhYmxlZCBp dCB3b3JrcyBmaW5lIGFzIGV4cGVjdGVkLCBwaHlfZXhpdCgpIGlzIGNhbGxlZCBhbmQgSSdtIGFi bGUgdG8gcmVhY2gKPj4gbG93IHBvd2VyIHN0YXRlcy4KPj4KPj4gLSBpZiB3YWtldXAgaXMgZW5h YmxlZCAoL3N5cy9idXMvdXNiL2RldmljZS91c2IyL3Bvd2VyL3dha2V1cCksIHRoZW4gaGNkX2J1 c19zdXNwZW5kKCkgaXMgbmV2ZXIgY2FsbGVkCj4+IGFuZCBzbyBwaHlfcG93ZXJfb2ZmIHdvbid0 IGJlIGNhbGxlZCBlaXRoZXIuCj4+Cj4+IFRoaXMgbWVhbnMgdGhhdCB0aGUgZGV2aWNlX21heV93 YWtldXAoKSBjaGVjayBpcyByZWR1bmRhbnQuIFNvcnJ5IGZvciBzdWdnZXN0aW5nIHRoaXMuCj4g WW91IG1heWJlIHVzZSBhIHdyb25nIGRldmljZS4KClllcywgYWZ0ZXIgdXNpbmcgdGhlIGNvcnJl Y3QgZGV2aWNlIEkgZG9uJ3Qgc2VlIHRoZSBwcm9ibGVtLgoKQ2FuIHlvdSBwbGVhc2UgdHJ5IHRo ZSBiZWxvdyBwYXRjaCBvbiB0b3Agb2YgdGhlIDIgUGF0Y2hlcyB0aGF0IE1hcnRpbiBzZW50IGFu ZCB0aGUgbmV3IHBhdGNoIHlvdSBzZW50PwpPbmNlIHlvdSBjb25maXJtIGl0IHdvcmtzIGZvciB5 b3UgSSBjYW4gc2VuZCB0aGUgMiBwYXRjaGVzIG9mZmljaWFsbHkuCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvY29yZS9oY2QuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKaW5kZXggNmQ0YTQx OS4uMDRjYzQ1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9oY2QuYworKysgYi9kcml2 ZXJzL3VzYi9jb3JlL2hjZC5jCkBAIC0yMjYyLDcgKzIyNjIsNyBAQCBpbnQgaGNkX2J1c19zdXNw ZW5kKHN0cnVjdCB1c2JfZGV2aWNlICpyaGRldiwgcG1fbWVzc2FnZV90IG1zZykKIAkJaGNkLT5z dGF0ZSA9IEhDX1NUQVRFX1NVU1BFTkRFRDsKIAogCQlpZiAoIVBNU0dfSVNfQVVUTyhtc2cpKQot CQkJdXNiX3BoeV9yb290aHViX3N1c3BlbmQoaGNkLT5waHlfcm9vdGh1Yik7CisJCQl1c2JfcGh5 X3Jvb3RodWJfc3VzcGVuZChoY2QtPnNlbGYuc3lzZGV2LCBoY2QtPnBoeV9yb290aHViKTsKIAog CQkvKiBEaWQgd2UgcmFjZSB3aXRoIGEgcm9vdC1odWIgd2FrZXVwIGV2ZW50PyAqLwogCQlpZiAo cmhkZXYtPmRvX3JlbW90ZV93YWtldXApIHsKQEAgLTIzMDIsNyArMjMwMiw3IEBAIGludCBoY2Rf YnVzX3Jlc3VtZShzdHJ1Y3QgdXNiX2RldmljZSAqcmhkZXYsIHBtX21lc3NhZ2VfdCBtc2cpCiAJ fQogCiAJaWYgKCFQTVNHX0lTX0FVVE8obXNnKSkgewotCQlzdGF0dXMgPSB1c2JfcGh5X3Jvb3Ro dWJfcmVzdW1lKGhjZC0+cGh5X3Jvb3RodWIpOworCQlzdGF0dXMgPSB1c2JfcGh5X3Jvb3RodWJf cmVzdW1lKGhjZC0+c2VsZi5zeXNkZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwogCQlpZiAoc3RhdHVz KQogCQkJcmV0dXJuIHN0YXR1czsKIAl9CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBpbnQgaGNkX2J1 c19yZXN1bWUoc3RydWN0IHVzYl9kZXZpY2UgKnJoZGV2LCBwbV9tZXNzYWdlX3QgbXNnKQogCQl9 CiAJfSBlbHNlIHsKIAkJaGNkLT5zdGF0ZSA9IG9sZF9zdGF0ZTsKLQkJdXNiX3BoeV9yb290aHVi X3N1c3BlbmQoaGNkLT5waHlfcm9vdGh1Yik7CisJCXVzYl9waHlfcm9vdGh1Yl9zdXNwZW5kKGhj ZC0+c2VsZi5zeXNkZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwogCQlkZXZfZGJnKCZyaGRldi0+ZGV2 LCAiYnVzICVzIGZhaWwsIGVyciAlZFxuIiwKIAkJCQkicmVzdW1lIiwgc3RhdHVzKTsKIAkJaWYg KHN0YXR1cyAhPSAtRVNIVVRET1dOKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9waHku YyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMKaW5kZXggMmVjYTM3MS4uMjVmZTcyOSAxMDA2NDQK LS0tIGEvZHJpdmVycy91c2IvY29yZS9waHkuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL3BoeS5j CkBAIC0zMiw5ICszMiw5IEBAIHN0YXRpYyBpbnQgdXNiX3BoeV9yb290aHViX2FkZF9waHkoc3Ry dWN0IGRldmljZSAqZGV2LCBpbnQgaW5kZXgsCiAJCQlyZXR1cm4gUFRSX0VSUihwaHkpOwogCX0K IAotCXJvb3RodWJfZW50cnkgPSB1c2JfcGh5X3Jvb3RodWJfYWxsb2MoZGV2KTsKLQlpZiAoSVNf RVJSKHJvb3RodWJfZW50cnkpKQotCQlyZXR1cm4gUFRSX0VSUihyb290aHViX2VudHJ5KTsKKwly b290aHViX2VudHJ5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpyb290aHViX2VudHJ5KSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFyb290aHViX2VudHJ5KQorCQlyZXR1cm4gLUVOT01FTTsKIAog CXJvb3RodWJfZW50cnktPnBoeSA9IHBoeTsKIApAQCAtMTYyLDcgKzE2Miw3IEBAIGludCB1c2Jf cGh5X3Jvb3RodWJfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJdXNiX3BoeV9yb290aHVi X3Bvd2VyX29mZihwaHlfcm9vdGh1Yik7CiAKIAkvKiBrZWVwIHRoZSBQSFlzIGluaXRpYWxpemVk IHNvIHRoZSBkZXZpY2UgY2FuIHdha2UgdXAgdGhlIHN5c3RlbSAqLwotCWlmIChkZXZpY2VfY2Fu X3dha2V1cChkZXYpKQorCWlmIChkZXZpY2VfbWF5X3dha2V1cChkZXYpKQogCQlyZXR1cm4gMDsK IAogCXJldHVybiB1c2JfcGh5X3Jvb3RodWJfZXhpdChwaHlfcm9vdGh1Yik7CkBAIC0xNzUsNyAr MTc1LDcgQEAgaW50IHVzYl9waHlfcm9vdGh1Yl9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LAog CWludCBlcnI7CiAKIAkvKiBpZiB0aGUgZGV2aWNlIGNhbid0IHdha2UgdXAgdGhlIHN5c3RlbSBf ZXhpdCB3YXMgY2FsbGVkICovCi0JaWYgKGRldmljZV9jYW5fd2FrZXVwKGRldikpIHsKKwlpZiAo IWRldmljZV9tYXlfd2FrZXVwKGRldikpIHsKIAkJZXJyID0gdXNiX3BoeV9yb290aHViX2luaXQo cGh5X3Jvb3RodWIpOwogCQlpZiAoZXJyKQogCQkJcmV0dXJuIGVycjsK