From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E10E2C10F03 for ; Tue, 23 Apr 2019 15:06:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AEBA921852 for ; Tue, 23 Apr 2019 15:06:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=renesasgroup.onmicrosoft.com header.i=@renesasgroup.onmicrosoft.com header.b="sn87QXSN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727762AbfDWPG4 (ORCPT ); Tue, 23 Apr 2019 11:06:56 -0400 Received: from mail-eopbgr1410114.outbound.protection.outlook.com ([40.107.141.114]:30296 "EHLO JPN01-OS2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727673AbfDWPG4 (ORCPT ); Tue, 23 Apr 2019 11:06:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-bp-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5oJH+4oyiZbDY9z20wBzKFb35/kFSzoWBhw3QfS3jsI=; b=sn87QXSNihYuVuiaa62ETqHew7JRF1ycGQ8GQ4UVsWCMWD9fLJkp64EU1xdx0VlQkrPbaP5FoIem1FEt52g44HkE9cKBFvMgJMr5V9PDKCdKhq3Ev/XeI5a50tUVxUQTAqY9E+/vJIExKpgLSgC8pjMlzFkxndtv/4Lk0I+ETo8= Received: from OSBPR01MB2103.jpnprd01.prod.outlook.com (52.134.242.17) by OSBPR01MB4661.jpnprd01.prod.outlook.com (20.179.181.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.14; Tue, 23 Apr 2019 15:06:49 +0000 Received: from OSBPR01MB2103.jpnprd01.prod.outlook.com ([fe80::6d2c:bd11:88b0:c53a]) by OSBPR01MB2103.jpnprd01.prod.outlook.com ([fe80::6d2c:bd11:88b0:c53a%3]) with mapi id 15.20.1813.017; Tue, 23 Apr 2019 15:06:49 +0000 From: Biju Das To: Yoshihiro Shimoda CC: Greg Kroah-Hartman , Heikki Krogerus , Simon Horman , Fabrizio Castro , Kees Cook , "linux-usb@vger.kernel.org" , Simon Horman , Geert Uytterhoeven , Chris Paterson , "linux-renesas-soc@vger.kernel.org" , Felipe Balbi Subject: RE: [PATCH V4 4/7] usb: gadget: udc: renesas_usb3: Use usb_role_switch framework Thread-Topic: [PATCH V4 4/7] usb: gadget: udc: renesas_usb3: Use usb_role_switch framework Thread-Index: AQHU9DkRMINJdSoeck6dgd5isJEyu6ZJD9eAgABlx+CAAClUgIAAQ/sg Date: Tue, 23 Apr 2019 15:06:49 +0000 Message-ID: References: <1555407487-35394-1-git-send-email-biju.das@bp.renesas.com> <1555407487-35394-5-git-send-email-biju.das@bp.renesas.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=biju.das@bp.renesas.com; x-originating-ip: [193.141.220.21] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2d9f016f-dc37-4ecd-7574-08d6c7fd4fd1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600141)(711020)(4605104)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:OSBPR01MB4661; x-ms-traffictypediagnostic: OSBPR01MB4661: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-forefront-prvs: 0016DEFF96 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(396003)(346002)(136003)(39860400002)(376002)(366004)(189003)(199004)(51914003)(446003)(11346002)(54906003)(476003)(14444005)(33656002)(256004)(99286004)(316002)(486006)(9686003)(44832011)(3846002)(6862004)(93886005)(86362001)(6246003)(2906002)(52536014)(6116002)(5660300002)(6506007)(53936002)(102836004)(55016002)(6306002)(76176011)(186003)(26005)(8676002)(8936002)(7696005)(25786009)(71190400001)(81166006)(71200400001)(81156014)(66066001)(74316002)(14454004)(64756008)(66946007)(7736002)(73956011)(66446008)(66476007)(229853002)(76116006)(66556008)(68736007)(97736004)(478600001)(6436002)(305945005)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:OSBPR01MB4661;H:OSBPR01MB2103.jpnprd01.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:0; received-spf: None (protection.outlook.com: bp.renesas.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: kS0ygpLhBy8GUm2tlYaJtuUPgWeZNCLh2hWHOc/erhpkCXbwqaevE3MtQ2VDglKl6/eAJHWxNSxX1FKytp+RdVAOAsfCHtgwk0gRf+GN/Iqcc4XNwBMP5lWNoitZWFpqMRt2j2nU75gJE+kTof6KcKyDwt4tkP40ScrKOmFF9lBjkQ6Gj8Rc2CtlA1mpF2CtVr9XlXxs2rqOJHOXuTuWjSfE2glzWzMza4AfRDkSctaPiAtQ/3vyPYiQFMuMRo+r05/TCct8T59leZBZCjKGAhq2w4jLb4GLUJjprOeC5DyiQx9WvAqw4krR22bAux2/OkJTnB/pB8fZdd2jShH3eMzEhrEJ77FOSc/y9isrftspAr5jcr2S5EAiXeu/ektTzlN/QxyYZgvqH2pSijW0VeKWH7251IW96D+BEfS75VA= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d9f016f-dc37-4ecd-7574-08d6c7fd4fd1 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Apr 2019 15:06:49.8473 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSBPR01MB4661 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Hi Shimoda-San, Thanks for the feedback. > Subject: RE: [PATCH V4 4/7] usb: gadget: udc: renesas_usb3: Use > usb_role_switch framework >=20 > Hi Biju-san, >=20 > > From: Biju Das, Sent: Tuesday, April 23, 2019 6:08 PM > > > > Hi Shimoda-San, > > > > Thanks for the feedback. > > > > > Subject: RE: [PATCH V4 4/7] usb: gadget: udc: renesas_usb3: Use > > > usb_role_switch framework > > > > > > Hi Biju-san, > > > > > > Thank you for the patch! > > > > > > > From: Biju Das, Sent: Tuesday, April 16, 2019 6:38 PM > > > > > > > > RZ/G2E cat874 board is capable of detecting cable connect and > > > > disconnect events. Add support for renesas_usb3 to receive connect > > > > and disconnect events and support dual-role switch using > > > > usb-role-switch > > > framework. > > > > > > > > Signed-off-by: Biju Das > > > > --- > > > > V3-->V4 > > > > * No Change > > > > V2-->V3 > > > > * Incorporated Shimoda-san's review comment > > > > (https://patchwork.kernel.org/patch/10852507/) > > > > * Used renesas,usb-role-switch property for differentiating USB > > > > role switch associated with Type-C port controller driver. > > > > V1-->V2 > > > > * Driver uses usb role clas for handling dual role switch and ha= ndling > > > > connect/disconnect events instead of extcon. > > > > > > > > > > +static void usb3_check_vbus(struct renesas_usb3 *usb3) { > > > > + if (usb3->workaround_for_vbus) { > > > > + if (usb3->usb_role_switch_property) { > > > > + if (usb3->connection_state =3D=3D USB_ROLE_DEVICE) { > > > > + usb3_mode_config(usb3, false, false); > > > > > > I should have pointed it out the previous version though, why does > > > this > > > usb3_mode_config() calling need? > > > My guess is: > > > - renesas_usb3_start() calls renesas_usb3_init_controller(). > > > -- renesas_usb3_init_controller() calls usb3_check_id() and then > > > usb_check_vbus(). > > > --- usb_check_id() calls usb3_mode_config(usb3, true, true) and > > > then the HW acts as host mode. > > > ----> So, you'd like the HW to acts as peripheral mode when the > > > connection_state is USB_ROLE_DEVICE, > > > you added that the usb3_check_vbus() calls > > > usb3_mode_config(usb3, false, false). > > > > > > Is my guess correct? If so, I'd like to add such code into > > > usb3_check_id() like > > > below: > > > > Yes, it is almost correct. The scenario I am trying is > > > > [1] USB type C cable connected to a Host Machine(TI chip identifies > > as Device connection. But we haven't installed Gadget module for > > Device operation) > > > > [2] After that trying to install gadget module. In this case, it > > calls usb_check_id() as mentioned above and configure it as Host mode. >=20 > Thank you for the explanation. >=20 > > > if ((usb3->extcon_host && !usb3->forced_b_device) || > > > (usb3->usb_role_switch_property && > > > usb3->connection_state =3D=3D USB_ROLE_HOST)) > > > usb3_mode_config(usb3, true, true); > > > else > > > usb3_mode_config(usb3, false, false); > > > > > > What do you think? > > > > Since as per [1], usb3->extcon_host=3D1 and !usb3->forced_b_device =3D= =3D1 > > , The above code always enter into Host Mode configuration. >=20 > Oops. Thank you for the pointed it out. >=20 > > To make it work, I need to update " usb3->forced_b_device" based on > > connection_state from TI chip. So the new code look like >=20 > Since the forced_b_device is related to debug purpose (controlled by > debugfs), I don't want to use the value for type-c. >=20 > > 1) There is no change in usb_check_id() call. > > > > if (usb3->extcon_host && !usb3->forced_b_device) > > usb3_mode_config(usb3, true, true); > > else > > usb3_mode_config(usb3, false, false); > > > > 2) Update "usb3->forced_b_device" variable based on connection_state. > > > > @@ -2370,6 +2376,7 @@ static void handle_ext_role_switch_states(struct > device *dev, > > usb3_vbus_out(usb3, false); > > break; > > case USB_ROLE_DEVICE: > > + usb3->forced_b_device =3D true; > > if (usb3->connection_state =3D=3D USB_ROLE_NONE) { > > usb3->connection_state =3D USB_ROLE_DEVICE; > > usb3_set_mode(usb3, false); @@ -2384,6 +2391,7 > > @@ static void handle_ext_role_switch_states(struct device *dev, > > usb3_vbus_out(usb3, false); > > break; > > case USB_ROLE_HOST: > > + usb3->forced_b_device =3D false; > > > > Can you please confirm are you ok with this changes? Or do you prefer t= he > previous one? >=20 > I'd like to change usb3_check_id() somehow. > How about the following conditions? In type-c environment, since usb3- > >usb_role_switch_property is true, it should be OK for it. >=20 > if ((!usb3->usb_role_switch_property && > usb3->extcon_host && !usb3->forced_b_device) || > (usb3->usb_role_switch_property && > usb3->connection_state =3D=3D USB_ROLE_HOST)) > usb3_mode_config(usb3, true, true); > else > usb3_mode_config(usb3, false, false); >=20 OK. I will send V5 with this changes. Regards, Biju 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: [V4,4/7] usb: gadget: udc: renesas_usb3: Use usb_role_switch framework From: Biju Das Message-Id: Date: Tue, 23 Apr 2019 15:06:49 +0000 To: Yoshihiro Shimoda Cc: Greg Kroah-Hartman , Heikki Krogerus , Simon Horman , Fabrizio Castro , Kees Cook , "linux-usb@vger.kernel.org" , Simon Horman , Geert Uytterhoeven , Chris Paterson , "linux-renesas-soc@vger.kernel.org" , Felipe Balbi List-ID: SGkgU2hpbW9kYS1TYW4sCgpUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4KCj4gU3ViamVjdDogUkU6 IFtQQVRDSCBWNCA0LzddIHVzYjogZ2FkZ2V0OiB1ZGM6IHJlbmVzYXNfdXNiMzogVXNlCj4gdXNi X3JvbGVfc3dpdGNoIGZyYW1ld29yawo+IAo+IEhpIEJpanUtc2FuLAo+IAo+ID4gRnJvbTogQmlq dSBEYXMsIFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDIzLCAyMDE5IDY6MDggUE0KPiA+Cj4gPiBIaSBT aGltb2RhLVNhbiwKPiA+Cj4gPiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4KPiA+Cj4gPiA+IFN1 YmplY3Q6IFJFOiBbUEFUQ0ggVjQgNC83XSB1c2I6IGdhZGdldDogdWRjOiByZW5lc2FzX3VzYjM6 IFVzZQo+ID4gPiB1c2Jfcm9sZV9zd2l0Y2ggZnJhbWV3b3JrCj4gPiA+Cj4gPiA+IEhpIEJpanUt c2FuLAo+ID4gPgo+ID4gPiBUaGFuayB5b3UgZm9yIHRoZSBwYXRjaCEKPiA+ID4KPiA+ID4gPiBG cm9tOiBCaWp1IERhcywgU2VudDogVHVlc2RheSwgQXByaWwgMTYsIDIwMTkgNjozOCBQTQo+ID4g PiA+Cj4gPiA+ID4gUlovRzJFIGNhdDg3NCBib2FyZCBpcyBjYXBhYmxlIG9mIGRldGVjdGluZyBj YWJsZSBjb25uZWN0IGFuZAo+ID4gPiA+IGRpc2Nvbm5lY3QgZXZlbnRzLiBBZGQgc3VwcG9ydCBm b3IgcmVuZXNhc191c2IzIHRvIHJlY2VpdmUgY29ubmVjdAo+ID4gPiA+IGFuZCBkaXNjb25uZWN0 IGV2ZW50cyBhbmQgc3VwcG9ydCBkdWFsLXJvbGUgc3dpdGNoIHVzaW5nCj4gPiA+ID4gdXNiLXJv bGUtc3dpdGNoCj4gPiA+IGZyYW1ld29yay4KPiA+ID4gPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IEJpanUgRGFzIDxiaWp1LmRhc0BicC5yZW5lc2FzLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAg VjMtLT5WNAo+ID4gPiA+ICAgICogTm8gQ2hhbmdlCj4gPiA+ID4gIFYyLS0+VjMKPiA+ID4gPiAg ICAqIEluY29ycG9yYXRlZCBTaGltb2RhLXNhbidzIHJldmlldyBjb21tZW50Cj4gPiA+ID4gICAg ICAoaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRjaC8xMDg1MjUwNy8pCj4gPiA+ID4g ICAgKiBVc2VkIHJlbmVzYXMsdXNiLXJvbGUtc3dpdGNoIHByb3BlcnR5IGZvciBkaWZmZXJlbnRp YXRpbmcgVVNCCj4gPiA+ID4gICAgICByb2xlIHN3aXRjaCBhc3NvY2lhdGVkIHdpdGggVHlwZS1D IHBvcnQgY29udHJvbGxlciBkcml2ZXIuCj4gPiA+ID4gIFYxLS0+VjIKPiA+ID4gPiAgICAqIERy aXZlciB1c2VzIHVzYiByb2xlIGNsYXMgZm9yIGhhbmRsaW5nIGR1YWwgcm9sZSBzd2l0Y2ggYW5k IGhhbmRsaW5nCj4gPiA+ID4gICAgICBjb25uZWN0L2Rpc2Nvbm5lY3QgZXZlbnRzIGluc3RlYWQg b2YgZXh0Y29uLgo+ID4gPiA8c25pcD4KPiA+ID4KPiA+ID4gPiArc3RhdGljIHZvaWQgdXNiM19j aGVja192YnVzKHN0cnVjdCByZW5lc2FzX3VzYjMgKnVzYjMpIHsKPiA+ID4gPiArCWlmICh1c2Iz LT53b3JrYXJvdW5kX2Zvcl92YnVzKSB7Cj4gPiA+ID4gKwkJaWYgKHVzYjMtPnVzYl9yb2xlX3N3 aXRjaF9wcm9wZXJ0eSkgewo+ID4gPiA+ICsJCQlpZiAodXNiMy0+Y29ubmVjdGlvbl9zdGF0ZSA9 PSBVU0JfUk9MRV9ERVZJQ0UpIHsKPiA+ID4gPiArCQkJCXVzYjNfbW9kZV9jb25maWcodXNiMywg ZmFsc2UsIGZhbHNlKTsKPiA+ID4KPiA+ID4gSSBzaG91bGQgaGF2ZSBwb2ludGVkIGl0IG91dCB0 aGUgcHJldmlvdXMgdmVyc2lvbiB0aG91Z2gsIHdoeSBkb2VzCj4gPiA+IHRoaXMKPiA+ID4gdXNi M19tb2RlX2NvbmZpZygpIGNhbGxpbmcgbmVlZD8KPiA+ID4gTXkgZ3Vlc3MgaXM6Cj4gPiA+ICAt IHJlbmVzYXNfdXNiM19zdGFydCgpIGNhbGxzIHJlbmVzYXNfdXNiM19pbml0X2NvbnRyb2xsZXIo KS4KPiA+ID4gIC0tIHJlbmVzYXNfdXNiM19pbml0X2NvbnRyb2xsZXIoKSBjYWxscyB1c2IzX2No ZWNrX2lkKCkgYW5kIHRoZW4KPiA+ID4gdXNiX2NoZWNrX3ZidXMoKS4KPiA+ID4gIC0tLSB1c2Jf Y2hlY2tfaWQoKSBjYWxscyB1c2IzX21vZGVfY29uZmlnKHVzYjMsIHRydWUsIHRydWUpIGFuZAo+ ID4gPiB0aGVuIHRoZSBIVyBhY3RzIGFzIGhvc3QgbW9kZS4KPiA+ID4gIC0tLS0+IFNvLCB5b3Un ZCBsaWtlIHRoZSBIVyB0byBhY3RzIGFzIHBlcmlwaGVyYWwgbW9kZSB3aGVuIHRoZQo+ID4gPiBj b25uZWN0aW9uX3N0YXRlIGlzIFVTQl9ST0xFX0RFVklDRSwKPiA+ID4gICAgICAgIHlvdSBhZGRl ZCB0aGF0IHRoZSB1c2IzX2NoZWNrX3ZidXMoKSBjYWxscwo+ID4gPiB1c2IzX21vZGVfY29uZmln KHVzYjMsIGZhbHNlLCBmYWxzZSkuCj4gPiA+Cj4gPiA+IElzIG15IGd1ZXNzIGNvcnJlY3Q/IElm IHNvLCBJJ2QgbGlrZSB0byBhZGQgc3VjaCBjb2RlIGludG8KPiA+ID4gdXNiM19jaGVja19pZCgp IGxpa2UKPiA+ID4gYmVsb3c6Cj4gPgo+ID4gWWVzLCBpdCBpcyBhbG1vc3QgY29ycmVjdC4gVGhl IHNjZW5hcmlvIEkgYW0gdHJ5aW5nIGlzCj4gPgo+ID4gWzFdIFVTQiB0eXBlIEMgIGNhYmxlIGNv bm5lY3RlZCB0byBhIEhvc3QgTWFjaGluZShUSSBjaGlwIGlkZW50aWZpZXMKPiA+IGFzIERldmlj ZSBjb25uZWN0aW9uLiBCdXQgd2UgaGF2ZW4ndCBpbnN0YWxsZWQgR2FkZ2V0IG1vZHVsZSBmb3IK PiA+IERldmljZSBvcGVyYXRpb24pCj4gPgo+ID4gWzJdIEFmdGVyIHRoYXQgdHJ5aW5nIHRvIGlu c3RhbGwgZ2FkZ2V0IG1vZHVsZS4gSW4gdGhpcyBjYXNlLCAgaXQKPiA+IGNhbGxzIHVzYl9jaGVj a19pZCgpIGFzIG1lbnRpb25lZCBhYm92ZSBhbmQgY29uZmlndXJlIGl0IGFzIEhvc3QgbW9kZS4K PiAKPiBUaGFuayB5b3UgZm9yIHRoZSBleHBsYW5hdGlvbi4KPiAKPiA+ID4gCWlmICgodXNiMy0+ ZXh0Y29uX2hvc3QgJiYgIXVzYjMtPmZvcmNlZF9iX2RldmljZSkgfHwKPiA+ID4gCSAgICAodXNi My0+dXNiX3JvbGVfc3dpdGNoX3Byb3BlcnR5ICYmCj4gPiA+IAkgICAgIHVzYjMtPmNvbm5lY3Rp b25fc3RhdGUgPT0gVVNCX1JPTEVfSE9TVCkpCj4gPiA+IAkJdXNiM19tb2RlX2NvbmZpZyh1c2Iz LCB0cnVlLCB0cnVlKTsKPiA+ID4gCWVsc2UKPiA+ID4gCQl1c2IzX21vZGVfY29uZmlnKHVzYjMs IGZhbHNlLCBmYWxzZSk7Cj4gPiA+Cj4gPiA+IFdoYXQgZG8geW91IHRoaW5rPwo+ID4KPiA+IFNp bmNlIGFzIHBlciBbMV0sIHVzYjMtPmV4dGNvbl9ob3N0PTEgYW5kICF1c2IzLT5mb3JjZWRfYl9k ZXZpY2UgPT0xCj4gPiAsICBUaGUgYWJvdmUgY29kZSBhbHdheXMgZW50ZXIgaW50byBIb3N0IE1v ZGUgY29uZmlndXJhdGlvbi4KPiAKPiBPb3BzLiBUaGFuayB5b3UgZm9yIHRoZSBwb2ludGVkIGl0 IG91dC4KPiAKPiA+IFRvIG1ha2UgaXQgd29yaywgIEkgbmVlZCB0byB1cGRhdGUgICIgdXNiMy0+ Zm9yY2VkX2JfZGV2aWNlIiBiYXNlZCBvbgo+ID4gY29ubmVjdGlvbl9zdGF0ZSBmcm9tIFRJIGNo aXAuIFNvIHRoZSBuZXcgY29kZSBsb29rIGxpa2UKPiAKPiBTaW5jZSB0aGUgZm9yY2VkX2JfZGV2 aWNlIGlzIHJlbGF0ZWQgdG8gZGVidWcgcHVycG9zZSAoY29udHJvbGxlZCBieQo+IGRlYnVnZnMp LCBJIGRvbid0IHdhbnQgdG8gdXNlIHRoZSB2YWx1ZSBmb3IgdHlwZS1jLgo+IAo+ID4gMSkgVGhl cmUgaXMgbm8gY2hhbmdlIGluIHVzYl9jaGVja19pZCgpIGNhbGwuCj4gPgo+ID4gaWYgKHVzYjMt PmV4dGNvbl9ob3N0ICYmICF1c2IzLT5mb3JjZWRfYl9kZXZpY2UpCj4gPiAgICAgdXNiM19tb2Rl X2NvbmZpZyh1c2IzLCB0cnVlLCB0cnVlKTsKPiA+ICAgIGVsc2UKPiA+ICAgICB1c2IzX21vZGVf Y29uZmlnKHVzYjMsIGZhbHNlLCBmYWxzZSk7Cj4gPgo+ID4gMikgVXBkYXRlICJ1c2IzLT5mb3Jj ZWRfYl9kZXZpY2UiIHZhcmlhYmxlICBiYXNlZCBvbiBjb25uZWN0aW9uX3N0YXRlLgo+ID4KPiA+ IEBAIC0yMzcwLDYgKzIzNzYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXh0X3JvbGVfc3dpdGNo X3N0YXRlcyhzdHJ1Y3QKPiBkZXZpY2UgKmRldiwKPiA+ICAgICAgICAgICAgICAgICB1c2IzX3Zi dXNfb3V0KHVzYjMsIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgICBicmVhazsKPiA+ICAgICAg ICAgY2FzZSBVU0JfUk9MRV9ERVZJQ0U6Cj4gPiArICAgICAgICAgICAgICAgdXNiMy0+Zm9yY2Vk X2JfZGV2aWNlID0gdHJ1ZTsKPiA+ICAgICAgICAgICAgICAgICBpZiAodXNiMy0+Y29ubmVjdGlv bl9zdGF0ZSA9PSBVU0JfUk9MRV9OT05FKSB7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICB1 c2IzLT5jb25uZWN0aW9uX3N0YXRlID0gVVNCX1JPTEVfREVWSUNFOwo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgdXNiM19zZXRfbW9kZSh1c2IzLCBmYWxzZSk7IEBAIC0yMzg0LDYgKzIzOTEs Nwo+ID4gQEAgc3RhdGljIHZvaWQgaGFuZGxlX2V4dF9yb2xlX3N3aXRjaF9zdGF0ZXMoc3RydWN0 IGRldmljZSAqZGV2LAo+ID4gICAgICAgICAgICAgICAgIHVzYjNfdmJ1c19vdXQodXNiMywgZmFs c2UpOwo+ID4gICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgICBjYXNlIFVTQl9ST0xF X0hPU1Q6Cj4gPiArICAgICAgICAgICAgICAgdXNiMy0+Zm9yY2VkX2JfZGV2aWNlID0gZmFsc2U7 Cj4gPgo+ID4gQ2FuIHlvdSBwbGVhc2UgY29uZmlybSBhcmUgeW91IG9rIHdpdGggdGhpcyBjaGFu Z2VzPyBPciBkbyB5b3UgcHJlZmVyIHRoZQo+IHByZXZpb3VzIG9uZT8KPiAKPiBJJ2QgbGlrZSB0 byBjaGFuZ2UgdXNiM19jaGVja19pZCgpIHNvbWVob3cuCj4gSG93IGFib3V0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucz8gSW4gdHlwZS1jIGVudmlyb25tZW50LCBzaW5jZSB1c2IzLQo+ID51c2Jf cm9sZV9zd2l0Y2hfcHJvcGVydHkgaXMgdHJ1ZSwgaXQgc2hvdWxkIGJlIE9LIGZvciBpdC4KPiAK PiAJaWYgKCghdXNiMy0+dXNiX3JvbGVfc3dpdGNoX3Byb3BlcnR5ICYmCj4gCSAgICAgdXNiMy0+ ZXh0Y29uX2hvc3QgJiYgIXVzYjMtPmZvcmNlZF9iX2RldmljZSkgfHwKPiAJICAgICh1c2IzLT51 c2Jfcm9sZV9zd2l0Y2hfcHJvcGVydHkgJiYKPiAJICAgICB1c2IzLT5jb25uZWN0aW9uX3N0YXRl ID09IFVTQl9ST0xFX0hPU1QpKQo+IAkJdXNiM19tb2RlX2NvbmZpZyh1c2IzLCB0cnVlLCB0cnVl KTsKPiAJZWxzZQo+IAkJdXNiM19tb2RlX2NvbmZpZyh1c2IzLCBmYWxzZSwgZmFsc2UpOwo+IAoK T0suIEkgd2lsbCBzZW5kIFY1IHdpdGggdGhpcyBjaGFuZ2VzLgoKUmVnYXJkcywKQmlqdQo=