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: <1521439375.3717.49.camel@mhfsdcap03> Date: Mon, 19 Mar 2018 14:02:55 +0800 To: Martin Blumenstingl Cc: Roger Quadros , 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: SGksCk9uIFN1biwgMjAxOC0wMy0xOCBhdCAyMzoyOSArMDEwMCwgTWFydGluIEJsdW1lbnN0aW5n bCB3cm90ZToKPiBIaSBSb2dlciwKPiAKPiBPbiBGcmksIE1hciAxNiwgMjAxOCBhdCAzOjMyIFBN LCBSb2dlciBRdWFkcm9zIDxyb2dlcnFAdGkuY29tPiB3cm90ZToKPiA+ICtzb21lIFRJIGZvbGtz Cj4gPgo+ID4gSGkgTWFydGluLAo+ID4KPiA+IE9uIDE4LzAyLzE4IDIwOjQ0LCBNYXJ0aW4gQmx1 bWVuc3RpbmdsIHdyb3RlOgo+ID4+IE1hbnkgU29DIHBsYXRmb3JtcyBoYXZlIHNlcGFyYXRlIGRl dmljZXMgZm9yIHRoZSBVU0IgUEhZIHdoaWNoIGFyZQo+ID4+IHJlZ2lzdGVyZWQgdGhyb3VnaCB0 aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrLiBUaGVzZSBQSFlzIGhhdmUgdG8gYmUKPiA+PiBlbmFi bGVkIHRvIG1ha2UgdGhlIFVTQiBjb250cm9sbGVyIGFjdHVhbGx5IHdvcmsuIFRoZXkgYWxzbyBo YXZlIHRvIGJlCj4gPj4gZGlzYWJsZWQgYWdhaW4gb24gc2h1dGRvd24vc3VzcGVuZC4KPiA+Pgo+ ID4+IEN1cnJlbnRseSAoYXQgbGVhc3QpIHRoZSBmb2xsb3dpbmcgSENJIHBsYXRmb3JtIGRyaXZl cnMgYXJlIHVzaW5nIGN1c3RvbQo+ID4+IGNvZGUgdG8gb2J0YWluIGFsbCBQSFlzIHZpYSBkZXZp Y2V0cmVlIGZvciB0aGUgcm9vdGh1Yi9jb250cm9sbGVyIGFuZAo+ID4+IGRpc2FibGUvZW5hYmxl IHRoZW0gd2hlbiByZXF1aXJlZDoKPiA+PiAtIGVoY2ktcGxhdGZvcm0uYyBoYXMgZWhjaV9wbGF0 Zm9ybV9wb3dlcl97b24sb2ZmfQo+ID4+IC0geGhjaS1tdGsuYyBoYXMgeGhjaV9tdGtfcGh5X3tp bml0LGV4aXQscG93ZXJfb24scG93ZXJfb2ZmfQo+ID4+IC0gb2hjaS1wbGF0Zm9ybS5jIGhhcyBv aGNpX3BsYXRmb3JtX3Bvd2VyX3tvbixvZmZ9Cj4gPj4KPiA+PiBXaXRoIHRoaXMgbmV3IHdyYXBw ZXIgdGhlIFVTQiBQSFlzIGNhbiBiZSBzcGVjaWZpZWQgZGlyZWN0bHkgaW4gdGhlCj4gPj4gVVNC IGNvbnRyb2xsZXIncyBkZXZpY2V0cmVlIG5vZGUgKGp1c3QgbGlrZSBvbiB0aGUgZHJpdmVycyBs aXN0ZWQKPiA+PiBhYm92ZSkuIFRoaXMgYWxsb3dzIFNvQ3MgbGlrZSB0aGUgQW1sb2dpYyBNZXNv biBHWEwgZmFtaWx5IHRvIG9wZXJhdGUKPiA+PiBjb3JyZWN0bHkgb25jZSB0aGlzIGlzIHdpcmVk IHVwIGNvcnJlY3RseS4gVGhlc2UgU29DcyB1c2UgYSBkd2MzCj4gPj4gY29udHJvbGxlciBhbmQg cmVxdWlyZSBhbGwgVVNCIFBIWXMgdG8gYmUgaW5pdGlhbGl6ZWQgKGlmIG9uZSBvZiB0aGUgVVNC Cj4gPj4gUEhZcyBpdCBub3QgaW5pdGlhbGl6ZWQgdGhlbiBub25lIG9mIFVTQiBwb3J0IHdvcmtz IGF0IGFsbCkuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gQmx1bWVuc3RpbmdsIDxt YXJ0aW4uYmx1bWVuc3RpbmdsQGdvb2dsZW1haWwuY29tPgo+ID4+IFRlc3RlZC1ieTogWWl4dW4g TGFuIDx5aXh1bi5sYW5AYW1sb2dpYy5jb20+Cj4gPj4gQ2M6IE5laWwgQXJtc3Ryb25nIDxuYXJt c3Ryb25nQGJheWxpYnJlLmNvbT4KPiA+PiBDYzogQ2h1bmZlbmcgWXVuIDxjaHVuZmVuZy55dW5A bWVkaWF0ZWsuY29tPgo+ID4KPiA+IFRoaXMgcGF0Y2ggaXMgYnJlYWtpbmcgbG93IHBvd2VyIGNh c2VzIG9uIFRJIFNvQ3Mgd2hlbiBVU0IgaXMgaW4gaG9zdCBtb2RlLgo+ID4gSSdsbCBleHBsYWlu IHdoeSBiZWxvdy4KPiBiYXNlZCBvbiB5b3VyIGV4cGxhbmF0aW9uIGFuZCByZWFkaW5nIHRoZSBU SSBQSFkgZHJpdmVycyBJIGFtIGFzc3VtaW5nCj4gdGhhdCB0aGUgYWZmZWN0ZWQgU29DcyBhcmUg dXNpbmcgdGhlICJwaHktb21hcC11c2IyIiBkcml2ZXIKPiAKWy4uLl0KPiA+PiArCj4gPj4gK3N0 cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9pbml0KHN0cnVjdCBkZXZpY2Ug KmRldikKPiA+PiArewo+ID4+ICsgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290 aHViOwo+ID4+ICsgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7Cj4g Pj4gKyAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKPiA+PiArICAgICBpbnQgaSwgbnVtX3Bo eXMsIGVycjsKPiA+PiArCj4gPj4gKyAgICAgbnVtX3BoeXMgPSBvZl9jb3VudF9waGFuZGxlX3dp dGhfYXJncyhkZXYtPm9mX25vZGUsICJwaHlzIiwKPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIjcGh5LWNlbGxzIik7Cj4gPj4gKyAgICAgaWYgKG51bV9w aHlzIDw9IDApCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+PiArCj4gPj4gKyAg ICAgcGh5X3Jvb3RodWIgPSB1c2JfcGh5X3Jvb3RodWJfYWxsb2MoZGV2KTsKPiA+PiArICAgICBp ZiAoSVNfRVJSKHBoeV9yb290aHViKSkKPiA+PiArICAgICAgICAgICAgIHJldHVybiBwaHlfcm9v dGh1YjsKPiA+PiArCj4gPj4gKyAgICAgZm9yIChpID0gMDsgaSA8IG51bV9waHlzOyBpKyspIHsK PiA+PiArICAgICAgICAgICAgIGVyciA9IHVzYl9waHlfcm9vdGh1Yl9hZGRfcGh5KGRldiwgaSwg JnBoeV9yb290aHViLT5saXN0KTsKPiA+PiArICAgICAgICAgICAgIGlmIChlcnIpCj4gPj4gKyAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKPiA+PiArICAgICB9Cj4gPj4gKwo+ID4+ ICsgICAgIGhlYWQgPSAmcGh5X3Jvb3RodWItPmxpc3Q7Cj4gPj4gKwo+ID4+ICsgICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnkocm9vdGh1Yl9lbnRyeSwgaGVhZCwgbGlzdCkgewo+ID4+ICsgICAgICAg ICAgICAgZXJyID0gcGh5X2luaXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiA+Cj4gPiBUaGUgcGh5 X2luaXQoKSBmdW5jdGlvbiBhY3R1YWxseSBlbmFibGVzIHRoZSBQSFkgY2xvY2tzLgo+ID4gSXQg c2hvdWxkIGJlIG1vdmVkIHRvIHRoZSB1c2JfcGh5X3Jvb3RodWJfZXhpdCgpIHJvdXRpbmUganVz dCBiZWZvcmUgY2FsbGluZyBwaHlfcG93ZXJfb24oKS4KPiBkbyB5b3UgbWVhbiB0aGF0IHBoeV9p bml0IHNob3VsZCBiZSBtb3ZlZCB0byB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb24KPiAoanVzdCBi ZWZvcmUgcGh5X3Bvd2VyX29uIGlzIGNhbGxlZCB3aXRoaW4gdXNiX3BoeV9yb290aHViX3Bvd2Vy X29uKT8KPiAKPiBhbiBlYXJsaWVyIHZlcnNpb24gb2YgbXkgcGF0Y2ggZGlkIGV4YWN0bHkgdGhp cywgYnV0IGl0IGNhdXNlZAo+IHByb2JsZW1zIGR1cmluZyBhIHN1c3BlbmQvcmVzdW1lIGN5Y2xl IG9uIE1lZGlhdGVrIGRldmljZXMKPiBDaHVuZmVuZyBZdW4gcmVwb3J0ZWQgdGhhdCBpc3N1ZSBo ZXJlIFswXSwgcXVvdGUgZnJvbSB0aGF0IG1haWwgZm9yCj4gZWFzaWVyIHJlYWRpbmc6Cj4gIklu IG9yZGVyIHRvIGtlZXAgbGluayBzdGF0ZSBvbiBtdDgxNzMsIHdlIGp1c3QgcG93ZXIgb2ZmIGFs bCBwaHlzKG5vdAo+IGV4aXQpIHdoZW4gc3lzdGVtIGVudGVyIHN1c3BlbmQsIHRoZW4gcG93ZXIg b24gdGhlbSBhZ2FpbiAobmVlZG4ndAo+IGluaXQsIG90aGVyd2lzZSBkZXZpY2Ugd2lsbCBiZSBk aXNjb25uZWN0ZWQpIHdoZW4gc3lzdGVtIHJlc3VtZSwgdGhpcwo+IGNhbiBhdm9pZCByZS1lbnVt ZXJhdGluZyBkZXZpY2UuIgo+IAo+ID4+ICsgICAgICAgICAgICAgaWYgKGVycikKPiA+PiArICAg ICAgICAgICAgICAgICAgICAgZ290byBlcnJfZXhpdF9waHlzOwo+ID4+ICsgICAgIH0KPiA+PiAr Cj4gPj4gKyAgICAgcmV0dXJuIHBoeV9yb290aHViOwo+ID4+ICsKPiA+PiArZXJyX2V4aXRfcGh5 czoKPiA+PiArICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1 Yl9lbnRyeSwgaGVhZCwgbGlzdCkKPiA+PiArICAgICAgICAgICAgIHBoeV9leGl0KHJvb3RodWJf ZW50cnktPnBoeSk7Cj4gPj4gKwo+ID4+ICtlcnJfb3V0Ogo+ID4+ICsgICAgIHJldHVybiBFUlJf UFRSKGVycik7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTF9HUEwodXNiX3BoeV9yb290aHVi X2luaXQpOwo+ID4+ICsKPiA+PiAraW50IHVzYl9waHlfcm9vdGh1Yl9leGl0KHN0cnVjdCB1c2Jf cGh5X3Jvb3RodWIgKnBoeV9yb290aHViKQo+ID4+ICt7Cj4gPj4gKyAgICAgc3RydWN0IHVzYl9w aHlfcm9vdGh1YiAqcm9vdGh1Yl9lbnRyeTsKPiA+PiArICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpo ZWFkOwo+ID4+ICsgICAgIGludCBlcnIsIHJldCA9IDA7Cj4gPj4gKwo+ID4+ICsgICAgIGlmICgh cGh5X3Jvb3RodWIpCj4gPj4gKyAgICAgICAgICAgICByZXR1cm4gMDsKPiA+PiArCj4gPj4gKyAg ICAgaGVhZCA9ICZwaHlfcm9vdGh1Yi0+bGlzdDsKPiA+PiArCj4gPj4gKyAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShyb290aHViX2VudHJ5LCBoZWFkLCBsaXN0KSB7Cj4gPj4gKyAgICAgICAgICAg ICBlcnIgPSBwaHlfZXhpdChyb290aHViX2VudHJ5LT5waHkpOwo+ID4+ICsgICAgICAgICAgICAg aWYgKGVycikKPiA+PiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcmV0Owo+ID4+ICsgICAg IH0KPiA+Cj4gPiBwaHlfZXhpdCgpIHNob3VsZCBiZSBtb3ZlZCB0byB1c2JfcGh5X3Jvb3RodWJf cG93ZXJvZmYoKSBqdXN0IGFmdGVyIGNhbGxpbmcgcGh5X3Bvd2VyX29mZigpLgo+IGlmIEkgdW5k ZXJzdG9vZCBDaHVuZmVuZyBZdW4gY29ycmVjdGx5IHRoaXMgd2lsbCByZXF1aXJlCj4gcmUtZW51 bWVyYXRpb24gb2YgdGhlIFVTQiBkZXZpY2VzIGFmdGVyIGEgc3VzcGVuZC9yZXN1bWUgY3ljbGUg b24KPiBNZWRpYXRlayBTb0NzCllvdSBhcmUgcmlnaHQKPiAKPiA+IFdpdGggdGhhdCB0aGVyZSBp cyBub3RoaW5nIGVsc2UgYmVpbmcgZG9uZSBoZXJlLiBTaG91bGRuJ3Qgd2UgYmUgZG9pbmcgdGhl IGVxdWl2YWxlbnQgb2YKPiA+IHVzYl9waHlfcm9vdGh1Yl9kZWxfcGh5KCkgYW5kIHVzYl9waHlf cm9vdGh1Yl9mcmVlKCkgaGVyZT8KPiA+Cj4gPj4gKwo+ID4+ICsgICAgIHJldHVybiByZXQ7Cj4g Pj4gK30KPiA+PiArRVhQT1JUX1NZTUJPTF9HUEwodXNiX3BoeV9yb290aHViX2V4aXQpOwo+ID4+ ICsKPiA+PiAraW50IHVzYl9waHlfcm9vdGh1Yl9wb3dlcl9vbihzdHJ1Y3QgdXNiX3BoeV9yb290 aHViICpwaHlfcm9vdGh1YikKPiA+PiArewo+ID4+ICsgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3Ro dWIgKnJvb3RodWJfZW50cnk7Cj4gPj4gKyAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKPiA+ PiArICAgICBpbnQgZXJyOwo+ID4+ICsKPiA+PiArICAgICBpZiAoIXBoeV9yb290aHViKQo+ID4+ ICsgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPj4gKwo+ID4+ICsgICAgIGhlYWQgPSAmcGh5X3Jv b3RodWItPmxpc3Q7Cj4gPj4gKwo+ID4+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocm9vdGh1 Yl9lbnRyeSwgaGVhZCwgbGlzdCkgewo+ID4+ICsgICAgICAgICAgICAgZXJyID0gcGh5X3Bvd2Vy X29uKHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPj4gKyAgICAgICAgICAgICBpZiAoZXJyKQo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9vdXQ7Cj4gPj4gKyAgICAgfQo+ID4+ICsK PiA+PiArICAgICByZXR1cm4gMDsKPiA+PiArCj4gPj4gK2Vycl9vdXQ6Cj4gPj4gKyAgICAgbGlz dF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlKHJvb3RodWJfZW50cnksIGhlYWQsIGxp c3QpCj4gPj4gKyAgICAgICAgICAgICBwaHlfcG93ZXJfb2ZmKHJvb3RodWJfZW50cnktPnBoeSk7 Cj4gPj4gKwo+ID4+ICsgICAgIHJldHVybiBlcnI7Cj4gPj4gK30KPiA+PiArRVhQT1JUX1NZTUJP TF9HUEwodXNiX3BoeV9yb290aHViX3Bvd2VyX29uKTsKPiA+PiArCj4gPj4gK3ZvaWQgdXNiX3Bo eV9yb290aHViX3Bvd2VyX29mZihzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1YikK PiA+PiArewo+ID4+ICsgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnJvb3RodWJfZW50cnk7 Cj4gPj4gKwo+ID4+ICsgICAgIGlmICghcGh5X3Jvb3RodWIpCj4gPj4gKyAgICAgICAgICAgICBy ZXR1cm47Cj4gPj4gKwo+ID4+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShyb290 aHViX2VudHJ5LCAmcGh5X3Jvb3RodWItPmxpc3QsIGxpc3QpCj4gPj4gKyAgICAgICAgICAgICBw aHlfcG93ZXJfb2ZmKHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPgo+ID4gTm90IGRvaW5nIHRoZSBw aHlfZXhpdCgpIGhlcmUgbGVhdmVzIHRoZSBjbG9ja3MgZW5hYmxlZCBvbiBvdXIgU29DIGFuZAo+ ID4gd2UncmUgbm8gbG9uZ2VyIGFibGUgdG8gcmVhY2ggbG93IHBvd2VyIHN0YXRlcyBvbiBzeXN0 ZW0gc3VzcGVuZC4KPiBJJ20gbm90IHN1cmUgd2hlcmUgdGhpcyBwcm9ibGVtIHNob3VsZCBiZSBz b2x2ZWQ6Cj4gLSBzZXQgc2tpcF9waHlfaW5pdGlhbGl6YXRpb24gaW4gc3RydWN0IHVzYl9oY2Qg dG8gMSBmb3IgdGhlIGFmZmVjdGVkCj4gVEkgcGxhdGZvcm1zCj4gLSBmaXggdGhpcyBpbiB0aGUg dXNiX3BoeV9yb290aHViIGNvZGUKPiAtIGZpeCB0aGlzIGluIHRoZSBQSFkgZHJpdmVyCj4gLSBz b21ld2hlcmUgZWxzZQo+IAo+ID4+ICt9Cj4gPj4gK0VYUE9SVF9TWU1CT0xfR1BMKHVzYl9waHlf cm9vdGh1Yl9wb3dlcl9vZmYpOwo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jb3JlL3Bo eS5oIGIvZHJpdmVycy91c2IvY29yZS9waHkuaAo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZmRlNTliZmJmZjgKPiA+PiAtLS0gL2Rldi9udWxsCj4g Pj4gKysrIGIvZHJpdmVycy91c2IvY29yZS9waHkuaAo+ID4+IEBAIC0wLDAgKzEsNyBAQAo+ID4+ ICtzdHJ1Y3QgdXNiX3BoeV9yb290aHViOwo+ID4+ICsKPiA+PiArc3RydWN0IHVzYl9waHlfcm9v dGh1YiAqdXNiX3BoeV9yb290aHViX2luaXQoc3RydWN0IGRldmljZSAqZGV2KTsKPiA+PiAraW50 IHVzYl9waHlfcm9vdGh1Yl9leGl0KHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHVi KTsKPiA+PiArCj4gPj4gK2ludCB1c2JfcGh5X3Jvb3RodWJfcG93ZXJfb24oc3RydWN0IHVzYl9w aHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpOwo+ID4+ICt2b2lkIHVzYl9waHlfcm9vdGh1Yl9wb3dl cl9vZmYoc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpOwo+ID4+Cj4gPgo+ID4g VGhlIGZvbGxvd2luZyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUgZm9yIG1lLiBMZXQgbWUga25vdyB3 aGF0IHlvdSB0aGluayBhbmQgSSBjYW4gcG9zdCBpdCBvZmZpY2lhbGx5Lgo+IENodW5mZW5nOiBj b3VsZCB5b3UgcGxlYXNlIHRlc3Qgd2hldGhlciB0aGlzIHBhdGNoIGJyZWFrcyB0aGUKPiBzdXNw ZW5kL3Jlc3VtZSBjeWNsZSBvbiB5b3VyIE1lZGlhdGVrIHBsYXRmb3Jtcz8gc2VlIFswXSB3aGVy ZSBJIHVzZWQKPiBhIHNpbWlsYXIgYXBwcm9hY2ggd2l0aCBhIG11Y2ggb2xkZXIgdmVyc2lvbiBv ZiB0aGUgImluaXRpYWxpemUKPiBtdWx0aXBsZSBQSFlzIHBlciBIQ0QiIHBhdGNoCklmIGFkZCBS b2dlcidzIG9uZSwgaXQgZG8gZGlzY29ubmVjdCBwbHVnZ2VkIGRldmljZXMgb24gTVRLIHBsYXRm b3JtcywKZHVlIHRvIHJlLWluaXRpYWxpemUgdTIgcGh5cyB3aGVuIHJlc3VtZSxhcyB5b3UgbWVu dGlvbmVkIGFib3ZlCj4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9waHkuYyBi L2RyaXZlcnMvdXNiL2NvcmUvcGh5LmMKPiA+IGluZGV4IDA5YjdjNDMuLjIzMjMyZDMgMTAwNjQ0 Cj4gPiAtLS0gYS9kcml2ZXJzL3VzYi9jb3JlL3BoeS5jCj4gPiArKysgYi9kcml2ZXJzL3VzYi9j b3JlL3BoeS5jCj4gPiBAQCAtNTksOCArNTksNiBAQCBzdGF0aWMgaW50IHVzYl9waHlfcm9vdGh1 Yl9hZGRfcGh5KHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGluZGV4LAo+ID4gIHN0cnVjdCB1c2Jf cGh5X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ ICB7Cj4gPiAgICAgICAgIHN0cnVjdCB1c2JfcGh5X3Jvb3RodWIgKnBoeV9yb290aHViOwo+ID4g LSAgICAgICBzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpyb290aHViX2VudHJ5Owo+ID4gLSAgICAg ICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkOwo+ID4gICAgICAgICBpbnQgaSwgbnVtX3BoeXMsIGVy cjsKPiA+Cj4gPiAgICAgICAgIG51bV9waHlzID0gb2ZfY291bnRfcGhhbmRsZV93aXRoX2FyZ3Mo ZGV2LT5vZl9ub2RlLCAicGh5cyIsCj4gPiBAQCAtNzUsMjUgKzczLDEwIEBAIHN0cnVjdCB1c2Jf cGh5X3Jvb3RodWIgKnVzYl9waHlfcm9vdGh1Yl9pbml0KHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ ICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9waHlzOyBpKyspIHsKPiA+ICAgICAgICAgICAg ICAgICBlcnIgPSB1c2JfcGh5X3Jvb3RodWJfYWRkX3BoeShkZXYsIGksICZwaHlfcm9vdGh1Yi0+ bGlzdCk7Cj4gPiAgICAgICAgICAgICAgICAgaWYgKGVycikKPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZXJyX291dDsKPiA+IC0gICAgICAgfQo+ID4gLQo+ID4gLSAgICAgICBoZWFk ID0gJnBoeV9yb290aHViLT5saXN0Owo+ID4gLQo+ID4gLSAgICAgICBsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPiA+IC0gICAgICAgICAgICAgICBlcnIg PSBwaHlfaW5pdChyb290aHViX2VudHJ5LT5waHkpOwo+ID4gLSAgICAgICAgICAgICAgIGlmIChl cnIpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9leGl0X3BoeXM7Cj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUihlcnIpOwo+ID4gICAgICAgICB9 Cj4gPgo+ID4gICAgICAgICByZXR1cm4gcGh5X3Jvb3RodWI7Cj4gPiAtCj4gPiAtZXJyX2V4aXRf cGh5czoKPiA+IC0gICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlKHJv b3RodWJfZW50cnksIGhlYWQsIGxpc3QpCj4gPiAtICAgICAgICAgICAgICAgcGh5X2V4aXQocm9v dGh1Yl9lbnRyeS0+cGh5KTsKPiA+IC0KPiA+IC1lcnJfb3V0Ogo+ID4gLSAgICAgICByZXR1cm4g RVJSX1BUUihlcnIpOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTCh1c2JfcGh5X3Jvb3Ro dWJfaW5pdCk7Cj4gPgo+ID4gQEAgLTEwNiwxMyArODksOCBAQCBpbnQgdXNiX3BoeV9yb290aHVi X2V4aXQoc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIpCj4gPiAgICAgICAgIGlm ICghcGh5X3Jvb3RodWIpCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPgo+ID4gLSAg ICAgICBoZWFkID0gJnBoeV9yb290aHViLT5saXN0Owo+ID4gLQo+ID4gLSAgICAgICBsaXN0X2Zv cl9lYWNoX2VudHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPiA+IC0gICAgICAgICAg ICAgICBlcnIgPSBwaHlfZXhpdChyb290aHViX2VudHJ5LT5waHkpOwo+ID4gLSAgICAgICAgICAg ICAgIGlmIChlcnIpCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICByZXQgPSByZXQ7Cj4gPiAt ICAgICAgIH0KPiA+ICsgICAgICAgLyogVE9ETzogdXNiX3BoeV9yb290aHViX2RlbF9waHkgKi8K PiA+ICsgICAgICAgLyogVE9ETzogdXNiX3BoeV9yb290aHViX2ZyZWUgKi8KPiA+Cj4gPiAgICAg ICAgIHJldHVybiByZXQ7Cj4gPiAgfQo+ID4gQEAgLTEzMCwxNiArMTA4LDIzIEBAIGludCB1c2Jf cGh5X3Jvb3RodWJfcG93ZXJfb24oc3RydWN0IHVzYl9waHlfcm9vdGh1YiAqcGh5X3Jvb3RodWIp Cj4gPiAgICAgICAgIGhlYWQgPSAmcGh5X3Jvb3RodWItPmxpc3Q7Cj4gPgo+ID4gICAgICAgICBs aXN0X2Zvcl9lYWNoX2VudHJ5KHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPiA+IC0gICAg ICAgICAgICAgICBlcnIgPSBwaHlfcG93ZXJfb24ocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiA+ICsg ICAgICAgICAgICAgICBlcnIgPSBwaHlfaW5pdChyb290aHViX2VudHJ5LT5waHkpOwo+ID4gICAg ICAgICAgICAgICAgIGlmIChlcnIpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cl9vdXQ7Cj4gPiArICAgICAgICAgICAgICAgZXJyID0gcGh5X3Bvd2VyX29uKHJvb3RodWJfZW50 cnktPnBoeSk7Cj4gPiArICAgICAgICAgICAgICAgaWYgKGVycikgewo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcGh5X2V4aXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiAgICAg ICAgIH0KPiA+Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4KPiA+ICBlcnJfb3V0Ogo+ID4gLSAg ICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X2NvbnRpbnVlX3JldmVyc2Uocm9vdGh1Yl9lbnRyeSwg aGVhZCwgbGlzdCkKPiA+ICsgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZl cnNlKHJvb3RodWJfZW50cnksIGhlYWQsIGxpc3QpIHsKPiA+ICAgICAgICAgICAgICAgICBwaHlf cG93ZXJfb2ZmKHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPiArICAgICAgICAgICAgICAgcGh5X2V4 aXQocm9vdGh1Yl9lbnRyeS0+cGh5KTsKPiA+ICsgICAgICAgfQo+ID4KPiA+ICAgICAgICAgcmV0 dXJuIGVycjsKPiA+ICB9Cj4gPiBAQCAtMTUyLDcgKzEzNyw5IEBAIHZvaWQgdXNiX3BoeV9yb290 aHViX3Bvd2VyX29mZihzdHJ1Y3QgdXNiX3BoeV9yb290aHViICpwaHlfcm9vdGh1YikKPiA+ICAg ICAgICAgaWYgKCFwaHlfcm9vdGh1YikKPiA+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gPgo+ ID4gLSAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2Uocm9vdGh1Yl9lbnRyeSwgJnBo eV9yb290aHViLT5saXN0LCBsaXN0KQo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3Jl dmVyc2Uocm9vdGh1Yl9lbnRyeSwgJnBoeV9yb290aHViLT5saXN0LCBsaXN0KSB7Cj4gPiAgICAg ICAgICAgICAgICAgcGh5X3Bvd2VyX29mZihyb290aHViX2VudHJ5LT5waHkpOwo+ID4gKyAgICAg ICAgICAgICAgIHBoeV9leGl0KHJvb3RodWJfZW50cnktPnBoeSk7Cj4gPiArICAgICAgIH0KPiA+ ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTF9HUEwodXNiX3BoeV9yb290aHViX3Bvd2VyX29mZik7Cj4g Pgo+ID4KPiA+IC0tCj4gPiBjaGVlcnMsCj4gPiAtcm9nZXIKPiA+Cj4gPiBUZXhhcyBJbnN0cnVt ZW50cyBGaW5sYW5kIE95LCBQb3Jra2FsYW5rYXR1IDIyLCAwMDE4MCBIZWxzaW5raS4gWS10dW5u dXMvQnVzaW5lc3MgSUQ6IDA2MTU1MjEtNC4gS290aXBhaWtrYS9Eb21pY2lsZTogSGVsc2lua2kK PiAKPiAKPiBSZWdhcmRzCj4gTWFydGluCj4gCj4gCj4gWzBdIGh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL3BpcGVybWFpbC9saW51eC1hbWxvZ2ljLzIwMTctSnVseS8wMDQzNzQuaHRtbAotLS0K VG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJl IGxpbnV4LXVzYiIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtl cm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9t YWpvcmRvbW8taW5mby5odG1sCg==