From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3969394-1519294582-2-14564891094640900781 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, RCVD_IN_MSPIKE_H4 -0.01, RCVD_IN_MSPIKE_WL -0.01, SPF_HELO_PASS -0.001, SPF_PASS -0.001, LANGUAGES enro, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='104.47.0.41', Host='mail-he1eur01on0041.outbound.protection.outlook.com', Country='FI', FromHeader='com', MailFrom='com', XOriginatingCountry='SG' X-Spam-charsets: plain='gb2312' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: jun.li@nxp.com ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1519294581; b=Nc/IJVuDinomyRyQXQW4OSR4yYosmdKUlaV/kRJnIzpKoAG 1scaU1/jtQJJF42lEHgtNK96IpqC6tKbbiq4Ij66f1HXDsyCTt+T1jtxgkHCf4Mt V2bLbohHNwZKEvs/Ubgr3oqcYSr4eMc5Ot9aUvmB6grVEUzzH8hR6a2Okq2WA+AL 4Wbowfft0gZnCbVbPLC9/UVMjGbkHqrrNjAyhS+4c3fMAC3Dc7WOxx25FYpeM9oB nYm6PsDP0gkd1QauiXAzylfq1bXT2Vt/0fSKjfWDMx/PRtM2gc71/qIczf1im/Ta LT41FyJuS/cTdFj9bOfEWuA3yxxmLXP+AuPL2XQ== 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=1519294581; bh=OJrUmNopb/H6xzI+XNr4o B7s4h1bRyu/6k+YYjfsgd8=; b=EJImXUSTxsicpY0iAnW9Kg9VEnlxrZeJXcPGJ b5THBkb80um0IvxEHsBd0l7giPXUDCysrVlkR83pAcdhSlGxf/cYVTHkHdNKLYwY UjepHn7jxhb+2oc4p/9lwzoHp2HopmH/KdjoLFCroB623HiLyH8TRpw1aT63wlo4 kfVgbrgWF3MiaHhxSTQwS34+DEI5iAHCMlK/c5ep7bALMudRe29vrF0+cNLpkieW XZxyMDtmOs/QMHQqUBxJMSDLxPUd/0S6TPX9seyxyK7wkYPQYUGxC/lvKzvcO25Q Cg51bbKmOahzREYzdkX9DTF9tq63n/G3f9+wZoq1NpE4ies5g== ARC-Authentication-Results: i=1; mx3.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=nxp.com header.i=@nxp.com header.b=A37NJpLC x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=none,d=none) header.from=nxp.com; iprev=pass policy.iprev=104.47.0.41 (mail-he1eur01on0041.outbound.protection.outlook.com); spf=pass smtp.mailfrom=jun.li@nxp.com smtp.helo=EUR01-HE1-obe.outbound.protection.outlook.com; x-aligned-from=pass; x-ptr=fail x-ptr-helo=EUR01-HE1-obe.outbound.protection.outlook.com x-ptr-lookup=mail-he1eur01on0041.outbound.protection.outlook.com; x-return-mx=pass smtp.domain=nxp.com smtp.result=pass smtp_is_org_domain=yes header.domain=nxp.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128 Authentication-Results: mx3.messagingengine.com; arc=none (no signatures found); dkim=pass (1024-bit rsa key sha256) header.d=nxp.com header.i=@nxp.com header.b=A37NJpLC x-bits=1024 x-keytype=rsa x-algorithm=sha256 x-selector=selector1; dmarc=pass (p=none,d=none) header.from=nxp.com; iprev=pass policy.iprev=104.47.0.41 (mail-he1eur01on0041.outbound.protection.outlook.com); spf=pass smtp.mailfrom=jun.li@nxp.com smtp.helo=EUR01-HE1-obe.outbound.protection.outlook.com; x-aligned-from=pass; x-ptr=fail x-ptr-helo=EUR01-HE1-obe.outbound.protection.outlook.com x-ptr-lookup=mail-he1eur01on0041.outbound.protection.outlook.com; x-return-mx=pass smtp.domain=nxp.com smtp.result=pass smtp_is_org_domain=yes header.domain=nxp.com header.result=pass header_is_org_domain=yes; x-tls=pass version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128 From: Jun Li To: ShuFanLee , "heikki.krogerus@linux.intel.com" , "linux@roeck-us.net" , "greg@kroah.com" CC: "shufan_lee@richtek.com" , "cy_huang@richtek.com" , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , dl-linux-imx Subject: RE: [PATCH] staging: typec: handle vendor defined part and modify drp toggling flow Thread-Topic: [PATCH] staging: typec: handle vendor defined part and modify drp toggling flow Thread-Index: AQHTqyUdFvVGBwfZp02pyfGoxbo4UqOwKcjQ Date: Thu, 22 Feb 2018 10:16:15 +0000 Message-ID: References: <1519225343-2929-1-git-send-email-leechu729@gmail.com> In-Reply-To: <1519225343-2929-1-git-send-email-leechu729@gmail.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=jun.li@nxp.com; x-originating-ip: [92.121.68.129] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR0402MB3725;7:wzz5SlSfpQTgLJ2Ek1sF1/V7ZT/XcsbLFIqZmt21s4dj5+hF6RxuevOGeKWgUjWWoUTnFb4Qic17Xhay/kI30dxBVTr1q6s/VVokz6lUpLyrabnsqVZYC0gdSmoDgAcew5Vyfnk4Ni9FNQ5bpNhLjST3CzRpeNxbrH4IecyXUyUQPWEQJg0UmRXdYENxRT2XeMe1ITgB96SYAN7nfyusV8rG7VPrbi3EJB1l0vXrhJYLhgX64be02XsG3QhJPbFj x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 63f6759b-b23c-4d79-55b0-08d579dd4e8e x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020);SRVR:VI1PR0402MB3725; x-ms-traffictypediagnostic: VI1PR0402MB3725: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(9452136761055)(189930954265078)(45079756050767)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001078)(6040501)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231101)(944501161)(6055026)(6041288)(20161123558120)(20161123562045)(20161123560045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);SRVR:VI1PR0402MB3725;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0402MB3725; x-forefront-prvs: 059185FE08 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(39380400002)(39860400002)(396003)(366004)(346002)(199004)(189003)(54534003)(13464003)(105586002)(9686003)(186003)(6306002)(7736002)(45080400002)(478600001)(66066001)(2201001)(575784001)(86362001)(305945005)(966005)(6246003)(53936002)(6436002)(55016002)(14454004)(74316002)(5660300001)(2900100001)(2950100002)(229853002)(4326008)(33656002)(39060400002)(106356001)(25786009)(54906003)(110136005)(97736004)(316002)(99286004)(26005)(7696005)(68736007)(59450400001)(76176011)(3280700002)(2906002)(6506007)(102836004)(53546011)(81166006)(81156014)(8676002)(3660700001)(5250100002)(2501003)(8936002)(6116002)(3846002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0402MB3725;H:VI1PR0402MB3917.eurprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; x-microsoft-antispam-message-info: 8F8TEdFh1/3k+DRsQOMXTGohvMSdmzlk8rmwYvJ/CXsHgjGo3sk8IymI0o93m4juJTUN9xIWXs+R/Mf8G7GdB45masd2DFgSg8IaSNcTh/EZ3mYToyAFwaBaXHemOLt2wtWawy5MAzhUaHG5/X+fWfi8LuUbr3VBwI8WT5cZTCY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63f6759b-b23c-4d79-55b0-08d579dd4e8e X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2018 10:16:15.4227 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB3725 X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgtdXNiLW93 bmVyQHZnZXIua2VybmVsLm9yZw0KPiBbbWFpbHRvOmxpbnV4LXVzYi1vd25lckB2Z2VyLmtlcm5l bC5vcmddIE9uIEJlaGFsZiBPZiBTaHVGYW5MZWUNCj4gU2VudDogMjAxOMTqMtTCMjHI1SAyMzow Mg0KPiBUbzogaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbTsgbGludXhAcm9lY2stdXMu bmV0OyBncmVnQGtyb2FoLmNvbQ0KPiBDYzogc2h1ZmFuX2xlZUByaWNodGVrLmNvbTsgY3lfaHVh bmdAcmljaHRlay5jb207DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXVz YkB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogW1BBVENIXSBzdGFnaW5nOiB0eXBlYzogaGFu ZGxlIHZlbmRvciBkZWZpbmVkIHBhcnQgYW5kIG1vZGlmeSBkcnANCj4gdG9nZ2xpbmcgZmxvdw0K PiANCj4gRnJvbTogU2h1RmFuTGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPg0KPiANCj4gSGFu ZGxlIHZlbmRvciBkZWZpbmVkIGJlaGF2aW9yIGluIHRjcGNpX2luaXQsIHRjcGNpX3NldF92Y29u biBhbmQgZXhwb3J0DQo+IHRjcGNpX2lycS4NCj4gTW9yZSBvcGVyYXRpb25zIGNhbiBiZSBleHRl bmRlZCBpbiB0Y3BjaV9kYXRhIGlmIG5lZWRlZC4NCj4gQWNjb3JkaW5nIHRvIFRDUENJIHNwZWNp ZmljYXRpb24sIDQuNC41LjIgUk9MRV9DT05UUk9MLCBUQ1BDIHNoYWxsIG5vdA0KPiBzdGFydCBE UlAgdG9nZ2xpbmcgdW50aWwgc3Vic2VxdWVudGx5IHRoZSBUQ1BNIHdyaXRlcyB0byB0aGUgQ09N TUFORA0KPiByZWdpc3RlciB0byBzdGFydCBEUlAgdG9nZ2xpbmcuDQoNCk15IHVuZGVyc3RhbmRp bmcgb2YgYWJvdmUgc3RhdGVtZW50IGlzIFRDUE0odGhpcyBMaW51eCBkcml2ZXIpIGNhbiBlbmFi bGUNCkRSUCBhbmQgQ0MxL0NDMiBpbiBvbmUgc2hvdCwgYnV0IFRDUEMoeW91ciB0eXBlYyBjaGlw IGludGVybmFsIGZpcm13YXJlKQ0KbmVlZHMgd2FpdCB1bnRpbCBUQ1BNIHdyaXRlcyB0byBDT01N QU5EIHJlZ2lzdGVyIHRvIHN0YXJ0IGRycCB0b2dnbGluZy4NCg0KPiBEUlAgdG9nZ2xpbmcgZmxv dyBpcyBjaGFnbmVkIGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERSUCA9IDAgJiBSZC9SZA0K DQpXaHkgZml4ZWQgdG8gYmUgUmQvUmQ/IGluIHRoaXMgY2FzZSwgaXQgbWVhbnMgdGhlIHN0YXJ0 aW5nIHZhbHVlOg0KDQpUY3BjaSA0LjQuNS4yOg0KIldoZW4gaW5pdGlhdGluZyBhdXRvbm9tb3Vz IERSUCB0b2dnbGluZywgdGhlIFRDUE0gc2hhbGwgd3JpdGUgQjYgKERSUCkgPTFiDQphbmQgdGhl IHN0YXJ0aW5nIHZhbHVlIG9mIFJwL1JkIHRvIEIzLi4wIChDQzEvQ0MyKSB0byBpbmRpY2F0ZSBE UlAgYXV0b25vbW91cw0KdG9nZ2xpbmcgbW9kZSB0byB0aGUgVENQQy4iDQoNCj4gICAtIFdyaXRl IERSUCA9IDENCg0KV2hhdCdzIHlvdXIgcHJvYmxlbSBpZiBjb21iaW5lIGFib3ZlIDIgaW4gb25l IHNob3Q/DQoNCj4gICAtIFNldCBMT09LNENPTk5FQ1RJT04gY29tbWFuZA0KPiANCj4gU2lnbmVk LW9mZi1ieTogU2h1RmFuTGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPg0KPiAtLS0NCj4gIGRy aXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jIHwgMTI4DQo+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgg fCAgMTMgKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDI2IGRl bGV0aW9ucygtKQ0KPiANCj4gIHBhdGNoIGNoYW5nZWxvZ3MgYmV0d2VlbiB2MSAmIHYyDQo+ICAt IFJlbW92ZSB1bm5lY2Vzc2FyeSBpMmNfY2xpZW50IGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGNwY2kN Cj4gIC0gUmVuYW1lIHN0cnVjdHVyZSBvZiB0Y3BjaV92ZW5kb3JfZGF0YSB0byB0Y3BjaV9kYXRh DQo+ICAtIE5vdCBleHBvcnRpbmcgdGNwY2kgcmVhZC93cml0ZSB3cmFwcGVycyBidXQgcmVnaXN0 ZXIgaTJjIHJlZ21hcCBpbiBnbHVlDQo+IGRyaXZlcg0KPiAgLSBBZGQgc2V0X3Zjb25uIG9wcyBp biB0Y3BjaV9kYXRhDQo+ICAgIChJdCBpcyBuZWNlc3NhcnkgZm9yIFJUMTcxMUggdG8gZW5hYmxl L2Rpc2FibGUgaWRsZSBtb2RlIGJlZm9yZQ0KPiBkaXNhYmxpbmcvZW5hYmxpbmcgdmNvbm4pDQo+ ICAtIEV4cG9ydCB0Y3BjaV9pcnEgc28gdGhhdCB2ZW5kb3IgY2FuIGNhbGwgaXQgaW4gdGhlaXIg b3duIElSUSBoYW5kbGVyDQo+IA0KPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYyICYgdjMN Cj4gIC0gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZSBvZiB0Y3BjaV9pcnEgZnJvbSBpbnQgdG8gaXJx cmV0dXJuX3QNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2ku YyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IGluZGV4IDliZDQ0MTIuLjQ5NTlj NjkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+ICsrKyBi L2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IEBAIC0yMSw3ICsyMSw2IEBADQo+IA0K PiAgc3RydWN0IHRjcGNpIHsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+IC0Jc3RydWN0IGky Y19jbGllbnQgKmNsaWVudDsNCj4gDQo+ICAJc3RydWN0IHRjcG1fcG9ydCAqcG9ydDsNCj4gDQo+ IEBAIC0zMCw2ICsyOSwxMiBAQCBzdHJ1Y3QgdGNwY2kgew0KPiAgCWJvb2wgY29udHJvbHNfdmJ1 czsNCj4gDQo+ICAJc3RydWN0IHRjcGNfZGV2IHRjcGM7DQo+ICsJc3RydWN0IHRjcGNpX2RhdGEg KmRhdGE7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGNwY2lfY2hpcCB7DQo+ICsJc3RydWN0IHRj cGNpICp0Y3BjaTsNCj4gKwlzdHJ1Y3QgdGNwY2lfZGF0YSBkYXRhOw0KPiAgfTsNCj4gDQo+ICBz dGF0aWMgaW5saW5lIHN0cnVjdCB0Y3BjaSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYg KnRjcGMpIEBAIC0zNyw4DQo+ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNpICp0 Y3BjX3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gIAlyZXR1cm4gY29udGFpbmVy X29mKHRjcGMsIHN0cnVjdCB0Y3BjaSwgdGNwYyk7ICB9DQo+IA0KPiAtc3RhdGljIGludCB0Y3Bj aV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3BjaSwgdW5zaWduZWQgaW50IHJlZywNCj4gLQkJCXUx NiAqdmFsKQ0KPiArc3RhdGljIGludCB0Y3BjaV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3BjaSwg dW5zaWduZWQgaW50IHJlZywgdTE2DQo+ICsqdmFsKQ0KPiAgew0KPiAgCXJldHVybiByZWdtYXBf cmF3X3JlYWQodGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVvZih1MTYpKTsgIH0gQEANCj4g LTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNwY19kZXYg KnRjcGMsIGVudW0NCj4gdHlwZWNfY2Nfc3RhdHVzIGNjKSAgc3RhdGljIGludCB0Y3BjaV9zdGFy dF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0Y3BjLA0KPiAgCQkJCSAgICBlbnVt IHR5cGVjX2NjX3N0YXR1cyBjYykNCj4gIHsNCj4gKwlpbnQgcmV0Ow0KPiAgCXN0cnVjdCB0Y3Bj aSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOw0KPiAtCXVuc2lnbmVkIGludCByZWcgPSBU Q1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICsJdW5zaWduZWQgaW50IHJlZyA9IChUQ1BDX1JPTEVfQ1RS TF9DQ19SRCA8PA0KPiBUQ1BDX1JPTEVfQ1RSTF9DQzFfU0hJRlQpIHwNCj4gKwkJCSAgIChUQ1BD X1JPTEVfQ1RSTF9DQ19SRCA8PA0KPiBUQ1BDX1JPTEVfQ1RSTF9DQzJfU0hJRlQpOw0KPiANCj4g IAlzd2l0Y2ggKGNjKSB7DQo+ICAJZGVmYXVsdDoNCj4gQEAgLTExNyw3ICsxMjMsMTkgQEAgc3Rh dGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0Y3Bj LA0KPiAgCQlicmVhazsNCj4gIAl9DQo+IA0KPiAtCXJldHVybiByZWdtYXBfd3JpdGUodGNwY2kt PnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7DQo+ICsJcmV0ID0gcmVnbWFwX3dyaXRlKHRj cGNpLT5yZWdtYXAsIFRDUENfUk9MRV9DVFJMLCByZWcpOw0KPiArCWlmIChyZXQgPCAwKQ0KPiAr CQlyZXR1cm4gcmV0Ow0KPiArCXVzbGVlcF9yYW5nZSg1MDAsIDEwMDApOw0KDQpXaHkgbmVlZCBh IHdhaXQgaGVyZT8gSXQgc2VlbXMgeW91IGFjdHVhbGx5IGRvbid0IHdhbnQgdG8gZG8gYXV0b25v bW91c2x5IHRvZ2dsaW5nDQpmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZywgaW5zdGVhZCwgeW91IGJl Z2luIHdpdGggYSBkaXJlY3RseSBjb250cm9sIG9uIENDLCBrZWVwIGl0KFJkKQ0KZm9yIHNvbWUg dGltZSwgdGhlbiBzd2l0Y2ggdG8gdXNlIGF1dG9ub21vdXNseSB0b2dnbGluZywgd2h5IHlvdSBu ZWVkIHN1Y2gga2luZCBvZg0Kc2VxdWVuY2U/IEkgdGhpbmsgaXQncyBzcGVjaWFsIGFuZCBub3Qg Zm9sbG93aW5nIHRjcGNpIHNwZWMuDQogDQo+ICsJcmVnIHw9IFRDUENfUk9MRV9DVFJMX0RSUDsN Cj4gKwlyZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJl Zyk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJcmV0ID0gcmVnbWFw X3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENfQ09NTUFORCwNCj4gKwkJCSAgIFRDUENfQ01EX0xP T0s0Q09OTkVDVElPTik7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJ cmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGVudW0gdHlwZWNfY2Nfc3RhdHVzIHRjcGNp X3RvX3R5cGVjX2NjKHVuc2lnbmVkIGludCBjYywgYm9vbCBzaW5rKQ0KPiBAQCAtMTc4LDYgKzE5 NiwxNiBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF92Y29ubihzdHJ1Y3QgdGNwY19kZXYgKnRjcGMs DQo+IGJvb2wgZW5hYmxlKQ0KPiAgCXN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNp KHRjcGMpOw0KPiAgCWludCByZXQ7DQo+IA0KPiArCS8qIEhhbmRsZSB2ZW5kb3Igc2V0IHZjb25u ICovDQo+ICsJaWYgKHRjcGNpLT5kYXRhKSB7DQo+ICsJCWlmICh0Y3BjaS0+ZGF0YS0+c2V0X3Zj b25uKSB7DQo+ICsJCQlyZXQgPSB0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKHRjcGNpLCB0Y3BjaS0+ ZGF0YSwNCj4gKwkJCQkJCSAgICAgZW5hYmxlKTsNCj4gKwkJCWlmIChyZXQgPCAwKQ0KPiArCQkJ CXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gIAlyZXQgPSByZWdtYXBfd3JpdGUo dGNwY2ktPnJlZ21hcCwgVENQQ19QT1dFUl9DVFJMLA0KPiAgCQkJICAgZW5hYmxlID8gVENQQ19Q T1dFUl9DVFJMX1ZDT05OX0VOQUJMRSA6IDApOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiBAQCAtMzIz LDYgKzM1MSwxNSBAQCBzdGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3Bj KQ0KPiAgCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQ0KPiAgCQlyZXR1cm4gLUVU SU1FRE9VVDsNCj4gDQo+ICsJLyogSGFuZGxlIHZlbmRvciBpbml0ICovDQo+ICsJaWYgKHRjcGNp LT5kYXRhKSB7DQo+ICsJCWlmICh0Y3BjaS0+ZGF0YS0+aW5pdCkgew0KPiArCQkJcmV0ID0gdGNw Y2ktPmRhdGEtPmluaXQodGNwY2ksIHRjcGNpLT5kYXRhKTsNCj4gKwkJCWlmIChyZXQgPCAwKQ0K PiArCQkJCXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gIAkvKiBDbGVhciBhbGwg ZXZlbnRzICovDQo+ICAJcmV0ID0gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVCwgMHhm ZmZmKTsNCj4gIAlpZiAocmV0IDwgMCkNCj4gQEAgLTM0NCw5ICszODEsMTUgQEAgc3RhdGljIGlu dCB0Y3BjaV9pbml0KHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gIAlyZXR1cm4gdGNwY2lfd3Jp dGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCByZWcpOyAgfQ0KPiANCj4gLXN0YXRpYyBpcnFy ZXR1cm5fdCB0Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiArc3RhdGljIGlycXJl dHVybl90IF90Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiAgew0KPiAgCXN0cnVj dCB0Y3BjaSAqdGNwY2kgPSBkZXZfaWQ7DQo+ICsNCj4gKwlyZXR1cm4gdGNwY2lfaXJxKHRjcGNp KTsNCj4gK30NCj4gKw0KPiAraXJxcmV0dXJuX3QgdGNwY2lfaXJxKHN0cnVjdCB0Y3BjaSAqdGNw Y2kpIHsNCj4gIAl1MTYgc3RhdHVzOw0KPiANCj4gIAl0Y3BjaV9yZWFkMTYodGNwY2ksIFRDUENf QUxFUlQsICZzdGF0dXMpOyBAQCAtNDEyLDYgKzQ1NSw3IEBADQo+IHN0YXRpYyBpcnFyZXR1cm5f dCB0Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiANCj4gIAlyZXR1cm4gSVJRX0hB TkRMRUQ7DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9pcnEpOw0KDQpJIGRvbid0 IGNhdGNoIHRoZSBwb2ludCBvZiBob3cgeW91IGhhbmRsZSBwcml2YXRlIGV2ZW50cyBieSBhYm92 ZSBjaGFuZ2UsDQptYXliZSBwb3N0IHlvdXIgUlQxNzExSCBwYXJ0IGFzIGEgdXNlciBpbiBvbmUg c2VyaWVzIGNhbiBtYWtlIGl0IGNsZWFyLA0KSSBhc3N1bWUgdGhpcyBjYW4gYmUgZG9uZSBpbiBl eGlzdGluZyB0Y3BjaV9pcnEgbGlrZSBhYm92ZSB2ZW5kZXIgc3BlY2lmaWMNCmhhbmRsaW5nIGFz IHdlbGw6DQogICAgICB0Y3BjaS0+ZGF0YS0+cHJpdl9ldmVudHModGNwY2ksIHRjcGNpLT5kYXRh KTsNCg0KTGkgSnVuDQo+IA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmlnIHRj cGNpX3JlZ21hcF9jb25maWcgPSB7DQo+ICAJLnJlZ19iaXRzID0gOCwNCj4gQEAgLTQzNSwyMiAr NDc5LDE4IEBAIHN0YXRpYyBpbnQgdGNwY2lfcGFyc2VfY29uZmlnKHN0cnVjdCB0Y3BjaSAqdGNw Y2kpDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAtc3RhdGljIGludCB0Y3BjaV9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiAtCQkgICAgICAgY29uc3Qgc3RydWN0IGkyY19k ZXZpY2VfaWQgKmkyY19pZCkNCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9ydChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB0Y3BjaV9kYXRhDQo+ICsqZGF0YSkNCj4gIHsNCj4g IAlzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiAgCWludCBlcnI7DQo+IA0KPiAtCXRjcGNpID0gZGV2 bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOw0KPiAr CXRjcGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOw0K PiAgCWlmICghdGNwY2kpDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiArCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsNCj4gDQo+IC0JdGNwY2ktPmNsaWVudCA9IGNsaWVudDsNCj4gLQl0Y3BjaS0+ ZGV2ID0gJmNsaWVudC0+ZGV2Ow0KPiAtCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRjcGNp KTsNCj4gLQl0Y3BjaS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmdGNw Y2lfcmVnbWFwX2NvbmZpZyk7DQo+IC0JaWYgKElTX0VSUih0Y3BjaS0+cmVnbWFwKSkNCj4gLQkJ cmV0dXJuIFBUUl9FUlIodGNwY2ktPnJlZ21hcCk7DQo+ICsJdGNwY2ktPmRldiA9IGRldjsNCj4g Kwl0Y3BjaS0+ZGF0YSA9IGRhdGE7DQo+ICsJdGNwY2ktPnJlZ21hcCA9IGRhdGEtPnJlZ21hcDsN Cj4gDQo+ICAJdGNwY2ktPnRjcGMuaW5pdCA9IHRjcGNpX2luaXQ7DQo+ICAJdGNwY2ktPnRjcGMu Z2V0X3ZidXMgPSB0Y3BjaV9nZXRfdmJ1czsgQEAgLTQ2NywyNyArNTA3LDYzIEBAIHN0YXRpYw0K PiBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gDQo+ICAJZXJy ID0gdGNwY2lfcGFyc2VfY29uZmlnKHRjcGNpKTsNCj4gIAlpZiAoZXJyIDwgMCkNCj4gLQkJcmV0 dXJuIGVycjsNCj4gKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsNCj4gKw0KPiArCXRjcGNpLT5wb3J0 ID0gdGNwbV9yZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7DQo+ICsJaWYg KFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9ydCkpDQo+ICsJCXJldHVybiBFUlJfQ0FTVCh0Y3Bj aS0+cG9ydCk7DQo+IA0KPiAtCS8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzICovDQo+IC0JdGNw Y2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCAwKTsNCj4gKwlyZXR1cm4gdGNwY2k7 DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9yZWdpc3Rlcl9wb3J0KTsNCj4gKw0K PiArdm9pZCB0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoc3RydWN0IHRjcGNpICp0Y3BjaSkgew0KPiAr CXRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsNCj4gK30NCj4gK0VYUE9SVF9TWU1C T0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJfcG9ydCk7DQo+IA0KPiAtCWVyciA9IGRldm1fcmVxdWVz dF90aHJlYWRlZF9pcnEodGNwY2ktPmRldiwgY2xpZW50LT5pcnEsIE5VTEwsDQo+IC0JCQkJCXRj cGNpX2lycSwNCj4gK3N0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNs aWVudCwNCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNfaWQpIHsN Cj4gKwlzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcDsNCj4gKwlpbnQgZXJyOw0KPiArCXUxNiB2YWwg PSAwOw0KPiArDQo+ICsJY2hpcCA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigq Y2hpcCksIEdGUF9LRVJORUwpOw0KPiArCWlmICghY2hpcCkNCj4gKwkJcmV0dXJuIC1FTk9NRU07 DQo+ICsNCj4gKwljaGlwLT5kYXRhLnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVu dCwNCj4gJnRjcGNpX3JlZ21hcF9jb25maWcpOw0KPiArCWlmIChJU19FUlIoY2hpcC0+ZGF0YS5y ZWdtYXApKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihjaGlwLT5kYXRhLnJlZ21hcCk7DQo+ICsNCj4g KwkvKiBEaXNhYmxlIGNoaXAgaW50ZXJydXB0cyBiZWZvcmUgcmVxdWVzdGluZyBpcnEgKi8NCj4g KwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGNoaXAtPmRhdGEucmVnbWFwLCBUQ1BDX0FMRVJUX01B U0ssICZ2YWwsDQo+ICsJCQkgICAgICAgc2l6ZW9mKHUxNikpOw0KPiArCWlmIChlcnIgPCAwKQ0K PiArCQlyZXR1cm4gZXJyOw0KPiArDQo+ICsJZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2ly cSgmY2xpZW50LT5kZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiArCQkJCQlfdGNwY2lfaXJxLA0K PiAgCQkJCQlJUlFGX09ORVNIT1QgfCBJUlFGX1RSSUdHRVJfTE9XLA0KPiAtCQkJCQlkZXZfbmFt ZSh0Y3BjaS0+ZGV2KSwgdGNwY2kpOw0KPiArCQkJCQlkZXZfbmFtZSgmY2xpZW50LT5kZXYpLCBj aGlwKTsNCj4gIAlpZiAoZXJyIDwgMCkNCj4gIAkJcmV0dXJuIGVycjsNCj4gDQo+IC0JdGNwY2kt PnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsNCj4g LQlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHRjcGNpLT5wb3J0KTsNCj4gKwljaGlwLT50Y3BjaSA9 IHRjcGNpX3JlZ2lzdGVyX3BvcnQoJmNsaWVudC0+ZGV2LCAmY2hpcC0+ZGF0YSk7DQo+ICsJaWYg KFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkpDQo+ICsJCXJldHVybiBQVFJfRVJSKGNoaXAt PnRjcGNpKTsNCj4gKw0KPiArCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOw0KPiAr CXJldHVybiAwOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQgdGNwY2lfcmVtb3ZlKHN0cnVjdCBp MmNfY2xpZW50ICpjbGllbnQpICB7DQo+IC0Jc3RydWN0IHRjcGNpICp0Y3BjaSA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOw0KPiArCXN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwID0gaTJjX2dl dF9jbGllbnRkYXRhKGNsaWVudCk7DQo+IA0KPiAtCXRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNp LT5wb3J0KTsNCj4gKwl0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoY2hpcC0+dGNwY2kpOw0KPiANCj4g IAlyZXR1cm4gMDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90 Y3BjaS5oIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gaW5kZXggZmRmYjA2Yy4u NDAwMjViMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4g KysrIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gQEAgLTU5LDYgKzU5LDcgQEAN Cj4gICNkZWZpbmUgVENQQ19QT1dFUl9DVFJMX1ZDT05OX0VOQUJMRQlCSVQoMCkNCj4gDQo+ICAj ZGVmaW5lIFRDUENfQ0NfU1RBVFVTCQkJMHgxZA0KPiArI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19E UlBSU1QJCUJJVCg1KQ0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19URVJNCQlCSVQoNCkNCj4g ICNkZWZpbmUgVENQQ19DQ19TVEFUVVNfQ0MyX1NISUZUCTINCj4gICNkZWZpbmUgVENQQ19DQ19T VEFUVVNfQ0MyX01BU0sJCTB4Mw0KPiBAQCAtMTIxLDQgKzEyMiwxNiBAQA0KPiAgI2RlZmluZSBU Q1BDX1ZCVVNfVk9MVEFHRV9BTEFSTV9ISV9DRkcJCTB4NzYNCj4gICNkZWZpbmUgVENQQ19WQlVT X1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHCQkweDc4DQo+IA0KPiArc3RydWN0IHRjcGNpOw0KPiArc3Ry dWN0IHRjcGNpX2RhdGEgew0KPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCj4gKwlpbnQgKCpp bml0KShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSk7DQo+ICsJ aW50ICgqc2V0X3Zjb25uKShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAq ZGF0YSwNCj4gKwkJCSBib29sIGVuYWJsZSk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGNwY2kg KnRjcGNpX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGNwY2lfZGF0 YQ0KPiArKmRhdGEpOyB2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1Y3QgdGNwY2kgKnRj cGNpKTsgaXJxcmV0dXJuX3QNCj4gK3RjcGNpX2lycShzdHJ1Y3QgdGNwY2kgKnRjcGNpKTsNCj4g Kw0KPiAgI2VuZGlmIC8qIF9fTElOVVhfVVNCX1RDUENJX0ggKi8NCj4gLS0NCj4gMS45LjENCj4g DQo+IC0tDQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1 bnN1YnNjcmliZSBsaW51eC11c2IiIGluIHRoZQ0KPiBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpv cmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIGluZm8gYXQNCj4gaHR0cHM6Ly9l bWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJG dmdlcg0KPiAua2VybmVsLm9yZyUyRm1ham9yZG9tby1pbmZvLmh0bWwmZGF0YT0wMiU3QzAxJTdD anVuLmxpJTQwbnhwLmNvbQ0KPiAlN0M0NGQxMWFmMjdlMDI0NGZhNGQxMTA4ZDU3OTNjM2RjNCU3 QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5Yw0KPiA1YzMwMTYzNSU3QzAlN0MxJTdDNjM2NTQ4MjIy MDA4OTA1MjA2JnNkYXRhPXpuMm91Z0tSdnMlMkJibUgNCj4gUWcyYzhSamo3dk5lMFppaVZLZGFy N0dkUGElMkIzbyUzRCZyZXNlcnZlZD0wDQo= 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: Jun Li Message-Id: Date: Thu, 22 Feb 2018 10:16:15 +0000 To: ShuFanLee , "heikki.krogerus@linux.intel.com" , "linux@roeck-us.net" , "greg@kroah.com" Cc: "shufan_lee@richtek.com" , "cy_huang@richtek.com" , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , dl-linux-imx List-ID: SGksDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogbGludXgtdXNiLW93 bmVyQHZnZXIua2VybmVsLm9yZw0KPiBbbWFpbHRvOmxpbnV4LXVzYi1vd25lckB2Z2VyLmtlcm5l bC5vcmddIE9uIEJlaGFsZiBPZiBTaHVGYW5MZWUNCj4gU2VudDogMjAxOOW5tDLmnIgyMeaXpSAy MzowMg0KPiBUbzogaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbTsgbGludXhAcm9lY2st dXMubmV0OyBncmVnQGtyb2FoLmNvbQ0KPiBDYzogc2h1ZmFuX2xlZUByaWNodGVrLmNvbTsgY3lf aHVhbmdAcmljaHRlay5jb207DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4 LXVzYkB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogW1BBVENIXSBzdGFnaW5nOiB0eXBlYzog aGFuZGxlIHZlbmRvciBkZWZpbmVkIHBhcnQgYW5kIG1vZGlmeSBkcnANCj4gdG9nZ2xpbmcgZmxv dw0KPiANCj4gRnJvbTogU2h1RmFuTGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPg0KPiANCj4g SGFuZGxlIHZlbmRvciBkZWZpbmVkIGJlaGF2aW9yIGluIHRjcGNpX2luaXQsIHRjcGNpX3NldF92 Y29ubiBhbmQgZXhwb3J0DQo+IHRjcGNpX2lycS4NCj4gTW9yZSBvcGVyYXRpb25zIGNhbiBiZSBl eHRlbmRlZCBpbiB0Y3BjaV9kYXRhIGlmIG5lZWRlZC4NCj4gQWNjb3JkaW5nIHRvIFRDUENJIHNw ZWNpZmljYXRpb24sIDQuNC41LjIgUk9MRV9DT05UUk9MLCBUQ1BDIHNoYWxsIG5vdA0KPiBzdGFy dCBEUlAgdG9nZ2xpbmcgdW50aWwgc3Vic2VxdWVudGx5IHRoZSBUQ1BNIHdyaXRlcyB0byB0aGUg Q09NTUFORA0KPiByZWdpc3RlciB0byBzdGFydCBEUlAgdG9nZ2xpbmcuDQoNCk15IHVuZGVyc3Rh bmRpbmcgb2YgYWJvdmUgc3RhdGVtZW50IGlzIFRDUE0odGhpcyBMaW51eCBkcml2ZXIpIGNhbiBl bmFibGUNCkRSUCBhbmQgQ0MxL0NDMiBpbiBvbmUgc2hvdCwgYnV0IFRDUEMoeW91ciB0eXBlYyBj aGlwIGludGVybmFsIGZpcm13YXJlKQ0KbmVlZHMgd2FpdCB1bnRpbCBUQ1BNIHdyaXRlcyB0byBD T01NQU5EIHJlZ2lzdGVyIHRvIHN0YXJ0IGRycCB0b2dnbGluZy4NCg0KPiBEUlAgdG9nZ2xpbmcg ZmxvdyBpcyBjaGFnbmVkIGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERSUCA9IDAgJiBSZC9S ZA0KDQpXaHkgZml4ZWQgdG8gYmUgUmQvUmQ/IGluIHRoaXMgY2FzZSwgaXQgbWVhbnMgdGhlIHN0 YXJ0aW5nIHZhbHVlOg0KDQpUY3BjaSA0LjQuNS4yOg0KIldoZW4gaW5pdGlhdGluZyBhdXRvbm9t b3VzIERSUCB0b2dnbGluZywgdGhlIFRDUE0gc2hhbGwgd3JpdGUgQjYgKERSUCkgPTFiDQphbmQg dGhlIHN0YXJ0aW5nIHZhbHVlIG9mIFJwL1JkIHRvIEIzLi4wIChDQzEvQ0MyKSB0byBpbmRpY2F0 ZSBEUlAgYXV0b25vbW91cw0KdG9nZ2xpbmcgbW9kZSB0byB0aGUgVENQQy4iDQoNCj4gICAtIFdy aXRlIERSUCA9IDENCg0KV2hhdCdzIHlvdXIgcHJvYmxlbSBpZiBjb21iaW5lIGFib3ZlIDIgaW4g b25lIHNob3Q/DQoNCj4gICAtIFNldCBMT09LNENPTk5FQ1RJT04gY29tbWFuZA0KPiANCj4gU2ln bmVkLW9mZi1ieTogU2h1RmFuTGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPg0KPiAtLS0NCj4g IGRyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jIHwgMTI4DQo+ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNp LmggfCAgMTMgKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDI2 IGRlbGV0aW9ucygtKQ0KPiANCj4gIHBhdGNoIGNoYW5nZWxvZ3MgYmV0d2VlbiB2MSAmIHYyDQo+ ICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBpMmNfY2xpZW50IGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGNw Y2kNCj4gIC0gUmVuYW1lIHN0cnVjdHVyZSBvZiB0Y3BjaV92ZW5kb3JfZGF0YSB0byB0Y3BjaV9k YXRhDQo+ICAtIE5vdCBleHBvcnRpbmcgdGNwY2kgcmVhZC93cml0ZSB3cmFwcGVycyBidXQgcmVn aXN0ZXIgaTJjIHJlZ21hcCBpbiBnbHVlDQo+IGRyaXZlcg0KPiAgLSBBZGQgc2V0X3Zjb25uIG9w cyBpbiB0Y3BjaV9kYXRhDQo+ICAgIChJdCBpcyBuZWNlc3NhcnkgZm9yIFJUMTcxMUggdG8gZW5h YmxlL2Rpc2FibGUgaWRsZSBtb2RlIGJlZm9yZQ0KPiBkaXNhYmxpbmcvZW5hYmxpbmcgdmNvbm4p DQo+ICAtIEV4cG9ydCB0Y3BjaV9pcnEgc28gdGhhdCB2ZW5kb3IgY2FuIGNhbGwgaXQgaW4gdGhl aXIgb3duIElSUSBoYW5kbGVyDQo+IA0KPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYyICYg djMNCj4gIC0gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZSBvZiB0Y3BjaV9pcnEgZnJvbSBpbnQgdG8g aXJxcmV0dXJuX3QNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNw Y2kuYyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IGluZGV4IDliZDQ0MTIuLjQ5 NTljNjkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+ICsr KyBiL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5jDQo+IEBAIC0yMSw3ICsyMSw2IEBADQo+ IA0KPiAgc3RydWN0IHRjcGNpIHsNCj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7DQo+IC0Jc3RydWN0 IGkyY19jbGllbnQgKmNsaWVudDsNCj4gDQo+ICAJc3RydWN0IHRjcG1fcG9ydCAqcG9ydDsNCj4g DQo+IEBAIC0zMCw2ICsyOSwxMiBAQCBzdHJ1Y3QgdGNwY2kgew0KPiAgCWJvb2wgY29udHJvbHNf dmJ1czsNCj4gDQo+ICAJc3RydWN0IHRjcGNfZGV2IHRjcGM7DQo+ICsJc3RydWN0IHRjcGNpX2Rh dGEgKmRhdGE7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGNwY2lfY2hpcCB7DQo+ICsJc3RydWN0 IHRjcGNpICp0Y3BjaTsNCj4gKwlzdHJ1Y3QgdGNwY2lfZGF0YSBkYXRhOw0KPiAgfTsNCj4gDQo+ ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y3BjaSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19k ZXYgKnRjcGMpIEBAIC0zNyw4DQo+ICs0Miw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNp ICp0Y3BjX3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gIAlyZXR1cm4gY29udGFp bmVyX29mKHRjcGMsIHN0cnVjdCB0Y3BjaSwgdGNwYyk7ICB9DQo+IA0KPiAtc3RhdGljIGludCB0 Y3BjaV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3BjaSwgdW5zaWduZWQgaW50IHJlZywNCj4gLQkJ CXUxNiAqdmFsKQ0KPiArc3RhdGljIGludCB0Y3BjaV9yZWFkMTYoc3RydWN0IHRjcGNpICp0Y3Bj aSwgdW5zaWduZWQgaW50IHJlZywgdTE2DQo+ICsqdmFsKQ0KPiAgew0KPiAgCXJldHVybiByZWdt YXBfcmF3X3JlYWQodGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVvZih1MTYpKTsgIH0gQEAN Cj4gLTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNwY19k ZXYgKnRjcGMsIGVudW0NCj4gdHlwZWNfY2Nfc3RhdHVzIGNjKSAgc3RhdGljIGludCB0Y3BjaV9z dGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0Y3BjLA0KPiAgCQkJCSAgICBl bnVtIHR5cGVjX2NjX3N0YXR1cyBjYykNCj4gIHsNCj4gKwlpbnQgcmV0Ow0KPiAgCXN0cnVjdCB0 Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNpKHRjcGMpOw0KPiAtCXVuc2lnbmVkIGludCByZWcg PSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICsJdW5zaWduZWQgaW50IHJlZyA9IChUQ1BDX1JPTEVf Q1RSTF9DQ19SRCA8PA0KPiBUQ1BDX1JPTEVfQ1RSTF9DQzFfU0hJRlQpIHwNCj4gKwkJCSAgIChU Q1BDX1JPTEVfQ1RSTF9DQ19SRCA8PA0KPiBUQ1BDX1JPTEVfQ1RSTF9DQzJfU0hJRlQpOw0KPiAN Cj4gIAlzd2l0Y2ggKGNjKSB7DQo+ICAJZGVmYXVsdDoNCj4gQEAgLTExNyw3ICsxMjMsMTkgQEAg c3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0 Y3BjLA0KPiAgCQlicmVhazsNCj4gIAl9DQo+IA0KPiAtCXJldHVybiByZWdtYXBfd3JpdGUodGNw Y2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7DQo+ICsJcmV0ID0gcmVnbWFwX3dyaXRl KHRjcGNpLT5yZWdtYXAsIFRDUENfUk9MRV9DVFJMLCByZWcpOw0KPiArCWlmIChyZXQgPCAwKQ0K PiArCQlyZXR1cm4gcmV0Ow0KPiArCXVzbGVlcF9yYW5nZSg1MDAsIDEwMDApOw0KDQpXaHkgbmVl ZCBhIHdhaXQgaGVyZT8gSXQgc2VlbXMgeW91IGFjdHVhbGx5IGRvbid0IHdhbnQgdG8gZG8gYXV0 b25vbW91c2x5IHRvZ2dsaW5nDQpmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZywgaW5zdGVhZCwgeW91 IGJlZ2luIHdpdGggYSBkaXJlY3RseSBjb250cm9sIG9uIENDLCBrZWVwIGl0KFJkKQ0KZm9yIHNv bWUgdGltZSwgdGhlbiBzd2l0Y2ggdG8gdXNlIGF1dG9ub21vdXNseSB0b2dnbGluZywgd2h5IHlv dSBuZWVkIHN1Y2gga2luZCBvZg0Kc2VxdWVuY2U/IEkgdGhpbmsgaXQncyBzcGVjaWFsIGFuZCBu b3QgZm9sbG93aW5nIHRjcGNpIHNwZWMuDQogDQo+ICsJcmVnIHw9IFRDUENfUk9MRV9DVFJMX0RS UDsNCj4gKwlyZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkws IHJlZyk7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ICsJcmV0ID0gcmVn bWFwX3dyaXRlKHRjcGNpLT5yZWdtYXAsIFRDUENfQ09NTUFORCwNCj4gKwkJCSAgIFRDUENfQ01E X0xPT0s0Q09OTkVDVElPTik7DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCXJldHVybiByZXQ7DQo+ ICsJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAgc3RhdGljIGVudW0gdHlwZWNfY2Nfc3RhdHVzIHRj cGNpX3RvX3R5cGVjX2NjKHVuc2lnbmVkIGludCBjYywgYm9vbCBzaW5rKQ0KPiBAQCAtMTc4LDYg KzE5NiwxNiBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF92Y29ubihzdHJ1Y3QgdGNwY19kZXYgKnRj cGMsDQo+IGJvb2wgZW5hYmxlKQ0KPiAgCXN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3Rj cGNpKHRjcGMpOw0KPiAgCWludCByZXQ7DQo+IA0KPiArCS8qIEhhbmRsZSB2ZW5kb3Igc2V0IHZj b25uICovDQo+ICsJaWYgKHRjcGNpLT5kYXRhKSB7DQo+ICsJCWlmICh0Y3BjaS0+ZGF0YS0+c2V0 X3Zjb25uKSB7DQo+ICsJCQlyZXQgPSB0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKHRjcGNpLCB0Y3Bj aS0+ZGF0YSwNCj4gKwkJCQkJCSAgICAgZW5hYmxlKTsNCj4gKwkJCWlmIChyZXQgPCAwKQ0KPiAr CQkJCXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gIAlyZXQgPSByZWdtYXBfd3Jp dGUodGNwY2ktPnJlZ21hcCwgVENQQ19QT1dFUl9DVFJMLA0KPiAgCQkJICAgZW5hYmxlID8gVENQ Q19QT1dFUl9DVFJMX1ZDT05OX0VOQUJMRSA6IDApOw0KPiAgCWlmIChyZXQgPCAwKQ0KPiBAQCAt MzIzLDYgKzM1MSwxNSBAQCBzdGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0 Y3BjKQ0KPiAgCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRpbWVvdXQpKQ0KPiAgCQlyZXR1cm4g LUVUSU1FRE9VVDsNCj4gDQo+ICsJLyogSGFuZGxlIHZlbmRvciBpbml0ICovDQo+ICsJaWYgKHRj cGNpLT5kYXRhKSB7DQo+ICsJCWlmICh0Y3BjaS0+ZGF0YS0+aW5pdCkgew0KPiArCQkJcmV0ID0g dGNwY2ktPmRhdGEtPmluaXQodGNwY2ksIHRjcGNpLT5kYXRhKTsNCj4gKwkJCWlmIChyZXQgPCAw KQ0KPiArCQkJCXJldHVybiByZXQ7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gIAkvKiBDbGVhciBh bGwgZXZlbnRzICovDQo+ICAJcmV0ID0gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVCwg MHhmZmZmKTsNCj4gIAlpZiAocmV0IDwgMCkNCj4gQEAgLTM0NCw5ICszODEsMTUgQEAgc3RhdGlj IGludCB0Y3BjaV9pbml0KHN0cnVjdCB0Y3BjX2RldiAqdGNwYykNCj4gIAlyZXR1cm4gdGNwY2lf d3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCByZWcpOyAgfQ0KPiANCj4gLXN0YXRpYyBp cnFyZXR1cm5fdCB0Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiArc3RhdGljIGly cXJldHVybl90IF90Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiAgew0KPiAgCXN0 cnVjdCB0Y3BjaSAqdGNwY2kgPSBkZXZfaWQ7DQo+ICsNCj4gKwlyZXR1cm4gdGNwY2lfaXJxKHRj cGNpKTsNCj4gK30NCj4gKw0KPiAraXJxcmV0dXJuX3QgdGNwY2lfaXJxKHN0cnVjdCB0Y3BjaSAq dGNwY2kpIHsNCj4gIAl1MTYgc3RhdHVzOw0KPiANCj4gIAl0Y3BjaV9yZWFkMTYodGNwY2ksIFRD UENfQUxFUlQsICZzdGF0dXMpOyBAQCAtNDEyLDYgKzQ1NSw3IEBADQo+IHN0YXRpYyBpcnFyZXR1 cm5fdCB0Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPiANCj4gIAlyZXR1cm4gSVJR X0hBTkRMRUQ7DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9pcnEpOw0KDQpJIGRv bid0IGNhdGNoIHRoZSBwb2ludCBvZiBob3cgeW91IGhhbmRsZSBwcml2YXRlIGV2ZW50cyBieSBh Ym92ZSBjaGFuZ2UsDQptYXliZSBwb3N0IHlvdXIgUlQxNzExSCBwYXJ0IGFzIGEgdXNlciBpbiBv bmUgc2VyaWVzIGNhbiBtYWtlIGl0IGNsZWFyLA0KSSBhc3N1bWUgdGhpcyBjYW4gYmUgZG9uZSBp biBleGlzdGluZyB0Y3BjaV9pcnEgbGlrZSBhYm92ZSB2ZW5kZXIgc3BlY2lmaWMNCmhhbmRsaW5n IGFzIHdlbGw6DQogICAgICB0Y3BjaS0+ZGF0YS0+cHJpdl9ldmVudHModGNwY2ksIHRjcGNpLT5k YXRhKTsNCg0KTGkgSnVuDQo+IA0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29uZmln IHRjcGNpX3JlZ21hcF9jb25maWcgPSB7DQo+ICAJLnJlZ19iaXRzID0gOCwNCj4gQEAgLTQzNSwy MiArNDc5LDE4IEBAIHN0YXRpYyBpbnQgdGNwY2lfcGFyc2VfY29uZmlnKHN0cnVjdCB0Y3BjaSAq dGNwY2kpDQo+ICAJcmV0dXJuIDA7DQo+ICB9DQo+IA0KPiAtc3RhdGljIGludCB0Y3BjaV9wcm9i ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiAtCQkgICAgICAgY29uc3Qgc3RydWN0IGky Y19kZXZpY2VfaWQgKmkyY19pZCkNCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9y dChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB0Y3BjaV9kYXRhDQo+ICsqZGF0YSkNCj4gIHsN Cj4gIAlzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiAgCWludCBlcnI7DQo+IA0KPiAtCXRjcGNpID0g ZGV2bV9remFsbG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOw0K PiArCXRjcGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwp Ow0KPiAgCWlmICghdGNwY2kpDQo+IC0JCXJldHVybiAtRU5PTUVNOw0KPiArCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsNCj4gDQo+IC0JdGNwY2ktPmNsaWVudCA9IGNsaWVudDsNCj4gLQl0Y3Bj aS0+ZGV2ID0gJmNsaWVudC0+ZGV2Ow0KPiAtCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHRj cGNpKTsNCj4gLQl0Y3BjaS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAm dGNwY2lfcmVnbWFwX2NvbmZpZyk7DQo+IC0JaWYgKElTX0VSUih0Y3BjaS0+cmVnbWFwKSkNCj4g LQkJcmV0dXJuIFBUUl9FUlIodGNwY2ktPnJlZ21hcCk7DQo+ICsJdGNwY2ktPmRldiA9IGRldjsN Cj4gKwl0Y3BjaS0+ZGF0YSA9IGRhdGE7DQo+ICsJdGNwY2ktPnJlZ21hcCA9IGRhdGEtPnJlZ21h cDsNCj4gDQo+ICAJdGNwY2ktPnRjcGMuaW5pdCA9IHRjcGNpX2luaXQ7DQo+ICAJdGNwY2ktPnRj cGMuZ2V0X3ZidXMgPSB0Y3BjaV9nZXRfdmJ1czsgQEAgLTQ2NywyNyArNTA3LDYzIEBAIHN0YXRp Yw0KPiBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4gDQo+ICAJ ZXJyID0gdGNwY2lfcGFyc2VfY29uZmlnKHRjcGNpKTsNCj4gIAlpZiAoZXJyIDwgMCkNCj4gLQkJ cmV0dXJuIGVycjsNCj4gKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsNCj4gKw0KPiArCXRjcGNpLT5w b3J0ID0gdGNwbV9yZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7DQo+ICsJ aWYgKFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9ydCkpDQo+ICsJCXJldHVybiBFUlJfQ0FTVCh0 Y3BjaS0+cG9ydCk7DQo+IA0KPiAtCS8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzICovDQo+IC0J dGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVF9NQVNLLCAwKTsNCj4gKwlyZXR1cm4gdGNw Y2k7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9yZWdpc3Rlcl9wb3J0KTsNCj4g Kw0KPiArdm9pZCB0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoc3RydWN0IHRjcGNpICp0Y3BjaSkgew0K PiArCXRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsNCj4gK30NCj4gK0VYUE9SVF9T WU1CT0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJfcG9ydCk7DQo+IA0KPiAtCWVyciA9IGRldm1fcmVx dWVzdF90aHJlYWRlZF9pcnEodGNwY2ktPmRldiwgY2xpZW50LT5pcnEsIE5VTEwsDQo+IC0JCQkJ CXRjcGNpX2lycSwNCj4gK3N0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQg KmNsaWVudCwNCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNfaWQp IHsNCj4gKwlzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcDsNCj4gKwlpbnQgZXJyOw0KPiArCXUxNiB2 YWwgPSAwOw0KPiArDQo+ICsJY2hpcCA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVv ZigqY2hpcCksIEdGUF9LRVJORUwpOw0KPiArCWlmICghY2hpcCkNCj4gKwkJcmV0dXJuIC1FTk9N RU07DQo+ICsNCj4gKwljaGlwLT5kYXRhLnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNs aWVudCwNCj4gJnRjcGNpX3JlZ21hcF9jb25maWcpOw0KPiArCWlmIChJU19FUlIoY2hpcC0+ZGF0 YS5yZWdtYXApKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihjaGlwLT5kYXRhLnJlZ21hcCk7DQo+ICsN Cj4gKwkvKiBEaXNhYmxlIGNoaXAgaW50ZXJydXB0cyBiZWZvcmUgcmVxdWVzdGluZyBpcnEgKi8N Cj4gKwllcnIgPSByZWdtYXBfcmF3X3dyaXRlKGNoaXAtPmRhdGEucmVnbWFwLCBUQ1BDX0FMRVJU X01BU0ssICZ2YWwsDQo+ICsJCQkgICAgICAgc2l6ZW9mKHUxNikpOw0KPiArCWlmIChlcnIgPCAw KQ0KPiArCQlyZXR1cm4gZXJyOw0KPiArDQo+ICsJZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVk X2lycSgmY2xpZW50LT5kZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiArCQkJCQlfdGNwY2lfaXJx LA0KPiAgCQkJCQlJUlFGX09ORVNIT1QgfCBJUlFGX1RSSUdHRVJfTE9XLA0KPiAtCQkJCQlkZXZf bmFtZSh0Y3BjaS0+ZGV2KSwgdGNwY2kpOw0KPiArCQkJCQlkZXZfbmFtZSgmY2xpZW50LT5kZXYp LCBjaGlwKTsNCj4gIAlpZiAoZXJyIDwgMCkNCj4gIAkJcmV0dXJuIGVycjsNCj4gDQo+IC0JdGNw Y2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRjcGNpLT50Y3BjKTsN Cj4gLQlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHRjcGNpLT5wb3J0KTsNCj4gKwljaGlwLT50Y3Bj aSA9IHRjcGNpX3JlZ2lzdGVyX3BvcnQoJmNsaWVudC0+ZGV2LCAmY2hpcC0+ZGF0YSk7DQo+ICsJ aWYgKFBUUl9FUlJfT1JfWkVSTyhjaGlwLT50Y3BjaSkpDQo+ICsJCXJldHVybiBQVFJfRVJSKGNo aXAtPnRjcGNpKTsNCj4gKw0KPiArCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGNoaXApOw0K PiArCXJldHVybiAwOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBpbnQgdGNwY2lfcmVtb3ZlKHN0cnVj dCBpMmNfY2xpZW50ICpjbGllbnQpICB7DQo+IC0Jc3RydWN0IHRjcGNpICp0Y3BjaSA9IGkyY19n ZXRfY2xpZW50ZGF0YShjbGllbnQpOw0KPiArCXN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwID0gaTJj X2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+IA0KPiAtCXRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRj cGNpLT5wb3J0KTsNCj4gKwl0Y3BjaV91bnJlZ2lzdGVyX3BvcnQoY2hpcC0+dGNwY2kpOw0KPiAN Cj4gIAlyZXR1cm4gMDsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90eXBl Yy90Y3BjaS5oIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gaW5kZXggZmRmYjA2 Yy4uNDAwMjViMiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgN Cj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmgNCj4gQEAgLTU5LDYgKzU5LDcg QEANCj4gICNkZWZpbmUgVENQQ19QT1dFUl9DVFJMX1ZDT05OX0VOQUJMRQlCSVQoMCkNCj4gDQo+ ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTCQkJMHgxZA0KPiArI2RlZmluZSBUQ1BDX0NDX1NUQVRV U19EUlBSU1QJCUJJVCg1KQ0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19URVJNCQlCSVQoNCkN Cj4gICNkZWZpbmUgVENQQ19DQ19TVEFUVVNfQ0MyX1NISUZUCTINCj4gICNkZWZpbmUgVENQQ19D Q19TVEFUVVNfQ0MyX01BU0sJCTB4Mw0KPiBAQCAtMTIxLDQgKzEyMiwxNiBAQA0KPiAgI2RlZmlu ZSBUQ1BDX1ZCVVNfVk9MVEFHRV9BTEFSTV9ISV9DRkcJCTB4NzYNCj4gICNkZWZpbmUgVENQQ19W QlVTX1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHCQkweDc4DQo+IA0KPiArc3RydWN0IHRjcGNpOw0KPiAr c3RydWN0IHRjcGNpX2RhdGEgew0KPiArCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCj4gKwlpbnQg KCppbml0KShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSk7DQo+ ICsJaW50ICgqc2V0X3Zjb25uKShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0 YSAqZGF0YSwNCj4gKwkJCSBib29sIGVuYWJsZSk7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGNw Y2kgKnRjcGNpX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgdGNwY2lf ZGF0YQ0KPiArKmRhdGEpOyB2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1Y3QgdGNwY2kg KnRjcGNpKTsgaXJxcmV0dXJuX3QNCj4gK3RjcGNpX2lycShzdHJ1Y3QgdGNwY2kgKnRjcGNpKTsN Cj4gKw0KPiAgI2VuZGlmIC8qIF9fTElOVVhfVVNCX1RDUENJX0ggKi8NCj4gLS0NCj4gMS45LjEN Cj4gDQo+IC0tDQo+IFRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5l ICJ1bnN1YnNjcmliZSBsaW51eC11c2IiIGluIHRoZQ0KPiBib2R5IG9mIGEgbWVzc2FnZSB0byBt YWpvcmRvbW9Admdlci5rZXJuZWwub3JnIE1vcmUgbWFqb3Jkb21vIGluZm8gYXQNCj4gaHR0cHM6 Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwJTNBJTJG JTJGdmdlcg0KPiAua2VybmVsLm9yZyUyRm1ham9yZG9tby1pbmZvLmh0bWwmZGF0YT0wMiU3QzAx JTdDanVuLmxpJTQwbnhwLmNvbQ0KPiAlN0M0NGQxMWFmMjdlMDI0NGZhNGQxMTA4ZDU3OTNjM2Rj NCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5Yw0KPiA1YzMwMTYzNSU3QzAlN0MxJTdDNjM2NTQ4 MjIyMDA4OTA1MjA2JnNkYXRhPXpuMm91Z0tSdnMlMkJibUgNCj4gUWcyYzhSamo3dk5lMFppaVZL ZGFyN0dkUGElMkIzbyUzRCZyZXNlcnZlZD0wCg==