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 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-2956071-1519784055-2-6929967608588463476 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, RCVD_IN_DNSWL_NONE -0.0001, SPF_PASS -0.001, T_RP_MATCHES_RCVD -0.01, LANGUAGES roen, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='220.130.44.152', Host='mg.richtek.com', Country='TW', FromHeader='com', MailFrom='com', XOriginatingCountry='TW' X-Spam-charsets: from='big5', cc='big5', subject='big5', plain='big5' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: prvs=1594D10D68=shufan_lee@richtek.com ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1519784053; b=djg0hZlPe9S96G10WlA6jlJR/UJiKQ7xlRRe54XNrKH8Hbv kfFplVBztatS8fQ0Whjdd0EZ9ohnnT3er7cH/M1uF4c/uiY4G2aL0OPf0liUy3d4 uAuBVkkX/8h87DAj8a4duVpKMMFGTLstV/dQjyMTKpVF1L+Jm4F62bphQr1BMpC+ zpLAzxRzkC4ex/Owu9CKdMUft8RnwgDaWApQufRzL+Si1FZOBKnB9XvVBztqzITs 6l5/2ggTjL3G7Nskbw9HHRZ65h1u2YaEsAIkdnGwcBPDPsMqLqt0js7DeyE7aq4v ZopyNdSTQWUPYX95NxkGpyXTr7V+kfzeqpS9MAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:in-reply-to:content-type:content-transfer-encoding :mime-version; s=arctest; t=1519784053; bh=KN7UoR7UWoNMqRgt4WpP6 0VRHHimQCWlJ6ilm1C9zaA=; b=hU4rnvn59j4+nO8VcGgTfpsPP/x5l3AeLErms VwJ4Pu+MhG2W6RWcjp/uubRAl9UEPfxFVtF6kEJG8sJeAQIvxokRIV+DVb9Ibglg sRlA0PquRGzJodxXrc8Hyl1+qoySdeN0uJ9HcXE3mqZeD7tNvPasleYxbVqSdxA/ q4MD9qErLzxA+86g7bJHU24MLro+aHYmd7MgJwAST/KgCzBWdGNWUJlaktUhsBh0 /Gb8Y/2gy+03sqUnqknbjlWXW9L7nNUN66bUwKBKLupah34yaJHNkRqPBPEWiN41 2kFoCnqZ9SBs1ois/zSyfZjnuAQBm8PysUudVejpNYFrtF2YQ== ARC-Authentication-Results: i=1; mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,d=none) header.from=richtek.com; iprev=pass policy.iprev=220.130.44.152 (mg.richtek.com); spf=pass smtp.mailfrom=prvs=1594D10D68=shufan_lee@richtek.com smtp.helo=mg.richtek.com; x-aligned-from=domain_pass; x-ptr=pass x-ptr-helo=mg.richtek.com x-ptr-lookup=mg.richtek.com; x-return-mx=pass smtp.domain=richtek.com smtp.result=pass smtp_is_org_domain=yes header.domain=richtek.com header.result=pass header_is_org_domain=yes Authentication-Results: mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,d=none) header.from=richtek.com; iprev=pass policy.iprev=220.130.44.152 (mg.richtek.com); spf=pass smtp.mailfrom=prvs=1594D10D68=shufan_lee@richtek.com smtp.helo=mg.richtek.com; x-aligned-from=domain_pass; x-ptr=pass x-ptr-helo=mg.richtek.com x-ptr-lookup=mg.richtek.com; x-return-mx=pass smtp.domain=richtek.com smtp.result=pass smtp_is_org_domain=yes header.domain=richtek.com header.result=pass header_is_org_domain=yes X-MailGates: (flag:4,DYNAMIC,BADHELO,RELAY,NOHOST:PASS)(compute_score:DE LIVER,40,3) From: =?big5?B?c2h1ZmFuX2xlZSin9a7Rpnwp?= 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" Subject: =?big5?B?pl7C0DogW1BBVENIXSBzdGFnaW5nOiB0eXBlYzogaGFuZGxlIHZlbmRvciBkZWZp?= =?big5?Q?ned_part_and_modify_drp_toggling_flow?= Thread-Topic: [PATCH] staging: typec: handle vendor defined part and modify drp toggling flow Thread-Index: AQHTqyUC1KfEVAIOvUSu1Z3CmdjNFaOu5n4AgAo2wKU= Date: Wed, 28 Feb 2018 02:14:04 +0000 Message-ID: <1519784044744.14709@richtek.com> References: <1519225343-2929-1-git-send-email-leechu729@gmail.com>,<20180221221514.GA31916@roeck-us.net> In-Reply-To: <20180221221514.GA31916@roeck-us.net> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [114.32.235.24] Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: SGkgR3VlbnRlciwNCg0KICByZWdtYXBfd3JpdGUgcmV0dXJucyBhIG5lZ2F0aXZlIHJldHVybiBj b2RlIG9yIDAsIHRodXMgdGhpcyBjYW4gYmUNCnNpbXBsaWZpZWQgdG8NCiAgICAgICAgcmV0dXJu IHJlZ21hcF93cml0ZSguLi4pOw0KDQogIE9rLCBJJ2xsIG1vZGlmeSBpdCBpbiB2NA0KDQpIbW0s IG5vcm1hbGx5IEknZCBleHBlY3QgdGhpcyBmdW5jdGlvbiBfYWZ0ZXJfIHRoZSBmdW5jdGlvbiBp dCBjYWxscy4NCkd1ZXNzIHRoYXQgZG9lc24ndCBtYXR0ZXIgbXVjaCBoZXJlLCBzbyBJIGFtIGZp bmUgd2l0aCBpdCBhcyBsb25nDQphcyBHcmVnIGlzIG9rIHdpdGggaXQgYXMgd2VsbC4NCg0KICBE byB5b3UgbWVhbiBpdCBtYXliZSBiZXR0ZXIgdG8gY2FsbCB2ZW5kb3IncyBzZXRfdmNvbm4gYWZ0 ZXIgbm9ybWFsIHNldF92Y29ubiBpcyBmaW5pc2hlZD8NCiAgSWYgSSB1bmRlcnN0YW5kIGNvcnJl Y3RseSwgSSBjYW4gYWxzbyBtb2RpZnkgaXQgaW4gdjQuIEZvciBSVDE3MTFILCBpdCBhbHNvIHdv cmtzIGJ5IGVuYWJsaW5nL2Rpc2FibGluZyBpZGxlIG1vZGUgYWZ0ZXIgc2V0X3Zjb25uLg0KDQpC ZXN0IFJlZ2FyZHMsDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0K U2h1LUZhbiBMZWUNClJpY2h0ZWsgVGVjaG5vbG9neSBDb3Jwb3JhdGlvbg0KVEVMOiArODg2LTMt NTUyNjc4OSAjMjM1OQ0KRkFYOiArODg2LTMtNTUyNjYxMg0KKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KsUil86rMOiBHdWVudGVyIFJvZWNrIDxncm9lY2s3QGdtYWlsLmNvbT4gpU6q7SBH dWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+DQqxSKXzpOm0wTogMjAxOKZ+MqTrMjKk 6SCkV6TIIDA2OjE1DQqmrKXzqsw6IFNodUZhbkxlZQ0KsMaluzogaGVpa2tpLmtyb2dlcnVzQGxp bnV4LmludGVsLmNvbTsgZ3JlZ0Brcm9haC5jb207IHNodWZhbl9sZWUop/Wu0aZ8KTsgY3lfaHVh bmcotsCx0q3sKTsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXgtdXNiQHZnZXIu a2VybmVsLm9yZw0KpUSmrjogUmU6IFtQQVRDSF0gc3RhZ2luZzogdHlwZWM6IGhhbmRsZSB2ZW5k b3IgZGVmaW5lZCBwYXJ0IGFuZCBtb2RpZnkgZHJwIHRvZ2dsaW5nIGZsb3cNCg0KT24gV2VkLCBG ZWIgMjEsIDIwMTggYXQgMTE6MDI6MjNQTSArMDgwMCwgU2h1RmFuTGVlIHdyb3RlOg0KPiBGcm9t OiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRlay5jb20+DQo+DQo+IEhhbmRsZSB2ZW5kb3Ig ZGVmaW5lZCBiZWhhdmlvciBpbiB0Y3BjaV9pbml0LCB0Y3BjaV9zZXRfdmNvbm4gYW5kIGV4cG9y dCB0Y3BjaV9pcnEuDQo+IE1vcmUgb3BlcmF0aW9ucyBjYW4gYmUgZXh0ZW5kZWQgaW4gdGNwY2lf ZGF0YSBpZiBuZWVkZWQuDQo+IEFjY29yZGluZyB0byBUQ1BDSSBzcGVjaWZpY2F0aW9uLCA0LjQu NS4yIFJPTEVfQ09OVFJPTCwNCj4gVENQQyBzaGFsbCBub3Qgc3RhcnQgRFJQIHRvZ2dsaW5nIHVu dGlsIHN1YnNlcXVlbnRseSB0aGUgVENQTQ0KPiB3cml0ZXMgdG8gdGhlIENPTU1BTkQgcmVnaXN0 ZXIgdG8gc3RhcnQgRFJQIHRvZ2dsaW5nLg0KPiBEUlAgdG9nZ2xpbmcgZmxvdyBpcyBjaGFnbmVk IGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERSUCA9IDAgJiBSZC9SZA0KPiAgIC0gV3JpdGUg RFJQID0gMQ0KPiAgIC0gU2V0IExPT0s0Q09OTkVDVElPTiBjb21tYW5kDQo+DQo+IFNpZ25lZC1v ZmYtYnk6IFNodUZhbkxlZSA8c2h1ZmFuX2xlZUByaWNodGVrLmNvbT4NCg0KTW9zdGx5IGxvb29r cyBnb29kIHRvIG1lLiBDb3VwbGUgb2Ygbml0cGlja3MgYmVsb3cuDQoNCkd1ZW50ZXINCg0KPiAt LS0NCj4gIGRyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jIHwgMTI4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3Rj cGNpLmggfCAgMTMgKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyks IDI2IGRlbGV0aW9ucygtKQ0KPg0KPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYxICYgdjIN Cj4gIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGkyY19jbGllbnQgaW4gdGhlIHN0cnVjdHVyZSBvZiB0 Y3BjaQ0KPiAgLSBSZW5hbWUgc3RydWN0dXJlIG9mIHRjcGNpX3ZlbmRvcl9kYXRhIHRvIHRjcGNp X2RhdGENCj4gIC0gTm90IGV4cG9ydGluZyB0Y3BjaSByZWFkL3dyaXRlIHdyYXBwZXJzIGJ1dCBy ZWdpc3RlciBpMmMgcmVnbWFwIGluIGdsdWUgZHJpdmVyDQo+ICAtIEFkZCBzZXRfdmNvbm4gb3Bz IGluIHRjcGNpX2RhdGENCj4gICAgKEl0IGlzIG5lY2Vzc2FyeSBmb3IgUlQxNzExSCB0byBlbmFi bGUvZGlzYWJsZSBpZGxlIG1vZGUgYmVmb3JlIGRpc2FibGluZy9lbmFibGluZyB2Y29ubikNCj4g IC0gRXhwb3J0IHRjcGNpX2lycSBzbyB0aGF0IHZlbmRvciBjYW4gY2FsbCBpdCBpbiB0aGVpciBv d24gSVJRIGhhbmRsZXINCj4NCj4gIHBhdGNoIGNoYW5nZWxvZ3MgYmV0d2VlbiB2MiAmIHYzDQo+ ICAtIENoYW5nZSB0aGUgcmV0dXJuIHR5cGUgb2YgdGNwY2lfaXJxIGZyb20gaW50IHRvIGlycXJl dHVybl90DQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYyBi L2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IGluZGV4IDliZDQ0MTIuLjQ5NTljNjkg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+ICsrKyBiL2Ry aXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IEBAIC0yMSw3ICsyMSw2IEBADQo+DQo+ICBz dHJ1Y3QgdGNwY2kgew0KPiAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+IC0gICAgIHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQ7DQo+DQo+ICAgICAgIHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQ7 DQo+DQo+IEBAIC0zMCw2ICsyOSwxMiBAQCBzdHJ1Y3QgdGNwY2kgew0KPiAgICAgICBib29sIGNv bnRyb2xzX3ZidXM7DQo+DQo+ICAgICAgIHN0cnVjdCB0Y3BjX2RldiB0Y3BjOw0KPiArICAgICBz dHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB0Y3BjaV9jaGlw IHsNCj4gKyAgICAgc3RydWN0IHRjcGNpICp0Y3BjaTsNCj4gKyAgICAgc3RydWN0IHRjcGNpX2Rh dGEgZGF0YTsNCj4gIH07DQo+DQo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y3BjaSAqdGNwY190 b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpDQo+IEBAIC0zNyw4ICs0Miw3IEBAIHN0YXRp YyBpbmxpbmUgc3RydWN0IHRjcGNpICp0Y3BjX3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNw YykNCj4gICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZih0Y3BjLCBzdHJ1Y3QgdGNwY2ksIHRjcGMp Ow0KPiAgfQ0KPg0KPiAtc3RhdGljIGludCB0Y3BjaV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3Bj aSwgdW5zaWduZWQgaW50IHJlZywNCj4gLSAgICAgICAgICAgICAgICAgICAgIHUxNiAqdmFsKQ0K PiArc3RhdGljIGludCB0Y3BjaV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3BjaSwgdW5zaWduZWQg aW50IHJlZywgdTE2ICp2YWwpDQo+ICB7DQo+ICAgICAgIHJldHVybiByZWdtYXBfcmF3X3JlYWQo dGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVvZih1MTYpKTsNCj4gIH0NCj4gQEAgLTk4LDgg KzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNwY19kZXYgKnRjcGMs IGVudW0gdHlwZWNfY2Nfc3RhdHVzIGNjKQ0KPiAgc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBf dG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2ICp0Y3BjLA0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSB0eXBlY19jY19zdGF0dXMgY2MpDQo+ICB7DQo+ICsgICAgIGludCBy ZXQ7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOw0K PiAtICAgICB1bnNpZ25lZCBpbnQgcmVnID0gVENQQ19ST0xFX0NUUkxfRFJQOw0KPiArICAgICB1 bnNpZ25lZCBpbnQgcmVnID0gKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8IFRDUENfUk9MRV9DVFJM X0NDMV9TSElGVCkgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKFRDUENfUk9MRV9DVFJM X0NDX1JEIDw8IFRDUENfUk9MRV9DVFJMX0NDMl9TSElGVCk7DQo+DQo+ICAgICAgIHN3aXRjaCAo Y2MpIHsNCj4gICAgICAgZGVmYXVsdDoNCj4gQEAgLTExNyw3ICsxMjMsMTkgQEAgc3RhdGljIGlu dCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2ICp0Y3BjLA0KPiAgICAg ICAgICAgICAgIGJyZWFrOw0KPiAgICAgICB9DQo+DQo+IC0gICAgIHJldHVybiByZWdtYXBfd3Jp dGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7DQo+ICsgICAgIHJldCA9IHJl Z21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsNCj4gKyAgICAg aWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgdXNsZWVw X3JhbmdlKDUwMCwgMTAwMCk7DQo+ICsgICAgIHJlZyB8PSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwg cmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gKyAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENfQ09NTUFORCwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRDUENfQ01EX0xPT0s0Q09OTkVDVElPTik7DQo+ ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAg IHJldHVybiAwOw0KDQpyZWdtYXBfd3JpdGUgcmV0dXJucyBhIG5lZ2F0aXZlIHJldHVybiBjb2Rl IG9yIDAsIHRodXMgdGhpcyBjYW4gYmUNCnNpbXBsaWZpZWQgdG8NCiAgICAgICAgcmV0dXJuIHJl Z21hcF93cml0ZSguLi4pOw0KDQo+ICB9DQo+DQo+ICBzdGF0aWMgZW51bSB0eXBlY19jY19zdGF0 dXMgdGNwY2lfdG9fdHlwZWNfY2ModW5zaWduZWQgaW50IGNjLCBib29sIHNpbmspDQo+IEBAIC0x NzgsNiArMTk2LDE2IEBAIHN0YXRpYyBpbnQgdGNwY2lfc2V0X3Zjb25uKHN0cnVjdCB0Y3BjX2Rl diAqdGNwYywgYm9vbCBlbmFibGUpDQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3Bj X3RvX3RjcGNpKHRjcGMpOw0KPiAgICAgICBpbnQgcmV0Ow0KPg0KPiArICAgICAvKiBIYW5kbGUg dmVuZG9yIHNldCB2Y29ubiAqLw0KPiArICAgICBpZiAodGNwY2ktPmRhdGEpIHsNCj4gKyAgICAg ICAgICAgICBpZiAodGNwY2ktPmRhdGEtPnNldF92Y29ubikgew0KPiArICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gdGNwY2ktPmRhdGEtPnNldF92Y29ubih0Y3BjaSwgdGNwY2ktPmRhdGEsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJs ZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgICAgICAgICB9DQo+ICsgICAg IH0NCj4gKw0KPiAgICAgICByZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19Q T1dFUl9DVFJMLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlID8gVENQQ19QT1dF Ul9DVFJMX1ZDT05OX0VOQUJMRSA6IDApOw0KPiAgICAgICBpZiAocmV0IDwgMCkNCj4gQEAgLTMy Myw2ICszNTEsMTUgQEAgc3RhdGljIGludCB0Y3BjaV9pbml0KHN0cnVjdCB0Y3BjX2RldiAqdGNw YykNCj4gICAgICAgaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpDQo+ICAgICAgICAg ICAgICAgcmV0dXJuIC1FVElNRURPVVQ7DQo+DQo+ICsgICAgIC8qIEhhbmRsZSB2ZW5kb3IgaW5p dCAqLw0KPiArICAgICBpZiAodGNwY2ktPmRhdGEpIHsNCj4gKyAgICAgICAgICAgICBpZiAodGNw Y2ktPmRhdGEtPmluaXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRjcGNpLT5k YXRhLT5pbml0KHRjcGNpLCB0Y3BjaS0+ZGF0YSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICBp ZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gKyAgICAgICAgICAgICB9DQo+ICsgICAgIH0NCj4gKw0KPiAgICAgICAvKiBDbGVhciBhbGwg ZXZlbnRzICovDQo+ICAgICAgIHJldCA9IHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlQs IDB4ZmZmZik7DQo+ICAgICAgIGlmIChyZXQgPCAwKQ0KPiBAQCAtMzQ0LDkgKzM4MSwxNSBAQCBz dGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3BjKQ0KPiAgICAgICByZXR1 cm4gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCByZWcpOw0KPiAgfQ0KPg0K PiAtc3RhdGljIGlycXJldHVybl90IHRjcGNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+ ICtzdGF0aWMgaXJxcmV0dXJuX3QgX3RjcGNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpDQo+ ICB7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSBkZXZfaWQ7DQo+ICsNCj4gKyAgICAg cmV0dXJuIHRjcGNpX2lycSh0Y3BjaSk7DQo+ICt9DQoNCkhtbSwgbm9ybWFsbHkgSSdkIGV4cGVj dCB0aGlzIGZ1bmN0aW9uIF9hZnRlcl8gdGhlIGZ1bmN0aW9uIGl0IGNhbGxzLg0KR3Vlc3MgdGhh dCBkb2Vzbid0IG1hdHRlciBtdWNoIGhlcmUsIHNvIEkgYW0gZmluZSB3aXRoIGl0IGFzIGxvbmcN CmFzIEdyZWcgaXMgb2sgd2l0aCBpdCBhcyB3ZWxsLg0KDQo+ICsNCj4gK2lycXJldHVybl90IHRj cGNpX2lycShzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0KPiArew0KPiAgICAgICB1MTYgc3RhdHVzOw0K Pg0KPiAgICAgICB0Y3BjaV9yZWFkMTYodGNwY2ksIFRDUENfQUxFUlQsICZzdGF0dXMpOw0KPiBA QCAtNDEyLDYgKzQ1NSw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB0Y3BjaV9pcnEoaW50IGlycSwg dm9pZCAqZGV2X2lkKQ0KPg0KPiAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ICB9DQo+ICtF WFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9pcnEpOw0KPg0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBy ZWdtYXBfY29uZmlnIHRjcGNpX3JlZ21hcF9jb25maWcgPSB7DQo+ICAgICAgIC5yZWdfYml0cyA9 IDgsDQo+IEBAIC00MzUsMjIgKzQ3OSwxOCBAQCBzdGF0aWMgaW50IHRjcGNpX3BhcnNlX2NvbmZp ZyhzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0KPiAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4NCj4gLXN0 YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gLSAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkNCj4gK3N0 cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9ydChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCB0Y3BjaV9kYXRhICpkYXRhKQ0KPiAgew0KPiAgICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0K PiAgICAgICBpbnQgZXJyOw0KPg0KPiAtICAgICB0Y3BjaSA9IGRldm1fa3phbGxvYygmY2xpZW50 LT5kZXYsIHNpemVvZigqdGNwY2kpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgdGNwY2kgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKnRjcGNpKSwgR0ZQX0tFUk5FTCk7DQo+ICAgICAgIGlmICgh dGNwY2kpDQo+IC0gICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsgICAgICAgICAgICAg cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7DQo+DQo+IC0gICAgIHRjcGNpLT5jbGllbnQgPSBjbGll bnQ7DQo+IC0gICAgIHRjcGNpLT5kZXYgPSAmY2xpZW50LT5kZXY7DQo+IC0gICAgIGkyY19zZXRf Y2xpZW50ZGF0YShjbGllbnQsIHRjcGNpKTsNCj4gLSAgICAgdGNwY2ktPnJlZ21hcCA9IGRldm1f cmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnRjcGNpX3JlZ21hcF9jb25maWcpOw0KPiAtICAgICBp ZiAoSVNfRVJSKHRjcGNpLT5yZWdtYXApKQ0KPiAtICAgICAgICAgICAgIHJldHVybiBQVFJfRVJS KHRjcGNpLT5yZWdtYXApOw0KPiArICAgICB0Y3BjaS0+ZGV2ID0gZGV2Ow0KPiArICAgICB0Y3Bj aS0+ZGF0YSA9IGRhdGE7DQo+ICsgICAgIHRjcGNpLT5yZWdtYXAgPSBkYXRhLT5yZWdtYXA7DQo+ DQo+ICAgICAgIHRjcGNpLT50Y3BjLmluaXQgPSB0Y3BjaV9pbml0Ow0KPiAgICAgICB0Y3BjaS0+ dGNwYy5nZXRfdmJ1cyA9IHRjcGNpX2dldF92YnVzOw0KPiBAQCAtNDY3LDI3ICs1MDcsNjMgQEAg c3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPg0KPiAg ICAgICBlcnIgPSB0Y3BjaV9wYXJzZV9jb25maWcodGNwY2kpOw0KPiAgICAgICBpZiAoZXJyIDwg MCkNCj4gLSAgICAgICAgICAgICByZXR1cm4gZXJyOw0KPiArICAgICAgICAgICAgIHJldHVybiBF UlJfUFRSKGVycik7DQo+ICsNCj4gKyAgICAgdGNwY2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3Bv cnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsNCj4gKyAgICAgaWYgKFBUUl9FUlJfT1JfWkVS Tyh0Y3BjaS0+cG9ydCkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIEVSUl9DQVNUKHRjcGNpLT5w b3J0KTsNCj4NCj4gLSAgICAgLyogRGlzYWJsZSBjaGlwIGludGVycnVwdHMgKi8NCj4gLSAgICAg dGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCAwKTsNCj4gKyAgICAgcmV0dXJu IHRjcGNpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwodGNwY2lfcmVnaXN0ZXJfcG9ydCk7 DQo+ICsNCj4gK3ZvaWQgdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kp DQo+ICt7DQo+ICsgICAgIHRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsNCj4gK30N Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJfcG9ydCk7DQo+DQo+IC0gICAg IGVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodGNwY2ktPmRldiwgY2xpZW50LT5pcnEs IE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwY2lfaXJx LA0KPiArc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0K PiArICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaTJjX2lk KQ0KPiArew0KPiArICAgICBzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcDsNCj4gKyAgICAgaW50IGVy cjsNCj4gKyAgICAgdTE2IHZhbCA9IDA7DQo+ICsNCj4gKyAgICAgY2hpcCA9IGRldm1fa3phbGxv YygmY2xpZW50LT5kZXYsIHNpemVvZigqY2hpcCksIEdGUF9LRVJORUwpOw0KPiArICAgICBpZiAo IWNoaXApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKyAgICAgY2hp cC0+ZGF0YS5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGllbnQsICZ0Y3BjaV9yZWdt YXBfY29uZmlnKTsNCj4gKyAgICAgaWYgKElTX0VSUihjaGlwLT5kYXRhLnJlZ21hcCkpDQo+ICsg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2hpcC0+ZGF0YS5yZWdtYXApOw0KPiArDQo+ICsg ICAgIC8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzIGJlZm9yZSByZXF1ZXN0aW5nIGlycSAqLw0K PiArICAgICBlcnIgPSByZWdtYXBfcmF3X3dyaXRlKGNoaXAtPmRhdGEucmVnbWFwLCBUQ1BDX0FM RVJUX01BU0ssICZ2YWwsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHUx NikpOw0KPiArICAgICBpZiAoZXJyIDwgMCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOw0K PiArDQo+ICsgICAgIGVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2 LCBjbGllbnQtPmlycSwgTlVMTCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfdGNwY2lfaXJxLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElSUUZfT05FU0hPVCB8IElSUUZfVFJJR0dFUl9MT1csDQo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGV2X25hbWUodGNwY2ktPmRldiksIHRjcGNpKTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfbmFtZSgmY2xpZW50LT5kZXYpLCBj aGlwKTsNCj4gICAgICAgaWYgKGVyciA8IDApDQo+ICAgICAgICAgICAgICAgcmV0dXJuIGVycjsN Cj4NCj4gLSAgICAgdGNwY2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwg JnRjcGNpLT50Y3BjKTsNCj4gLSAgICAgcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9y dCk7DQo+ICsgICAgIGNoaXAtPnRjcGNpID0gdGNwY2lfcmVnaXN0ZXJfcG9ydCgmY2xpZW50LT5k ZXYsICZjaGlwLT5kYXRhKTsNCj4gKyAgICAgaWYgKFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3Bj aSkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2hpcC0+dGNwY2kpOw0KPiArDQo+ ICsgICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOw0KPiArICAgICByZXR1cm4g MDsNCj4gIH0NCj4NCj4gIHN0YXRpYyBpbnQgdGNwY2lfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 ICpjbGllbnQpDQo+ICB7DQo+IC0gICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSBpMmNfZ2V0X2Ns aWVudGRhdGEoY2xpZW50KTsNCj4gKyAgICAgc3RydWN0IHRjcGNpX2NoaXAgKmNoaXAgPSBpMmNf Z2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4NCj4gLSAgICAgdGNwbV91bnJlZ2lzdGVyX3BvcnQo dGNwY2ktPnBvcnQpOw0KPiArICAgICB0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoY2hpcC0+dGNwY2kp Ow0KPg0KPiAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3Rh Z2luZy90eXBlYy90Y3BjaS5oIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gaW5k ZXggZmRmYjA2Yy4uNDAwMjViMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVj L3RjcGNpLmgNCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gQEAgLTU5 LDYgKzU5LDcgQEANCj4gICNkZWZpbmUgVENQQ19QT1dFUl9DVFJMX1ZDT05OX0VOQUJMRSBCSVQo MCkNCj4NCj4gICNkZWZpbmUgVENQQ19DQ19TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgIDB4 MWQNCj4gKyNkZWZpbmUgVENQQ19DQ19TVEFUVVNfRFJQUlNUICAgICAgICAgICAgICAgIEJJVCg1 KQ0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19URVJNICAgICAgICAgIEJJVCg0KQ0KPiAgI2Rl ZmluZSBUQ1BDX0NDX1NUQVRVU19DQzJfU0hJRlQgICAgIDINCj4gICNkZWZpbmUgVENQQ19DQ19T VEFUVVNfQ0MyX01BU0sgICAgICAgICAgICAgIDB4Mw0KPiBAQCAtMTIxLDQgKzEyMiwxNiBAQA0K PiAgI2RlZmluZSBUQ1BDX1ZCVVNfVk9MVEFHRV9BTEFSTV9ISV9DRkcgICAgICAgICAgICAgICAw eDc2DQo+ICAjZGVmaW5lIFRDUENfVkJVU19WT0xUQUdFX0FMQVJNX0xPX0NGRyAgICAgICAgICAg ICAgIDB4NzgNCj4NCj4gK3N0cnVjdCB0Y3BjaTsNCj4gK3N0cnVjdCB0Y3BjaV9kYXRhIHsNCj4g KyAgICAgc3RydWN0IHJlZ21hcCAqcmVnbWFwOw0KPiArICAgICBpbnQgKCppbml0KShzdHJ1Y3Qg dGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSk7DQo+ICsgICAgIGludCAoKnNl dF92Y29ubikoc3RydWN0IHRjcGNpICp0Y3BjaSwgc3RydWN0IHRjcGNpX2RhdGEgKmRhdGEsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGUpOw0KPiArfTsNCj4gKw0KPiArc3Ry dWN0IHRjcGNpICp0Y3BjaV9yZWdpc3Rlcl9wb3J0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IHRjcGNpX2RhdGEgKmRhdGEpOw0KPiArdm9pZCB0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoc3RydWN0 IHRjcGNpICp0Y3BjaSk7DQo+ICtpcnFyZXR1cm5fdCB0Y3BjaV9pcnEoc3RydWN0IHRjcGNpICp0 Y3BjaSk7DQo+ICsNCj4gICNlbmRpZiAvKiBfX0xJTlVYX1VTQl9UQ1BDSV9IICovDQo+IC0tDQo+ IDEuOS4xDQo+DQoqKioqKioqKioqKioqIEVtYWlsIENvbmZpZGVudGlhbGl0eSBOb3RpY2UgKioq KioqKioqKioqKioqKioqKioNCg0KVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGUt bWFpbCBtZXNzYWdlIChpbmNsdWRpbmcgYW55IGF0dGFjaG1lbnRzKSBtYXkgYmUgY29uZmlkZW50 aWFsLCBwcm9wcmlldGFyeSwgcHJpdmlsZWdlZCwgb3Igb3RoZXJ3aXNlIGV4ZW1wdCBmcm9tIGRp c2Nsb3N1cmUgdW5kZXIgYXBwbGljYWJsZSBsYXdzLiBJdCBpcyBpbnRlbmRlZCB0byBiZSBjb252 ZXllZCBvbmx5IHRvIHRoZSBkZXNpZ25hdGVkIHJlY2lwaWVudChzKS4gQW55IHVzZSwgZGlzc2Vt aW5hdGlvbiwgZGlzdHJpYnV0aW9uLCBwcmludGluZywgcmV0YWluaW5nIG9yIGNvcHlpbmcgb2Yg dGhpcyBlLW1haWwgKGluY2x1ZGluZyBpdHMgYXR0YWNobWVudHMpIGJ5IHVuaW50ZW5kZWQgcmVj aXBpZW50KHMpIGlzIHN0cmljdGx5IHByb2hpYml0ZWQgYW5kIG1heSBiZSB1bmxhd2Z1bC4gSWYg eW91IGFyZSBub3QgYW4gaW50ZW5kZWQgcmVjaXBpZW50IG9mIHRoaXMgZS1tYWlsLCBvciBiZWxp ZXZlIHRoYXQgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBlLW1haWwgaW4gZXJyb3IsIHBsZWFzZSBu b3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSAoYnkgcmVwbHlpbmcgdG8gdGhpcyBlLW1haWwp LCBkZWxldGUgYW55IGFuZCBhbGwgY29waWVzIG9mIHRoaXMgZS1tYWlsIChpbmNsdWRpbmcgYW55 IGF0dGFjaG1lbnRzKSBmcm9tIHlvdXIgc3lzdGVtLCBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBj b250ZW50IG9mIHRoaXMgZS1tYWlsIHRvIGFueSBvdGhlciBwZXJzb24uIFRoYW5rIHlvdSENCg==