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: <613ebb74-6167-56bc-6fa0-2b3c9876ccaa@ti.com> Date: Wed, 21 Mar 2018 13:30:43 +0200 To: Martin Blumenstingl , Chunfeng Yun Cc: 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: TWFydGluLAoKT24gMjEvMDMvMTggMDA6MDEsIE1hcnRpbiBCbHVtZW5zdGluZ2wgd3JvdGU6Cj4g SGkgUm9nZXIsIEhpIENodW5mZW5nLAo+IAo+IE9uIFR1ZSwgTWFyIDIwLCAyMDE4IGF0IDE6MDQg UE0sIENodW5mZW5nIFl1biA8Y2h1bmZlbmcueXVuQG1lZGlhdGVrLmNvbT4gd3JvdGU6Cj4+IEhp IE1hcnRpbiAmIFJvZ2VyOgo+Pgo+PiBPbiBNb24sIDIwMTgtMDMtMTkgYXQgMTc6MTIgKzAxMDAs IE1hcnRpbiBCbHVtZW5zdGluZ2wgd3JvdGU6Cj4+PiBIaSBSb2dlciwKPj4+Cj4+PiBPbiBNb24s IE1hciAxOSwgMjAxOCBhdCA5OjQ5IEFNLCBSb2dlciBRdWFkcm9zIDxyb2dlcnFAdGkuY29tPiB3 cm90ZToKPj4+PiBIaSwKPj4+Pgo+Pj4+IE9uIDE5LzAzLzE4IDAwOjI5LCBNYXJ0aW4gQmx1bWVu c3RpbmdsIHdyb3RlOgo+Pj4+PiBIaSBSb2dlciwKPj4+Pj4KPj4+Pj4gT24gRnJpLCBNYXIgMTYs IDIwMTggYXQgMzozMiBQTSwgUm9nZXIgUXVhZHJvcyA8cm9nZXJxQHRpLmNvbT4gd3JvdGU6Cj4+ Pj4+PiArc29tZSBUSSBmb2xrcwo+Pj4+Pj4KPj4+Pj4+IEhpIE1hcnRpbiwKPj4+Pj4+Cj4+Pj4+ PiBPbiAxOC8wMi8xOCAyMDo0NCwgTWFydGluIEJsdW1lbnN0aW5nbCB3cm90ZToKPj4+Pj4+PiBN YW55IFNvQyBwbGF0Zm9ybXMgaGF2ZSBzZXBhcmF0ZSBkZXZpY2VzIGZvciB0aGUgVVNCIFBIWSB3 aGljaCBhcmUKPj4+Pj4+PiByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGdlbmVyaWMgUEhZIGZyYW1l d29yay4gVGhlc2UgUEhZcyBoYXZlIHRvIGJlCj4+Pj4+Pj4gZW5hYmxlZCB0byBtYWtlIHRoZSBV U0IgY29udHJvbGxlciBhY3R1YWxseSB3b3JrLiBUaGV5IGFsc28gaGF2ZSB0byBiZQo+Pj4+Pj4+ IGRpc2FibGVkIGFnYWluIG9uIHNodXRkb3duL3N1c3BlbmQuCj4+Pj4+Pj4KPj4+Pj4+PiBDdXJy ZW50bHkgKGF0IGxlYXN0KSB0aGUgZm9sbG93aW5nIEhDSSBwbGF0Zm9ybSBkcml2ZXJzIGFyZSB1 c2luZyBjdXN0b20KPj4+Pj4+PiBjb2RlIHRvIG9idGFpbiBhbGwgUEhZcyB2aWEgZGV2aWNldHJl ZSBmb3IgdGhlIHJvb3RodWIvY29udHJvbGxlciBhbmQKPj4+Pj4+PiBkaXNhYmxlL2VuYWJsZSB0 aGVtIHdoZW4gcmVxdWlyZWQ6Cj4+Pj4+Pj4gLSBlaGNpLXBsYXRmb3JtLmMgaGFzIGVoY2lfcGxh dGZvcm1fcG93ZXJfe29uLG9mZn0KPj4+Pj4+PiAtIHhoY2ktbXRrLmMgaGFzIHhoY2lfbXRrX3Bo eV97aW5pdCxleGl0LHBvd2VyX29uLHBvd2VyX29mZn0KPj4+Pj4+PiAtIG9oY2ktcGxhdGZvcm0u YyBoYXMgb2hjaV9wbGF0Zm9ybV9wb3dlcl97b24sb2ZmfQo+Pj4+Pj4+Cj4+Pj4+Pj4gV2l0aCB0 aGlzIG5ldyB3cmFwcGVyIHRoZSBVU0IgUEhZcyBjYW4gYmUgc3BlY2lmaWVkIGRpcmVjdGx5IGlu IHRoZQo+Pj4+Pj4+IFVTQiBjb250cm9sbGVyJ3MgZGV2aWNldHJlZSBub2RlIChqdXN0IGxpa2Ug b24gdGhlIGRyaXZlcnMgbGlzdGVkCj4+Pj4+Pj4gYWJvdmUpLiBUaGlzIGFsbG93cyBTb0NzIGxp a2UgdGhlIEFtbG9naWMgTWVzb24gR1hMIGZhbWlseSB0byBvcGVyYXRlCj4+Pj4+Pj4gY29ycmVj dGx5IG9uY2UgdGhpcyBpcyB3aXJlZCB1cCBjb3JyZWN0bHkuIFRoZXNlIFNvQ3MgdXNlIGEgZHdj Mwo+Pj4+Pj4+IGNvbnRyb2xsZXIgYW5kIHJlcXVpcmUgYWxsIFVTQiBQSFlzIHRvIGJlIGluaXRp YWxpemVkIChpZiBvbmUgb2YgdGhlIFVTQgo+Pj4+Pj4+IFBIWXMgaXQgbm90IGluaXRpYWxpemVk IHRoZW4gbm9uZSBvZiBVU0IgcG9ydCB3b3JrcyBhdCBhbGwpLgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogTWFydGluIEJsdW1lbnN0aW5nbCA8bWFydGluLmJsdW1lbnN0aW5nbEBnb29n bGVtYWlsLmNvbT4KPj4+Pj4+PiBUZXN0ZWQtYnk6IFlpeHVuIExhbiA8eWl4dW4ubGFuQGFtbG9n aWMuY29tPgo+Pj4+Pj4+IENjOiBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5j b20+Cj4+Pj4+Pj4gQ2M6IENodW5mZW5nIFl1biA8Y2h1bmZlbmcueXVuQG1lZGlhdGVrLmNvbT4K Pj4+Pj4+Cj4+Pj4+PiBUaGlzIHBhdGNoIGlzIGJyZWFraW5nIGxvdyBwb3dlciBjYXNlcyBvbiBU SSBTb0NzIHdoZW4gVVNCIGlzIGluIGhvc3QgbW9kZS4KPj4+Pj4+IEknbGwgZXhwbGFpbiB3aHkg YmVsb3cuCj4+Pj4+IGJhc2VkIG9uIHlvdXIgZXhwbGFuYXRpb24gYW5kIHJlYWRpbmcgdGhlIFRJ IFBIWSBkcml2ZXJzIEkgYW0gYXNzdW1pbmcKPj4+Pj4gdGhhdCB0aGUgYWZmZWN0ZWQgU29DcyBh cmUgdXNpbmcgdGhlICJwaHktb21hcC11c2IyIiBkcml2ZXIKPj4+Pj4KPj4+PiB5ZXMgYW5kIHBo eS10aS1waXBlMyBhcyB3ZWxsIGkuZS4gInRpLHBoeS11c2IzIiBhbmQgInRpLG9tYXAtdXNiMyIK Pj4+IEkgbWlzc2VkIHRoYXQsIHRoYW5rcwo+Pj4KPj4+Pj4+PiAtLS0KPj4+Pj4+PiAgZHJpdmVy cy91c2IvY29yZS9NYWtlZmlsZSB8ICAgMiArLQo+Pj4+Pj4+ICBkcml2ZXJzL3VzYi9jb3JlL3Bo eS5jICAgIHwgMTU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKPj4+Pj4+PiAgZHJpdmVycy91c2IvY29yZS9waHkuaCAgICB8ICAgNyArKwo+Pj4+Pj4+ICAz IGZpbGVzIGNoYW5nZWQsIDE2NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+Pj4+Pj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jb3JlL3BoeS5jCj4+Pj4+Pj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9jb3JlL3BoeS5oCj4+Pj4+Pj4KPj4+Pj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL2NvcmUvTWFr ZWZpbGUKPj4+Pj4+PiBpbmRleCA5MmM5Y2VmYjQzMTcuLjE4ZTg3NGIwNDQxZSAxMDA2NDQKPj4+ Pj4+PiAtLS0gYS9kcml2ZXJzL3VzYi9jb3JlL01ha2VmaWxlCj4+Pj4+Pj4gKysrIGIvZHJpdmVy cy91c2IvY29yZS9NYWtlZmlsZQo+Pj4+Pj4+IEBAIC02LDcgKzYsNyBAQAo+Pj4+Pj4+ICB1c2Jj b3JlLXkgOj0gdXNiLm8gaHViLm8gaGNkLm8gdXJiLm8gbWVzc2FnZS5vIGRyaXZlci5vCj4+Pj4+ Pj4gIHVzYmNvcmUteSArPSBjb25maWcubyBmaWxlLm8gYnVmZmVyLm8gc3lzZnMubyBlbmRwb2lu dC5vCj4+Pj4+Pj4gIHVzYmNvcmUteSArPSBkZXZpby5vIG5vdGlmeS5vIGdlbmVyaWMubyBxdWly a3MubyBkZXZpY2VzLm8KPj4+Pj4+PiAtdXNiY29yZS15ICs9IHBvcnQubwo+Pj4+Pj4+ICt1c2Jj b3JlLXkgKz0gcGh5Lm8gcG9ydC5vCj4+Pj4+Pj4KPj4+Pj4+PiAgdXNiY29yZS0kKENPTkZJR19P RikgICAgICAgICArPSBvZi5vCj4+Pj4+Pj4gIHVzYmNvcmUtJChDT05GSUdfVVNCX1BDSSkgICAg ICAgICAgICArPSBoY2QtcGNpLm8KPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29y ZS9waHkuYyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMKPj4+Pj4+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+Pj4+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDliN2M0M2MwZWE0Cj4+Pj4+Pj4gLS0t IC9kZXYvbnVsbAo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMKPj4+Pj4+PiBA QCAtMCwwICsxLDE1OCBAQAo+Pj4+Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMCsKPj4+Pj4+PiArLyoKPj4+Pj4+PiArICogQSB3cmFwcGVyIGZvciBtdWx0aXBsZSBQSFlz IHdoaWNoIHBhc3NlcyBhbGwgcGh5XyogZnVuY3Rpb24gY2FsbHMgdG8KPj4+Pj4+PiArICogbXVs dGlwbGUgKGFjdHVhbCkgUEhZIGRldmljZXMuIFRoaXMgaXMgY29tZXMgaGFuZHkgd2hlbiBpbml0 aWFsaXppbmcKPj4+Pj4+PiArICogYWxsIFBIWXMgb24gYSBIQ0QgYW5kIHRvIGtlZXAgdGhlbSBh bGwgaW4gdGhlIHNhbWUgc3RhdGUuCj4+Pj4+Pj4gKyAqCj4+Pj4+Pj4gKyAqIENvcHlyaWdodCAo QykgMjAxOCBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxtYXJ0aW4uYmx1bWVuc3RpbmdsQGdvb2dsZW1h aWwuY29tPgo+Pj4+Pj4+ICsgKi8KPj4+Pj4+PiArCj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPj4+Pj4+PiArI2luY2x1 ZGUgPGxpbnV4L3BoeS9waHkuaD4KPj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4+Pj4+ Pj4gKwo+Pj4+Pj4+ICsjaW5jbHVkZSAicGh5LmgiCj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdHJ1Y3Qg dXNiX3BoeV9yb290aHViIHsKPj4+Pj4+PiArICAgICBzdHJ1Y3QgcGh5ICAgICAgICAgICAgICAq cGh5Owo+Pj4+Pj4+ICsgICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgIGxpc3Q7Cj4+Pj4+Pj4g K307Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqdXNi X3BoeV9yb290aHViX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldikKPj4+Pj4+PiArewo+Pj4+Pj4+ ICsgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4+Pj4+Pj4gKwo+ Pj4+Pj4+ICsgICAgIHJvb3RodWJfZW50cnkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnJv b3RodWJfZW50cnkpLCBHRlBfS0VSTkVMKTsKPj4+Pj4+PiArICAgICBpZiAoIXJvb3RodWJfZW50 cnkpCj4+Pj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4+Pj4+ PiArCj4+Pj4+Pj4gKyAgICAgSU5JVF9MSVNUX0hFQUQoJnJvb3RodWJfZW50cnktPmxpc3QpOwo+ Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICByZXR1cm4gcm9vdGh1Yl9lbnRyeTsKPj4+Pj4+PiArfQo+ Pj4+Pj4+ICsKPj4+Pj4+PiArc3RhdGljIGludCB1c2JfcGh5X3Jvb3RodWJfYWRkX3BoeShzdHJ1 Y3QgZGV2aWNlICpkZXYsIGludCBpbmRleCwKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAg ICAgc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPj4+Pj4+PiArICAgICBz dHJ1Y3QgcGh5ICpwaHkgPSBkZXZtX29mX3BoeV9nZXRfYnlfaW5kZXgoZGV2LCBkZXYtPm9mX25v ZGUsIGluZGV4KTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgaWYgKElTX0VSUl9PUl9OVUxMKHBo eSkpIHsKPj4+Pj4+PiArICAgICAgICAgICAgIGlmICghcGh5IHx8IFBUUl9FUlIocGh5KSA9PSAt RU5PREVWKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPj4+Pj4+PiAr ICAgICAgICAgICAgIGVsc2UKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBU Ul9FUlIocGh5KTsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIHJvb3Ro dWJfZW50cnkgPSB1c2JfcGh5X3Jvb3RodWJfYWxsb2MoZGV2KTsKPj4+Pj4+PiArICAgICBpZiAo SVNfRVJSKHJvb3RodWJfZW50cnkpKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9F UlIocm9vdGh1Yl9lbnRyeSk7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIHJvb3RodWJfZW50cnkt PnBoeSA9IHBoeTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgbGlzdF9hZGRfdGFpbCgmcm9vdGh1 Yl9lbnRyeS0+bGlzdCwgbGlzdCk7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIHJldHVybiAwOwo+ Pj4+Pj4+ICt9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdHJ1Y3QgdXNiX3BoeV9yb290aHViICp1c2Jf cGh5X3Jvb3RodWJfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+Pj4+Pj4gK3sKPj4+Pj4+PiAr ICAgICBzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1YjsKPj4+Pj4+PiArICAgICBz dHJ1Y3QgdXNiX3BoeV9yb290aHViICpyb290aHViX2VudHJ5Owo+Pj4+Pj4+ICsgICAgIHN0cnVj dCBsaXN0X2hlYWQgKmhlYWQ7Cj4+Pj4+Pj4gKyAgICAgaW50IGksIG51bV9waHlzLCBlcnI7Cj4+ Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIG51bV9waHlzID0gb2ZfY291bnRfcGhhbmRsZV93aXRoX2Fy Z3MoZGV2LT5vZl9ub2RlLCAicGh5cyIsCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiI3BoeS1jZWxscyIpOwo+Pj4+Pj4+ICsgICAgIGlmIChudW1f cGh5cyA8PSAwKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4+Pj4gKwo+ Pj4+Pj4+ICsgICAgIHBoeV9yb290aHViID0gdXNiX3BoeV9yb290aHViX2FsbG9jKGRldik7Cj4+ Pj4+Pj4gKyAgICAgaWYgKElTX0VSUihwaHlfcm9vdGh1YikpCj4+Pj4+Pj4gKyAgICAgICAgICAg ICByZXR1cm4gcGh5X3Jvb3RodWI7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGZvciAoaSA9IDA7 IGkgPCBudW1fcGh5czsgaSsrKSB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBlcnIgPSB1c2JfcGh5 X3Jvb3RodWJfYWRkX3BoeShkZXYsIGksICZwaHlfcm9vdGh1Yi0+bGlzdCk7Cj4+Pj4+Pj4gKyAg ICAgICAgICAgICBpZiAoZXJyKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cl9vdXQ7Cj4+Pj4+Pj4gKyAgICAgfQo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBoZWFkID0gJnBo eV9yb290aHViLT5saXN0Owo+Pj4+Pj4+ICsKPj4+Pj4+PiArICAgICBsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPj4+Pj4+PiArICAgICAgICAgICAgIGVy ciA9IHBoeV9pbml0KHJvb3RodWJfZW50cnktPnBoeSk7Cj4+Pj4+Pgo+Pj4+Pj4gVGhlIHBoeV9p bml0KCkgZnVuY3Rpb24gYWN0dWFsbHkgZW5hYmxlcyB0aGUgUEhZIGNsb2Nrcy4KPj4+Pj4+IEl0 IHNob3VsZCBiZSBtb3ZlZCB0byB0aGUgdXNiX3BoeV9yb290aHViX2V4aXQoKSByb3V0aW5lIGp1 c3QgYmVmb3JlIGNhbGxpbmcgcGh5X3Bvd2VyX29uKCkuCj4+Pj4+IGRvIHlvdSBtZWFuIHRoYXQg cGh5X2luaXQgc2hvdWxkIGJlIG1vdmVkIHRvIHVzYl9waHlfcm9vdGh1Yl9wb3dlcl9vbgo+Pj4+ PiAoanVzdCBiZWZvcmUgcGh5X3Bvd2VyX29uIGlzIGNhbGxlZCB3aXRoaW4gdXNiX3BoeV9yb290 aHViX3Bvd2VyX29uKT8KPj4+Pj4KPj4+Pgo+Pj4+IFllcy4KPj4+Pgo+Pj4+PiBhbiBlYXJsaWVy IHZlcnNpb24gb2YgbXkgcGF0Y2ggZGlkIGV4YWN0bHkgdGhpcywgYnV0IGl0IGNhdXNlZAo+Pj4+ PiBwcm9ibGVtcyBkdXJpbmcgYSBzdXNwZW5kL3Jlc3VtZSBjeWNsZSBvbiBNZWRpYXRlayBkZXZp Y2VzCj4+Pj4+IENodW5mZW5nIFl1biByZXBvcnRlZCB0aGF0IGlzc3VlIGhlcmUgWzBdLCBxdW90 ZSBmcm9tIHRoYXQgbWFpbCBmb3IKPj4+Pj4gZWFzaWVyIHJlYWRpbmc6Cj4+Pj4+ICJJbiBvcmRl ciB0byBrZWVwIGxpbmsgc3RhdGUgb24gbXQ4MTczLCB3ZSBqdXN0IHBvd2VyIG9mZiBhbGwgcGh5 cyhub3QKPj4+Pj4gZXhpdCkgd2hlbiBzeXN0ZW0gZW50ZXIgc3VzcGVuZCwgdGhlbiBwb3dlciBv biB0aGVtIGFnYWluIChuZWVkbid0Cj4+Pj4+IGluaXQsIG90aGVyd2lzZSBkZXZpY2Ugd2lsbCBi ZSBkaXNjb25uZWN0ZWQpIHdoZW4gc3lzdGVtIHJlc3VtZSwgdGhpcwo+Pj4+PiBjYW4gYXZvaWQg cmUtZW51bWVyYXRpbmcgZGV2aWNlLiIKPj4+Pj4KPj4+Pj4+PiArICAgICAgICAgICAgIGlmIChl cnIpCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2V4aXRfcGh5czsKPj4+ Pj4+PiArICAgICB9Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIHJldHVybiBwaHlfcm9vdGh1YjsK Pj4+Pj4+PiArCj4+Pj4+Pj4gK2Vycl9leGl0X3BoeXM6Cj4+Pj4+Pj4gKyAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlKHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpCj4+ Pj4+Pj4gKyAgICAgICAgICAgICBwaHlfZXhpdChyb290aHViX2VudHJ5LT5waHkpOwo+Pj4+Pj4+ ICsKPj4+Pj4+PiArZXJyX291dDoKPj4+Pj4+PiArICAgICByZXR1cm4gRVJSX1BUUihlcnIpOwo+ Pj4+Pj4+ICt9Cj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl9waHlfcm9vdGh1Yl9pbml0 KTsKPj4+Pj4+PiArCj4+Pj4+Pj4gK2ludCB1c2JfcGh5X3Jvb3RodWJfZXhpdChzdHJ1Y3QgdXNi X3BoeV9yb290aHViICpwaHlfcm9vdGh1YikKPj4+Pj4+PiArewo+Pj4+Pj4+ICsgICAgIHN0cnVj dCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4+Pj4+Pj4gKyAgICAgc3RydWN0IGxp c3RfaGVhZCAqaGVhZDsKPj4+Pj4+PiArICAgICBpbnQgZXJyLCByZXQgPSAwOwo+Pj4+Pj4+ICsK Pj4+Pj4+PiArICAgICBpZiAoIXBoeV9yb290aHViKQo+Pj4+Pj4+ICsgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGhlYWQgPSAmcGh5X3Jvb3RodWItPmxpc3Q7 Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocm9vdGh1Yl9lbnRy eSwgaGVhZCwgbGlzdCkgewo+Pj4+Pj4+ICsgICAgICAgICAgICAgZXJyID0gcGh5X2V4aXQocm9v dGh1Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+PiArICAgICAgICAgICAgIGlmIChlcnIpCj4+Pj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgIHJldCA9IHJldDsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pgo+ Pj4+Pj4gcGh5X2V4aXQoKSBzaG91bGQgYmUgbW92ZWQgdG8gdXNiX3BoeV9yb290aHViX3Bvd2Vy b2ZmKCkganVzdCBhZnRlciBjYWxsaW5nIHBoeV9wb3dlcl9vZmYoKS4KPj4+Pj4gaWYgSSB1bmRl cnN0b29kIENodW5mZW5nIFl1biBjb3JyZWN0bHkgdGhpcyB3aWxsIHJlcXVpcmUKPj4+Pj4gcmUt ZW51bWVyYXRpb24gb2YgdGhlIFVTQiBkZXZpY2VzIGFmdGVyIGEgc3VzcGVuZC9yZXN1bWUgY3lj bGUgb24KPj4+Pj4gTWVkaWF0ZWsgU29Dcwo+Pj4+Pgo+Pj4+Cj4+Pj4gT0suIEkgc3VwcG9zZSB0 aGF0IHRoZXJlIGFyZSAyIGNhc2VzCj4+Pj4gMSkgTWVkaWF0ZWsncyBjYXNlOiBVU0IgY29udHJv bGxlciBjb250ZXh0IHJldGFpbmVkIGFjcm9zcyBzdXNwZW5kL3Jlc3VtZS4KPj4+PiBSZW1vdGUg d2FrZXVwIHByb2JhYmx5IHJlcXVpcmVkLgo+Pj4+IE5vIHJlLWVudW1lcmF0aW9uIHByZWZlcnJl ZCBhZnRlciByZXN1bWUuIHBoeV9leGl0KCkvcGh5X2luaXQoKSBtdXN0IG5vdCBiZSBjYWxsZWQK Pj4+PiBkdXJpbmcgc3VzcGVuZC9yZXN1bWUgdG8ga2VlcCBQSFkgbGluayBhY3RpdmUuCj4+PiBE b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL21lZGlhdGVrLG10dTMudHh0IGlu ZGVlZCBzaG93cwo+Pj4gdGhhdCB0aGUgcGFyZW50IG9mIHRoZSBVU0IgY29udHJvbGxlciBjYW4g YmUgbWFya2VkIGFzICJ3YWtldXAtc291cmNlIgo+Pj4KPj4+PiAyKSBUSSdzIGNhc2U6IGxvdyBw b3dlciBpbXBvcnRhbnQ6IFVTQiBjb250ZXh0IGlzIGxvc3QsIE9LIHRvIHJlLWVudW1lcmF0ZS4K Pj4+PiBwaHlfZXhpdCgpL3BoeV9pbml0KCkgbXVzdCBiZSBjYWxsZWQgZHVyaW5nIHN1c3BlbmQv cmVzdW1lLgo+Pj4gQUNLCj4+Pgo+Pj4+Pj4gV2l0aCB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgZWxz ZSBiZWluZyBkb25lIGhlcmUuIFNob3VsZG4ndCB3ZSBiZSBkb2luZyB0aGUgZXF1aXZhbGVudCBv Zgo+Pj4+Pj4gdXNiX3BoeV9yb290aHViX2RlbF9waHkoKSBhbmQgdXNiX3BoeV9yb290aHViX2Zy ZWUoKSBoZXJlPwo+Pj4+Pj4KPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgcmV0dXJuIHJldDsKPj4+ Pj4+PiArfQo+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcGh5X3Jvb3RodWJfZXhpdCk7 Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtpbnQgdXNiX3BoeV9yb290aHViX3Bvd2VyX29uKHN0cnVjdCB1 c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAgICAgc3Ry dWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPj4+Pj4+PiArICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkOwo+Pj4+Pj4+ICsgICAgIGludCBlcnI7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ ICsgICAgIGlmICghcGh5X3Jvb3RodWIpCj4+Pj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gMDsK Pj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgaGVhZCA9ICZwaHlfcm9vdGh1Yi0+bGlzdDsKPj4+Pj4+ PiArCj4+Pj4+Pj4gKyAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShyb290aHViX2VudHJ5LCBoZWFk LCBsaXN0KSB7Cj4+Pj4+Pj4gKyAgICAgICAgICAgICBlcnIgPSBwaHlfcG93ZXJfb24ocm9vdGh1 Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+PiArICAgICAgICAgICAgIGlmIChlcnIpCj4+Pj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKPj4+Pj4+PiArICAgICB9Cj4+Pj4+Pj4g Kwo+Pj4+Pj4+ICsgICAgIHJldHVybiAwOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArZXJyX291dDoKPj4+ Pj4+PiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1Yl9l bnRyeSwgaGVhZCwgbGlzdCkKPj4+Pj4+PiArICAgICAgICAgICAgIHBoeV9wb3dlcl9vZmYocm9v dGh1Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgcmV0dXJuIGVycjsKPj4+ Pj4+PiArfQo+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcGh5X3Jvb3RodWJfcG93ZXJf b24pOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArdm9pZCB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb2ZmKHN0 cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViKQo+Pj4+Pj4+ICt7Cj4+Pj4+Pj4gKyAg ICAgc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPj4+Pj4+PiArCj4+Pj4+ Pj4gKyAgICAgaWYgKCFwaHlfcm9vdGh1YikKPj4+Pj4+PiArICAgICAgICAgICAgIHJldHVybjsK Pj4+Pj4+PiArCj4+Pj4+Pj4gKyAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHJvb3Ro dWJfZW50cnksICZwaHlfcm9vdGh1Yi0+bGlzdCwgbGlzdCkKPj4+Pj4+PiArICAgICAgICAgICAg IHBoeV9wb3dlcl9vZmYocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPj4+Pj4+Cj4+Pj4+PiBOb3QgZG9p bmcgdGhlIHBoeV9leGl0KCkgaGVyZSBsZWF2ZXMgdGhlIGNsb2NrcyBlbmFibGVkIG9uIG91ciBT b0MgYW5kCj4+Pj4+PiB3ZSdyZSBubyBsb25nZXIgYWJsZSB0byByZWFjaCBsb3cgcG93ZXIgc3Rh dGVzIG9uIHN5c3RlbSBzdXNwZW5kLgo+Pj4+PiBJJ20gbm90IHN1cmUgd2hlcmUgdGhpcyBwcm9i bGVtIHNob3VsZCBiZSBzb2x2ZWQ6Cj4+Pj4+IC0gc2V0IHNraXBfcGh5X2luaXRpYWxpemF0aW9u IGluIHN0cnVjdCB1c2JfaGNkIHRvIDEgZm9yIHRoZSBhZmZlY3RlZAo+Pj4+PiBUSSBwbGF0Zm9y bXMKPj4+Pgo+Pj4+IE1hbnkgVEkgcGxhdGZvcm1zIGFyZSBhZmZlY3RlZCwgb21hcDUqLCBkcmE3 KiwgYW00MyoKPj4+Pgo+Pj4+PiAtIGZpeCB0aGlzIGluIHRoZSB1c2JfcGh5X3Jvb3RodWIgY29k ZQo+Pj4+Cj4+Pj4gSSdkIHZvdGUgZm9yIGZpeGluZyBpdCBpbiB0aGUgdXNiX3BoeV9yb290aHVi IGNvZGUuIEhvdz8KPj4+PiBIb3cgYWJvdXQgdXNpbmcgdGhlIGRldmljZV9jYW5fd2FrZXVwKCkg dG8gZGVjaWRlIGlmIHdlIHNob3VsZCBjYWxsIHBoeV9leGl0KCkvaW5pdCgpIG9yIG5vdD8KPj4+ PiBJZiB0aGUgVVNCIGRldmljZSBjYW4ndCB3YWtldXAgdGhlIHN5c3RlbSB0aGVyZSBpcyBubyBw b2ludCBpbiBrZWVwaW5nIGl0IHBvd2VyZWQvY2xvY2tlZCByaWdodD8KPj4+IEBDaHVuZmVuZzog Y2FuIHlvdSBjb25maXJtIFJvZ2VyJ3MgaWRlYSB0aGF0IHdlIGNvdWxkIGNhbGwgcGh5X2V4aXQg aWYKPj4+IHRoZSBjb250cm9sbGVyIGlzICpOT1QqIG1hcmtlZCBhcyAid2FrZXVwLXNvdXJjZSI/ Cj4+PiBJIGFtIGFsc28gbm90IHN1cmUgaWYgaXQgd291bGQgd29yaywgc2luY2UgdGhlICJ3YWtl dXAtc291cmNlIgo+Pj4gcHJvcGVydHkgaXMgZGVmaW5lZCBvbiB0aGUgVVNCIGNvbnRyb2xsZXIn cyBwYXJlbnQgbm9kZSBpbiBjYXNlIG9mIHRoZQo+Pj4gTWVkaWF0ZWsgTVRVMyAoTWVkaWF0ZWsg VVNCMy4wIERSRCkgY29udHJvbGxlcgo+Pj4KPj4gVmVyeSBzb3JyeSwgSSBmb3Jnb3QgdGhhdCBN VFUzICYgeEhDSSBkcml2ZXJzIGFsd2F5cyBzZXQgdGhlbSBhcyB3YWtldXAKPj4gZGV2aWNlcyBi eSBkZXZpY2VfaW5pdF93YWtldXAoZGV2LCB0cnVlKSxidXQgbm90IGRlcGVuZGVudCBvbgo+PiAi d2FrZXVwLXNvdXJjZSIgcHJvcGVydHksIHNvIG1heWJlIHdlIGNhbiB1c2UgZGV2aWNlX2Nhbl93 YWtldXAoKSB0bwo+PiBkZWNpZGUgd2hldGhlciBjYWxsIHBoeV9leGl0KCkvaW5pdCgpIG9yIG5v dC4KPiB0aGUgNjQtYml0IEFtbG9naWMgTWVzb24gR1hML0dYTSBTb0NzIGRvbid0IHN1cHBvcnQg c3VzcGVuZC9yZXN1bWUKPiB5ZXQsIHNvIEkgY2Fubm90IHRlc3QgdGhpcwo+IGJhc2VkIG9uIHRo aXMgc3VnZ2VzdGlvbiBJIHRocmV3IHVwIHR3byBwYXRjaGVzIHdoaWNoIGFyZSAqY29tcGlsZQo+ IHRlc3RlZCBvbmx5KiBiYXNlZCBvbiBHcmVnJ3MgdXNiLW5leHQgYnJhbmNoCj4geW91IGNhbiBm aW5kIHRoZW0gaGVyZTogWzBdIChhcyB3ZWxsIGFzIGF0dGFjaGVkIHRvIHRoaXMgbWFpbCkKPiAK PiBAQ2h1bmZlbmc6IGNhbiB5b3UgcGxlYXNlIHRlc3QgdGhpcyBvbiBvbmUgb2YgeW91ciBNZWRp YXRlayBTb0NzPwo+IEBSb2dlcjogY2FuIHlvdSBwbGVhc2UgdGVzdCB0aGlzIG9uIGEgVEkgU29D Pwo+IAo+IChhcG9sb2dpZXMgaW4gYWR2YW5jZSBpZiB0aGVzZSBwYXRjaGVzIGRvbid0IHdvcmsp Cj4gCj4gcGxlYXNlIG5vdGUgdGhhdCBJIHdvbid0IGhhdmUgYWNjZXNzIHRvIG15IGNvbXB1dGVy IHVudGlsIFNhdHVyZGF5Lgo+IGlmIHRoZXNlIHBhdGNoZXMgbmVlZCB0byBiZSByZXdyaXR0ZW4v cmVwbGFjZWQvZXRjLiB0aGVuIGZlZWwgZnJlZSB0bwo+IHNlbmQgeW91ciBvd24gdmVyc2lvbiB0 byB0aGUgbGlzdAoKSGFkIHRvIGRvIHRoZSBmb2xsb3dpbmcgdG8gYnVpbGQKCgoKSGVyZSBhcmUg bXkgb2JlcnZhdGlvbnMKLSBpZiB3YWtldXAgaXMgZGlzYWJsZWQgaXQgd29ya3MgZmluZSBhcyBl eHBlY3RlZCwgcGh5X2V4aXQoKSBpcyBjYWxsZWQgYW5kIEknbSBhYmxlIHRvIHJlYWNoCmxvdyBw b3dlciBzdGF0ZXMuCgotIGlmIHdha2V1cCBpcyBlbmFibGVkICgvc3lzL2J1cy91c2IvZGV2aWNl L3VzYjIvcG93ZXIvd2FrZXVwKSwgdGhlbiBoY2RfYnVzX3N1c3BlbmQoKSBpcyBuZXZlciBjYWxs ZWQKYW5kIHNvIHBoeV9wb3dlcl9vZmYgd29uJ3QgYmUgY2FsbGVkIGVpdGhlci4KClRoaXMgbWVh bnMgdGhhdCB0aGUgZGV2aWNlX21heV93YWtldXAoKSBjaGVjayBpcyByZWR1bmRhbnQuIFNvcnJ5 IGZvciBzdWdnZXN0aW5nIHRoaXMuCgpUaGlzIGFsc28gbWVhbnMgdGhhdCB3YWtldXAgaXMgbm90 IGVuYWJsZWQgb24gQ2h1bmZlbmcncyBwbGF0Zm9ybS4gQ2h1bmZlbmcsIGNhbiB5b3UgY29uZmly bSB0aGlzPwpXaGF0IGRvZXMgL3N5cy9idXMvdXNiL2RldmljZS91c2I8Pz4vcG93ZXIvd2FrZXVw IHNheT8KCkNodW5mZW5nIHNlbnQgYSBwYXRjaCBbMV0gdG8gc2V0IHNoYXJlZF9oY2QtPnNraXBf cGh5X2luaXRpYWxpemF0aW9uIGZvciB0aGUgbXRrIHBsYXRmb3JtLgpDaHVuZmVuZywgd2h5IGRp ZCB5b3UgbmVlZCB0aGlzIHBhdGNoPwoKWzFdIC0gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y Zy9wYXRjaC8xMDI5ODY0MS8KCldoYXQgb3B0aW9ucyBkbyB3ZSBoYXZlIG5vdyB0byBmaXggdGhl IG9yaWdpbmFsIGlzc3VlPwoKQ2h1bmdmZW5nLCBjYW4geW91IHNldCBza2lwX3BoeV9pbml0aWFs aXphdGlvbiBmb3IgdGhlIGhjZCB0aGF0IGhhcyBQSFkncyBsaW5rZWQgdG8gaXQ/ClRoZW4gdXNi X3BoeV9yb290aHViXyooKSBkcml2ZXIgd2lsbCBiZSBhIG5vLW9wIGZvciB5b3UuIEFuZCB3ZSBj b3VsZCByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIGFwcHJvYWNoCm9mIGRvaW5nIHBoeV9wb3dlcl9v ZmYoKSBhcyB3ZWxsIGFzIHBoeV9leGl0KCkgZHVyaW5nIHN1c3BlbmQuCgpBbHRlcm5hdGl2ZWx5 LCBNYXJ0aW4sIGhvdyBhYm91dCBub3QgcmVseWluZyBvbiBza2lwX3BoeV9pbml0aWFsaXphdGlv biBmbGFnIGJ1dCBoYXZpbmcgZGVmYXVsdCBiZWhhdmlvdXIKb2Ygbm8tb3AgZm9yIHRoZSB1c2Jf cGh5X3Jvb3RodWJfKigpIGRyaXZlci4gQXMgcGxhdGZvcm1zIG1pZ3JhdGUgdG8gaXQgdGhleSBj YW4gc2V0IGEgbmV3CmZsYWcgaW4gaGNkIHRvIHVzZSBpdD8KCj4gCj4+Pj4+IC0gZml4IHRoaXMg aW4gdGhlIFBIWSBkcml2ZXIKPj4+Pgo+Pj4+IFRoZXJlIGlzIG5vdGhpbmcgdG8gZml4IGluIHRo ZSBQSFkgZHJpdmVyLiBJdCBpcyBkb2luZyB3aGF0IGl0IGlzIHN1cHBvc2VkIHRvIGRvLgo+Pj4g SSBhY3R1YWxseSB3b25kZXIgaWYgcGh5X29wcyBzaG91bGQgaGF2ZSBleHBsaWNpdCBzdXNwZW5k L3Jlc3VtZSBzdXBwb3J0Ogo+Pj4gLSBhc3N1bWluZyB3ZSBkZWZpbmUgdHdvIG5ldyBjYWxsYmFj a3M6IC5zdXNwZW5kIGFuZCAucmVzdW1lCj4+PiAtIHRoZSBQSFkgZnJhbWV3b3JrIGNvdWxkIGNh bGwgLnBvd2VyX29mZiBieSBkZWZhdWx0IGlmIC5zdXNwZW5kIGlzIG5vdCBkZWZpbmVkCj4+PiAt IHRoZSBQSFkgZnJhbWV3b3JrIGNvdWxkIGNhbGwgLnBvd2VyX29uIGJ5IGRlZmF1bHQgaWYgLnJl c3VtZSBpcyBub3QgZGVmaW5lZAo+Pj4gLSBkcml2ZXJzIGNvdWxkIHNldCAuc3VzcGVuZCBhbmQg LnJlc3VtZSBvbiB0aGVpciBvd24sIGFsbG93aW5nIG1vcmUKPj4+IGZpbmUtZ3JhaW5lZCBjb250 cm9sIGJ5IGZvciBleGFtcGxlICpvbmx5KiBzdG9wcGluZyB0aGUgY2xvY2sgKGJ1dCBub3QKPj4+ IHJlLWluaXRpYWxpemluZyB0aGUgcmVnaXN0ZXJzLCBldGMuKQo+Pj4KPj4+IEBSb2dlcjogd2hh dCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcz8KPj4+IEtpc2hvbiAodGhlIFBIWSBmcmFtZXdvcmsg bWFpbnRhaW5lcikgaXMgYWxzbyBDQydlZCAtIEkgd291bGQgbGlrZSB0bwo+Pj4gaGVhciBoaXMg b3BpbmlvbiB0b28KPj4+Cj4+Pj4+IC0gc29tZXdoZXJlIGVsc2UKPj4+Pj4KPj4+Pj4+PiArfQo+ Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb2ZmKTsKPj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9waHkuaCBiL2RyaXZlcnMvdXNiL2Nv cmUvcGh5LmgKPj4+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uNmZkZTU5YmZiZmY4Cj4+Pj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+Pj4+ICsrKyBi L2RyaXZlcnMvdXNiL2NvcmUvcGh5LmgKPj4+Pj4+PiBAQCAtMCwwICsxLDcgQEAKPj4+Pj4+PiAr c3RydWN0IHVzYl9waHlfcm9vdGh1YjsKPj4+Pj4+PiArCj4+Pj4+Pj4gK3N0cnVjdCB1c2JfcGh5 X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9pbml0KHN0cnVjdCBkZXZpY2UgKmRldik7Cj4+Pj4+ Pj4gK2ludCB1c2JfcGh5X3Jvb3RodWJfZXhpdChzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlf cm9vdGh1Yik7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtpbnQgdXNiX3BoeV9yb290aHViX3Bvd2VyX29u KHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViKTsKPj4+Pj4+PiArdm9pZCB1c2Jf cGh5X3Jvb3RodWJfcG93ZXJfb2ZmKHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHVi KTsKPj4+Pj4+Pgo+Pj4+Pj4KPj4+PgoKPiAKPiBbMF0gaHR0cHM6Ly9naXRodWIuY29tL3hkYXJr bGlnaHQvbGludXgvY29tbWl0cy91c2ItcGh5LXJvb3RodWItc3VzcGVuZC1yZmMtdjEKPgoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMgYi9kcml2ZXJzL3VzYi9jb3JlL2hjZC5j CmluZGV4IDZkNGE0MTkuLjI4ODQ2MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaGNk LmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9oY2QuYwpAQCAtMjI2Miw3ICsyMjYyLDcgQEAgaW50 IGhjZF9idXNfc3VzcGVuZChzdHJ1Y3QgdXNiX2RldmljZSAqcmhkZXYsIHBtX21lc3NhZ2VfdCBt c2cpCiAJCWhjZC0+c3RhdGUgPSBIQ19TVEFURV9TVVNQRU5ERUQ7CiAKIAkJaWYgKCFQTVNHX0lT X0FVVE8obXNnKSkKLQkJCXVzYl9waHlfcm9vdGh1Yl9zdXNwZW5kKGhjZC0+cGh5X3Jvb3RodWIp OworCQkJdXNiX3BoeV9yb290aHViX3N1c3BlbmQoJnJoZGV2LT5kZXYsIGhjZC0+cGh5X3Jvb3Ro dWIpOwogCiAJCS8qIERpZCB3ZSByYWNlIHdpdGggYSByb290LWh1YiB3YWtldXAgZXZlbnQ/ICov CiAJCWlmIChyaGRldi0+ZG9fcmVtb3RlX3dha2V1cCkgewpAQCAtMjMwMiw3ICsyMzAyLDcgQEAg aW50IGhjZF9idXNfcmVzdW1lKHN0cnVjdCB1c2JfZGV2aWNlICpyaGRldiwgcG1fbWVzc2FnZV90 IG1zZykKIAl9CiAKIAlpZiAoIVBNU0dfSVNfQVVUTyhtc2cpKSB7Ci0JCXN0YXR1cyA9IHVzYl9w aHlfcm9vdGh1Yl9yZXN1bWUoaGNkLT5waHlfcm9vdGh1Yik7CisJCXN0YXR1cyA9IHVzYl9waHlf cm9vdGh1Yl9yZXN1bWUoJnJoZGV2LT5kZXYsIGhjZC0+cGh5X3Jvb3RodWIpOwogCQlpZiAoc3Rh dHVzKQogCQkJcmV0dXJuIHN0YXR1czsKIAl9CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBpbnQgaGNk X2J1c19yZXN1bWUoc3RydWN0IHVzYl9kZXZpY2UgKnJoZGV2LCBwbV9tZXNzYWdlX3QgbXNnKQog CQl9CiAJfSBlbHNlIHsKIAkJaGNkLT5zdGF0ZSA9IG9sZF9zdGF0ZTsKLQkJdXNiX3BoeV9yb290 aHViX3N1c3BlbmQoaGNkLT5waHlfcm9vdGh1Yik7CisJCXVzYl9waHlfcm9vdGh1Yl9zdXNwZW5k KCZyaGRldi0+ZGV2LCBoY2QtPnBoeV9yb290aHViKTsKIAkJZGV2X2RiZygmcmhkZXYtPmRldiwg ImJ1cyAlcyBmYWlsLCBlcnIgJWRcbiIsCiAJCQkJInJlc3VtZSIsIHN0YXR1cyk7CiAJCWlmIChz dGF0dXMgIT0gLUVTSFVURE9XTikKCgpBbmQgdGhlIGZvbGxvd2luZyB0byBmaXggcnVudGltZSBp c3N1ZXMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3BoeS5jIGIvZHJpdmVycy91c2Iv Y29yZS9waHkuYwppbmRleCAyZWNhMzcxLi44NTk4OTA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vz Yi9jb3JlL3BoeS5jCisrKyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMKQEAgLTMyLDkgKzMyLDkg QEAgc3RhdGljIGludCB1c2JfcGh5X3Jvb3RodWJfYWRkX3BoeShzdHJ1Y3QgZGV2aWNlICpkZXYs IGludCBpbmRleCwKIAkJCXJldHVybiBQVFJfRVJSKHBoeSk7CiAJfQogCi0Jcm9vdGh1Yl9lbnRy eSA9IHVzYl9waHlfcm9vdGh1Yl9hbGxvYyhkZXYpOwotCWlmIChJU19FUlIocm9vdGh1Yl9lbnRy eSkpCi0JCXJldHVybiBQVFJfRVJSKHJvb3RodWJfZW50cnkpOworCXJvb3RodWJfZW50cnkgPSBk ZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnJvb3RodWJfZW50cnkpLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIXJvb3RodWJfZW50cnkpCisJCXJldHVybiAtRU5PTUVNOwogCiAJcm9vdGh1Yl9lbnRyeS0+ cGh5ID0gcGh5OwogCkBAIC0xNjIsNyArMTYyLDcgQEAgaW50IHVzYl9waHlfcm9vdGh1Yl9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwKIAl1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb2ZmKHBoeV9y b290aHViKTsKIAogCS8qIGtlZXAgdGhlIFBIWXMgaW5pdGlhbGl6ZWQgc28gdGhlIGRldmljZSBj YW4gd2FrZSB1cCB0aGUgc3lzdGVtICovCi0JaWYgKGRldmljZV9jYW5fd2FrZXVwKGRldikpCisJ aWYgKGRldmljZV9tYXlfd2FrZXVwKGRldikpCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIHVzYl9w aHlfcm9vdGh1Yl9leGl0KHBoeV9yb290aHViKTsK