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: staging: typec: handle vendor defined part and modify drp toggling flow From: Guenter Roeck Message-Id: <20180221221514.GA31916@roeck-us.net> Date: Wed, 21 Feb 2018 14:15:14 -0800 To: ShuFanLee Cc: heikki.krogerus@linux.intel.com, greg@kroah.com, shufan_lee@richtek.com, cy_huang@richtek.com, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org List-ID: T24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMTE6MDI6MjNQTSArMDgwMCwgU2h1RmFuTGVlIHdyb3Rl Ogo+IEZyb206IFNodUZhbkxlZSA8c2h1ZmFuX2xlZUByaWNodGVrLmNvbT4KPiAKPiBIYW5kbGUg dmVuZG9yIGRlZmluZWQgYmVoYXZpb3IgaW4gdGNwY2lfaW5pdCwgdGNwY2lfc2V0X3Zjb25uIGFu ZCBleHBvcnQgdGNwY2lfaXJxLgo+IE1vcmUgb3BlcmF0aW9ucyBjYW4gYmUgZXh0ZW5kZWQgaW4g dGNwY2lfZGF0YSBpZiBuZWVkZWQuCj4gQWNjb3JkaW5nIHRvIFRDUENJIHNwZWNpZmljYXRpb24s IDQuNC41LjIgUk9MRV9DT05UUk9MLAo+IFRDUEMgc2hhbGwgbm90IHN0YXJ0IERSUCB0b2dnbGlu ZyB1bnRpbCBzdWJzZXF1ZW50bHkgdGhlIFRDUE0KPiB3cml0ZXMgdG8gdGhlIENPTU1BTkQgcmVn aXN0ZXIgdG8gc3RhcnQgRFJQIHRvZ2dsaW5nLgo+IERSUCB0b2dnbGluZyBmbG93IGlzIGNoYWdu ZWQgYXMgZm9sbG93aW5nOgo+ICAgLSBXcml0ZSBEUlAgPSAwICYgUmQvUmQKPiAgIC0gV3JpdGUg RFJQID0gMQo+ICAgLSBTZXQgTE9PSzRDT05ORUNUSU9OIGNvbW1hbmQKPiAKPiBTaWduZWQtb2Zm LWJ5OiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRlay5jb20+CgpNb3N0bHkgbG9vb2tzIGdv b2QgdG8gbWUuIENvdXBsZSBvZiBuaXRwaWNrcyBiZWxvdy4KCkd1ZW50ZXIKCj4gLS0tCj4gIGRy aXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaCB8ICAx MyArKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKPiAKPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYxICYgdjIKPiAgLSBSZW1vdmUg dW5uZWNlc3NhcnkgaTJjX2NsaWVudCBpbiB0aGUgc3RydWN0dXJlIG9mIHRjcGNpCj4gIC0gUmVu YW1lIHN0cnVjdHVyZSBvZiB0Y3BjaV92ZW5kb3JfZGF0YSB0byB0Y3BjaV9kYXRhCj4gIC0gTm90 IGV4cG9ydGluZyB0Y3BjaSByZWFkL3dyaXRlIHdyYXBwZXJzIGJ1dCByZWdpc3RlciBpMmMgcmVn bWFwIGluIGdsdWUgZHJpdmVyCj4gIC0gQWRkIHNldF92Y29ubiBvcHMgaW4gdGNwY2lfZGF0YQo+ ICAgIChJdCBpcyBuZWNlc3NhcnkgZm9yIFJUMTcxMUggdG8gZW5hYmxlL2Rpc2FibGUgaWRsZSBt b2RlIGJlZm9yZSBkaXNhYmxpbmcvZW5hYmxpbmcgdmNvbm4pCj4gIC0gRXhwb3J0IHRjcGNpX2ly cSBzbyB0aGF0IHZlbmRvciBjYW4gY2FsbCBpdCBpbiB0aGVpciBvd24gSVJRIGhhbmRsZXIKPiAK PiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYyICYgdjMKPiAgLSBDaGFuZ2UgdGhlIHJldHVy biB0eXBlIG9mIHRjcGNpX2lycSBmcm9tIGludCB0byBpcnFyZXR1cm5fdAo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBiL2RyaXZlcnMvc3RhZ2luZy90eXBl Yy90Y3BjaS5jCj4gaW5kZXggOWJkNDQxMi4uNDk1OWM2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L3N0YWdpbmcvdHlwZWMvdGNwY2kuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3Bj aS5jCj4gQEAgLTIxLDcgKzIxLDYgQEAKPiAgCj4gIHN0cnVjdCB0Y3BjaSB7Cj4gIAlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Cj4gLQlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50Owo+ICAKPiAgCXN0cnVj dCB0Y3BtX3BvcnQgKnBvcnQ7Cj4gIAo+IEBAIC0zMCw2ICsyOSwxMiBAQCBzdHJ1Y3QgdGNwY2kg ewo+ICAJYm9vbCBjb250cm9sc192YnVzOwo+ICAKPiAgCXN0cnVjdCB0Y3BjX2RldiB0Y3BjOwo+ ICsJc3RydWN0IHRjcGNpX2RhdGEgKmRhdGE7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgdGNwY2lfY2hp cCB7Cj4gKwlzdHJ1Y3QgdGNwY2kgKnRjcGNpOwo+ICsJc3RydWN0IHRjcGNpX2RhdGEgZGF0YTsK PiAgfTsKPiAgCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNpICp0Y3BjX3RvX3RjcGNpKHN0 cnVjdCB0Y3BjX2RldiAqdGNwYykKPiBAQCAtMzcsOCArNDIsNyBAQCBzdGF0aWMgaW5saW5lIHN0 cnVjdCB0Y3BjaSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpCj4gIAlyZXR1 cm4gY29udGFpbmVyX29mKHRjcGMsIHN0cnVjdCB0Y3BjaSwgdGNwYyk7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBpbnQgdGNwY2lfcmVhZDE2KHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHVuc2lnbmVkIGludCBy ZWcsCj4gLQkJCXUxNiAqdmFsKQo+ICtzdGF0aWMgaW50IHRjcGNpX3JlYWQxNihzdHJ1Y3QgdGNw Y2kgKnRjcGNpLCB1bnNpZ25lZCBpbnQgcmVnLCB1MTYgKnZhbCkKPiAgewo+ICAJcmV0dXJuIHJl Z21hcF9yYXdfcmVhZCh0Y3BjaS0+cmVnbWFwLCByZWcsIHZhbCwgc2l6ZW9mKHUxNikpOwo+ICB9 Cj4gQEAgLTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNw Y19kZXYgKnRjcGMsIGVudW0gdHlwZWNfY2Nfc3RhdHVzIGNjKQo+ICBzdGF0aWMgaW50IHRjcGNp X3N0YXJ0X2RycF90b2dnbGluZyhzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsCj4gIAkJCQkgICAgZW51 bSB0eXBlY19jY19zdGF0dXMgY2MpCj4gIHsKPiArCWludCByZXQ7Cj4gIAlzdHJ1Y3QgdGNwY2kg KnRjcGNpID0gdGNwY190b190Y3BjaSh0Y3BjKTsKPiAtCXVuc2lnbmVkIGludCByZWcgPSBUQ1BD X1JPTEVfQ1RSTF9EUlA7Cj4gKwl1bnNpZ25lZCBpbnQgcmVnID0gKFRDUENfUk9MRV9DVFJMX0ND X1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMV9TSElGVCkgfAo+ICsJCQkgICAoVENQQ19ST0xFX0NU UkxfQ0NfUkQgPDwgVENQQ19ST0xFX0NUUkxfQ0MyX1NISUZUKTsKPiAgCj4gIAlzd2l0Y2ggKGNj KSB7Cj4gIAlkZWZhdWx0Ogo+IEBAIC0xMTcsNyArMTIzLDE5IEBAIHN0YXRpYyBpbnQgdGNwY2lf c3RhcnRfZHJwX3RvZ2dsaW5nKHN0cnVjdCB0Y3BjX2RldiAqdGNwYywKPiAgCQlicmVhazsKPiAg CX0KPiAgCj4gLQlyZXR1cm4gcmVnbWFwX3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENfUk9MRV9D VFJMLCByZWcpOwo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENfUk9M RV9DVFJMLCByZWcpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCXVzbGVl cF9yYW5nZSg1MDAsIDEwMDApOwo+ICsJcmVnIHw9IFRDUENfUk9MRV9DVFJMX0RSUDsKPiArCXJl dCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsKPiAr CWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwlyZXQgPSByZWdtYXBfd3JpdGUodGNw Y2ktPnJlZ21hcCwgVENQQ19DT01NQU5ELAo+ICsJCQkgICBUQ1BDX0NNRF9MT09LNENPTk5FQ1RJ T04pOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCXJldHVybiAwOwoKcmVn bWFwX3dyaXRlIHJldHVybnMgYSBuZWdhdGl2ZSByZXR1cm4gY29kZSBvciAwLCB0aHVzIHRoaXMg Y2FuIGJlCnNpbXBsaWZpZWQgdG8KCXJldHVybiByZWdtYXBfd3JpdGUoLi4uKTsKCj4gIH0KPiAg Cj4gIHN0YXRpYyBlbnVtIHR5cGVjX2NjX3N0YXR1cyB0Y3BjaV90b190eXBlY19jYyh1bnNpZ25l ZCBpbnQgY2MsIGJvb2wgc2luaykKPiBAQCAtMTc4LDYgKzE5NiwxNiBAQCBzdGF0aWMgaW50IHRj cGNpX3NldF92Y29ubihzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsIGJvb2wgZW5hYmxlKQo+ICAJc3Ry dWN0IHRjcGNpICp0Y3BjaSA9IHRjcGNfdG9fdGNwY2kodGNwYyk7Cj4gIAlpbnQgcmV0Owo+ICAK PiArCS8qIEhhbmRsZSB2ZW5kb3Igc2V0IHZjb25uICovCj4gKwlpZiAodGNwY2ktPmRhdGEpIHsK PiArCQlpZiAodGNwY2ktPmRhdGEtPnNldF92Y29ubikgewo+ICsJCQlyZXQgPSB0Y3BjaS0+ZGF0 YS0+c2V0X3Zjb25uKHRjcGNpLCB0Y3BjaS0+ZGF0YSwKPiArCQkJCQkJICAgICBlbmFibGUpOwo+ ICsJCQlpZiAocmV0IDwgMCkKPiArCQkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiAg CXJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1BPV0VSX0NUUkwsCj4gIAkJ CSAgIGVuYWJsZSA/IFRDUENfUE9XRVJfQ1RSTF9WQ09OTl9FTkFCTEUgOiAwKTsKPiAgCWlmIChy ZXQgPCAwKQo+IEBAIC0zMjMsNiArMzUxLDE1IEBAIHN0YXRpYyBpbnQgdGNwY2lfaW5pdChzdHJ1 Y3QgdGNwY19kZXYgKnRjcGMpCj4gIAlpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkK PiAgCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgCj4gKwkvKiBIYW5kbGUgdmVuZG9yIGluaXQgKi8K PiArCWlmICh0Y3BjaS0+ZGF0YSkgewo+ICsJCWlmICh0Y3BjaS0+ZGF0YS0+aW5pdCkgewo+ICsJ CQlyZXQgPSB0Y3BjaS0+ZGF0YS0+aW5pdCh0Y3BjaSwgdGNwY2ktPmRhdGEpOwo+ICsJCQlpZiAo cmV0IDwgMCkKPiArCQkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCS8qIENsZWFy IGFsbCBldmVudHMgKi8KPiAgCXJldCA9IHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlQs IDB4ZmZmZik7Cj4gIAlpZiAocmV0IDwgMCkKPiBAQCAtMzQ0LDkgKzM4MSwxNSBAQCBzdGF0aWMg aW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3BjKQo+ICAJcmV0dXJuIHRjcGNpX3dy aXRlMTYodGNwY2ksIFRDUENfQUxFUlRfTUFTSywgcmVnKTsKPiAgfQo+ICAKPiAtc3RhdGljIGly cXJldHVybl90IHRjcGNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCj4gK3N0YXRpYyBpcnFy ZXR1cm5fdCBfdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgewo+ICAJc3RydWN0 IHRjcGNpICp0Y3BjaSA9IGRldl9pZDsKPiArCj4gKwlyZXR1cm4gdGNwY2lfaXJxKHRjcGNpKTsK PiArfQoKSG1tLCBub3JtYWxseSBJJ2QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gX2FmdGVyXyB0aGUg ZnVuY3Rpb24gaXQgY2FsbHMuCkd1ZXNzIHRoYXQgZG9lc24ndCBtYXR0ZXIgbXVjaCBoZXJlLCBz byBJIGFtIGZpbmUgd2l0aCBpdCBhcyBsb25nCmFzIEdyZWcgaXMgb2sgd2l0aCBpdCBhcyB3ZWxs LgoKPiArCj4gK2lycXJldHVybl90IHRjcGNpX2lycShzdHJ1Y3QgdGNwY2kgKnRjcGNpKQo+ICt7 Cj4gIAl1MTYgc3RhdHVzOwo+ICAKPiAgCXRjcGNpX3JlYWQxNih0Y3BjaSwgVENQQ19BTEVSVCwg JnN0YXR1cyk7Cj4gQEAgLTQxMiw2ICs0NTUsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdGNwY2lf aXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgCj4gIAlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4g IH0KPiArRVhQT1JUX1NZTUJPTF9HUEwodGNwY2lfaXJxKTsKPiAgCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgcmVnbWFwX2NvbmZpZyB0Y3BjaV9yZWdtYXBfY29uZmlnID0gewo+ICAJLnJlZ19iaXRz ID0gOCwKPiBAQCAtNDM1LDIyICs0NzksMTggQEAgc3RhdGljIGludCB0Y3BjaV9wYXJzZV9jb25m aWcoc3RydWN0IHRjcGNpICp0Y3BjaSkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IHRjcGNpX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCj4gLQkJICAgICAgIGNv bnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNfaWQpCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lf cmVnaXN0ZXJfcG9ydChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRh KQo+ICB7Cj4gIAlzdHJ1Y3QgdGNwY2kgKnRjcGNpOwo+ICAJaW50IGVycjsKPiAgCj4gLQl0Y3Bj aSA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqdGNwY2kpLCBHRlBfS0VSTkVM KTsKPiArCXRjcGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJO RUwpOwo+ICAJaWYgKCF0Y3BjaSkKPiAtCQlyZXR1cm4gLUVOT01FTTsKPiArCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKPiAgCj4gLQl0Y3BjaS0+Y2xpZW50ID0gY2xpZW50Owo+IC0JdGNwY2kt PmRldiA9ICZjbGllbnQtPmRldjsKPiAtCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRjcGNp KTsKPiAtCXRjcGNpLT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGllbnQsICZ0Y3Bj aV9yZWdtYXBfY29uZmlnKTsKPiAtCWlmIChJU19FUlIodGNwY2ktPnJlZ21hcCkpCj4gLQkJcmV0 dXJuIFBUUl9FUlIodGNwY2ktPnJlZ21hcCk7Cj4gKwl0Y3BjaS0+ZGV2ID0gZGV2Owo+ICsJdGNw Y2ktPmRhdGEgPSBkYXRhOwo+ICsJdGNwY2ktPnJlZ21hcCA9IGRhdGEtPnJlZ21hcDsKPiAgCj4g IAl0Y3BjaS0+dGNwYy5pbml0ID0gdGNwY2lfaW5pdDsKPiAgCXRjcGNpLT50Y3BjLmdldF92YnVz ID0gdGNwY2lfZ2V0X3ZidXM7Cj4gQEAgLTQ2NywyNyArNTA3LDYzIEBAIHN0YXRpYyBpbnQgdGNw Y2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiAgCj4gIAllcnIgPSB0Y3BjaV9w YXJzZV9jb25maWcodGNwY2kpOwo+ICAJaWYgKGVyciA8IDApCj4gLQkJcmV0dXJuIGVycjsKPiAr CQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsKPiArCXRjcGNpLT5wb3J0ID0gdGNwbV9yZWdpc3Rl cl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7Cj4gKwlpZiAoUFRSX0VSUl9PUl9aRVJP KHRjcGNpLT5wb3J0KSkKPiArCQlyZXR1cm4gRVJSX0NBU1QodGNwY2ktPnBvcnQpOwo+ICAKPiAt CS8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzICovCj4gLQl0Y3BjaV93cml0ZTE2KHRjcGNpLCBU Q1BDX0FMRVJUX01BU0ssIDApOwo+ICsJcmV0dXJuIHRjcGNpOwo+ICt9Cj4gK0VYUE9SVF9TWU1C T0xfR1BMKHRjcGNpX3JlZ2lzdGVyX3BvcnQpOwo+ICsKPiArdm9pZCB0Y3BjaV91bnJlZ2lzdGVy X3BvcnQoc3RydWN0IHRjcGNpICp0Y3BjaSkKPiArewo+ICsJdGNwbV91bnJlZ2lzdGVyX3BvcnQo dGNwY2ktPnBvcnQpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJf cG9ydCk7Cj4gIAo+IC0JZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSh0Y3BjaS0+ZGV2 LCBjbGllbnQtPmlycSwgTlVMTCwKPiAtCQkJCQl0Y3BjaV9pcnEsCj4gK3N0YXRpYyBpbnQgdGNw Y2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPiArCQkgICAgICAgY29uc3Qgc3Ry dWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkKPiArewo+ICsJc3RydWN0IHRjcGNpX2NoaXAgKmNo aXA7Cj4gKwlpbnQgZXJyOwo+ICsJdTE2IHZhbCA9IDA7Cj4gKwo+ICsJY2hpcCA9IGRldm1fa3ph bGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqY2hpcCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFj aGlwKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWNoaXAtPmRhdGEucmVnbWFwID0gZGV2 bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmdGNwY2lfcmVnbWFwX2NvbmZpZyk7Cj4gKwlpZiAo SVNfRVJSKGNoaXAtPmRhdGEucmVnbWFwKSkKPiArCQlyZXR1cm4gUFRSX0VSUihjaGlwLT5kYXRh LnJlZ21hcCk7Cj4gKwo+ICsJLyogRGlzYWJsZSBjaGlwIGludGVycnVwdHMgYmVmb3JlIHJlcXVl c3RpbmcgaXJxICovCj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGNoaXAtPmRhdGEucmVnbWFw LCBUQ1BDX0FMRVJUX01BU0ssICZ2YWwsCj4gKwkJCSAgICAgICBzaXplb2YodTE2KSk7Cj4gKwlp ZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWVyciA9IGRldm1fcmVxdWVzdF90 aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGllbnQtPmlycSwgTlVMTCwKPiArCQkJCQlfdGNw Y2lfaXJxLAo+ICAJCQkJCUlSUUZfT05FU0hPVCB8IElSUUZfVFJJR0dFUl9MT1csCj4gLQkJCQkJ ZGV2X25hbWUodGNwY2ktPmRldiksIHRjcGNpKTsKPiArCQkJCQlkZXZfbmFtZSgmY2xpZW50LT5k ZXYpLCBjaGlwKTsKPiAgCWlmIChlcnIgPCAwKQo+ICAJCXJldHVybiBlcnI7Cj4gIAo+IC0JdGNw Y2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsK PiAtCXJldHVybiBQVFJfRVJSX09SX1pFUk8odGNwY2ktPnBvcnQpOwo+ICsJY2hpcC0+dGNwY2kg PSB0Y3BjaV9yZWdpc3Rlcl9wb3J0KCZjbGllbnQtPmRldiwgJmNoaXAtPmRhdGEpOwo+ICsJaWYg KFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY2hpcC0+ dGNwY2kpOwo+ICsKPiArCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOwo+ICsJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgdGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xp ZW50ICpjbGllbnQpCj4gIHsKPiAtCXN0cnVjdCB0Y3BjaSAqdGNwY2kgPSBpMmNfZ2V0X2NsaWVu dGRhdGEoY2xpZW50KTsKPiArCXN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwID0gaTJjX2dldF9jbGll bnRkYXRhKGNsaWVudCk7Cj4gIAo+IC0JdGNwbV91bnJlZ2lzdGVyX3BvcnQodGNwY2ktPnBvcnQp Owo+ICsJdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KGNoaXAtPnRjcGNpKTsKPiAgCj4gIAlyZXR1cm4g MDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaCBiL2Ry aXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oCj4gaW5kZXggZmRmYjA2Yy4uNDAwMjViMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaAo+ICsrKyBiL2RyaXZlcnMv c3RhZ2luZy90eXBlYy90Y3BjaS5oCj4gQEAgLTU5LDYgKzU5LDcgQEAKPiAgI2RlZmluZSBUQ1BD X1BPV0VSX0NUUkxfVkNPTk5fRU5BQkxFCUJJVCgwKQo+ICAKPiAgI2RlZmluZSBUQ1BDX0NDX1NU QVRVUwkJCTB4MWQKPiArI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19EUlBSU1QJCUJJVCg1KQo+ICAj ZGVmaW5lIFRDUENfQ0NfU1RBVFVTX1RFUk0JCUJJVCg0KQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RB VFVTX0NDMl9TSElGVAkyCj4gICNkZWZpbmUgVENQQ19DQ19TVEFUVVNfQ0MyX01BU0sJCTB4Mwo+ IEBAIC0xMjEsNCArMTIyLDE2IEBACj4gICNkZWZpbmUgVENQQ19WQlVTX1ZPTFRBR0VfQUxBUk1f SElfQ0ZHCQkweDc2Cj4gICNkZWZpbmUgVENQQ19WQlVTX1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHCQkw eDc4Cj4gIAo+ICtzdHJ1Y3QgdGNwY2k7Cj4gK3N0cnVjdCB0Y3BjaV9kYXRhIHsKPiArCXN0cnVj dCByZWdtYXAgKnJlZ21hcDsKPiArCWludCAoKmluaXQpKHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHN0 cnVjdCB0Y3BjaV9kYXRhICpkYXRhKTsKPiArCWludCAoKnNldF92Y29ubikoc3RydWN0IHRjcGNp ICp0Y3BjaSwgc3RydWN0IHRjcGNpX2RhdGEgKmRhdGEsCj4gKwkJCSBib29sIGVuYWJsZSk7Cj4g K307Cj4gKwo+ICtzdHJ1Y3QgdGNwY2kgKnRjcGNpX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSk7Cj4gK3ZvaWQgdGNwY2lfdW5yZWdpc3Rl cl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpOwo+ICtpcnFyZXR1cm5fdCB0Y3BjaV9pcnEoc3Ry dWN0IHRjcGNpICp0Y3BjaSk7Cj4gKwo+ICAjZW5kaWYgLyogX19MSU5VWF9VU0JfVENQQ0lfSCAq Lwo+IC0tIAo+IDEuOS4xCj4KLS0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5k IHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC11c2IiIGluCnRoZSBib2R5IG9mIGEgbWVzc2Fn ZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0 dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRtbAo=