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: [4/4] usb: musb: Add support for MediaTek musb controller From: Bin Liu Message-Id: <20190108154441.GG25910@uda0271908> Date: Tue, 8 Jan 2019 09:44:41 -0600 To: min.guo@mediatek.com Cc: Rob Herring , Greg Kroah-Hartman , Mark Rutland , Matthias Brugger , Alan Stern , chunfeng.yun@mediatek.com, linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Yonglong Wu List-ID: SGksCgpPbiBUaHUsIERlYyAyNywgMjAxOCBhdCAwMzozNDoyNlBNICswODAwLCBtaW4uZ3VvQG1l ZGlhdGVrLmNvbSB3cm90ZToKPiBGcm9tOiBNaW4gR3VvIDxtaW4uZ3VvQG1lZGlhdGVrLmNvbT4K PiAKPiBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTWVkaWFUZWsgbXVzYiBjb250cm9sbGVyIGluCj4g aG9zdCwgcGVyaXBoZXJhbCBhbmQgb3RnIG1vZGUKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNaW4gR3Vv IDxtaW4uZ3VvQG1lZGlhdGVrLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBZb25nbG9uZyBXdSA8eW9u Z2xvbmcud3VAbWVkaWF0ZWsuY29tPgo+IC0tLQo+ICBkcml2ZXJzL3VzYi9tdXNiL0tjb25maWcg ICAgIHwgICA4ICstCj4gIGRyaXZlcnMvdXNiL211c2IvTWFrZWZpbGUgICAgfCAgIDEgKwo+ICBk cml2ZXJzL3VzYi9tdXNiL21lZGlhdGVrLmMgIHwgNTYyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYyB8ICAx MCArCj4gIGRyaXZlcnMvdXNiL211c2IvbXVzYl9jb3JlLmggfCAgIDEgKwo+ICBkcml2ZXJzL3Vz Yi9tdXNiL211c2JfZG1hLmggIHwgICAxICsKPiAgZHJpdmVycy91c2IvbXVzYi9tdXNiX2hvc3Qu YyB8ICA3OSArKysrLS0KPiAgZHJpdmVycy91c2IvbXVzYi9tdXNiX3JlZ3MuaCB8ICAgNiArCj4g IGRyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMgfCAgMzQgKystCj4gIDkgZmlsZXMgY2hhbmdl ZCwgNjcxIGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy91c2IvbXVzYi9tZWRpYXRlay5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dXNiL211c2IvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL211c2IvS2NvbmZpZwo+IGluZGV4IGFkMDg4 OTUuLjU0MGZjOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvbXVzYi9LY29uZmlnCj4gKysr IGIvZHJpdmVycy91c2IvbXVzYi9LY29uZmlnCj4gQEAgLTExNSw2ICsxMTUsMTIgQEAgY29uZmln IFVTQl9NVVNCX0paNDc0MAo+ICAJZGVwZW5kcyBvbiBVU0JfTVVTQl9HQURHRVQKPiAgCWRlcGVu ZHMgb24gVVNCX09UR19CTEFDS0xJU1RfSFVCCj4gIAo+ICtjb25maWcgVVNCX01VU0JfTUVESUFU RUsKPiArCXRyaXN0YXRlICJNZWRpYVRlayBwbGF0Zm9ybXMiCj4gKwlkZXBlbmRzIG9uIEFSQ0hf TUVESUFURUsKClBsZWFzZSBhbHNvIGFkZCAnfHwgQ09NUElMRV9URVNUJyB0byBtYWtlIHRlc3Rp bmcgZWFzaWVyLgoKPiArCWRlcGVuZHMgb24gTk9QX1VTQl9YQ0VJVgo+ICsJZGVwZW5kcyBvbiBH RU5FUklDX1BIWQo+ICsKPiAgY29uZmlnIFVTQl9NVVNCX0FNMzM1WF9DSElMRAo+ICAJdHJpc3Rh dGUKPiAgCj4gQEAgLTE0MSw3ICsxNDcsNyBAQCBjb25maWcgVVNCX1VYNTAwX0RNQQo+ICAKPiAg Y29uZmlnIFVTQl9JTlZFTlRSQV9ETUEKPiAgCWJvb2wgJ0ludmVudHJhJwo+IC0JZGVwZW5kcyBv biBVU0JfTVVTQl9PTUFQMlBMVVMKPiArCWRlcGVuZHMgb24gVVNCX01VU0JfT01BUDJQTFVTIHx8 IFVTQl9NVVNCX01FRElBVEVLCj4gIAloZWxwCj4gIAkgIEVuYWJsZSBETUEgdHJhbnNmZXJzIHVz aW5nIE1lbnRvcidzIGVuZ2luZS4KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2Iv TWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9tdXNiL01ha2VmaWxlCj4gaW5kZXggM2E4OGM3OS4uNjNk ODJkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL01ha2VmaWxlCj4gKysrIGIvZHJp dmVycy91c2IvbXVzYi9NYWtlZmlsZQo+IEBAIC0yNCw2ICsyNCw3IEBAIG9iai0kKENPTkZJR19V U0JfTVVTQl9EQThYWCkJCQkrPSBkYTh4eC5vCj4gIG9iai0kKENPTkZJR19VU0JfTVVTQl9VWDUw MCkJCQkrPSB1eDUwMC5vCj4gIG9iai0kKENPTkZJR19VU0JfTVVTQl9KWjQ3NDApCQkJKz0gano0 NzQwLm8KPiAgb2JqLSQoQ09ORklHX1VTQl9NVVNCX1NVTlhJKQkJCSs9IHN1bnhpLm8KPiArb2Jq LSQoQ09ORklHX1VTQl9NVVNCX01FRElBVEVLKSAgICAgIAkJKz0gbWVkaWF0ZWsubwo+ICAKPiAg Cj4gIG9iai0kKENPTkZJR19VU0JfTVVTQl9BTTMzNVhfQ0hJTEQpCQkrPSBtdXNiX2FtMzM1eC5v Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbWVkaWF0ZWsuYyBiL2RyaXZlcnMvdXNi L211c2IvbWVkaWF0ZWsuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4u MTVhNjQ2MAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3VzYi9tdXNiL21lZGlhdGVr LmMKCltzbmlwXQpJIHdpbGwgcmV2aWV3IHRoaXMgc2VjdGlvbiBsYXRlciBhZnRlciB3ZSBzb3J0 ZWQgb3V0IG90aGVyIHRoaW5ncy4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVz Yl9jb3JlLmMgYi9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5jCj4gaW5kZXggYjdkNTYyNy4u ZDYwZjc2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5jCj4gKysr IGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYwo+IEBAIC0xMDI4LDYgKzEwMjgsMTYgQEAg c3RhdGljIHZvaWQgbXVzYl9kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IG11c2IgKm11c2IpCj4g IAl0ZW1wID0gbXVzYl9yZWFkYihtYmFzZSwgTVVTQl9JTlRSVVNCKTsKPiAgCXRlbXAgPSBtdXNi X3JlYWR3KG1iYXNlLCBNVVNCX0lOVFJUWCk7Cj4gIAl0ZW1wID0gbXVzYl9yZWFkdyhtYmFzZSwg TVVTQl9JTlRSUlgpOwo+ICsKPiArCS8qICBNZWRpYVRlayBjb250cm9sbGVyIGludGVycnVwdCBz dGF0dXMgaXMgVzFDICovCgpUaGlzIFcxQyBkb2Vzbid0IG1hdGNoIHRvIHRoZSBNVVNCIFByb2dy YW1taW5nIEd1aWRlIHRoYXQgSSBoYXZlLiBUaG9zZQpyZWdpc3RlcnMgYXJlIHJlYWQtb25seS4K SXMgdGhlIGRpZmZlcmVuY2UgZHVlIHRvIHRoZSBJUCBpbnRlcmdyYXRpb24gaW4gdGhlIG10ayBw bGF0Zm9ybXM/IG9yIGlzCml0IGEgbmV3IHZlcnNpb24gb2YgdGhlIE1VU0IgY29udHJvbGxlcj8g SWYgbGF0dGVyLCB3aGF0IGlzIHRoZSB2ZXJzaW9uPwoKPiArCWlmIChtdXNiLT5vcHMtPnF1aXJr cyAmIE1VU0JfTVRLX1FVSVJLUykgewoKQmFzaWNhbGx5IHdlIGRvbid0IHdhbnQgdG8gdXNlIHRo aXMgdHlwZSBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBxdWlya3MgaWYKcG9zc2libGUsIHNvIGxldCdz IHRyeSB0byBub3QgdXNlIGl0LgoKPiArCQltdXNiX3dyaXRlYihtYmFzZSwgTVVTQl9JTlRSVVNC LAo+ICsJCQltdXNiX3JlYWRiKG1iYXNlLCBNVVNCX0lOVFJVU0IpKTsKCkZvciB0aGlzIGNsZWFy aW5nIHJlZ2lzdGVyIGJpdCBvcGVyYXRpb24sIHBsZWFzZSBjcmVhdGUgcGxhdGZvcm0gaG9va3MK bXVzYl9jbGVhcmIoKSBhbmQgbXVzYl9jbGVhcncoKSBpbiBzdHJ1Y3QgbXVzYl9wbGF0Zm9ybV9v cHMgaW5zdGVhZCwKdGhlbiBmb2xsb3cgaG93IG11c2JfcmVhZGIoKSBwb2ludGVyIGlzIGFzc2ln bmVkIGluCm11c2JfaW5pdF9jb250cm9sbGVyKCkgdG8gdXNlIHRoZSBXMUMgdmVyc2lvbiBmb3Ig bXRrIHBsYXRmb3JtLgoKPiArCQltdXNiX3dyaXRldyhtYmFzZSwgTVVTQl9JTlRSUlgsCj4gKwkJ CW11c2JfcmVhZHcobWJhc2UsIE1VU0JfSU5UUlJYKSk7Cj4gKwkJbXVzYl93cml0ZXcobWJhc2Us IE1VU0JfSU5UUlRYLAo+ICsJCQltdXNiX3JlYWR3KG1iYXNlLCBNVVNCX0lOVFJUWCkpOwo+ICsJ fQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBtdXNiX2VuYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBt dXNiICptdXNiKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfY29yZS5oIGIv ZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuaAo+IGluZGV4IDA0MjAzYjcuLjFiZjRlOWEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuaAo+ICsrKyBiL2RyaXZlcnMv dXNiL211c2IvbXVzYl9jb3JlLmgKPiBAQCAtMTM4LDYgKzEzOCw3IEBAIGVudW0gbXVzYl9nX2Vw MF9zdGF0ZSB7Cj4gICAqLwo+ICBzdHJ1Y3QgbXVzYl9wbGF0Zm9ybV9vcHMgewo+ICAKPiArI2Rl ZmluZSBNVVNCX01US19RVUlSS1MJQklUKDEwKQo+ICAjZGVmaW5lIE1VU0JfR19OT19TS0JfUkVT RVJWRQlCSVQoOSkKPiAgI2RlZmluZSBNVVNCX0RBOFhYCQlCSVQoOCkKPiAgI2RlZmluZSBNVVNC X1BSRVNFUlZFX1NFU1NJT04JQklUKDcpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2Iv bXVzYl9kbWEuaCBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9kbWEuaAo+IGluZGV4IDI4MWU3NWQz Li5iMjE4MjEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9kbWEuaAo+ICsr KyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9kbWEuaAo+IEBAIC0xOTcsNiArMTk3LDcgQEAgc3Rh dGljIGlubGluZSB2b2lkIG11c2JfZG1hX2NvbnRyb2xsZXJfZGVzdHJveShzdHJ1Y3QgZG1hX2Nv bnRyb2xsZXIgKmQpIHsgfQo+ICBleHRlcm4gc3RydWN0IGRtYV9jb250cm9sbGVyICoKPiAgbXVz YmhzX2RtYV9jb250cm9sbGVyX2NyZWF0ZShzdHJ1Y3QgbXVzYiAqbXVzYiwgdm9pZCBfX2lvbWVt ICpiYXNlKTsKPiAgZXh0ZXJuIHZvaWQgbXVzYmhzX2RtYV9jb250cm9sbGVyX2Rlc3Ryb3koc3Ry dWN0IGRtYV9jb250cm9sbGVyICpjKTsKPiArZXh0ZXJuIGlycXJldHVybl90IGRtYV9jb250cm9s bGVyX2lycShpbnQgaXJxLCB2b2lkICpwcml2YXRlX2RhdGEpOwo+ICAKPiAgZXh0ZXJuIHN0cnVj dCBkbWFfY29udHJvbGxlciAqCj4gIHR1c2JfZG1hX2NvbnRyb2xsZXJfY3JlYXRlKHN0cnVjdCBt dXNiICptdXNiLCB2b2lkIF9faW9tZW0gKmJhc2UpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9tdXNiL211c2JfaG9zdC5jIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiX2hvc3QuYwo+IGluZGV4 IGI1OWNlOWEuLmIxYjAyMTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiX2hv c3QuYwo+ICsrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYl9ob3N0LmMKPiBAQCAtMjkyLDIwICsy OTIsNzMgQEAgc3RhdGljIGlubGluZSB2b2lkIG11c2Jfc2F2ZV90b2dnbGUoc3RydWN0IG11c2Jf cWggKnFoLCBpbnQgaXNfaW4sCj4gIHsKPiAgCXZvaWQgX19pb21lbQkJKmVwaW8gPSBxaC0+aHdf ZXAtPnJlZ3M7Cj4gIAl1MTYJCQljc3I7Cj4gKwlzdHJ1Y3QgbXVzYiAqbXVzYiA9IHFoLT5od19l cC0+bXVzYjsKPiAgCj4gIAkvKgo+ICAJICogRklYTUU6IHRoZSBjdXJyZW50IE1lbnRvciBETUEg Y29kZSBzZWVtcyB0byBoYXZlCj4gIAkgKiBwcm9ibGVtcyBnZXR0aW5nIHRvZ2dsZSBjb3JyZWN0 Lgo+ICAJICovCj4gIAo+IC0JaWYgKGlzX2luKQo+IC0JCWNzciA9IG11c2JfcmVhZHcoZXBpbywg TVVTQl9SWENTUikgJiBNVVNCX1JYQ1NSX0hfREFUQVRPR0dMRTsKPiAtCWVsc2UKPiAtCQljc3Ig PSBtdXNiX3JlYWR3KGVwaW8sIE1VU0JfVFhDU1IpICYgTVVTQl9UWENTUl9IX0RBVEFUT0dHTEU7 Cj4gKwkvKiBNZWRpYVRlayBjb250cm9sbGVyIGhhcyBwcml2YXRlIHRvZ2dsZSByZWdpc3RlciAq LwoKb25seSBvbmUgdG9nZ2xlIHJlZ2lzdGVyIGZvciBhbGwgZW5kcG9pbnRzPyBob3cgZG9lcyBp dCBoYW5kbGUKZGlmZmVyZW5jZSB0b2dnbGUgdmFsdWVzIGZvciBkaWZmZXJlbnQgZW5kcG9pbnRz PwoKPiArCWlmIChtdXNiLT5vcHMtPnF1aXJrcyAmIE1VU0JfTVRLX1FVSVJLUykgewo+ICsJCXUx NiB0b2dnbGU7Cj4gKwkJdTggZXBudW0gPSBxaC0+aHdfZXAtPmVwbnVtOwo+ICsKPiArCQlpZiAo aXNfaW4pCj4gKwkJCXRvZ2dsZSA9IG11c2JfcmVhZGwobXVzYi0+bXJlZ3MsIE1VU0JfUlhUT0cp OwoKc2hvdWxkIHVzZSBtdXNiX3JlYWR3KCkgaW5zdGVhZD8gTVVTQl9SWFRPRyBzZWVtcyB0byBi ZSAxNmJpdC4KCj4gKwkJZWxzZQo+ICsJCQl0b2dnbGUgPSBtdXNiX3JlYWRsKG11c2ItPm1yZWdz LCBNVVNCX1RYVE9HKTsKPiArCj4gKwkJY3NyID0gdG9nZ2xlICYgKDEgPDwgZXBudW0pOwo+ICsJ fSBlbHNlIHsKPiArCQlpZiAoaXNfaW4pCj4gKwkJCWNzciA9IG11c2JfcmVhZHcoZXBpbywgTVVT Ql9SWENTUikKPiArCQkJCSYgTVVTQl9SWENTUl9IX0RBVEFUT0dHTEU7Cj4gKwkJZWxzZQo+ICsJ CQljc3IgPSBtdXNiX3JlYWR3KGVwaW8sIE1VU0JfVFhDU1IpCj4gKwkJCQkmIE1VU0JfVFhDU1Jf SF9EQVRBVE9HR0xFOwoKRG9lcyB0aGlzIGxvZ2ljIHN0aWxsIHdvcmsgZm9yIHRoZSBtdGsgcGxh dGZvcm0gZXZlbiBpZiBpdCBoYXMgaXRzIG93bgpwcml2YXRlIHRvZ2dsZSByZWdpc3Rlcj8gSWYg c28sIHdlIGRvbid0IG5lZWQgdG8gY2hhbmdlIGhlcmUuCgpJZiBub3QsIGxldCdzIHRyeSB0byBu b3QgdXNlIHRoaXMgcXVpcmsgZmxhZy4gUGxlYXNlIGNyZWF0ZSBhIGhvb2sKbXVzYl9wbGF0Zm9y bV9nZXRfdG9nZ2xlKCkgaW4gc3RydWN0IG11c2JfcGxhdGZvcm1fb3BzLgoKPiArCX0KPiAgCj4g IAl1c2Jfc2V0dG9nZ2xlKHVyYi0+ZGV2LCBxaC0+ZXBudW0sICFpc19pbiwgY3NyID8gMSA6IDAp Owo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHUxNiBtdXNiX3NldF90b2dnbGUoc3RydWN0IG11 c2JfcWggKnFoLCBpbnQgaXNfaW4sCj4gKwkJCQkJc3RydWN0IHVyYiAqdXJiKQo+ICt7Cj4gKwl1 MTYgY3NyID0gMDsKPiArCXUxNiB0b2dnbGUgPSAwOwo+ICsJc3RydWN0IG11c2IgKm11c2IgPSBx aC0+aHdfZXAtPm11c2I7Cj4gKwl1OCBlcG51bSA9IHFoLT5od19lcC0+ZXBudW07Cj4gKwo+ICsJ dG9nZ2xlID0gdXNiX2dldHRvZ2dsZSh1cmItPmRldiwgcWgtPmVwbnVtLCAhaXNfaW4pOwo+ICsK PiArCS8qIE1lZGlhVGVrIGNvbnRyb2xsZXIgaGFzIHByaXZhdGUgdG9nZ2xlIHJlZ2lzdGVyICov Cj4gKwlpZiAobXVzYi0+b3BzLT5xdWlya3MgJiBNVVNCX01US19RVUlSS1MpIHsKPiArCQlpZiAo aXNfaW4pIHsKPiArCQkJbXVzYl93cml0ZWwobXVzYi0+bXJlZ3MsIE1VU0JfUlhUT0dFTiwgKDEg PDwgZXBudW0pKTsKPiArCQkJbXVzYl93cml0ZWwobXVzYi0+bXJlZ3MsIE1VU0JfUlhUT0csICh0 b2dnbGUgPDwgZXBudW0pKTsKPiArCQl9IGVsc2Ugewo+ICsJCQltdXNiX3dyaXRlbChtdXNiLT5t cmVncywgTVVTQl9UWFRPR0VOLCAoMSA8PCBlcG51bSkpOwo+ICsJCQltdXNiX3dyaXRlbChtdXNi LT5tcmVncywgTVVTQl9UWFRPRywgKHRvZ2dsZSA8PCBlcG51bSkpOwo+ICsJCX0KPiArCX0gZWxz ZSB7Cj4gKwkJaWYgKGlzX2luKSB7Cj4gKwkJCWlmICh0b2dnbGUpCj4gKwkJCQljc3IgPSBNVVNC X1JYQ1NSX0hfV1JfREFUQVRPR0dMRQo+ICsJCQkJCQl8IE1VU0JfUlhDU1JfSF9EQVRBVE9HR0xF Owo+ICsJCQllbHNlCj4gKwkJCQljc3IgPSAwOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWlmICh0b2dn bGUpCj4gKwkJCQljc3IgfD0gTVVTQl9UWENTUl9IX1dSX0RBVEFUT0dHTEUKPiArCQkJCQkJfCBN VVNCX1RYQ1NSX0hfREFUQVRPR0dMRTsKPiArCQkJZWxzZQo+ICsJCQkJY3NyIHw9IE1VU0JfVFhD U1JfQ0xSREFUQVRPRzsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gY3NyOwoKUGxlYXNlIGNyZWF0 ZSBhIHNlcGVyYXRlIHBhdGNoIGZvciB0aGlzIG11c2Jfc2V0X3RvZ2dsZSgpIHdpdGhvdXQgYWRk aW5nCnRoZSBtdGsgbG9naWMuIEl0IGlzIGEgbmljZSBjbGVhbnVwLgoKPiArfQo+ICsKPiAgLyoK PiAgICogQWR2YW5jZSB0aGlzIGhhcmR3YXJlIGVuZHBvaW50J3MgcXVldWUsIGNvbXBsZXRpbmcg dGhlIHNwZWNpZmllZCBVUkIgYW5kCj4gICAqIGFkdmFuY2luZyB0byBlaXRoZXIgdGhlIG5leHQg VVJCIHF1ZXVlZCB0byB0aGF0IHFoLCBvciBlbHNlIGludmFsaWRhdGluZwo+IEBAIC03NzIsMTMg KzgyNSw4IEBAIHN0YXRpYyB2b2lkIG11c2JfZXBfcHJvZ3JhbShzdHJ1Y3QgbXVzYiAqbXVzYiwg dTggZXBudW0sCj4gIAkJCQkJKTsKPiAgCQkJY3NyIHw9IE1VU0JfVFhDU1JfTU9ERTsKPiAgCj4g LQkJCWlmICghaHdfZXAtPnR4X2RvdWJsZV9idWZmZXJlZCkgewo+IC0JCQkJaWYgKHVzYl9nZXR0 b2dnbGUodXJiLT5kZXYsIHFoLT5lcG51bSwgMSkpCj4gLQkJCQkJY3NyIHw9IE1VU0JfVFhDU1Jf SF9XUl9EQVRBVE9HR0xFCj4gLQkJCQkJCXwgTVVTQl9UWENTUl9IX0RBVEFUT0dHTEU7Cj4gLQkJ CQllbHNlCj4gLQkJCQkJY3NyIHw9IE1VU0JfVFhDU1JfQ0xSREFUQVRPRzsKPiAtCQkJfQo+ICsJ CQlpZiAoIWh3X2VwLT50eF9kb3VibGVfYnVmZmVyZWQpCj4gKwkJCQljc3IgfD0gbXVzYl9zZXRf dG9nZ2xlKHFoLCAhaXNfb3V0LCB1cmIpOwo+ICAKPiAgCQkJbXVzYl93cml0ZXcoZXBpbywgTVVT Ql9UWENTUiwgY3NyKTsKPiAgCQkJLyogUkVWSVNJVCBtYXkgbmVlZCB0byBjbGVhciBGTFVTSEZJ Rk8gLi4uICovCj4gQEAgLTg2MCwxNyArOTA4LDEyIEBAIHN0YXRpYyB2b2lkIG11c2JfZXBfcHJv Z3JhbShzdHJ1Y3QgbXVzYiAqbXVzYiwgdTggZXBudW0sCj4gIAo+ICAJLyogSU4vcmVjZWl2ZSAq Lwo+ICAJfSBlbHNlIHsKPiAtCQl1MTYJY3NyOwo+ICsJCXUxNgljc3IgPSAwOwo+ICAKPiAgCQlp ZiAoaHdfZXAtPnJ4X3JlaW5pdCkgewo+ICAJCQltdXNiX3J4X3JlaW5pdChtdXNiLCBxaCwgZXBu dW0pOwo+ICsJCQljc3IgfD0gbXVzYl9zZXRfdG9nZ2xlKHFoLCAhaXNfb3V0LCB1cmIpOwo+ICAK PiAtCQkJLyogaW5pdCBuZXcgc3RhdGU6IHRvZ2dsZSBhbmQgTllFVCwgbWF5YmUgRE1BIGxhdGVy ICovCj4gLQkJCWlmICh1c2JfZ2V0dG9nZ2xlKHVyYi0+ZGV2LCBxaC0+ZXBudW0sIDApKQo+IC0J CQkJY3NyID0gTVVTQl9SWENTUl9IX1dSX0RBVEFUT0dHTEUKPiAtCQkJCQl8IE1VU0JfUlhDU1Jf SF9EQVRBVE9HR0xFOwo+IC0JCQllbHNlCj4gLQkJCQljc3IgPSAwOwo+ICAJCQlpZiAocWgtPnR5 cGUgPT0gVVNCX0VORFBPSU5UX1hGRVJfSU5UKQo+ICAJCQkJY3NyIHw9IE1VU0JfUlhDU1JfRElT TllFVDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2IvbXVzYl9yZWdzLmggYi9k cml2ZXJzL3VzYi9tdXNiL211c2JfcmVncy5oCj4gaW5kZXggNWNkNzI2NC4uZmZiZTI2NyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9tdXNiL211c2JfcmVncy5oCj4gKysrIGIvZHJpdmVycy91 c2IvbXVzYi9tdXNiX3JlZ3MuaAo+IEBAIC0yNzMsNiArMjczLDEyIEBACj4gICNkZWZpbmUgTVVT Ql9SWEhVQkFERFIJCTB4MDYKPiAgI2RlZmluZSBNVVNCX1JYSFVCUE9SVAkJMHgwNwo+ICAKPiAr LyogTWVkaWFUZWsgY29udHJvbGxlciB0b2dnbGUgZW5hYmxlIGFuZCBzdGF0dXMgcmVnICovCj4g KyNkZWZpbmUgTVVTQl9SWFRPRwkJMHg4MAo+ICsjZGVmaW5lIE1VU0JfUlhUT0dFTgkJMHg4Mgo+ ICsjZGVmaW5lIE1VU0JfVFhUT0cJCTB4ODQKPiArI2RlZmluZSBNVVNCX1RYVE9HRU4JCTB4ODYK CkFnYWluLCB0aGVzZSBvZmZzZXRzIGFyZSBmb3IgZGlmZmVyZW50IHJlZ2lzdGVycyBpbiB0aGUg TVVTQiB2ZXJzaW9uIEkKaGF2ZSwgcGxlYXNlIGxldCBtZSBrbm93IGlmIHlvdSBoYXZlIGRpZmZl cmVudCB2ZXJzaW9uIG9mIHRoZSBNVVNCIElQLgoKPiArCj4gIHN0YXRpYyBpbmxpbmUgdTggbXVz Yl9yZWFkX2NvbmZpZ2RhdGEodm9pZCBfX2lvbWVtICptYmFzZSkKPiAgewo+ICAJbXVzYl93cml0 ZWIobWJhc2UsIE1VU0JfSU5ERVgsIDApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNi L211c2Joc2RtYS5jIGIvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuYwo+IGluZGV4IDgyNGFk Y2IuLmM1NDU0NzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvbXVzYi9tdXNiaHNkbWEuYwo+ ICsrKyBiL2RyaXZlcnMvdXNiL211c2IvbXVzYmhzZG1hLmMKPiBAQCAtMjYzLDcgKzI2Myw3IEBA IHN0YXRpYyBpbnQgZG1hX2NoYW5uZWxfYWJvcnQoc3RydWN0IGRtYV9jaGFubmVsICpjaGFubmVs KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBkbWFfY29udHJv bGxlcl9pcnEoaW50IGlycSwgdm9pZCAqcHJpdmF0ZV9kYXRhKQo+ICtpcnFyZXR1cm5fdCBkbWFf Y29udHJvbGxlcl9pcnEoaW50IGlycSwgdm9pZCAqcHJpdmF0ZV9kYXRhKQo+ICB7Cj4gIAlzdHJ1 Y3QgbXVzYl9kbWFfY29udHJvbGxlciAqY29udHJvbGxlciA9IHByaXZhdGVfZGF0YTsKPiAgCXN0 cnVjdCBtdXNiICptdXNiID0gY29udHJvbGxlci0+cHJpdmF0ZV9kYXRhOwo+IEBAIC0yODUsNiAr Mjg1LDggQEAgc3RhdGljIGlycXJldHVybl90IGRtYV9jb250cm9sbGVyX2lycShpbnQgaXJxLCB2 b2lkICpwcml2YXRlX2RhdGEpCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmbXVzYi0+bG9jaywgZmxh Z3MpOwo+ICAKPiAgCWludF9oc2RtYSA9IG11c2JfcmVhZGIobWJhc2UsIE1VU0JfSFNETUFfSU5U Uik7Cj4gKwlpZiAobXVzYi0+b3BzLT5xdWlya3MgJiBNVVNCX01US19RVUlSS1MpCj4gKwkJbXVz Yl93cml0ZWIobXVzYi0+bXJlZ3MsIE1VU0JfSFNETUFfSU5UUiwgaW50X2hzZG1hKTsKCnlvdSBj YW4gdXNlIG11c2JfY2xlYXJiKCkgZGVmaW5lZCBhYm92ZSB0byBnZXQgcmlkIG9mIHRoaXMgcXVp cmsuCgo+ICAKPiAgCWlmICghaW50X2hzZG1hKSB7Cj4gIAkJbXVzYl9kYmcobXVzYiwgInNwdXJp b3VzIERNQSBpcnEiKTsKPiBAQCAtMzc3LDE1ICszNzksMTcgQEAgc3RhdGljIGlycXJldHVybl90 IGRtYV9jb250cm9sbGVyX2lycShpbnQgaXJxLCB2b2lkICpwcml2YXRlX2RhdGEpCj4gIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZtdXNiLT5sb2NrLCBmbGFncyk7Cj4gIAlyZXR1cm4gcmV0dmFs Owo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9jb250cm9sbGVyX2lycSk7Cj4gIAo+ICB2 b2lkIG11c2Joc19kbWFfY29udHJvbGxlcl9kZXN0cm95KHN0cnVjdCBkbWFfY29udHJvbGxlciAq YykKPiAgewo+ICAJc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBjb250 YWluZXJfb2YoYywKPiAgCQkJc3RydWN0IG11c2JfZG1hX2NvbnRyb2xsZXIsIGNvbnRyb2xsZXIp Owo+ICsJc3RydWN0IG11c2IgKm11c2IgPSBjb250cm9sbGVyLT5wcml2YXRlX2RhdGE7Cj4gIAo+ ICAJZG1hX2NvbnRyb2xsZXJfc3RvcChjb250cm9sbGVyKTsKPiAgCj4gLQlpZiAoY29udHJvbGxl ci0+aXJxKQo+ICsJaWYgKCEobXVzYi0+b3BzLT5xdWlya3MgJiBNVVNCX01US19RVUlSS1MpICYm IGNvbnRyb2xsZXItPmlycSkKPiAgCQlmcmVlX2lycShjb250cm9sbGVyLT5pcnEsIGMpOwo+ICAK PiAgCWtmcmVlKGNvbnRyb2xsZXIpOwo+IEBAIC0zOTgsMTEgKzQwMiwxNSBAQCBzdHJ1Y3QgZG1h X2NvbnRyb2xsZXIgKm11c2Joc19kbWFfY29udHJvbGxlcl9jcmVhdGUoc3RydWN0IG11c2IgKm11 c2IsCj4gIAlzdHJ1Y3QgbXVzYl9kbWFfY29udHJvbGxlciAqY29udHJvbGxlcjsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldiA9IG11c2ItPmNvbnRyb2xsZXI7Cj4gIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4gLQlpbnQgaXJxID0gcGxhdGZv cm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImRtYSIpOwo+ICsJaW50IGlycSA9IC0xOwo+ICAKPiAt CWlmIChpcnEgPD0gMCkgewo+IC0JCWRldl9lcnIoZGV2LCAiTm8gRE1BIGludGVycnVwdCBsaW5l IVxuIik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwlpZiAoIShtdXNiLT5vcHMtPnF1aXJrcyAmIE1V U0JfTVRLX1FVSVJLUykpIHsKPiArCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2 LCAiZG1hIik7Cj4gKwo+ICsJCWlmIChpcnEgPCAwKSB7Cj4gKwkJCWRldl9lcnIoZGV2LCAiTm8g RE1BIGludGVycnVwdCBsaW5lIVxuIik7Cj4gKwkJCXJldHVybiBOVUxMOwo+ICsJCX0KPiAgCX0K ClBsZWFzZSBjcmVhdGUgbXVzYmhzX2RtYV9jb250cm9sbGVyX2Rlc3Ryb3lfbm9pcnEoKSBmb3Ig eW91ciBwbGF0Zm9ybSB0bwpub3QgdXNlIHRoZSBxdWlyay4KCj4gIAo+ICAJY29udHJvbGxlciA9 IGt6YWxsb2Moc2l6ZW9mKCpjb250cm9sbGVyKSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTQxOCwxNSAr NDI2LDE3IEBAIHN0cnVjdCBkbWFfY29udHJvbGxlciAqbXVzYmhzX2RtYV9jb250cm9sbGVyX2Ny ZWF0ZShzdHJ1Y3QgbXVzYiAqbXVzYiwKPiAgCWNvbnRyb2xsZXItPmNvbnRyb2xsZXIuY2hhbm5l bF9wcm9ncmFtID0gZG1hX2NoYW5uZWxfcHJvZ3JhbTsKPiAgCWNvbnRyb2xsZXItPmNvbnRyb2xs ZXIuY2hhbm5lbF9hYm9ydCA9IGRtYV9jaGFubmVsX2Fib3J0Owo+ICAKPiAtCWlmIChyZXF1ZXN0 X2lycShpcnEsIGRtYV9jb250cm9sbGVyX2lycSwgMCwKPiArCWlmICghKG11c2ItPm9wcy0+cXVp cmtzICYgTVVTQl9NVEtfUVVJUktTKSkgewo+ICsJCWlmIChyZXF1ZXN0X2lycShpcnEsIGRtYV9j b250cm9sbGVyX2lycSwgMCwKPiAgCQkJZGV2X25hbWUobXVzYi0+Y29udHJvbGxlciksICZjb250 cm9sbGVyLT5jb250cm9sbGVyKSkgewo+IC0JCWRldl9lcnIoZGV2LCAicmVxdWVzdF9pcnEgJWQg ZmFpbGVkIVxuIiwgaXJxKTsKPiAtCQltdXNiX2RtYV9jb250cm9sbGVyX2Rlc3Ryb3koJmNvbnRy b2xsZXItPmNvbnRyb2xsZXIpOwo+ICsJCQlkZXZfZXJyKGRldiwgInJlcXVlc3RfaXJxICVkIGZh aWxlZCFcbiIsIGlycSk7Cj4gKwkJCW11c2JfZG1hX2NvbnRyb2xsZXJfZGVzdHJveSgmY29udHJv bGxlci0+Y29udHJvbGxlcik7Cj4gIAo+IC0JCXJldHVybiBOVUxMOwo+IC0JfQo+ICsJCQlyZXR1 cm4gTlVMTDsKPiArCQl9Cj4gIAo+IC0JY29udHJvbGxlci0+aXJxID0gaXJxOwo+ICsJCWNvbnRy b2xsZXItPmlycSA9IGlycTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gJmNvbnRyb2xsZXItPmNvbnRy b2xsZXI7Cj4gIH0KClNhbWUgaGVyZSwgY3JlYXRlIG11c2Joc19kbWFfY29udHJvbGxlcl9jcmVh dGVfbm9pcnEoKS4gVGhlbiB1c2UgYm90aApuZXcgQVBJIGZvciB0aGUgbXRrIGdsdWUgZHJpdmVy LgoKUmVnYXJkcywKLUJpbi4K