Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp7508609rwd; Tue, 20 Jun 2023 02:09:17 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5XN5B0JAk3/edFY7ATc/AU1oppMtwNaEBoNNA+GbDtOjQ92sczQ1A6m1dVcxpC6K7tfse5 X-Received: by 2002:a05:6808:428b:b0:39a:abe8:afb9 with SMTP id dq11-20020a056808428b00b0039aabe8afb9mr10925284oib.42.1687252157679; Tue, 20 Jun 2023 02:09:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687252157; cv=none; d=google.com; s=arc-20160816; b=b9OxhAg+VKCYnGD382vij1v4yZmHEjtH6aTn5Srh5YQ7b1cZVcck7Tm+m7M4gHs2YE Qe1CRtIjbWE550Rcz1nWRjD01+lmuI5N6+TS56VFL/01bCW0v8wVvYmKIyPSGGvq7aja XEwuTB8O3rX+rDsgD0yjolHSwZe6J+YVoWlxg+x52hbKE4ZLDCPLIoel48aaltUCXdFK tQKrmgN9ugZ6I71AMdotr4zSaOcgN4hOaOtJFqeYC/aKW6ZgqeA+obs+9/UwwVxDqw2c kHEQyGpNQsvc8bnm6w5ActWf8safVB9UW028AxC0aZCfCpgb1Pdc2K3oHdZU5AVZs3dp Ynaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:authenticated-by; bh=rxsodQg+VroJtLBTK28cBoU9oKeXEi6mikEzNINTL9g=; b=rzyLXqNozzz8+Wv/gQDQodAJHZtLD2X4JF0v7E2+5YZhVUx7NDPHeGAP5LqA76jKA+ pskCBGkqTI3g2SbfxepAIj2RMW+UKxI5pXHNXYwAzuSYCKYewsBNtBhFu0yEXEPrLAG0 429jOQLtJZ5r31aVMh7GrF6f5UtEe5hLEqr82+TIy27dHvKx6VeeD3HV2vqlhMW4SxHp WNn0xJtMqRQL9skOoiqlY0MvOvfXYGrrYBGxtzXKv2Nz6QtTfJNRdAZbKE+8GH3kRuV8 ApETq07rimPTlNkimOsXHjwm+J24k3mvEZF253COtIqZuOQKMlIXy+k9BfwmVfOLw/JH AL2A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n20-20020a17090ade9400b002568322e3d0si1502658pjv.34.2023.06.20.02.09.05; Tue, 20 Jun 2023 02:09:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231839AbjFTI76 (ORCPT + 99 others); Tue, 20 Jun 2023 04:59:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231803AbjFTI7r (ORCPT ); Tue, 20 Jun 2023 04:59:47 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC65FCA; Tue, 20 Jun 2023 01:59:45 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 35K8waSX3031059, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36506.realtek.com.tw[172.21.6.27]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 35K8waSX3031059 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 20 Jun 2023 16:58:36 +0800 Received: from RTEXMBS06.realtek.com.tw (172.21.6.99) by RTEXH36506.realtek.com.tw (172.21.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.17; Tue, 20 Jun 2023 16:58:57 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXMBS06.realtek.com.tw (172.21.6.99) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 20 Jun 2023 16:58:56 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d]) by RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d%5]) with mapi id 15.01.2375.007; Tue, 20 Jun 2023 16:58:56 +0800 From: =?utf-8?B?U3RhbmxleSBDaGFuZ1vmmIzogrLlvrdd?= To: Krzysztof Kozlowski , Greg Kroah-Hartman CC: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alan Stern , Flavio Suligoi , Douglas Anderson , Bagas Sanjaya , Matthias Kaehlcke , Ray Chi , "linux-phy@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" Subject: RE: [PATCH v4 2/5] phy: realtek: usb: Add driver for the Realtek SoC USB 2.0 PHY Thread-Topic: [PATCH v4 2/5] phy: realtek: usb: Add driver for the Realtek SoC USB 2.0 PHY Thread-Index: AQHZnqKoBa3usKZ+0E2g2HmbuLXZDa+OKbsAgAUz95A= Date: Tue, 20 Jun 2023 08:58:56 +0000 Message-ID: References: <20230614092850.21460-1-stanley_chang@realtek.com> <20230614092850.21460-2-stanley_chang@realtek.com> <3cce7711-3e31-2f9b-8be7-36be6ee8a19c@linaro.org> In-Reply-To: <3cce7711-3e31-2f9b-8be7-36be6ee8a19c@linaro.org> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.21.190.159] x-kse-serverinfo: RTEXMBS06.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgS3J6eXN6dG9mLA0KDQo+ID4gKyAgICAgYWRkciA9IHBoeV9kYXRhLT5hZGRyOw0KPiA+ICsg ICAgIGRhdGEgPSBwaHlfZGF0YS0+ZGF0YTsNCj4gPiArICAgICBkY19kaXNjb25uZWN0X21hc2sg PSBwaHlfY2ZnLT5kY19kaXNjb25uZWN0X21hc2s7DQo+ID4gKw0KPiA+ICsgICAgIGlmICh1cGRh dGUpDQo+ID4gKyAgICAgICAgICAgICBkYXRhID0NCj4gX191cGRhdGVkX2RjX2Rpc2Nvbm5lY3Rf bGV2ZWxfcGFnZTBfMHhlNChwaHlfY2ZnLCBwaHlfcGFyYW1ldGVyLCBkYXRhKTsNCj4gPiArICAg ICBlbHNlDQo+ID4gKyAgICAgICAgICAgICBkYXRhID0gKGRhdGEgJiB+KGRjX2Rpc2Nvbm5lY3Rf bWFzayA8PCBvZmZzZXQpKSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIChERUZBVUxUX0RD X0RJU0NPTk5FQ1RJT05fVkFMVUUgPDwNCj4gb2Zmc2V0KTsNCj4gPiArDQo+ID4gKyAgICAgaWYg KHJ0a19waHlfd3JpdGUocGh5X3JlZywgYWRkciwgZGF0YSkpDQo+ID4gKyAgICAgICAgICAgICBk ZXZfZXJyKHJ0a19waHktPmRldiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIlslczolZF0g RXJyb3IgcGFnZTEgYWRkcj0weCV4IHZhbHVlPTB4JXhcbiIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIF9fZnVuY19fLCBfX0xJTkVfXywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgYWRk ciwgZGF0YSk7DQo+IA0KPiBJcyBhZGRyIGEga2VybmVsIGFkZHJlc3Mgb3IgYW55IG1lbW9yeSAo bm90IFNGUikgYWRkcmVzcz8gSWYgc28sIHlvdSBjYW5ub3QNCj4gcHJpbnQgaXQuDQoNCkl0IGlz IG5vdCBtZW1vcnkgYWRkcmVzcy4NCg0KPiA+ICsNCj4gPiArICAgICBpZiAocnRrX3BoeV93cml0 ZShwaHlfcmVnLCBhZGRyLCBkYXRhKSkNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIocnRrX3Bo eS0+ZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAiWyVzOiVkXSBFcnJvciBwYWdlMSBh ZGRyPTB4JXggdmFsdWU9MHgleFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18sIF9fTElORV9fLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBhZGRyLCBkYXRhKTsNCj4g DQo+IERpdHRvIGFuZCBpbiBhbGwgb3RoZXIgcGxhY2VzLg0KDQpJdCBpcyBub3QgbWVtb3J5IGFk ZHJlc3MuDQoNCj4gPiArc3RhdGljIHU4IF9fdXBkYXRlX2RjX2RyaXZpbmdfcGFnZTBfMHhlNChz dHJ1Y3QgcGh5X2NmZyAqcGh5X2NmZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcGh5X3BhcmFtZXRlcg0KPiA+ICsqcGh5X3BhcmFtZXRlciwgdTgg ZGF0YSkgew0KPiA+ICsgICAgIHMzMiBkcml2aW5nX2NvbXBlbnNhdGUgPSBwaHlfcGFyYW1ldGVy LT5kcml2aW5nX2NvbXBlbnNhdGU7DQo+ID4gKyAgICAgczMyIGRjX2RyaXZpbmdfbWFzayA9IHBo eV9jZmctPmRjX2RyaXZpbmdfbWFzazsNCj4gPiArICAgICBzMzIgX192YWw7DQo+ID4gKyAgICAg dTggdmFsOw0KPiANCj4gVHdvIHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuIE5vLCBpdCBp cyBub3QgcmVhZGFibGUgY29kZS4NCg0KT2theS4gSSB3aWxsIHJldmlzZSBpdC4NCg0KPiA+ICtz dGF0aWMgdm9pZCBydGtfcGh5X3RvZ2dsZShzdHJ1Y3QgdXNiX3BoeSAqdXNiMl9waHksIGJvb2wg Y29ubmVjdCwNCj4gPiAraW50IHBvcnQpIHsNCj4gPiArICAgICBpbnQgaW5kZXggPSBwb3J0Ow0K PiA+ICsgICAgIHN0cnVjdCBydGtfcGh5ICpydGtfcGh5ID0gTlVMTDsNCj4gPiArDQo+ID4gKyAg ICAgcnRrX3BoeSA9IGRldl9nZXRfZHJ2ZGF0YSh1c2IyX3BoeS0+ZGV2KTsNCj4gPiArDQo+ID4g KyAgICAgaWYgKGluZGV4ID4gcnRrX3BoeS0+bnVtX3BoeSkgew0KPiA+ICsgICAgICAgICAgICAg cHJfZXJyKCIlcyAlZCBFUlJPUiEgcG9ydD0lZCA+IG51bV9waHk9JWRcbiIsDQo+IA0KPiBkZXZf ZXJyDQoNCkkgcmV2aXNlZCBpdC4NCg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCBfX0xJTkVfXywgaW5kZXgsIHJ0a19waHktPm51bV9waHkpOw0KPiANCj4gYWxsIHRoZXNlIGZ1 bmMgYW5kIExJTkUgcG9pbnQgdG8gcG9vciBjb2RlIHF1YWxpdHkgYW5kIHBvb3IgZGVidWdnaW5n DQo+IHByYWN0aWNlcy4gVGhlc2UgYXJlIGFkZGVkIGR1Z2luIGRldmVsb3BtZW50LCBub3QgZm9y IHByb2R1Y3Rpb24gY29kZSwNCj4gYmVjYXVzZSBlcnJvciBtZXNzYWdlIHNob3VsZCBiZSBvYnZp b3VzLiBZb3VyIHVzYWdlIG9mIHByX2VyciwgZnVuYywgTElORSBhbmQNCj4gc29tZSB1bnByZWNp c2UgbWVzc2FnZXMgc3VnZ2VzdHMgdGhpcyBpcyBub3QgcmVhZHkuDQo+IA0KPiBGaXggYWxsIHlv dXIgZXJyb3IgbWVzc2FnZXMgdG8gYmUgbWVhbmluZ2Z1bC4NCg0KSSB3aWxsIHJldmlldyBhbGwg ZXJyb3IgbWVzc2FnZXMuDQpUaGFua3MuDQoNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgcnRrX3VzYjJfc2V0X3BhcmFtZXRlcl9mb3BzID0gew0KPiA+ICsgICAgIC5v cGVuICAgICAgICAgICAgICAgICAgID0gcnRrX3VzYjJfc2V0X3BhcmFtZXRlcl9vcGVuLA0KPiA+ ICsgICAgIC53cml0ZSAgICAgICAgICAgICAgICAgID0gcnRrX3VzYjJfc2V0X3BhcmFtZXRlcl93 cml0ZSwNCj4gDQo+IE5BSy4gWW91IGp1c3QgY3JlYXRlZCB1c2VyIGludGVyZmFjZSB2aWEgZGVi dWdmcy4gWW91IGNhbm5vdC4gUmVhZGluZyBmb3Igc29tZQ0KPiBkZWJ1ZyBpcyBva2F5LCBidXQg Y29uZmlndXJpbmcgZGV2aWNlIHZpYSB1bmRvY3VtZW50ZWQgZGVidWdmcyBpcyBhIHNvdXJjZSBv Zg0KPiB0cm91Ymxlcy4NCj4gDQo+IERyb3AgYWxsIHdyaXRlcyB0byBkZWJ1Z2ZzLg0KDQpJIHdp bGwgcmVtb3ZlIHRoaXMuDQoNCj4gDQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHBhcnNlX3BoeV9k YXRhKHN0cnVjdCBydGtfcGh5ICpydGtfcGh5KSB7DQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAq ZGV2ID0gcnRrX3BoeS0+ZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZTsN Cj4gDQo+IEJ5IGNvbnZlbnRpb246DQo+IHMvbm9kZS9ucC8NCg0KT2theS4NCg0KPiA+ICsgICAg IHN0cnVjdCBwaHlfY2ZnICpwaHlfY2ZnOw0KPiA+ICsgICAgIHN0cnVjdCBwaHlfcGFyYW1ldGVy ICpwaHlfcGFyYW1ldGVyOw0KPiA+ICsgICAgIGludCByZXQgPSAwOw0KPiA+ICsgICAgIGludCBp bmRleDsNCj4gPiArDQo+ID4gKyAgICAgbm9kZSA9IGRldi0+b2Zfbm9kZTsNCj4gDQo+IEtlZXAg aXQgaW4gdmFyaWFibGUgZGVmaW5pdGlvbi4NCg0KT2theS4NCg0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBydGtfdXNiMnBoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ ID4gKyAgICAgc3RydWN0IHJ0a19waHkgKnJ0a19waHk7DQo+ID4gKyAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7 DQo+ID4gKyAgICAgc3RydWN0IHBoeSAqZ2VuZXJpY19waHk7DQo+ID4gKyAgICAgc3RydWN0IHBo eV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOw0KPiA+ICsgICAgIGNvbnN0IHN0cnVjdCBwaHlfY2Zn ICpwaHlfY2ZnOw0KPiA+ICsgICAgIGludCByZXQgPSAwOw0KPiA+ICsNCj4gPiArICAgICBwaHlf Y2ZnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7DQo+ID4gKyAgICAgaWYgKCFwaHlf Y2ZnKSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgInBoeSBjb25maWcgYXJlIG5v dCBhc3NpZ25lZCFcbiIpOw0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4g KyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBydGtfcGh5ID0gZGV2bV9remFsbG9jKGRldiwgc2l6 ZW9mKCpydGtfcGh5KSwgR0ZQX0tFUk5FTCk7DQo+ID4gKyAgICAgaWYgKCFydGtfcGh5KQ0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsgICAgIHJ0a19waHkt PmRldiAgICAgICAgICAgICAgICAgICAgPSAmcGRldi0+ZGV2Ow0KPiA+ICsgICAgIHJ0a19waHkt PnBoeS5kZXYgICAgICAgICAgICAgICAgPSBydGtfcGh5LT5kZXY7DQo+ID4gKyAgICAgcnRrX3Bo eS0+cGh5LmxhYmVsICAgICAgICAgICAgICA9ICJydGstdXNiMnBoeSI7DQo+ID4gKyAgICAgcnRr X3BoeS0+cGh5Lm5vdGlmeV9wb3J0X3N0YXR1cyA9IHJ0a19waHlfbm90aWZ5X3BvcnRfc3RhdHVz Ow0KPiA+ICsNCj4gPiArICAgICBydGtfcGh5LT5waHlfY2ZnID0gZGV2bV9remFsbG9jKGRldiwg c2l6ZW9mKCpwaHlfY2ZnKSwNCj4gPiArIEdGUF9LRVJORUwpOw0KPiA+ICsNCj4gPiArICAgICBt ZW1jcHkocnRrX3BoeS0+cGh5X2NmZywgcGh5X2NmZywgc2l6ZW9mKCpwaHlfY2ZnKSk7DQo+ID4g Kw0KPiA+ICsgICAgIG5vZGUgPSBkZXYtPm9mX25vZGU7DQo+IA0KPiBEcm9wIGl0LiBVc2VsZXNz IGFzc2lnbm1lbnQuDQoNCk9rYXkuDQoNCj4gPiArDQo+ID4gKyAgICAgaWYgKG9mX2RldmljZV9p c19jb21wYXRpYmxlKG5vZGUsDQo+ID4gKyAicmVhbHRlayxydGQxMzk1LXVzYjJwaHktMnBvcnQi KSkNCj4gDQo+IE5vLCBjdXN0b21pemUgdmFyaWFudCB3aXRoIGRyaXZlcl9kYXRhLiBEb24ndCBl bWJlZCBjb21wYXRpYmxlcyBpbiB0aGUgY29kZS4NCg0KSSB3aWxsIHVzZSB0aGUgY29tcGF0aWJs ZSBkYXRhIHRvIG1hdGNoIHRoaXMgY2FzZS4NCg0KPiANCj4gPiArICAgICAgICAgICAgIHJ0a19w aHktPm51bV9waHkgPSAyOw0KPiA+ICsgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgIHJ0a19w aHktPm51bV9waHkgPSAxOw0KPiA+ICsNCj4gPiArICAgICByZXQgPSBwYXJzZV9waHlfZGF0YShy dGtfcGh5KTsNCj4gPiArICAgICBpZiAocmV0KQ0KPiA+ICsgICAgICAgICAgICAgZ290byBlcnI7 DQo+ID4gKw0KPiA+ICsgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHJ0a19waHkpOw0K PiA+ICsNCj4gPiArICAgICBnZW5lcmljX3BoeSA9IGRldm1fcGh5X2NyZWF0ZShydGtfcGh5LT5k ZXYsIE5VTEwsICZvcHMpOw0KPiA+ICsgICAgIGlmIChJU19FUlIoZ2VuZXJpY19waHkpKQ0KPiA+ ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZ2VuZXJpY19waHkpOw0KPiA+ICsNCj4gPiAr ICAgICBwaHlfc2V0X2RydmRhdGEoZ2VuZXJpY19waHksIHJ0a19waHkpOw0KPiA+ICsNCj4gPiAr ICAgICBwaHlfcHJvdmlkZXIgPSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihydGtfcGh5 LT5kZXYsDQo+ID4gKw0KPiBvZl9waHlfc2ltcGxlX3hsYXRlKTsNCj4gPiArICAgICBpZiAoSVNf RVJSKHBoeV9wcm92aWRlcikpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwaHlf cHJvdmlkZXIpOw0KPiA+ICsNCj4gPiArICAgICByZXQgPSB1c2JfYWRkX3BoeV9kZXYoJnJ0a19w aHktPnBoeSk7DQo+ID4gKyAgICAgaWYgKHJldCkNCj4gPiArICAgICAgICAgICAgIGdvdG8gZXJy Ow0KPiA+ICsNCj4gPiArICAgICBjcmVhdGVfZGVidWdfZmlsZXMocnRrX3BoeSk7DQo+ID4gKw0K PiA+ICtlcnI6DQo+ID4gKyAgICAgZGV2X2RiZyhkZXYsICJQcm9iZSBSVEsgVVNCIDIuMCBQSFkg KHJldD0lZClcbiIsIHJldCk7DQo+IA0KPiBOQUsuIEkgbWFkZSBpdCBwcmV0dHkgY2xlYXIgbGFz dCB0aW1lLg0KPiANCj4gDQo+IFRoaXMgaXMgYSBmcmllbmRseSByZW1pbmRlciBkdXJpbmcgdGhl IHJldmlldyBwcm9jZXNzLg0KPiANCj4gSXQgc2VlbXMgbXkgcHJldmlvdXMgY29tbWVudHMgd2Vy ZSBub3QgZnVsbHkgYWRkcmVzc2VkLiBNYXliZSBteSBmZWVkYmFjaw0KPiBnb3QgbG9zdCBiZXR3 ZWVuIHRoZSBxdW90ZXMsIG1heWJlIHlvdSBqdXN0IGZvcmdvdCB0byBhcHBseSBpdC4NCj4gUGxl YXNlIGdvIGJhY2sgdG8gdGhlIHByZXZpb3VzIGRpc2N1c3Npb24gYW5kIGVpdGhlciBpbXBsZW1l bnQgYWxsIHJlcXVlc3RlZA0KPiBjaGFuZ2VzIG9yIGtlZXAgZGlzY3Vzc2luZyB0aGVtLg0KPiAN Cj4gVGhhbmsgeW91Lg0KDQpTb3JyeS4gSSBsZWZ0IG91dCB0aGlzIHByaW50LCBJIHdpbGwgZGVs ZXRlIGl0Lg0KVGhhbmsgeW91Lg0KDQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiByZXQ7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHJ0a191c2IycGh5X3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgc3RydWN0IHJ0a19waHkgKnJ0a19waHkg PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArDQo+ID4gKyAgICAgcmVtb3ZlX2Rl YnVnX2ZpbGVzKHJ0a19waHkpOw0KPiA+ICsNCj4gPiArICAgICB1c2JfcmVtb3ZlX3BoeSgmcnRr X3BoeS0+cGh5KTsNCj4gPiArfQ0KPiANCj4gLi4uDQo+IA0KPiA+ICsNCj4gPiArc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdXNicGh5X3J0a19kdF9tYXRjaFtdID0gew0KPiA+ICsg ICAgIHsgLmNvbXBhdGlibGUgPSAicmVhbHRlayxydGQxMjk1LXVzYjJwaHkiLCAuZGF0YSA9DQo+ ICZydGQxMjk1X3BoeV9jZmcgfSwNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0ZWss cnRkMTMxMmMtdXNiMnBoeSIsIC5kYXRhID0NCj4gJnJ0ZDEzMTJjX3BoeV9jZmcgfSwNCj4gPiAr ICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0ZWsscnRkMTMxNWUtdXNiMnBoeSIsIC5kYXRhID0N Cj4gJnJ0ZDEzMTVlX3BoeV9jZmcgfSwNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0gInJlYWx0 ZWsscnRkMTMxOS11c2IycGh5IiwgLmRhdGEgPQ0KPiAmcnRkMTMxOV9waHlfY2ZnIH0sDQo+ID4g KyAgICAgeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDEzMTlkLXVzYjJwaHkiLCAuZGF0YSA9 DQo+ICZydGQxMzE5ZF9waHlfY2ZnIH0sDQo+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJyZWFs dGVrLHJ0ZDEzOTUtdXNiMnBoeSIsIC5kYXRhID0NCj4gJnJ0ZDEzOTVfcGh5X2NmZyB9LA0KPiA+ ICsgICAgIHsgLmNvbXBhdGlibGUgPSAicmVhbHRlayxydGQxMzk1LXVzYjJwaHktMnBvcnQiLCAu ZGF0YSA9DQo+ICZydGQxMzk1X3BoeV9jZmcgfSwNCj4gPiArICAgICB7IC5jb21wYXRpYmxlID0g InJlYWx0ZWsscnRkMTYxOS11c2IycGh5IiwgLmRhdGEgPQ0KPiAmcnRkMTYxOV9waHlfY2ZnIH0s DQo+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0ZDE2MTliLXVzYjJwaHkiLCAu ZGF0YSA9DQo+ICZydGQxNjE5Yl9waHlfY2ZnIH0sDQo+ID4gKyAgICAgeyAuY29tcGF0aWJsZSA9 ICJyZWFsdGVrLHVzYjJwaHkiLCAuZGF0YSA9ICZydGtfcGh5X2NmZyB9LA0KPiANCj4gVGhpcyBp cyBub3cgZXZlbiBtb3JlIHN1cHJpc2luZy4gRHJvcCAicmVhbHRlayx1c2IycGh5Ig0KDQpJIHdp bGwgcmVtb3ZlIGl0Lg0KPiA+ICsgICAgIHt9LA0KPiA+ICt9Ow0KPiA+ICtNT0RVTEVfREVWSUNF X1RBQkxFKG9mLCB1c2JwaHlfcnRrX2R0X21hdGNoKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIHJ0a191c2IycGh5X2RyaXZlciA9IHsNCj4gPiArICAgICAucHJv YmUgICAgICAgICAgPSBydGtfdXNiMnBoeV9wcm9iZSwNCj4gPiArICAgICAucmVtb3ZlX25ldyAg ICAgPSBydGtfdXNiMnBoeV9yZW1vdmUsDQo+ID4gKyAgICAgLmRyaXZlciAgICAgICAgID0gew0K PiA+ICsgICAgICAgICAgICAgLm5hbWUgICA9ICJydGstdXNiMnBoeSIsDQo+ID4gKyAgICAgICAg ICAgICAub3duZXIgID0gVEhJU19NT0RVTEUsDQo+IA0KPiA/Pz8gRGlkbid0IHlvdSBiYXNlIHlv dXIgZHJpdmVyIG9uIHNvbWUgcmVhbGx5LCByZWFsbHkgYW5jaWVudCBjb2RlIChsaWtlIDUgeWVh cnMNCj4gb2xkKT8gSWYgc28sIHBsZWFzZSBkb24ndC4NCg0KDQpUaGFuayB5b3UuDQpJIHdpbGwg cmVtb3ZlIGl0Lg0KDQo+IFJ1biBjb2NjaWNlbmVsbGUvY29jY2ljaGVjaywgc21hdGNoIGFuZCBz cGFyc2UsIHRvIGF2b2lkIGNvbW1vbiBtaXN0YWtlcy4NCj4gDQpJIHdpbGwgcnVuIHRoZXNlIHRv b2xzLg0KDQpUaGFua3MsDQpTdGFubGV5DQo=