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: [v7] staging: typec: handle vendor defined part and modify drp toggling flow From: Guenter Roeck Message-Id: <20180309172257.GA9949@roeck-us.net> Date: Fri, 9 Mar 2018 09:22:57 -0800 To: ShuFan Lee Cc: heikki.krogerus@linux.intel.com, greg@kroah.com, shufan_lee@richtek.com, cy_huang@richtek.com, jun.li@nxp.com, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: T24gVHVlLCBNYXIgMDYsIDIwMTggYXQgMDk6NTA6MzJBTSArMDgwMCwgU2h1RmFuIExlZSB3cm90 ZToKPiBGcm9tOiBTaHVGYW4gTGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPgo+IAo+IEhhbmRs ZSB2ZW5kb3IgZGVmaW5lZCBiZWhhdmlvciBpbiB0Y3BjaV9pbml0LCB0Y3BjaV9zZXRfdmNvbm4s IHRjcGNpX3N0YXJ0X2RycF90b2dnbGluZwo+IGFuZCBleHBvcnQgdGNwY2lfaXJxLiBNb3JlIG9w ZXJhdGlvbnMgY2FuIGJlIGV4dGVuZGVkIGluIHRjcGNpX2RhdGEgaWYgbmVlZGVkLgo+IEFjY29y ZGluZyB0byBUQ1BDSSBzcGVjaWZpY2F0aW9uLCA0LjQuNS4yIFJPTEVfQ09OVFJPTCwKPiBUQ1BD IHNoYWxsIG5vdCBzdGFydCBEUlAgdG9nZ2xpbmcgdW50aWwgc3Vic2VxdWVudGx5IHRoZSBUQ1BN Cj4gd3JpdGVzIHRvIHRoZSBDT01NQU5EIHJlZ2lzdGVyIHRvIHN0YXJ0IERSUCB0b2dnbGluZy4K PiBEUlAgdG9nZ2xpbmcgZmxvdyBpcyBjaGFuZ2VkIGFzIGZvbGxvd2luZzoKPiAgIC0gV3JpdGUg RFJQID0gMSwgUnAgbGV2ZWwgYW5kIFJDLkNDeCB0byBSZC9SZCBvciBScC9ScAo+ICAgLSBTZXQg TE9PSzRDT05ORUNUSU9OIGNvbW1hbmQKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaHVGYW4gTGVlIDxz aHVmYW5fbGVlQHJpY2h0ZWsuY29tPgoKSSBhbSBmaW5lIHdpdGggdGhpcyB2ZXJzaW9uLgoKUmV2 aWV3ZWQtYnk6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KCj4gLS0tCj4gIGRy aXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jIHwgMTI3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaCB8ICAx NSArKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKPiAKPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYxICYgdjIKPiAgLSBSZW1vdmUg dW5uZWNlc3NhcnkgaTJjX2NsaWVudCBpbiB0aGUgc3RydWN0dXJlIG9mIHRjcGNpLgo+ICAtIFJl bmFtZSBzdHJ1Y3R1cmUgb2YgdGNwY2lfdmVuZG9yX2RhdGEgdG8gdGNwY2lfZGF0YS4KPiAgLSBO b3QgZXhwb3J0aW5nIHRjcGNpIHJlYWQvd3JpdGUgd3JhcHBlcnMgYnV0IHJlZ2lzdGVyIGkyYyBy ZWdtYXAgaW4gZ2x1ZSBkcml2ZXIuCj4gIC0gQWRkIHNldF92Y29ubiBvcHMgaW4gdGNwY2lfZGF0 YS4KPiAgICAoSXQgaXMgbmVjZXNzYXJ5IGZvciBSVDE3MTFIIHRvIGVuYWJsZS9kaXNhYmxlIGlk bGUgbW9kZSBiZWZvcmUgZGlzYWJsaW5nL2VuYWJsaW5nIHZjb25uKQo+ICAtIEV4cG9ydCB0Y3Bj aV9pcnEgc28gdGhhdCB2ZW5kb3IgY2FuIGNhbGwgaXQgaW4gdGhlaXIgb3duIElSUSBoYW5kbGVy Lgo+IAo+ICBwYXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4gdjIgJiB2Mwo+ICAtIENoYW5nZSB0aGUg cmV0dXJuIHR5cGUgb2YgdGNwY2lfaXJxIGZyb20gaW50IHRvIGlycXJldHVybl90Lgo+IAo+ICBw YXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4gdjMgJiB2NAo+ICAtIERpcmVjdGx5IHJldHVybiByZWdt YXBfd3JpdGUgYXQgdGhlIGVuZCBvZiBkcnBfdG9nZ2xpbmcgZnVuY3Rpb24uCj4gIC0gQmVjYXVz ZSB0Y3BjaV9pcnEgaXMgY2FsbGVkIGluIF90Y3BjaV9pcnEsIG1vdmUgX3RjcGNpX2lycSB0byB0 aGUgcGxhY2UgYWZ0ZXIgdGNwY2lfaXJxLgo+IAo+ICBwYXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4g djQgJiB2NQo+ICAtIEFkZCBhIHNwYWNlIGJldHdlZW4gbXkgZmlyc3QgJiBsYXN0IG5hbWUsIGZy b20gU2h1RmFuTGVlIHRvIFNodUZhbiBMZWUuCj4gCj4gIHBhdGNoIGNoYW5nZWxvZ3MgYmV0d2Vl biB2NSAmIHY2Cj4gIC0gQWRkIHN0YXJ0X2RycF90b2dnbGluZyBpbiB0Y3BjaV9kYXRhIGFuZCBj YWxsIGl0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGNwY2lfc3RhcnRfZHJwX3RvZ2dsaW5nLgo+ICAt IE1vZGlmeSB0aGUgZmxvdyBvZiB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcgYXMgZm9sbG93aW5n Ogo+ICAgICAtIFNldCBScCBsZXZlbCwgUkMuQ0N4IHRvIFJkL1JkIG9yIFJwL1JwIGFuZCBEUlAg PSAxCj4gICAgIC0gU2V0IExPT0s0Q09OTkVDVElPTiBjb21tYW5kCj4gCj4gIHBhdGNoIGNoYW5n ZWxvZ3MgYmV0d2VlbiB2NiAmIHY3Cj4gIC0gUmVtb3ZlIGNoZWNraW5nIHdoZXRoZXIgdGNwY2kt PmRhdGEgaXMgTlVMTCBiZWNhdXNlIGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgYXZhaWxhYmxlLgo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBiL2RyaXZlcnMv c3RhZ2luZy90eXBlYy90Y3BjaS5jCj4gaW5kZXggOWJkNDQxMi4uODA0Mzc0MCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2lu Zy90eXBlYy90Y3BjaS5jCj4gQEAgLTIxLDcgKzIxLDYgQEAKPiAgCj4gIHN0cnVjdCB0Y3BjaSB7 Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50Owo+ ICAKPiAgCXN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQ7Cj4gIAo+IEBAIC0zMCw2ICsyOSwxMiBAQCBz dHJ1Y3QgdGNwY2kgewo+ICAJYm9vbCBjb250cm9sc192YnVzOwo+ICAKPiAgCXN0cnVjdCB0Y3Bj X2RldiB0Y3BjOwo+ICsJc3RydWN0IHRjcGNpX2RhdGEgKmRhdGE7Cj4gK307Cj4gKwo+ICtzdHJ1 Y3QgdGNwY2lfY2hpcCB7Cj4gKwlzdHJ1Y3QgdGNwY2kgKnRjcGNpOwo+ICsJc3RydWN0IHRjcGNp X2RhdGEgZGF0YTsKPiAgfTsKPiAgCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNpICp0Y3Bj X3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykKPiBAQCAtMzcsOCArNDIsNyBAQCBzdGF0 aWMgaW5saW5lIHN0cnVjdCB0Y3BjaSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYgKnRj cGMpCj4gIAlyZXR1cm4gY29udGFpbmVyX29mKHRjcGMsIHN0cnVjdCB0Y3BjaSwgdGNwYyk7Cj4g IH0KPiAgCj4gLXN0YXRpYyBpbnQgdGNwY2lfcmVhZDE2KHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHVu c2lnbmVkIGludCByZWcsCj4gLQkJCXUxNiAqdmFsKQo+ICtzdGF0aWMgaW50IHRjcGNpX3JlYWQx NihzdHJ1Y3QgdGNwY2kgKnRjcGNpLCB1bnNpZ25lZCBpbnQgcmVnLCB1MTYgKnZhbCkKPiAgewo+ ICAJcmV0dXJuIHJlZ21hcF9yYXdfcmVhZCh0Y3BjaS0+cmVnbWFwLCByZWcsIHZhbCwgc2l6ZW9m KHUxNikpOwo+ICB9Cj4gQEAgLTk4LDkgKzEwMiwxNyBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9j YyhzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsIGVudW0gdHlwZWNfY2Nfc3RhdHVzIGNjKQo+ICBzdGF0 aWMgaW50IHRjcGNpX3N0YXJ0X2RycF90b2dnbGluZyhzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsCj4g IAkJCQkgICAgZW51bSB0eXBlY19jY19zdGF0dXMgY2MpCj4gIHsKPiArCWludCByZXQ7Cj4gIAlz dHJ1Y3QgdGNwY2kgKnRjcGNpID0gdGNwY190b190Y3BjaSh0Y3BjKTsKPiAgCXVuc2lnbmVkIGlu dCByZWcgPSBUQ1BDX1JPTEVfQ1RSTF9EUlA7Cj4gIAo+ICsJLyogSGFuZGxlIHZlbmRvciBkcnAg dG9nZ2xpbmcgKi8KPiArCWlmICh0Y3BjaS0+ZGF0YS0+c3RhcnRfZHJwX3RvZ2dsaW5nKSB7Cj4g KwkJcmV0ID0gdGNwY2ktPmRhdGEtPnN0YXJ0X2RycF90b2dnbGluZyh0Y3BjaSwgdGNwY2ktPmRh dGEsIGNjKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g IAlzd2l0Y2ggKGNjKSB7Cj4gIAlkZWZhdWx0Ogo+ICAJY2FzZSBUWVBFQ19DQ19SUF9ERUY6Cj4g QEAgLTExNyw3ICsxMjksMTcgQEAgc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmco c3RydWN0IHRjcGNfZGV2ICp0Y3BjLAo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCXJldHVybiBy ZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7Cj4gKwlpZiAo Y2MgPT0gVFlQRUNfQ0NfUkQpCj4gKwkJcmVnIHw9IChUQ1BDX1JPTEVfQ1RSTF9DQ19SRCA8PCBU Q1BDX1JPTEVfQ1RSTF9DQzFfU0hJRlQpIHwKPiArCQkJICAgKFRDUENfUk9MRV9DVFJMX0NDX1JE IDw8IFRDUENfUk9MRV9DVFJMX0NDMl9TSElGVCk7Cj4gKwllbHNlCj4gKwkJcmVnIHw9IChUQ1BD X1JPTEVfQ1RSTF9DQ19SUCA8PCBUQ1BDX1JPTEVfQ1RSTF9DQzFfU0hJRlQpIHwKPiArCQkJICAg KFRDUENfUk9MRV9DVFJMX0NDX1JQIDw8IFRDUENfUk9MRV9DVFJMX0NDMl9TSElGVCk7Cj4gKwly ZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7Cj4g KwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJcmV0dXJuIHJlZ21hcF93cml0ZSh0 Y3BjaS0+cmVnbWFwLCBUQ1BDX0NPTU1BTkQsCj4gKwkJCSAgICBUQ1BDX0NNRF9MT09LNENPTk5F Q1RJT04pOwo+ICB9Cj4gIAo+ICBzdGF0aWMgZW51bSB0eXBlY19jY19zdGF0dXMgdGNwY2lfdG9f dHlwZWNfY2ModW5zaWduZWQgaW50IGNjLCBib29sIHNpbmspCj4gQEAgLTE3OCw2ICsyMDAsMTMg QEAgc3RhdGljIGludCB0Y3BjaV9zZXRfdmNvbm4oc3RydWN0IHRjcGNfZGV2ICp0Y3BjLCBib29s IGVuYWJsZSkKPiAgCXN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOwo+ ICAJaW50IHJldDsKPiAgCj4gKwkvKiBIYW5kbGUgdmVuZG9yIHNldCB2Y29ubiAqLwo+ICsJaWYg KHRjcGNpLT5kYXRhLT5zZXRfdmNvbm4pIHsKPiArCQlyZXQgPSB0Y3BjaS0+ZGF0YS0+c2V0X3Zj b25uKHRjcGNpLCB0Y3BjaS0+ZGF0YSwgZW5hYmxlKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJ cmV0dXJuIHJldDsKPiArCX0KPiArCj4gIAlyZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21h cCwgVENQQ19QT1dFUl9DVFJMLAo+ICAJCQkgICBlbmFibGUgPyBUQ1BDX1BPV0VSX0NUUkxfVkNP Tk5fRU5BQkxFIDogMCk7Cj4gIAlpZiAocmV0IDwgMCkKPiBAQCAtMzIzLDYgKzM1MiwxMyBAQCBz dGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3BjKQo+ICAJaWYgKHRpbWVf YWZ0ZXIoamlmZmllcywgdGltZW91dCkpCj4gIAkJcmV0dXJuIC1FVElNRURPVVQ7Cj4gIAo+ICsJ LyogSGFuZGxlIHZlbmRvciBpbml0ICovCj4gKwlpZiAodGNwY2ktPmRhdGEtPmluaXQpIHsKPiAr CQlyZXQgPSB0Y3BjaS0+ZGF0YS0+aW5pdCh0Y3BjaSwgdGNwY2ktPmRhdGEpOwo+ICsJCWlmIChy ZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiAgCS8qIENsZWFyIGFsbCBldmVu dHMgKi8KPiAgCXJldCA9IHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlQsIDB4ZmZmZik7 Cj4gIAlpZiAocmV0IDwgMCkKPiBAQCAtMzQ0LDkgKzM4MCw4IEBAIHN0YXRpYyBpbnQgdGNwY2lf aW5pdChzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpCj4gIAlyZXR1cm4gdGNwY2lfd3JpdGUxNih0Y3Bj aSwgVENQQ19BTEVSVF9NQVNLLCByZWcpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaXJxcmV0dXJuX3Qg dGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAraXJxcmV0dXJuX3QgdGNwY2lfaXJx KHN0cnVjdCB0Y3BjaSAqdGNwY2kpCj4gIHsKPiAtCXN0cnVjdCB0Y3BjaSAqdGNwY2kgPSBkZXZf aWQ7Cj4gIAl1MTYgc3RhdHVzOwo+ICAKPiAgCXRjcGNpX3JlYWQxNih0Y3BjaSwgVENQQ19BTEVS VCwgJnN0YXR1cyk7Cj4gQEAgLTQxMiw2ICs0NDcsMTQgQEAgc3RhdGljIGlycXJldHVybl90IHRj cGNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gIAo+ICAJcmV0dXJuIElSUV9IQU5ETEVE Owo+ICB9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX2lycSk7Cj4gKwo+ICtzdGF0aWMgaXJx cmV0dXJuX3QgX3RjcGNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gK3sKPiArCXN0cnVj dCB0Y3BjaSAqdGNwY2kgPSBkZXZfaWQ7Cj4gKwo+ICsJcmV0dXJuIHRjcGNpX2lycSh0Y3BjaSk7 Cj4gK30KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyB0Y3BjaV9yZWdt YXBfY29uZmlnID0gewo+ICAJLnJlZ19iaXRzID0gOCwKPiBAQCAtNDM1LDIyICs0NzgsMTggQEAg c3RhdGljIGludCB0Y3BjaV9wYXJzZV9jb25maWcoc3RydWN0IHRjcGNpICp0Y3BjaSkKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IHRjcGNpX3Byb2JlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQsCj4gLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNf aWQpCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9ydChzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhKQo+ICB7Cj4gIAlzdHJ1Y3QgdGNwY2kgKnRjcGNp Owo+ICAJaW50IGVycjsKPiAgCj4gLQl0Y3BjaSA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYs IHNpemVvZigqdGNwY2kpLCBHRlBfS0VSTkVMKTsKPiArCXRjcGNpID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCF0Y3BjaSkKPiAtCQlyZXR1 cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gLQl0Y3BjaS0+ Y2xpZW50ID0gY2xpZW50Owo+IC0JdGNwY2ktPmRldiA9ICZjbGllbnQtPmRldjsKPiAtCWkyY19z ZXRfY2xpZW50ZGF0YShjbGllbnQsIHRjcGNpKTsKPiAtCXRjcGNpLT5yZWdtYXAgPSBkZXZtX3Jl Z21hcF9pbml0X2kyYyhjbGllbnQsICZ0Y3BjaV9yZWdtYXBfY29uZmlnKTsKPiAtCWlmIChJU19F UlIodGNwY2ktPnJlZ21hcCkpCj4gLQkJcmV0dXJuIFBUUl9FUlIodGNwY2ktPnJlZ21hcCk7Cj4g Kwl0Y3BjaS0+ZGV2ID0gZGV2Owo+ICsJdGNwY2ktPmRhdGEgPSBkYXRhOwo+ICsJdGNwY2ktPnJl Z21hcCA9IGRhdGEtPnJlZ21hcDsKPiAgCj4gIAl0Y3BjaS0+dGNwYy5pbml0ID0gdGNwY2lfaW5p dDsKPiAgCXRjcGNpLT50Y3BjLmdldF92YnVzID0gdGNwY2lfZ2V0X3ZidXM7Cj4gQEAgLTQ2Nywy NyArNTA2LDYzIEBAIHN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwKPiAgCj4gIAllcnIgPSB0Y3BjaV9wYXJzZV9jb25maWcodGNwY2kpOwo+ICAJaWYgKGVy ciA8IDApCj4gLQkJcmV0dXJuIGVycjsKPiArCQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsKPiAr CXRjcGNpLT5wb3J0ID0gdGNwbV9yZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNw Yyk7Cj4gKwlpZiAoUFRSX0VSUl9PUl9aRVJPKHRjcGNpLT5wb3J0KSkKPiArCQlyZXR1cm4gRVJS X0NBU1QodGNwY2ktPnBvcnQpOwo+ICsKPiArCXJldHVybiB0Y3BjaTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTCh0Y3BjaV9yZWdpc3Rlcl9wb3J0KTsKPiArCj4gK3ZvaWQgdGNwY2lfdW5yZWdp c3Rlcl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpCj4gK3sKPiArCXRjcG1fdW5yZWdpc3Rlcl9w b3J0KHRjcGNpLT5wb3J0KTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV91bnJlZ2lz dGVyX3BvcnQpOwo+ICsKPiArc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVu dCAqY2xpZW50LAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaTJjX2lk KQo+ICt7Cj4gKwlzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcDsKPiArCWludCBlcnI7Cj4gKwl1MTYg dmFsID0gMDsKPiAgCj4gLQkvKiBEaXNhYmxlIGNoaXAgaW50ZXJydXB0cyAqLwo+IC0JdGNwY2lf d3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCAwKTsKPiArCWNoaXAgPSBkZXZtX2t6YWxs b2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKmNoaXApLCBHRlBfS0VSTkVMKTsKPiArCWlmICghY2hp cCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwljaGlwLT5kYXRhLnJlZ21hcCA9IGRldm1f cmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnRjcGNpX3JlZ21hcF9jb25maWcpOwo+ICsJaWYgKElT X0VSUihjaGlwLT5kYXRhLnJlZ21hcCkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY2hpcC0+ZGF0YS5y ZWdtYXApOwo+ICAKPiAtCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodGNwY2ktPmRl diwgY2xpZW50LT5pcnEsIE5VTEwsCj4gLQkJCQkJdGNwY2lfaXJxLAo+ICsJLyogRGlzYWJsZSBj aGlwIGludGVycnVwdHMgYmVmb3JlIHJlcXVlc3RpbmcgaXJxICovCj4gKwllcnIgPSByZWdtYXBf cmF3X3dyaXRlKGNoaXAtPmRhdGEucmVnbWFwLCBUQ1BDX0FMRVJUX01BU0ssICZ2YWwsCj4gKwkJ CSAgICAgICBzaXplb2YodTE2KSk7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ ICsKPiArCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGll bnQtPmlycSwgTlVMTCwKPiArCQkJCQlfdGNwY2lfaXJxLAo+ICAJCQkJCUlSUUZfT05FU0hPVCB8 IElSUUZfVFJJR0dFUl9MT1csCj4gLQkJCQkJZGV2X25hbWUodGNwY2ktPmRldiksIHRjcGNpKTsK PiArCQkJCQlkZXZfbmFtZSgmY2xpZW50LT5kZXYpLCBjaGlwKTsKPiAgCWlmIChlcnIgPCAwKQo+ ICAJCXJldHVybiBlcnI7Cj4gIAo+IC0JdGNwY2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQo dGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsKPiAtCXJldHVybiBQVFJfRVJSX09SX1pFUk8odGNw Y2ktPnBvcnQpOwo+ICsJY2hpcC0+dGNwY2kgPSB0Y3BjaV9yZWdpc3Rlcl9wb3J0KCZjbGllbnQt PmRldiwgJmNoaXAtPmRhdGEpOwo+ICsJaWYgKFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoY2hpcC0+dGNwY2kpOwo+ICsKPiArCWkyY19zZXRfY2xpZW50 ZGF0YShjbGllbnQsIGNoaXApOwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQg dGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gIHsKPiAtCXN0cnVjdCB0 Y3BjaSAqdGNwY2kgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKPiArCXN0cnVjdCB0Y3Bj aV9jaGlwICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7Cj4gIAo+IC0JdGNwbV91 bnJlZ2lzdGVyX3BvcnQodGNwY2ktPnBvcnQpOwo+ICsJdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KGNo aXAtPnRjcGNpKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3N0YWdpbmcvdHlwZWMvdGNwY2kuaCBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oCj4g aW5kZXggZmRmYjA2Yy4uYTJjMTc1NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlw ZWMvdGNwY2kuaAo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oCj4gQEAgLTU5 LDYgKzU5LDcgQEAKPiAgI2RlZmluZSBUQ1BDX1BPV0VSX0NUUkxfVkNPTk5fRU5BQkxFCUJJVCgw KQo+ICAKPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVUwkJCTB4MWQKPiArI2RlZmluZSBUQ1BDX0ND X1NUQVRVU19EUlBSU1QJCUJJVCg1KQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTX1RFUk0JCUJJ VCg0KQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTX0NDMl9TSElGVAkyCj4gICNkZWZpbmUgVENQ Q19DQ19TVEFUVVNfQ0MyX01BU0sJCTB4Mwo+IEBAIC0xMjEsNCArMTIyLDE4IEBACj4gICNkZWZp bmUgVENQQ19WQlVTX1ZPTFRBR0VfQUxBUk1fSElfQ0ZHCQkweDc2Cj4gICNkZWZpbmUgVENQQ19W QlVTX1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHCQkweDc4Cj4gIAo+ICtzdHJ1Y3QgdGNwY2k7Cj4gK3N0 cnVjdCB0Y3BjaV9kYXRhIHsKPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsKPiArCWludCAoKmlu aXQpKHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhKTsKPiArCWlu dCAoKnNldF92Y29ubikoc3RydWN0IHRjcGNpICp0Y3BjaSwgc3RydWN0IHRjcGNpX2RhdGEgKmRh dGEsCj4gKwkJCSBib29sIGVuYWJsZSk7Cj4gKwlpbnQgKCpzdGFydF9kcnBfdG9nZ2xpbmcpKHN0 cnVjdCB0Y3BjaSAqdGNwY2ksIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhLAo+ICsJCQkJICBlbnVt IHR5cGVjX2NjX3N0YXR1cyBjYyk7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgdGNwY2kgKnRjcGNpX3Jl Z2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSk7 Cj4gK3ZvaWQgdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpOwo+ICtp cnFyZXR1cm5fdCB0Y3BjaV9pcnEoc3RydWN0IHRjcGNpICp0Y3BjaSk7Cj4gKwo+ICAjZW5kaWYg LyogX19MSU5VWF9VU0JfVENQQ0lfSCAqLwo+IC0tIAo+IDEuOS4xCj4KLS0tClRvIHVuc3Vic2Ny aWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC11c2Ii IGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1v cmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWlu Zm8uaHRtbAo=