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: =?utf-8?b?c2h1ZmFuX2xlZSjmnY7mm7jluIYp?= Message-Id: <1519784044744.14709@richtek.com> Date: Wed, 28 Feb 2018 02:14:04 +0000 To: Guenter Roeck , ShuFanLee Cc: "heikki.krogerus@linux.intel.com" , "greg@kroah.com" , =?big5?B?Y3lfaHVhbmcotsCx0q3sKQ==?= , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" List-ID: SGkgR3VlbnRlciwNCg0KICByZWdtYXBfd3JpdGUgcmV0dXJucyBhIG5lZ2F0aXZlIHJldHVybiBj b2RlIG9yIDAsIHRodXMgdGhpcyBjYW4gYmUNCnNpbXBsaWZpZWQgdG8NCiAgICAgICAgcmV0dXJu IHJlZ21hcF93cml0ZSguLi4pOw0KDQogIE9rLCBJJ2xsIG1vZGlmeSBpdCBpbiB2NA0KDQpIbW0s IG5vcm1hbGx5IEknZCBleHBlY3QgdGhpcyBmdW5jdGlvbiBfYWZ0ZXJfIHRoZSBmdW5jdGlvbiBp dCBjYWxscy4NCkd1ZXNzIHRoYXQgZG9lc24ndCBtYXR0ZXIgbXVjaCBoZXJlLCBzbyBJIGFtIGZp bmUgd2l0aCBpdCBhcyBsb25nDQphcyBHcmVnIGlzIG9rIHdpdGggaXQgYXMgd2VsbC4NCg0KICBE byB5b3UgbWVhbiBpdCBtYXliZSBiZXR0ZXIgdG8gY2FsbCB2ZW5kb3IncyBzZXRfdmNvbm4gYWZ0 ZXIgbm9ybWFsIHNldF92Y29ubiBpcyBmaW5pc2hlZD8NCiAgSWYgSSB1bmRlcnN0YW5kIGNvcnJl Y3RseSwgSSBjYW4gYWxzbyBtb2RpZnkgaXQgaW4gdjQuIEZvciBSVDE3MTFILCBpdCBhbHNvIHdv cmtzIGJ5IGVuYWJsaW5nL2Rpc2FibGluZyBpZGxlIG1vZGUgYWZ0ZXIgc2V0X3Zjb25uLg0KDQpC ZXN0IFJlZ2FyZHMsDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K U2h1LUZhbiBMZWUNClJpY2h0ZWsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbg0KVEVMOiArODg2LTMt NTUyNjc4OSAjMjM1OQ0KRkFYOiArODg2LTMtNTUyNjYxMg0KKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0K5a+E5Lu26ICFOiBHdWVudGVyIFJvZWNrIDxncm9lY2s3QGdtYWlsLmNvbT4g5Luj 6KGoIEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4NCuWvhOS7tuaXpeacnzogMjAx OOW5tDLmnIgyMuaXpSDkuIrljYggMDY6MTUNCuaUtuS7tuiAhTogU2h1RmFuTGVlDQrlia/mnKw6 IGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5jb207IGdyZWdAa3JvYWguY29tOyBzaHVmYW5f bGVlKOadjuabuOW4hik7IGN5X2h1YW5nKOm7g+WVn+WOnyk7IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcNCuS4u+aXqDogUmU6IFtQQVRDSF0g c3RhZ2luZzogdHlwZWM6IGhhbmRsZSB2ZW5kb3IgZGVmaW5lZCBwYXJ0IGFuZCBtb2RpZnkgZHJw IHRvZ2dsaW5nIGZsb3cNCg0KT24gV2VkLCBGZWIgMjEsIDIwMTggYXQgMTE6MDI6MjNQTSArMDgw MCwgU2h1RmFuTGVlIHdyb3RlOg0KPiBGcm9tOiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRl ay5jb20+DQo+DQo+IEhhbmRsZSB2ZW5kb3IgZGVmaW5lZCBiZWhhdmlvciBpbiB0Y3BjaV9pbml0 LCB0Y3BjaV9zZXRfdmNvbm4gYW5kIGV4cG9ydCB0Y3BjaV9pcnEuDQo+IE1vcmUgb3BlcmF0aW9u cyBjYW4gYmUgZXh0ZW5kZWQgaW4gdGNwY2lfZGF0YSBpZiBuZWVkZWQuDQo+IEFjY29yZGluZyB0 byBUQ1BDSSBzcGVjaWZpY2F0aW9uLCA0LjQuNS4yIFJPTEVfQ09OVFJPTCwNCj4gVENQQyBzaGFs bCBub3Qgc3RhcnQgRFJQIHRvZ2dsaW5nIHVudGlsIHN1YnNlcXVlbnRseSB0aGUgVENQTQ0KPiB3 cml0ZXMgdG8gdGhlIENPTU1BTkQgcmVnaXN0ZXIgdG8gc3RhcnQgRFJQIHRvZ2dsaW5nLg0KPiBE UlAgdG9nZ2xpbmcgZmxvdyBpcyBjaGFnbmVkIGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERS UCA9IDAgJiBSZC9SZA0KPiAgIC0gV3JpdGUgRFJQID0gMQ0KPiAgIC0gU2V0IExPT0s0Q09OTkVD VElPTiBjb21tYW5kDQo+DQo+IFNpZ25lZC1vZmYtYnk6IFNodUZhbkxlZSA8c2h1ZmFuX2xlZUBy aWNodGVrLmNvbT4NCg0KTW9zdGx5IGxvb29rcyBnb29kIHRvIG1lLiBDb3VwbGUgb2Ygbml0cGlj a3MgYmVsb3cuDQoNCkd1ZW50ZXINCg0KPiAtLS0NCj4gIGRyaXZlcnMvc3RhZ2luZy90eXBlYy90 Y3BjaS5jIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0K PiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmggfCAgMTMgKysrKysNCj4gIDIgZmlsZXMg Y2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQ0KPg0KPiAgcGF0Y2gg Y2hhbmdlbG9ncyBiZXR3ZWVuIHYxICYgdjINCj4gIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGkyY19j bGllbnQgaW4gdGhlIHN0cnVjdHVyZSBvZiB0Y3BjaQ0KPiAgLSBSZW5hbWUgc3RydWN0dXJlIG9m IHRjcGNpX3ZlbmRvcl9kYXRhIHRvIHRjcGNpX2RhdGENCj4gIC0gTm90IGV4cG9ydGluZyB0Y3Bj aSByZWFkL3dyaXRlIHdyYXBwZXJzIGJ1dCByZWdpc3RlciBpMmMgcmVnbWFwIGluIGdsdWUgZHJp dmVyDQo+ICAtIEFkZCBzZXRfdmNvbm4gb3BzIGluIHRjcGNpX2RhdGENCj4gICAgKEl0IGlzIG5l Y2Vzc2FyeSBmb3IgUlQxNzExSCB0byBlbmFibGUvZGlzYWJsZSBpZGxlIG1vZGUgYmVmb3JlIGRp c2FibGluZy9lbmFibGluZyB2Y29ubikNCj4gIC0gRXhwb3J0IHRjcGNpX2lycSBzbyB0aGF0IHZl bmRvciBjYW4gY2FsbCBpdCBpbiB0aGVpciBvd24gSVJRIGhhbmRsZXINCj4NCj4gIHBhdGNoIGNo YW5nZWxvZ3MgYmV0d2VlbiB2MiAmIHYzDQo+ICAtIENoYW5nZSB0aGUgcmV0dXJuIHR5cGUgb2Yg dGNwY2lfaXJxIGZyb20gaW50IHRvIGlycXJldHVybl90DQo+DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5j DQo+IGluZGV4IDliZDQ0MTIuLjQ5NTljNjkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2lu Zy90eXBlYy90Y3BjaS5jDQo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+ IEBAIC0yMSw3ICsyMSw2IEBADQo+DQo+ICBzdHJ1Y3QgdGNwY2kgew0KPiAgICAgICBzdHJ1Y3Qg ZGV2aWNlICpkZXY7DQo+IC0gICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7DQo+DQo+ICAg ICAgIHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQ7DQo+DQo+IEBAIC0zMCw2ICsyOSwxMiBAQCBzdHJ1 Y3QgdGNwY2kgew0KPiAgICAgICBib29sIGNvbnRyb2xzX3ZidXM7DQo+DQo+ICAgICAgIHN0cnVj dCB0Y3BjX2RldiB0Y3BjOw0KPiArICAgICBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YTsNCj4gK307 DQo+ICsNCj4gK3N0cnVjdCB0Y3BjaV9jaGlwIHsNCj4gKyAgICAgc3RydWN0IHRjcGNpICp0Y3Bj aTsNCj4gKyAgICAgc3RydWN0IHRjcGNpX2RhdGEgZGF0YTsNCj4gIH07DQo+DQo+ICBzdGF0aWMg aW5saW5lIHN0cnVjdCB0Y3BjaSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYgKnRjcGMp DQo+IEBAIC0zNyw4ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNpICp0Y3BjX3Rv X3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gICAgICAgcmV0dXJuIGNvbnRhaW5lcl9v Zih0Y3BjLCBzdHJ1Y3QgdGNwY2ksIHRjcGMpOw0KPiAgfQ0KPg0KPiAtc3RhdGljIGludCB0Y3Bj aV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3BjaSwgdW5zaWduZWQgaW50IHJlZywNCj4gLSAgICAg ICAgICAgICAgICAgICAgIHUxNiAqdmFsKQ0KPiArc3RhdGljIGludCB0Y3BjaV9yZWFkMTYoc3Ry dWN0IHRjcGNpICp0Y3BjaSwgdW5zaWduZWQgaW50IHJlZywgdTE2ICp2YWwpDQo+ICB7DQo+ICAg ICAgIHJldHVybiByZWdtYXBfcmF3X3JlYWQodGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVv Zih1MTYpKTsNCj4gIH0NCj4gQEAgLTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3Nl dF9jYyhzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsIGVudW0gdHlwZWNfY2Nfc3RhdHVzIGNjKQ0KPiAg c3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2ICp0Y3Bj LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB0eXBlY19jY19zdGF0 dXMgY2MpDQo+ICB7DQo+ICsgICAgIGludCByZXQ7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNw Y2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOw0KPiAtICAgICB1bnNpZ25lZCBpbnQgcmVnID0gVENQ Q19ST0xFX0NUUkxfRFJQOw0KPiArICAgICB1bnNpZ25lZCBpbnQgcmVnID0gKFRDUENfUk9MRV9D VFJMX0NDX1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMV9TSElGVCkgfA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMl9T SElGVCk7DQo+DQo+ICAgICAgIHN3aXRjaCAoY2MpIHsNCj4gICAgICAgZGVmYXVsdDoNCj4gQEAg LTExNyw3ICsxMjMsMTkgQEAgc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3Ry dWN0IHRjcGNfZGV2ICp0Y3BjLA0KPiAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICB9DQo+ DQo+IC0gICAgIHJldHVybiByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NU UkwsIHJlZyk7DQo+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BD X1JPTEVfQ1RSTCwgcmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gKyAgICAgdXNsZWVwX3JhbmdlKDUwMCwgMTAwMCk7DQo+ICsgICAgIHJl ZyB8PSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3Bj aS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRj cGNpLT5yZWdtYXAsIFRDUENfQ09NTUFORCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRD UENfQ01EX0xPT0s0Q09OTkVDVElPTik7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgIHJldHVybiAwOw0KDQpyZWdtYXBfd3JpdGUgcmV0 dXJucyBhIG5lZ2F0aXZlIHJldHVybiBjb2RlIG9yIDAsIHRodXMgdGhpcyBjYW4gYmUNCnNpbXBs aWZpZWQgdG8NCiAgICAgICAgcmV0dXJuIHJlZ21hcF93cml0ZSguLi4pOw0KDQo+ICB9DQo+DQo+ ICBzdGF0aWMgZW51bSB0eXBlY19jY19zdGF0dXMgdGNwY2lfdG9fdHlwZWNfY2ModW5zaWduZWQg aW50IGNjLCBib29sIHNpbmspDQo+IEBAIC0xNzgsNiArMTk2LDE2IEBAIHN0YXRpYyBpbnQgdGNw Y2lfc2V0X3Zjb25uKHN0cnVjdCB0Y3BjX2RldiAqdGNwYywgYm9vbCBlbmFibGUpDQo+ICAgICAg IHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOw0KPiAgICAgICBpbnQg cmV0Ow0KPg0KPiArICAgICAvKiBIYW5kbGUgdmVuZG9yIHNldCB2Y29ubiAqLw0KPiArICAgICBp ZiAodGNwY2ktPmRhdGEpIHsNCj4gKyAgICAgICAgICAgICBpZiAodGNwY2ktPmRhdGEtPnNldF92 Y29ubikgew0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGNwY2ktPmRhdGEtPnNldF92 Y29ubih0Y3BjaSwgdGNwY2ktPmRhdGEsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBp ZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0NCj4gKw0KPiAgICAgICByZXQgPSByZWdtYXBf d3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19QT1dFUl9DVFJMLA0KPiAgICAgICAgICAgICAgICAg ICAgICAgICAgZW5hYmxlID8gVENQQ19QT1dFUl9DVFJMX1ZDT05OX0VOQUJMRSA6IDApOw0KPiAg ICAgICBpZiAocmV0IDwgMCkNCj4gQEAgLTMyMyw2ICszNTEsMTUgQEAgc3RhdGljIGludCB0Y3Bj aV9pbml0KHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gICAgICAgaWYgKHRpbWVfYWZ0ZXIoamlm ZmllcywgdGltZW91dCkpDQo+ICAgICAgICAgICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+DQo+ ICsgICAgIC8qIEhhbmRsZSB2ZW5kb3IgaW5pdCAqLw0KPiArICAgICBpZiAodGNwY2ktPmRhdGEp IHsNCj4gKyAgICAgICAgICAgICBpZiAodGNwY2ktPmRhdGEtPmluaXQpIHsNCj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldCA9IHRjcGNpLT5kYXRhLT5pbml0KHRjcGNpLCB0Y3BjaS0+ZGF0YSk7 DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0N Cj4gKw0KPiAgICAgICAvKiBDbGVhciBhbGwgZXZlbnRzICovDQo+ICAgICAgIHJldCA9IHRjcGNp X3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlQsIDB4ZmZmZik7DQo+ICAgICAgIGlmIChyZXQgPCAw KQ0KPiBAQCAtMzQ0LDkgKzM4MSwxNSBAQCBzdGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRj cGNfZGV2ICp0Y3BjKQ0KPiAgICAgICByZXR1cm4gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19B TEVSVF9NQVNLLCByZWcpOw0KPiAgfQ0KPg0KPiAtc3RhdGljIGlycXJldHVybl90IHRjcGNpX2ly cShpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+ICtzdGF0aWMgaXJxcmV0dXJuX3QgX3RjcGNpX2ly cShpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+ICB7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNw Y2kgPSBkZXZfaWQ7DQo+ICsNCj4gKyAgICAgcmV0dXJuIHRjcGNpX2lycSh0Y3BjaSk7DQo+ICt9 DQoNCkhtbSwgbm9ybWFsbHkgSSdkIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIF9hZnRlcl8gdGhlIGZ1 bmN0aW9uIGl0IGNhbGxzLg0KR3Vlc3MgdGhhdCBkb2Vzbid0IG1hdHRlciBtdWNoIGhlcmUsIHNv IEkgYW0gZmluZSB3aXRoIGl0IGFzIGxvbmcNCmFzIEdyZWcgaXMgb2sgd2l0aCBpdCBhcyB3ZWxs Lg0KDQo+ICsNCj4gK2lycXJldHVybl90IHRjcGNpX2lycShzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0K PiArew0KPiAgICAgICB1MTYgc3RhdHVzOw0KPg0KPiAgICAgICB0Y3BjaV9yZWFkMTYodGNwY2ks IFRDUENfQUxFUlQsICZzdGF0dXMpOw0KPiBAQCAtNDEyLDYgKzQ1NSw3IEBAIHN0YXRpYyBpcnFy ZXR1cm5fdCB0Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPg0KPiAgICAgICByZXR1 cm4gSVJRX0hBTkRMRUQ7DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9pcnEpOw0K Pg0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHRjcGNpX3JlZ21hcF9jb25m aWcgPSB7DQo+ICAgICAgIC5yZWdfYml0cyA9IDgsDQo+IEBAIC00MzUsMjIgKzQ3OSwxOCBAQCBz dGF0aWMgaW50IHRjcGNpX3BhcnNlX2NvbmZpZyhzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0KPiAgICAg ICByZXR1cm4gMDsNCj4gIH0NCj4NCj4gLXN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCwNCj4gLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgKmkyY19pZCkNCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9y dChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhKQ0KPiAgew0KPiAg ICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiAgICAgICBpbnQgZXJyOw0KPg0KPiAtICAgICB0 Y3BjaSA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqdGNwY2kpLCBHRlBfS0VS TkVMKTsNCj4gKyAgICAgdGNwY2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnRjcGNpKSwg R0ZQX0tFUk5FTCk7DQo+ICAgICAgIGlmICghdGNwY2kpDQo+IC0gICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07DQo+ICsgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+DQo+ IC0gICAgIHRjcGNpLT5jbGllbnQgPSBjbGllbnQ7DQo+IC0gICAgIHRjcGNpLT5kZXYgPSAmY2xp ZW50LT5kZXY7DQo+IC0gICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRjcGNpKTsNCj4g LSAgICAgdGNwY2ktPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnRjcGNp X3JlZ21hcF9jb25maWcpOw0KPiAtICAgICBpZiAoSVNfRVJSKHRjcGNpLT5yZWdtYXApKQ0KPiAt ICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHRjcGNpLT5yZWdtYXApOw0KPiArICAgICB0Y3Bj aS0+ZGV2ID0gZGV2Ow0KPiArICAgICB0Y3BjaS0+ZGF0YSA9IGRhdGE7DQo+ICsgICAgIHRjcGNp LT5yZWdtYXAgPSBkYXRhLT5yZWdtYXA7DQo+DQo+ICAgICAgIHRjcGNpLT50Y3BjLmluaXQgPSB0 Y3BjaV9pbml0Ow0KPiAgICAgICB0Y3BjaS0+dGNwYy5nZXRfdmJ1cyA9IHRjcGNpX2dldF92YnVz Ow0KPiBAQCAtNDY3LDI3ICs1MDcsNjMgQEAgc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3Qg aTJjX2NsaWVudCAqY2xpZW50LA0KPg0KPiAgICAgICBlcnIgPSB0Y3BjaV9wYXJzZV9jb25maWco dGNwY2kpOw0KPiAgICAgICBpZiAoZXJyIDwgMCkNCj4gLSAgICAgICAgICAgICByZXR1cm4gZXJy Ow0KPiArICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKGVycik7DQo+ICsNCj4gKyAgICAgdGNw Y2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsN Cj4gKyAgICAgaWYgKFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9ydCkpDQo+ICsgICAgICAgICAg ICAgcmV0dXJuIEVSUl9DQVNUKHRjcGNpLT5wb3J0KTsNCj4NCj4gLSAgICAgLyogRGlzYWJsZSBj aGlwIGludGVycnVwdHMgKi8NCj4gLSAgICAgdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVS VF9NQVNLLCAwKTsNCj4gKyAgICAgcmV0dXJuIHRjcGNpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJP TF9HUEwodGNwY2lfcmVnaXN0ZXJfcG9ydCk7DQo+ICsNCj4gK3ZvaWQgdGNwY2lfdW5yZWdpc3Rl cl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpDQo+ICt7DQo+ICsgICAgIHRjcG1fdW5yZWdpc3Rl cl9wb3J0KHRjcGNpLT5wb3J0KTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3Vu cmVnaXN0ZXJfcG9ydCk7DQo+DQo+IC0gICAgIGVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9p cnEodGNwY2ktPmRldiwgY2xpZW50LT5pcnEsIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGNwY2lfaXJxLA0KPiArc3RhdGljIGludCB0Y3BjaV9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiArICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCAqaTJjX2lkKQ0KPiArew0KPiArICAgICBzdHJ1Y3QgdGNwY2lf Y2hpcCAqY2hpcDsNCj4gKyAgICAgaW50IGVycjsNCj4gKyAgICAgdTE2IHZhbCA9IDA7DQo+ICsN Cj4gKyAgICAgY2hpcCA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqY2hpcCks IEdGUF9LRVJORUwpOw0KPiArICAgICBpZiAoIWNoaXApDQo+ICsgICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07DQo+ICsNCj4gKyAgICAgY2hpcC0+ZGF0YS5yZWdtYXAgPSBkZXZtX3JlZ21hcF9p bml0X2kyYyhjbGllbnQsICZ0Y3BjaV9yZWdtYXBfY29uZmlnKTsNCj4gKyAgICAgaWYgKElTX0VS UihjaGlwLT5kYXRhLnJlZ21hcCkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2hp cC0+ZGF0YS5yZWdtYXApOw0KPiArDQo+ICsgICAgIC8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRz IGJlZm9yZSByZXF1ZXN0aW5nIGlycSAqLw0KPiArICAgICBlcnIgPSByZWdtYXBfcmF3X3dyaXRl KGNoaXAtPmRhdGEucmVnbWFwLCBUQ1BDX0FMRVJUX01BU0ssICZ2YWwsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKHUxNikpOw0KPiArICAgICBpZiAoZXJyIDwgMCkNCj4g KyAgICAgICAgICAgICByZXR1cm4gZXJyOw0KPiArDQo+ICsgICAgIGVyciA9IGRldm1fcmVxdWVz dF90aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGllbnQtPmlycSwgTlVMTCwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGNwY2lfaXJxLA0KPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfT05FU0hPVCB8IElSUUZfVFJJR0dFUl9M T1csDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUodGNw Y2ktPmRldiksIHRjcGNpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXZfbmFtZSgmY2xpZW50LT5kZXYpLCBjaGlwKTsNCj4gICAgICAgaWYgKGVyciA8IDApDQo+ ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4NCj4gLSAgICAgdGNwY2ktPnBvcnQgPSB0Y3Bt X3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsNCj4gLSAgICAgcmV0dXJu IFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9ydCk7DQo+ICsgICAgIGNoaXAtPnRjcGNpID0gdGNw Y2lfcmVnaXN0ZXJfcG9ydCgmY2xpZW50LT5kZXYsICZjaGlwLT5kYXRhKTsNCj4gKyAgICAgaWYg KFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIFBU Ul9FUlIoY2hpcC0+dGNwY2kpOw0KPiArDQo+ICsgICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGll bnQsIGNoaXApOw0KPiArICAgICByZXR1cm4gMDsNCj4gIH0NCj4NCj4gIHN0YXRpYyBpbnQgdGNw Y2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpDQo+ICB7DQo+IC0gICAgIHN0cnVj dCB0Y3BjaSAqdGNwY2kgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4gKyAgICAgc3Ry dWN0IHRjcGNpX2NoaXAgKmNoaXAgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4NCj4g LSAgICAgdGNwbV91bnJlZ2lzdGVyX3BvcnQodGNwY2ktPnBvcnQpOw0KPiArICAgICB0Y3BjaV91 bnJlZ2lzdGVyX3BvcnQoY2hpcC0+dGNwY2kpOw0KPg0KPiAgICAgICByZXR1cm4gMDsNCj4gIH0N Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oIGIvZHJpdmVycy9z dGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gaW5kZXggZmRmYjA2Yy4uNDAwMjViMiAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gKysrIGIvZHJpdmVycy9zdGFn aW5nL3R5cGVjL3RjcGNpLmgNCj4gQEAgLTU5LDYgKzU5LDcgQEANCj4gICNkZWZpbmUgVENQQ19Q T1dFUl9DVFJMX1ZDT05OX0VOQUJMRSBCSVQoMCkNCj4NCj4gICNkZWZpbmUgVENQQ19DQ19TVEFU VVMgICAgICAgICAgICAgICAgICAgICAgIDB4MWQNCj4gKyNkZWZpbmUgVENQQ19DQ19TVEFUVVNf RFJQUlNUICAgICAgICAgICAgICAgIEJJVCg1KQ0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19U RVJNICAgICAgICAgIEJJVCg0KQ0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19DQzJfU0hJRlQg ICAgIDINCj4gICNkZWZpbmUgVENQQ19DQ19TVEFUVVNfQ0MyX01BU0sgICAgICAgICAgICAgIDB4 Mw0KPiBAQCAtMTIxLDQgKzEyMiwxNiBAQA0KPiAgI2RlZmluZSBUQ1BDX1ZCVVNfVk9MVEFHRV9B TEFSTV9ISV9DRkcgICAgICAgICAgICAgICAweDc2DQo+ICAjZGVmaW5lIFRDUENfVkJVU19WT0xU QUdFX0FMQVJNX0xPX0NGRyAgICAgICAgICAgICAgIDB4NzgNCj4NCj4gK3N0cnVjdCB0Y3BjaTsN Cj4gK3N0cnVjdCB0Y3BjaV9kYXRhIHsNCj4gKyAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOw0K PiArICAgICBpbnQgKCppbml0KShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0 YSAqZGF0YSk7DQo+ICsgICAgIGludCAoKnNldF92Y29ubikoc3RydWN0IHRjcGNpICp0Y3BjaSwg c3RydWN0IHRjcGNpX2RhdGEgKmRhdGEsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgYm9vbCBl bmFibGUpOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHRjcGNpICp0Y3BjaV9yZWdpc3Rlcl9wb3J0 KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHRjcGNpX2RhdGEgKmRhdGEpOw0KPiArdm9pZCB0 Y3BjaV91bnJlZ2lzdGVyX3BvcnQoc3RydWN0IHRjcGNpICp0Y3BjaSk7DQo+ICtpcnFyZXR1cm5f dCB0Y3BjaV9pcnEoc3RydWN0IHRjcGNpICp0Y3BjaSk7DQo+ICsNCj4gICNlbmRpZiAvKiBfX0xJ TlVYX1VTQl9UQ1BDSV9IICovDQo+IC0tDQo+IDEuOS4xDQo+DQoqKioqKioqKioqKioqIEVtYWls IENvbmZpZGVudGlhbGl0eSBOb3RpY2UgKioqKioqKioqKioqKioqKioqKioNCg0KVGhlIGluZm9y bWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGUtbWFpbCBtZXNzYWdlIChpbmNsdWRpbmcgYW55IGF0 dGFjaG1lbnRzKSBtYXkgYmUgY29uZmlkZW50aWFsLCBwcm9wcmlldGFyeSwgcHJpdmlsZWdlZCwg b3Igb3RoZXJ3aXNlIGV4ZW1wdCBmcm9tIGRpc2Nsb3N1cmUgdW5kZXIgYXBwbGljYWJsZSBsYXdz LiBJdCBpcyBpbnRlbmRlZCB0byBiZSBjb252ZXllZCBvbmx5IHRvIHRoZSBkZXNpZ25hdGVkIHJl Y2lwaWVudChzKS4gQW55IHVzZSwgZGlzc2VtaW5hdGlvbiwgZGlzdHJpYnV0aW9uLCBwcmludGlu ZywgcmV0YWluaW5nIG9yIGNvcHlpbmcgb2YgdGhpcyBlLW1haWwgKGluY2x1ZGluZyBpdHMgYXR0 YWNobWVudHMpIGJ5IHVuaW50ZW5kZWQgcmVjaXBpZW50KHMpIGlzIHN0cmljdGx5IHByb2hpYml0 ZWQgYW5kIG1heSBiZSB1bmxhd2Z1bC4gSWYgeW91IGFyZSBub3QgYW4gaW50ZW5kZWQgcmVjaXBp ZW50IG9mIHRoaXMgZS1tYWlsLCBvciBiZWxpZXZlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhp cyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSAo YnkgcmVwbHlpbmcgdG8gdGhpcyBlLW1haWwpLCBkZWxldGUgYW55IGFuZCBhbGwgY29waWVzIG9m IHRoaXMgZS1tYWlsIChpbmNsdWRpbmcgYW55IGF0dGFjaG1lbnRzKSBmcm9tIHlvdXIgc3lzdGVt LCBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50IG9mIHRoaXMgZS1tYWlsIHRvIGFueSBv dGhlciBwZXJzb24uIFRoYW5rIHlvdSEK