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: Chunfeng Yun Message-Id: <1521438183.3717.38.camel@mhfsdcap03> Date: Mon, 19 Mar 2018 13:43:03 +0800 To: Roger Quadros 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, narmstrong@baylibre.com, linux-amlogic@lists.infradead.org, yixun.lan@amlogic.com, Keerthy , "Gerlach, Dave" , KISHON VIJAY ABRAHAM List-ID: T24gRnJpLCAyMDE4LTAzLTE2IGF0IDE2OjMyICswMjAwLCBSb2dlciBRdWFkcm9zIHdyb3RlOgo+ ICtzb21lIFRJIGZvbGtzCj4gCj4gSGkgTWFydGluLAo+IAo+IE9uIDE4LzAyLzE4IDIwOjQ0LCBN YXJ0aW4gQmx1bWVuc3RpbmdsIHdyb3RlOgo+ID4gTWFueSBTb0MgcGxhdGZvcm1zIGhhdmUgc2Vw YXJhdGUgZGV2aWNlcyBmb3IgdGhlIFVTQiBQSFkgd2hpY2ggYXJlCj4gPiByZWdpc3RlcmVkIHRo cm91Z2ggdGhlIGdlbmVyaWMgUEhZIGZyYW1ld29yay4gVGhlc2UgUEhZcyBoYXZlIHRvIGJlCj4g PiBlbmFibGVkIHRvIG1ha2UgdGhlIFVTQiBjb250cm9sbGVyIGFjdHVhbGx5IHdvcmsuIFRoZXkg YWxzbyBoYXZlIHRvIGJlCj4gPiBkaXNhYmxlZCBhZ2FpbiBvbiBzaHV0ZG93bi9zdXNwZW5kLgo+ ID4gCj4gPiBDdXJyZW50bHkgKGF0IGxlYXN0KSB0aGUgZm9sbG93aW5nIEhDSSBwbGF0Zm9ybSBk cml2ZXJzIGFyZSB1c2luZyBjdXN0b20KPiA+IGNvZGUgdG8gb2J0YWluIGFsbCBQSFlzIHZpYSBk ZXZpY2V0cmVlIGZvciB0aGUgcm9vdGh1Yi9jb250cm9sbGVyIGFuZAo+ID4gZGlzYWJsZS9lbmFi bGUgdGhlbSB3aGVuIHJlcXVpcmVkOgo+ID4gLSBlaGNpLXBsYXRmb3JtLmMgaGFzIGVoY2lfcGxh dGZvcm1fcG93ZXJfe29uLG9mZn0KPiA+IC0geGhjaS1tdGsuYyBoYXMgeGhjaV9tdGtfcGh5X3tp bml0LGV4aXQscG93ZXJfb24scG93ZXJfb2ZmfQo+ID4gLSBvaGNpLXBsYXRmb3JtLmMgaGFzIG9o Y2lfcGxhdGZvcm1fcG93ZXJfe29uLG9mZn0KPiA+IAo+ID4gV2l0aCB0aGlzIG5ldyB3cmFwcGVy IHRoZSBVU0IgUEhZcyBjYW4gYmUgc3BlY2lmaWVkIGRpcmVjdGx5IGluIHRoZQo+ID4gVVNCIGNv bnRyb2xsZXIncyBkZXZpY2V0cmVlIG5vZGUgKGp1c3QgbGlrZSBvbiB0aGUgZHJpdmVycyBsaXN0 ZWQKPiA+IGFib3ZlKS4gVGhpcyBhbGxvd3MgU29DcyBsaWtlIHRoZSBBbWxvZ2ljIE1lc29uIEdY TCBmYW1pbHkgdG8gb3BlcmF0ZQo+ID4gY29ycmVjdGx5IG9uY2UgdGhpcyBpcyB3aXJlZCB1cCBj b3JyZWN0bHkuIFRoZXNlIFNvQ3MgdXNlIGEgZHdjMwo+ID4gY29udHJvbGxlciBhbmQgcmVxdWly ZSBhbGwgVVNCIFBIWXMgdG8gYmUgaW5pdGlhbGl6ZWQgKGlmIG9uZSBvZiB0aGUgVVNCCj4gPiBQ SFlzIGl0IG5vdCBpbml0aWFsaXplZCB0aGVuIG5vbmUgb2YgVVNCIHBvcnQgd29ya3MgYXQgYWxs KS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWFydGluIEJsdW1lbnN0aW5nbCA8bWFydGluLmJs dW1lbnN0aW5nbEBnb29nbGVtYWlsLmNvbT4KPiA+IFRlc3RlZC1ieTogWWl4dW4gTGFuIDx5aXh1 bi5sYW5AYW1sb2dpYy5jb20+Cj4gPiBDYzogTmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5 bGlicmUuY29tPgo+ID4gQ2M6IENodW5mZW5nIFl1biA8Y2h1bmZlbmcueXVuQG1lZGlhdGVrLmNv bT4KPiAKPiBUaGlzIHBhdGNoIGlzIGJyZWFraW5nIGxvdyBwb3dlciBjYXNlcyBvbiBUSSBTb0Nz IHdoZW4gVVNCIGlzIGluIGhvc3QgbW9kZS4KPiBJJ2xsIGV4cGxhaW4gd2h5IGJlbG93Lgo+IAo+ ID4gLS0tCj4gPiAgZHJpdmVycy91c2IvY29yZS9NYWtlZmlsZSB8ICAgMiArLQo+ID4gIGRyaXZl cnMvdXNiL2NvcmUvcGh5LmMgICAgfCAxNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ID4gIGRyaXZlcnMvdXNiL2NvcmUvcGh5LmggICAgfCAgIDcgKysK PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE2NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2NvcmUvcGh5LmMKPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY29yZS9waHkuaAo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy91c2IvY29yZS9NYWtlZmlsZSBiL2RyaXZlcnMvdXNiL2NvcmUvTWFrZWZpbGUKPiA+ IGluZGV4IDkyYzljZWZiNDMxNy4uMThlODc0YjA0NDFlIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy91c2IvY29yZS9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy91c2IvY29yZS9NYWtlZmlsZQo+ ID4gQEAgLTYsNyArNiw3IEBACj4gPiAgdXNiY29yZS15IDo9IHVzYi5vIGh1Yi5vIGhjZC5vIHVy Yi5vIG1lc3NhZ2UubyBkcml2ZXIubwo+ID4gIHVzYmNvcmUteSArPSBjb25maWcubyBmaWxlLm8g YnVmZmVyLm8gc3lzZnMubyBlbmRwb2ludC5vCj4gPiAgdXNiY29yZS15ICs9IGRldmlvLm8gbm90 aWZ5Lm8gZ2VuZXJpYy5vIHF1aXJrcy5vIGRldmljZXMubwo+ID4gLXVzYmNvcmUteSArPSBwb3J0 Lm8KPiA+ICt1c2Jjb3JlLXkgKz0gcGh5Lm8gcG9ydC5vCj4gPiAgCj4gPiAgdXNiY29yZS0kKENP TkZJR19PRikJCSs9IG9mLm8KPiA+ICB1c2Jjb3JlLSQoQ09ORklHX1VTQl9QQ0kpCQkrPSBoY2Qt cGNpLm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3BoeS5jIGIvZHJpdmVycy91 c2IvY29yZS9waHkuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAw MDAwMC4uMDliN2M0M2MwZWE0Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL3Vz Yi9jb3JlL3BoeS5jCj4gPiBAQCAtMCwwICsxLDE1OCBAQAo+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wKwo+ID4gKy8qCj4gPiArICogQSB3cmFwcGVyIGZvciBtdWx0aXBs ZSBQSFlzIHdoaWNoIHBhc3NlcyBhbGwgcGh5XyogZnVuY3Rpb24gY2FsbHMgdG8KPiA+ICsgKiBt dWx0aXBsZSAoYWN0dWFsKSBQSFkgZGV2aWNlcy4gVGhpcyBpcyBjb21lcyBoYW5keSB3aGVuIGlu aXRpYWxpemluZwo+ID4gKyAqIGFsbCBQSFlzIG9uIGEgSENEIGFuZCB0byBrZWVwIHRoZW0gYWxs IGluIHRoZSBzYW1lIHN0YXRlLgo+ID4gKyAqCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE4IE1h cnRpbiBCbHVtZW5zdGluZ2wgPG1hcnRpbi5ibHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+Cj4g PiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4gKyNpbmNsdWRl IDxsaW51eC9saXN0Lmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvb2YuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSAicGh5LmgiCj4gPiArCj4gPiAr c3RydWN0IHVzYl9waHlfcm9vdGh1YiB7Cj4gPiArCXN0cnVjdCBwaHkJCSpwaHk7Cj4gPiArCXN0 cnVjdCBsaXN0X2hlYWQJbGlzdDsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgdXNi X3BoeV9yb290aHViICp1c2JfcGh5X3Jvb3RodWJfYWxsb2Moc3RydWN0IGRldmljZSAqZGV2KQo+ ID4gK3sKPiA+ICsJc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPiA+ICsK PiA+ICsJcm9vdGh1Yl9lbnRyeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcm9vdGh1Yl9l bnRyeSksIEdGUF9LRVJORUwpOwo+ID4gKwlpZiAoIXJvb3RodWJfZW50cnkpCj4gPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ICsKPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnJvb3RodWJf ZW50cnktPmxpc3QpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcm9vdGh1Yl9lbnRyeTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGludCB1c2JfcGh5X3Jvb3RodWJfYWRkX3BoeShzdHJ1Y3QgZGV2aWNl ICpkZXYsIGludCBpbmRleCwKPiA+ICsJCQkJICAgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKPiA+ ICt7Cj4gPiArCXN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4gPiArCXN0 cnVjdCBwaHkgKnBoeSA9IGRldm1fb2ZfcGh5X2dldF9ieV9pbmRleChkZXYsIGRldi0+b2Zfbm9k ZSwgaW5kZXgpOwo+ID4gKwo+ID4gKwlpZiAoSVNfRVJSX09SX05VTEwocGh5KSkgewo+ID4gKwkJ aWYgKCFwaHkgfHwgUFRSX0VSUihwaHkpID09IC1FTk9ERVYpCj4gPiArCQkJcmV0dXJuIDA7Cj4g PiArCQllbHNlCj4gPiArCQkJcmV0dXJuIFBUUl9FUlIocGh5KTsKPiA+ICsJfQo+ID4gKwo+ID4g Kwlyb290aHViX2VudHJ5ID0gdXNiX3BoeV9yb290aHViX2FsbG9jKGRldik7Cj4gPiArCWlmIChJ U19FUlIocm9vdGh1Yl9lbnRyeSkpCj4gPiArCQlyZXR1cm4gUFRSX0VSUihyb290aHViX2VudHJ5 KTsKPiA+ICsKPiA+ICsJcm9vdGh1Yl9lbnRyeS0+cGh5ID0gcGh5Owo+ID4gKwo+ID4gKwlsaXN0 X2FkZF90YWlsKCZyb290aHViX2VudHJ5LT5saXN0LCBsaXN0KTsKPiA+ICsKPiA+ICsJcmV0dXJu IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnVzYl9waHlfcm9v dGh1Yl9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICt7Cj4gPiArCXN0cnVjdCB1c2JfcGh5 X3Jvb3RodWIgKnBoeV9yb290aHViOwo+ID4gKwlzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpyb290 aHViX2VudHJ5Owo+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkOwo+ID4gKwlpbnQgaSwgbnVt X3BoeXMsIGVycjsKPiA+ICsKPiA+ICsJbnVtX3BoeXMgPSBvZl9jb3VudF9waGFuZGxlX3dpdGhf YXJncyhkZXYtPm9mX25vZGUsICJwaHlzIiwKPiA+ICsJCQkJCSAgICAgICIjcGh5LWNlbGxzIik7 Cj4gPiArCWlmIChudW1fcGh5cyA8PSAwKQo+ID4gKwkJcmV0dXJuIE5VTEw7Cj4gPiArCj4gPiAr CXBoeV9yb290aHViID0gdXNiX3BoeV9yb290aHViX2FsbG9jKGRldik7Cj4gPiArCWlmIChJU19F UlIocGh5X3Jvb3RodWIpKQo+ID4gKwkJcmV0dXJuIHBoeV9yb290aHViOwo+ID4gKwo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgbnVtX3BoeXM7IGkrKykgewo+ID4gKwkJZXJyID0gdXNiX3BoeV9yb290 aHViX2FkZF9waHkoZGV2LCBpLCAmcGh5X3Jvb3RodWItPmxpc3QpOwo+ID4gKwkJaWYgKGVycikK PiA+ICsJCQlnb3RvIGVycl9vdXQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaGVhZCA9ICZwaHlfcm9v dGh1Yi0+bGlzdDsKPiA+ICsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShyb290aHViX2VudHJ5 LCBoZWFkLCBsaXN0KSB7Cj4gPiArCQllcnIgPSBwaHlfaW5pdChyb290aHViX2VudHJ5LT5waHkp Owo+IAo+IFRoZSBwaHlfaW5pdCgpIGZ1bmN0aW9uIGFjdHVhbGx5IGVuYWJsZXMgdGhlIFBIWSBj bG9ja3MuCj4gSXQgc2hvdWxkIGJlIG1vdmVkIHRvIHRoZSB1c2JfcGh5X3Jvb3RodWJfZXhpdCgp IHJvdXRpbmUganVzdCBiZWZvcmUgY2FsbGluZyBwaHlfcG93ZXJfb24oKS4KPiAKPiA+ICsJCWlm IChlcnIpCj4gPiArCQkJZ290byBlcnJfZXhpdF9waHlzOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJl dHVybiBwaHlfcm9vdGh1YjsKPiA+ICsKPiA+ICtlcnJfZXhpdF9waHlzOgo+ID4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1Yl9lbnRyeSwgaGVhZCwgbGlzdCkK PiA+ICsJCXBoeV9leGl0KHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPiArCj4gPiArZXJyX291dDoK PiA+ICsJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwo dXNiX3BoeV9yb290aHViX2luaXQpOwo+ID4gKwo+ID4gK2ludCB1c2JfcGh5X3Jvb3RodWJfZXhp dChzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1YikKPiA+ICt7Cj4gPiArCXN0cnVj dCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4gPiArCXN0cnVjdCBsaXN0X2hlYWQg KmhlYWQ7Cj4gPiArCWludCBlcnIsIHJldCA9IDA7Cj4gPiArCj4gPiArCWlmICghcGh5X3Jvb3Ro dWIpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJaGVhZCA9ICZwaHlfcm9vdGh1Yi0+bGlz dDsKPiA+ICsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShyb290aHViX2VudHJ5LCBoZWFkLCBs aXN0KSB7Cj4gPiArCQllcnIgPSBwaHlfZXhpdChyb290aHViX2VudHJ5LT5waHkpOwo+ID4gKwkJ aWYgKGVycikKPiA+ICsJCQlyZXQgPSByZXQ7Cj4gPiArCX0KPiAKPiBwaHlfZXhpdCgpIHNob3Vs ZCBiZSBtb3ZlZCB0byB1c2JfcGh5X3Jvb3RodWJfcG93ZXJvZmYoKSBqdXN0IGFmdGVyIGNhbGxp bmcgcGh5X3Bvd2VyX29mZigpLgo+IAo+IFdpdGggdGhhdCB0aGVyZSBpcyBub3RoaW5nIGVsc2Ug YmVpbmcgZG9uZSBoZXJlLiBTaG91bGRuJ3Qgd2UgYmUgZG9pbmcgdGhlIGVxdWl2YWxlbnQgb2YK PiB1c2JfcGh5X3Jvb3RodWJfZGVsX3BoeSgpIGFuZCB1c2JfcGh5X3Jvb3RodWJfZnJlZSgpIGhl cmU/Cj4gCj4gPiArCj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0xf R1BMKHVzYl9waHlfcm9vdGh1Yl9leGl0KTsKPiA+ICsKPiA+ICtpbnQgdXNiX3BoeV9yb290aHVi X3Bvd2VyX29uKHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViKQo+ID4gK3sKPiA+ ICsJc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPiA+ICsJc3RydWN0IGxp c3RfaGVhZCAqaGVhZDsKPiA+ICsJaW50IGVycjsKPiA+ICsKPiA+ICsJaWYgKCFwaHlfcm9vdGh1 YikKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwloZWFkID0gJnBoeV9yb290aHViLT5saXN0 Owo+ID4gKwo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxp c3QpIHsKPiA+ICsJCWVyciA9IHBoeV9wb3dlcl9vbihyb290aHViX2VudHJ5LT5waHkpOwo+ID4g KwkJaWYgKGVycikKPiA+ICsJCQlnb3RvIGVycl9vdXQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0 dXJuIDA7Cj4gPiArCj4gPiArZXJyX291dDoKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250 aW51ZV9yZXZlcnNlKHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpCj4gPiArCQlwaHlfcG93ZXJf b2ZmKHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPiArCj4gPiArCXJldHVybiBlcnI7Cj4gPiArfQo+ ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl9waHlfcm9vdGh1Yl9wb3dlcl9vbik7Cj4gPiArCj4g PiArdm9pZCB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb2ZmKHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIg KnBoeV9yb290aHViKQo+ID4gK3sKPiA+ICsJc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcm9vdGh1 Yl9lbnRyeTsKPiA+ICsKPiA+ICsJaWYgKCFwaHlfcm9vdGh1YikKPiA+ICsJCXJldHVybjsKPiA+ ICsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHJvb3RodWJfZW50cnksICZwaHlf cm9vdGh1Yi0+bGlzdCwgbGlzdCkKPiA+ICsJCXBoeV9wb3dlcl9vZmYocm9vdGh1Yl9lbnRyeS0+ cGh5KTsKPiAKPiBOb3QgZG9pbmcgdGhlIHBoeV9leGl0KCkgaGVyZSBsZWF2ZXMgdGhlIGNsb2Nr cyBlbmFibGVkIG9uIG91ciBTb0MgYW5kCj4gd2UncmUgbm8gbG9uZ2VyIGFibGUgdG8gcmVhY2gg bG93IHBvd2VyIHN0YXRlcyBvbiBzeXN0ZW0gc3VzcGVuZC4KTWF5YmUgeW91IGNhbiBtb2RpZnkg cGh5IGRyaXZlciBpZiBsb3cgcG93ZXIgc3RhdGUgaXMgb25seSBibG9ja2VkIGJ5CmVuYWJsZWQg Y2xvY2tzLCB0cnkgdG8gZGlzYWJsZSBjbG9ja3MgaW4gcGh5X3Bvd2VyX29mZiwgYW5kIGVuYWJs ZSB0aGVtCmFnYWluIGluIHBoeV9wb3dlcl9vbigpCj4gCj4gPiArfQo+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKHVzYl9waHlfcm9vdGh1Yl9wb3dlcl9vZmYpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2NvcmUvcGh5LmggYi9kcml2ZXJzL3VzYi9jb3JlL3BoeS5oCj4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZmRlNTliZmJmZjgKPiA+IC0tLSAv ZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmgKPiA+IEBAIC0wLDAgKzEs NyBAQAo+ID4gK3N0cnVjdCB1c2JfcGh5X3Jvb3RodWI7Cj4gPiArCj4gPiArc3RydWN0IHVzYl9w aHlfcm9vdGh1YiAqdXNiX3BoeV9yb290aHViX2luaXQoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+ ICtpbnQgdXNiX3BoeV9yb290aHViX2V4aXQoc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jv b3RodWIpOwo+ID4gKwo+ID4gK2ludCB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb24oc3RydWN0IHVz Yl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpOwo+ID4gK3ZvaWQgdXNiX3BoeV9yb290aHViX3Bv d2VyX29mZihzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1Yik7Cj4gPiAKPiAKPiBU aGUgZm9sbG93aW5nIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBmb3IgbWUuIExldCBtZSBrbm93IHdo YXQgeW91IHRoaW5rIGFuZCBJIGNhbiBwb3N0IGl0IG9mZmljaWFsbHkuCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMgYi9kcml2ZXJzL3VzYi9jb3JlL3BoeS5jCj4gaW5k ZXggMDliN2M0My4uMjMyMzJkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jb3JlL3BoeS5j Cj4gKysrIGIvZHJpdmVycy91c2IvY29yZS9waHkuYwo+IEBAIC01OSw4ICs1OSw2IEBAIHN0YXRp YyBpbnQgdXNiX3BoeV9yb290aHViX2FkZF9waHkoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgaW5k ZXgsCj4gIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9pbml0KHN0cnVj dCBkZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3Ro dWI7Cj4gLQlzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpyb290aHViX2VudHJ5Owo+IC0Jc3RydWN0 IGxpc3RfaGVhZCAqaGVhZDsKPiAgCWludCBpLCBudW1fcGh5cywgZXJyOwo+ICAKPiAgCW51bV9w aHlzID0gb2ZfY291bnRfcGhhbmRsZV93aXRoX2FyZ3MoZGV2LT5vZl9ub2RlLCAicGh5cyIsCj4g QEAgLTc1LDI1ICs3MywxMCBAQCBzdHJ1Y3QgdXNiX3BoeV9yb290aHViICp1c2JfcGh5X3Jvb3Ro dWJfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BoeXM7 IGkrKykgewo+ICAJCWVyciA9IHVzYl9waHlfcm9vdGh1Yl9hZGRfcGh5KGRldiwgaSwgJnBoeV9y b290aHViLT5saXN0KTsKPiAgCQlpZiAoZXJyKQo+IC0JCQlnb3RvIGVycl9vdXQ7Cj4gLQl9Cj4g LQo+IC0JaGVhZCA9ICZwaHlfcm9vdGh1Yi0+bGlzdDsKPiAtCj4gLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPiAtCQllcnIgPSBwaHlfaW5pdChyb290 aHViX2VudHJ5LT5waHkpOwo+IC0JCWlmIChlcnIpCj4gLQkJCWdvdG8gZXJyX2V4aXRfcGh5czsK PiArCQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gcGh5X3Jvb3Ro dWI7Cj4gLQo+IC1lcnJfZXhpdF9waHlzOgo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51 ZV9yZXZlcnNlKHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpCj4gLQkJcGh5X2V4aXQocm9vdGh1 Yl9lbnRyeS0+cGh5KTsKPiAtCj4gLWVycl9vdXQ6Cj4gLQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKHVzYl9waHlfcm9vdGh1Yl9pbml0KTsKPiAgCj4gQEAg LTEwNiwxMyArODksOCBAQCBpbnQgdXNiX3BoeV9yb290aHViX2V4aXQoc3RydWN0IHVzYl9waHlf cm9vdGh1YiAqcGh5X3Jvb3RodWIpCj4gIAlpZiAoIXBoeV9yb290aHViKQo+ICAJCXJldHVybiAw Owo+ICAKPiAtCWhlYWQgPSAmcGh5X3Jvb3RodWItPmxpc3Q7Cj4gLQo+IC0JbGlzdF9mb3JfZWFj aF9lbnRyeShyb290aHViX2VudHJ5LCBoZWFkLCBsaXN0KSB7Cj4gLQkJZXJyID0gcGh5X2V4aXQo cm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlyZXQgPSByZXQ7Cj4gLQl9 Cj4gKwkvKiBUT0RPOiB1c2JfcGh5X3Jvb3RodWJfZGVsX3BoeSAqLwo+ICsJLyogVE9ETzogdXNi X3BoeV9yb290aHViX2ZyZWUgKi8KPiAgCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTEzMCwx NiArMTA4LDIzIEBAIGludCB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb24oc3RydWN0IHVzYl9waHlf cm9vdGh1YiAqcGh5X3Jvb3RodWIpCj4gIAloZWFkID0gJnBoeV9yb290aHViLT5saXN0Owo+ICAK PiAgCWxpc3RfZm9yX2VhY2hfZW50cnkocm9vdGh1Yl9lbnRyeSwgaGVhZCwgbGlzdCkgewo+IC0J CWVyciA9IHBoeV9wb3dlcl9vbihyb290aHViX2VudHJ5LT5waHkpOwo+ICsJCWVyciA9IHBoeV9p bml0KHJvb3RodWJfZW50cnktPnBoeSk7Cj4gIAkJaWYgKGVycikKPiAgCQkJZ290byBlcnJfb3V0 Owo+ICsJCWVyciA9IHBoeV9wb3dlcl9vbihyb290aHViX2VudHJ5LT5waHkpOwo+ICsJCWlmIChl cnIpIHsKPiArCQkJcGh5X2V4aXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiArCQkJZ290byBlcnJf b3V0Owo+ICsJCX0KPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVycl9vdXQ6Cj4gLQls aXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1Yl9lbnRyeSwgaGVhZCwg bGlzdCkKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmV2ZXJzZShyb290aHViX2Vu dHJ5LCBoZWFkLCBsaXN0KSB7Cj4gIAkJcGh5X3Bvd2VyX29mZihyb290aHViX2VudHJ5LT5waHkp Owo+ICsJCXBoeV9leGl0KHJvb3RodWJfZW50cnktPnBoeSk7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJu IGVycjsKPiAgfQo+IEBAIC0xNTIsNyArMTM3LDkgQEAgdm9pZCB1c2JfcGh5X3Jvb3RodWJfcG93 ZXJfb2ZmKHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViKQo+ICAJaWYgKCFwaHlf cm9vdGh1YikKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNl KHJvb3RodWJfZW50cnksICZwaHlfcm9vdGh1Yi0+bGlzdCwgbGlzdCkKPiArCWxpc3RfZm9yX2Vh Y2hfZW50cnlfcmV2ZXJzZShyb290aHViX2VudHJ5LCAmcGh5X3Jvb3RodWItPmxpc3QsIGxpc3Qp IHsKPiAgCQlwaHlfcG93ZXJfb2ZmKHJvb3RodWJfZW50cnktPnBoeSk7Cj4gKwkJcGh5X2V4aXQo cm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiArCX0KPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTCh1c2Jf cGh5X3Jvb3RodWJfcG93ZXJfb2ZmKTsKPiAKPgotLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlz IGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkg b2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8g aW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg==