From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x224C0iA3uC+OJaEwfsJpC5UUErI/DorTvkHiBHbVwwISU/zZv19pWZ16oPYlch8d5H9a3jkO ARC-Seal: i=1; a=rsa-sha256; t=1517977292; cv=none; d=google.com; s=arc-20160816; b=yxbVrK2BC72283b51zWd+la5t3AFhle9/j6ZubUmWVxbV7wZdmALclL7hn2bXtnMKI Av/VOATjsDIBEUcfyF03dEKTjdYvMEJPtQlehEg1NS+oOXTsULbfbZ0lkroTTSc+Vjgb gS6aXVd+H3BnX1pxO1U2S2pYFHU/iVrszn13Ng3/gwYDmeEGmgZa272quBmSqhEtu1M3 1l4iiapnpao+bpgd2pZcTlG8k3gNxNZNONoEbbsItpa0S6hl1DYvKrb/r/O2aWAbbZGW HF8kYT5TLlvBIc2JTp46YiWa89CyAvcxsKczigMeHyz4pLjbUZChG8npGHkVnC1bbE9J OhoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=spamdiagnosticmetadata:spamdiagnosticoutput:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=ppscbESS55DqbrGhMYrNODz8oe/N5fPoyQNz824qp9A=; b=u1lr4Gv7LyazI431/fHKaIcYBEvnX/xjHxmZqNbecGmQFVdvim3C3rX8/kVQHfpcnH PK1c8kvHIoaAhPQayoONtDymBCfjS7L43JpLu0ZNRzacIaKC9N17GHyaycta9MOZxyA1 TAdK0MXvf8Wr61aExAZpMhIAIL8Nf/0aW8cBogy8TaocQc+1uQcXxXbKP+fGV9bQ5nn8 CEswaciEBhF58l3+r6UYLkFV+51IA1kyQezrynerJXAZdKJL7xCLLlstkTtiG2Xztmkt pYI6qTe/1cGFC773qpJj1Nk6RgRbfLC1RF2VhK54put6GtsrnUHivQAmTsBY+kWEKHb5 YCkg== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning hzpeterchen@gmail.com does not designate 104.47.36.71 as permitted sender) smtp.mailfrom=hzpeterchen@gmail.com; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning hzpeterchen@gmail.com does not designate 104.47.36.71 as permitted sender) smtp.mailfrom=hzpeterchen@gmail.com; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Authentication-Results: spf=softfail (sender IP is 192.88.168.50) smtp.mailfrom=gmail.com; linuxfoundation.org; dkim=none (message not signed) header.d=none;linuxfoundation.org; dmarc=fail action=none header.from=gmail.com; Date: Wed, 7 Feb 2018 09:48:24 +0800 From: Peter Chen To: Sebastian Reichel CC: Peter Chen , Greg Kroah-Hartman , , , Ian Ray , Nandor Han , Fabien Lahoudere , Subject: Re: [PATCH 2/2] usb: chipidea: imx: Fix ULPI on imx53 Message-ID: <20180207014824.GA31270@b29397-desktop> References: <20180124171439.10721-1-sebastian.reichel@collabora.co.uk> <20180124171439.10721-2-sebastian.reichel@collabora.co.uk> <20180129033315.GA20311@b29397-desktop> <20180206155041.objiu5j5kftmzp4q@earth.universe> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20180206155041.objiu5j5kftmzp4q@earth.universe> User-Agent: Mutt/1.5.24 (2015-08-30) X-EOPAttributedMessage: 0 X-Matching-Connectors: 131624508910698760;(91ab9b29-cfa4-454e-5278-08d120cd25b8);() X-Forefront-Antispam-Report: CIP:192.88.168.50;IPV:CAL;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(376002)(396003)(346002)(39860400002)(39380400002)(2980300002)(199004)(189003)(104016004)(316002)(26826003)(336011)(76176011)(77096007)(498600001)(2906002)(33896004)(6862004)(33716001)(107886003)(83322999)(86362001)(76482006)(356003)(54906003)(50466002)(73392002)(53936002)(81156014)(305945005)(81166006)(8676002)(8936002)(83506002)(26005)(4326008)(16586007)(1076002)(68736007)(93886005)(82202002)(6246003)(81442002)(46406003)(47776003)(97736004)(73972006)(58126008)(9686003)(55016002)(33656002)(23726003)(5660300001)(87572001)(97756001)(229853002)(106466001)(2950100002)(105596002)(6666003)(18370500001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0301MB0607;H:tx30smr01.am.freescale.net;FPR:;SPF:SoftFail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD004;1:ohDBo/4EPW0r3pkqp1j4NtBhOBpSGu/6hrvGqLCdX9RGnASwWePzmKjg9uxTnluUUgaJI9R2avRybCEzdHFnPkOpVu9zQJ+JHzmBZvi1JKNiC9E4L8Mo3nEIZA+Afq6L X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 998900ec-b72b-46d9-7600-08d56de243bf X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(5600026)(4604075)(2017052603307);SRVR:DM2PR0301MB0607; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0607;3:sKce+r8ZXVxjeSKXvpyPwBBidildRkjS+DEXkYr2ZzQRS7bH6GbWpwdW+JUWdX3DDBNjx863RVn8TfjplLnAexHsqs/xOYv8VpBcPnkzkRoWjRlefpGIdmFgOcgk/Ex/5FMgacMtQJaesy6WP58u7No4/6FpaVdDCtLjY4l/HERCLeoKnNVaaoOpWYlbpkYK5nMA0tMEC82ETZFUwdGUGxDHWhVEEtBTICzX/rjCRKZGAgIr8VZ+OIqeKc3bZi4QOjeA/Xqnfaart2jBR3vG+jRByRHFfRIkHTBOeTdpCDnUdCN4a6SrRQ8ip6AcT+d/9eywyviVtUbtnicMQl7BTiTTlQXHph8bfE/VliaSq1s=;25:rQJNkAAEliS/b1rm6DnhEngPwlop8lft+ONA38R7cvBjop9OoSeClVVJPlpASBZe24CIoBzGNujm5H0aX6b8b8ZSbpCuJWPiPh3iXMnOKOB5q9phq26T0OET7yabgSW2TZWhSs0MlUPsjf4IGY7fVEq2h6H5tp0RAeE3puV9dxP40YEEAf3mkER5LAGuITchDdE5+7sTX9G9YLluSBbGNCKhk5Uq2eAswM49TXdqeZds2HYpnEeDXbO15MKu1MRwOtB47T8uQ6HiRu03nS5iy+VWFQcWmv3bhnaGCHmmgdaDFFDH38AIJ7nJw7+XRjcSzLIvweSwBHOZ0/3oZIPQYw== X-MS-TrafficTypeDiagnostic: DM2PR0301MB0607: X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0607;31:zu7xPkyP8yEKq8pS57mQ0VbW89WtN2bzqRD8hfljICD35XlzgaezwETr1uLPlxWaTiIcx/ECn6ga2pK9brAXI086yO6lu9Vzh+Y88dkP5AgIh8HQr9Ib2BfOgeyfMoR5xxurJ1O2tYaM9lHGlJuKkf1z0N5K4BHful8FyfPMM8llv8omWfim/xsCiJP2faPsqsT/JDGAP6Kn+pwZam0J2icPxvRylkIe8fw+Rdhe+PU=;4:k38NwLbstZoVacJbMRRImGTS1plIGuzp26IR5jC1Otwht6k5oFQZyVHcdHSCyuX9PV4IA1TWeeSyUKc2eFCtBH60xh/uSR1TzT/omoIXEA3uBbpyW3xKdyhCLbBle498jMDZ6nkAYZc4XScV4WcwYDLKBj+2RisAXNDWUTr5XVTapt7DGg7voqj9Rv46m8uFEE54jTN8/0nUytNmgcSUoleHEMq35NtRtnN8iy8F7oPXLhiTKPAjmIPD0vglu01lzx3QsnOtg7JNYMsNdIHQMw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(3231101)(2400082)(944501161)(10201501046)(6055026)(6096035)(20161123563025)(20161123561025)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123565025)(20161123559100)(20161123556025)(201708071742011);SRVR:DM2PR0301MB0607;BCL:0;PCL:0;RULEID:(400006);SRVR:DM2PR0301MB0607; X-Forefront-PRVS: 0576145E86 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB0607;23:VlvziFc1SPBDQKXnz/BBimkaLyj3kTkZSdyHeqG?= =?us-ascii?Q?ynb5gxDEcaLv734UmaNwKr1KdfHzACyETHEjwb7fLiChW4yBXeRpiLI8T+Eb?= =?us-ascii?Q?7VJsqdKQL59Dot5BkXvwXXly1xZJzz1svwmVeQnzzdAhl/dJJfAF5tkeg9xK?= =?us-ascii?Q?YKVTwnllq8r79xxlH0nDNZsC4EYp58AcLWpqhUfNl/lhRUhq3tVXXYsOyihn?= =?us-ascii?Q?yPQ0xi1CxtGAeND35sPPwxu78Wre1zX0fFfPB7LTYSJWxkKzBCbiukGyu24k?= =?us-ascii?Q?JypAJqPqDgnllmiWeTBswEaNYwNQz6Bn3kUUofxJbkuRmQeqOgMgSfPmOJv4?= =?us-ascii?Q?hyM0tkgPT4g4Ap4BWgZc46povUyjqPm+kag6bKW2e3mCcuBOVPBj8xNKZww2?= =?us-ascii?Q?MiWttysfz8hnGSnqVfv6BrN2GxHQfyYNOnwW7BAFgbfOjtwAQbnuIQdCAvgC?= =?us-ascii?Q?SLJPAuy7O+pqGIHrc7XiHV4di/DR7FeLHXOOWMQS6RZHDgbXnkW8aKLFQc6/?= =?us-ascii?Q?2mJH42varUUJsxPLKh0KV5pJExjT0Bt1V0VkqmXJ8SB1HOBcEioQHbfElJ3a?= =?us-ascii?Q?s3gG0gYwvLEJ3KRnY3euaBs1lQDWFYyEUaVjpHj8aJoqDvngUlwGeQ8xea2e?= =?us-ascii?Q?NILTyq9C4ASytQDeg7tj7ROPZqMkqZf4sUoMyfN1q9dTeHxHRNDNf8NWZy2j?= =?us-ascii?Q?P35mbbfRbfg/L2GC5na3W31P/RLtUYCsKVNPS/WooL5lX7BMaSwYZNkXUlpE?= =?us-ascii?Q?2UGuamDkywtKzGyeXUn+MsM8JGOg/T5AADv70ot9muhlmlkFB4U04dXowUJv?= =?us-ascii?Q?jDJY1Gd5sEatUT1XA4pLy7shfs2HJKBsg6OaJrzWi/H/2R1dzVDgRTOMvWe8?= =?us-ascii?Q?tHFeoxQd4fGnsGHUO2T6CTHmouLE5VEVQ4gGH84So0JRjFyQIDzhEGiJvJ5q?= =?us-ascii?Q?up0X6Iv6J01ocE0DIzU09PcrixWqLLmMtE+FPMVq5gsdgV97JYqGlYyYid9q?= =?us-ascii?Q?dt781uJ0JsyhfP/AmmhNr8RQnTzKO5KFVsX80XVNUdKnYSecN+dYM06LnTwo?= =?us-ascii?Q?cy0PJHRbpLkZ1b7rkOAaffMiMl6yrciBdcn1f0n+y+n1WmFEW5da/jASn+Cc?= =?us-ascii?Q?Bd+Gr2aHeB0VPeOyU/zQNwZau4Y551I04+AvpZYaWlgLYB9vgLCbPNEbqc7q?= =?us-ascii?Q?5OXZ7t7Gr5vgg3b612DE90BxEy4QDmcfvlFXsfTqCok+sKVYcIG1UcmEQYA/?= =?us-ascii?Q?Fnh5gJOu1Pd0CiK/YocttVz7y//kRstYprfOXhEqVduAeXM6J/rChU+iF1fG?= =?us-ascii?Q?T1FbnanLOgUjb3dviNMroTFZQeF8eECZ4kX++n9GSrw5AaHLqnOg0PPXaJS2?= =?us-ascii?Q?ZmLdx4iSExcObhGWWdXUc1DU3zLd5HiYmAmslSlCgA8QhTqCj?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0607;6:f/fVMSWCOCHP7yKXfc1ms9XGOmo76as1lspa4iy61Xw0zW788mPeNC7EDJqKW3QnZprfKOY9zDEuhRFL1iZ7GwGwiavydlmp7f46T+UEHgmQ9uSbsi9Bkk0EAgBkEp2XuImwl7lFAibc4AR++H2VfFKSSjBiOlN9DueUjZkzi4z3sxBYh+Ve84Hj2HRhPaupVdpe8om5EP+knITsQWNM4rpR/D/Ajb3HUgHmpObZxj1zr9KuRJDE8DI32lARmSNuXZU0PSjo/8wTeUysaD2wutkR7y1WGC6zY7yc1vVvHCvFlrfl46zUWAfeUFqLRLx8SuZNWMbGpulxK+x4pMC58CtwChRqYFFaZeHnodwZZ64=;5:S/5fUunsR2dSDGTfYCKVbT2bAn0uCm15nhg/4C4ye3p2yf7UCckaw6h7zxBqzuEM9yPf55etLudY2ICYhK3gjQCSRnoHcs4NrC+64Kcm7SOQzQD76KDhTybaEwLDKArFLEjVQxVoH8kPUyZAbOzotDaf5+R31oaHziVHMFl4UUc=;24:NeGfCXFp703O5nbDztIN9xqQJ70dNwDSEZnnZ1Qj17Vqom/eW4DQdSd0SL2JSU74xVh8Ed2yRuNKwapt9wJ/5CadA1Ui3FXQ1IFnyGV9ZlY=;7:Z2SE5Z3Ska18F+BB57JzLhW22/RIoj5BHtR4FCx0/cHMLWP7BT9oXo6GGTdfkUM5yLYKKfnDHGrO6n8CBGnpmXbcwIOG2e5vL/7zYWMaE75gMxHkD+J3An9G5oXgvL4AUrETw/9KXrKNl9hywrArSI8uViatmb0YxbO7LmQxOQkaKqtZ3B0GRn4G81+I8BmL+2K1VyL/cQkWSI1PhAE109K4BZFhcmiB8pygBpesMMHByB+L0lJuc9H6cP8b7ZPP SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2018 04:21:04.5965 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 998900ec-b72b-46d9-7600-08d56de243bf X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0607 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1590494846034483631?= X-GMAIL-MSGID: =?utf-8?q?1591714557846876368?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: On Tue, Feb 06, 2018 at 04:50:41PM +0100, Sebastian Reichel wrote: > Hi Peter, > > On Mon, Jan 29, 2018 at 11:33:15AM +0800, Peter Chen wrote: > > On Wed, Jan 24, 2018 at 06:14:39PM +0100, Sebastian Reichel wrote: > > > Traditionally, PORTSC should be set before initializing ULPI phys. But > > > setting PORTSC before powering on the phy results in a kernel freeze > > > on imx53 based GE PPD. As a workaround this initializes the phy early > > > in the imx platform code and disables phy power management from the > > > core. > > > > > > Signed-off-by: Fabien Lahoudere > > > Signed-off-by: Sebastian Reichel > > > --- > > > drivers/usb/chipidea/ci_hdrc_imx.c | 12 ++++++++++++ > > > 1 file changed, 12 insertions(+) > > > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > > > index de155c80eb70..e431c5aafe35 100644 > > > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > > > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > > > @@ -83,6 +83,7 @@ struct ci_hdrc_imx_data { > > > struct clk *clk; > > > struct imx_usbmisc_data *usbmisc_data; > > > bool supports_runtime_pm; > > > + bool override_phy_control; > > > bool in_lpm; > > > /* SoC before i.mx6 (except imx23/imx28) needs three clks */ > > > bool need_three_clks; > > > @@ -254,6 +255,7 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) > > > int ret; > > > const struct of_device_id *of_id; > > > const struct ci_hdrc_imx_platform_flag *imx_platform_flag; > > > + struct device_node *np = pdev->dev.of_node; > > > > > > of_id = of_match_device(ci_hdrc_imx_dt_ids, &pdev->dev); > > > if (!of_id) > > > @@ -288,6 +290,14 @@ static int ci_hdrc_imx_probe(struct platform_device *pdev) > > > } > > > > > > pdata.usb_phy = data->phy; > > > + > > > + if (of_device_is_compatible(np, "fsl,imx53-usb") && pdata.usb_phy && > > > + of_usb_get_phy_mode(np) == USBPHY_INTERFACE_MODE_ULPI) { > > > + pdata.flags |= CI_HDRC_OVERRIDE_PHY_CONTROL; > > > + data->override_phy_control = true; > > > + usb_phy_init(pdata.usb_phy); > > > + } > > > + > > > pdata.flags |= imx_platform_flag->flags; > > > if (pdata.flags & CI_HDRC_SUPPORTS_RUNTIME_PM) > > > data->supports_runtime_pm = true; > > > @@ -341,6 +351,8 @@ static int ci_hdrc_imx_remove(struct platform_device *pdev) > > > pm_runtime_put_noidle(&pdev->dev); > > > } > > > ci_hdrc_remove_device(data->ci_pdev); > > > + if (data->override_phy_control) > > > + usb_phy_shutdown(data->phy); > > > imx_disable_unprepare_clks(&pdev->dev); > > > > > > > Sebastian, I have a question, do you have any USB or generic PHY drivers > > for ULPI bus, any power controls are needed for your ULPI peripheral? > > The devicetree for GE PPD is available in the mainline kernel: > > $ grep -A9 "usbphy[23] {" arch/arm/boot/dts/imx53-ppd.dts > usbphy2: usbphy2 { > compatible = "usb-nop-xceiv"; > reset-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>; > clock-names = "main_clk"; > clock-frequency = <24000000>; > clocks = <&clks IMX5_CLK_CKO2>; > assigned-clocks = <&clks IMX5_CLK_CKO2_SEL>, <&clks IMX5_CLK_OSC>; > assigned-clock-parents = <&clks IMX5_CLK_OSC>; > }; > > usbphy3: usbphy3 { > compatible = "usb-nop-xceiv"; > reset-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; > clock-names = "main_clk"; > > clock-frequency = <24000000>; > clocks = <&clks IMX5_CLK_CKO2>; > assigned-clocks = <&clks IMX5_CLK_CKO2_SEL>, <&clks IMX5_CLK_OSC>; > assigned-clock-parents = <&clks IMX5_CLK_OSC>; > }; > > So currently the machine only uses drivers/usb/phy/phy-generic.c. Both > USB phys are actually SMSC USB3315, which is also detected by the kernel: > > root@csmon :~# cat /sys/bus/ulpi/devices/ci_hdrc.*.ulpi/uevent > DEVTYPE=ulpi_device > MODALIAS=ulpi:v0424p0006 > DEVTYPE=ulpi_device > MODALIAS=ulpi:v0424p0006 > > So maybe drivers/usb/phy/phy-ulpi.c should be used, but I don't see > a simple way to do so and using the generic PHY works. > It is correct you use phy-generic.c if it can let your design work, thanks. -- Best Regards, Peter Chen 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: [2/2] usb: chipidea: imx: Fix ULPI on imx53 From: Peter Chen Message-Id: <20180207014824.GA31270@b29397-desktop> Date: Wed, 7 Feb 2018 09:48:24 +0800 To: Sebastian Reichel Cc: Peter Chen , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Ian Ray , Nandor Han , Fabien Lahoudere , kernel@lists.collabora.co.uk List-ID: T24gVHVlLCBGZWIgMDYsIDIwMTggYXQgMDQ6NTA6NDFQTSArMDEwMCwgU2ViYXN0aWFuIFJlaWNo ZWwgd3JvdGU6Cj4gSGkgUGV0ZXIsCj4gCj4gT24gTW9uLCBKYW4gMjksIDIwMTggYXQgMTE6MzM6 MTVBTSArMDgwMCwgUGV0ZXIgQ2hlbiB3cm90ZToKPiA+IE9uIFdlZCwgSmFuIDI0LCAyMDE4IGF0 IDA2OjE0OjM5UE0gKzAxMDAsIFNlYmFzdGlhbiBSZWljaGVsIHdyb3RlOgo+ID4gPiBUcmFkaXRp b25hbGx5LCBQT1JUU0Mgc2hvdWxkIGJlIHNldCBiZWZvcmUgaW5pdGlhbGl6aW5nIFVMUEkgcGh5 cy4gQnV0Cj4gPiA+IHNldHRpbmcgUE9SVFNDIGJlZm9yZSBwb3dlcmluZyBvbiB0aGUgcGh5IHJl c3VsdHMgaW4gYSBrZXJuZWwgZnJlZXplCj4gPiA+IG9uIGlteDUzIGJhc2VkIEdFIFBQRC4gQXMg YSB3b3JrYXJvdW5kIHRoaXMgaW5pdGlhbGl6ZXMgdGhlIHBoeSBlYXJseQo+ID4gPiBpbiB0aGUg aW14IHBsYXRmb3JtIGNvZGUgYW5kIGRpc2FibGVzIHBoeSBwb3dlciBtYW5hZ2VtZW50IGZyb20g dGhlCj4gPiA+IGNvcmUuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBGYWJpZW4gTGFob3Vk ZXJlIDxmYWJpZW4ubGFob3VkZXJlQGNvbGxhYm9yYS5jby51az4KPiA+ID4gU2lnbmVkLW9mZi1i eTogU2ViYXN0aWFuIFJlaWNoZWwgPHNlYmFzdGlhbi5yZWljaGVsQGNvbGxhYm9yYS5jby51az4K PiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jIHwgMTIg KysrKysrKysrKysrCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQo+ID4g PiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNfaW14LmMg Yi9kcml2ZXJzL3VzYi9jaGlwaWRlYS9jaV9oZHJjX2lteC5jCj4gPiA+IGluZGV4IGRlMTU1Yzgw ZWI3MC4uZTQzMWM1YWFmZTM1IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3VzYi9jaGlwaWRl YS9jaV9oZHJjX2lteC5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NpX2hkcmNf aW14LmMKPiA+ID4gQEAgLTgzLDYgKzgzLDcgQEAgc3RydWN0IGNpX2hkcmNfaW14X2RhdGEgewo+ ID4gPiAgCXN0cnVjdCBjbGsgKmNsazsKPiA+ID4gIAlzdHJ1Y3QgaW14X3VzYm1pc2NfZGF0YSAq dXNibWlzY19kYXRhOwo+ID4gPiAgCWJvb2wgc3VwcG9ydHNfcnVudGltZV9wbTsKPiA+ID4gKwli b29sIG92ZXJyaWRlX3BoeV9jb250cm9sOwo+ID4gPiAgCWJvb2wgaW5fbHBtOwo+ID4gPiAgCS8q IFNvQyBiZWZvcmUgaS5teDYgKGV4Y2VwdCBpbXgyMy9pbXgyOCkgbmVlZHMgdGhyZWUgY2xrcyAq Lwo+ID4gPiAgCWJvb2wgbmVlZF90aHJlZV9jbGtzOwo+ID4gPiBAQCAtMjU0LDYgKzI1NSw3IEBA IHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiAgCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9m X2lkOwo+ID4gPiAgCWNvbnN0IHN0cnVjdCBjaV9oZHJjX2lteF9wbGF0Zm9ybV9mbGFnICppbXhf cGxhdGZvcm1fZmxhZzsKPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2 Lm9mX25vZGU7Cj4gPiA+ICAKPiA+ID4gIAlvZl9pZCA9IG9mX21hdGNoX2RldmljZShjaV9oZHJj X2lteF9kdF9pZHMsICZwZGV2LT5kZXYpOwo+ID4gPiAgCWlmICghb2ZfaWQpCj4gPiA+IEBAIC0y ODgsNiArMjkwLDE0IEBAIHN0YXRpYyBpbnQgY2lfaGRyY19pbXhfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gIAlwZGF0YS51c2JfcGh5 ID0gZGF0YS0+cGh5Owo+ID4gPiArCj4gPiA+ICsJaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxl KG5wLCAiZnNsLGlteDUzLXVzYiIpICYmIHBkYXRhLnVzYl9waHkgJiYKPiA+ID4gKwkgICAgb2Zf dXNiX2dldF9waHlfbW9kZShucCkgPT0gVVNCUEhZX0lOVEVSRkFDRV9NT0RFX1VMUEkpIHsKPiA+ ID4gKwkJcGRhdGEuZmxhZ3MgfD0gQ0lfSERSQ19PVkVSUklERV9QSFlfQ09OVFJPTDsKPiA+ID4g KwkJZGF0YS0+b3ZlcnJpZGVfcGh5X2NvbnRyb2wgPSB0cnVlOwo+ID4gPiArCQl1c2JfcGh5X2lu aXQocGRhdGEudXNiX3BoeSk7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICAJcGRhdGEuZmxhZ3Mg fD0gaW14X3BsYXRmb3JtX2ZsYWctPmZsYWdzOwo+ID4gPiAgCWlmIChwZGF0YS5mbGFncyAmIENJ X0hEUkNfU1VQUE9SVFNfUlVOVElNRV9QTSkKPiA+ID4gIAkJZGF0YS0+c3VwcG9ydHNfcnVudGlt ZV9wbSA9IHRydWU7Cj4gPiA+IEBAIC0zNDEsNiArMzUxLDggQEAgc3RhdGljIGludCBjaV9oZHJj X2lteF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ID4gIAkJcG1fcnVu dGltZV9wdXRfbm9pZGxlKCZwZGV2LT5kZXYpOwo+ID4gPiAgCX0KPiA+ID4gIAljaV9oZHJjX3Jl bW92ZV9kZXZpY2UoZGF0YS0+Y2lfcGRldik7Cj4gPiA+ICsJaWYgKGRhdGEtPm92ZXJyaWRlX3Bo eV9jb250cm9sKQo+ID4gPiArCQl1c2JfcGh5X3NodXRkb3duKGRhdGEtPnBoeSk7Cj4gPiA+ICAJ aW14X2Rpc2FibGVfdW5wcmVwYXJlX2Nsa3MoJnBkZXYtPmRldik7Cj4gPiA+ICAKPiA+IAo+ID4g U2ViYXN0aWFuLCBJIGhhdmUgYSBxdWVzdGlvbiwgZG8geW91IGhhdmUgYW55IFVTQiBvciBnZW5l cmljIFBIWSBkcml2ZXJzCj4gPiBmb3IgVUxQSSBidXMsIGFueSBwb3dlciBjb250cm9scyBhcmUg bmVlZGVkIGZvciB5b3VyIFVMUEkgcGVyaXBoZXJhbD8KPiAKPiBUaGUgZGV2aWNldHJlZSBmb3Ig R0UgUFBEIGlzIGF2YWlsYWJsZSBpbiB0aGUgbWFpbmxpbmUga2VybmVsOgo+IAo+ICQgZ3JlcCAt QTkgInVzYnBoeVsyM10geyIgYXJjaC9hcm0vYm9vdC9kdHMvaW14NTMtcHBkLmR0cwo+IAl1c2Jw aHkyOiB1c2JwaHkyIHsKPiAJCWNvbXBhdGlibGUgPSAidXNiLW5vcC14Y2VpdiI7Cj4gCQlyZXNl dC1ncGlvcyA9IDwmZ3BpbzQgNCBHUElPX0FDVElWRV9MT1c+Owo+IAkJY2xvY2stbmFtZXMgPSAi bWFpbl9jbGsiOwo+IAkJY2xvY2stZnJlcXVlbmN5ID0gPDI0MDAwMDAwPjsKPiAJCWNsb2NrcyA9 IDwmY2xrcyBJTVg1X0NMS19DS08yPjsKPiAJCWFzc2lnbmVkLWNsb2NrcyA9IDwmY2xrcyBJTVg1 X0NMS19DS08yX1NFTD4sIDwmY2xrcyBJTVg1X0NMS19PU0M+Owo+IAkJYXNzaWduZWQtY2xvY2st cGFyZW50cyA9IDwmY2xrcyBJTVg1X0NMS19PU0M+Owo+IAl9Owo+IAo+IAl1c2JwaHkzOiB1c2Jw aHkzIHsKPiAJCWNvbXBhdGlibGUgPSAidXNiLW5vcC14Y2VpdiI7Cj4gCQlyZXNldC1ncGlvcyA9 IDwmZ3BpbzIgMTkgR1BJT19BQ1RJVkVfTE9XPjsKPiAJCWNsb2NrLW5hbWVzID0gIm1haW5fY2xr IjsKPiAKPiAJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47Cj4gCQljbG9ja3MgPSA8JmNs a3MgSU1YNV9DTEtfQ0tPMj47Cj4gCQlhc3NpZ25lZC1jbG9ja3MgPSA8JmNsa3MgSU1YNV9DTEtf Q0tPMl9TRUw+LCA8JmNsa3MgSU1YNV9DTEtfT1NDPjsKPiAJCWFzc2lnbmVkLWNsb2NrLXBhcmVu dHMgPSA8JmNsa3MgSU1YNV9DTEtfT1NDPjsKPiAJfTsKPiAKPiBTbyBjdXJyZW50bHkgdGhlIG1h Y2hpbmUgb25seSB1c2VzIGRyaXZlcnMvdXNiL3BoeS9waHktZ2VuZXJpYy5jLiBCb3RoCj4gVVNC IHBoeXMgYXJlIGFjdHVhbGx5IFNNU0MgVVNCMzMxNSwgd2hpY2ggaXMgYWxzbyBkZXRlY3RlZCBi eSB0aGUga2VybmVsOgo+IAo+IHJvb3RAY3Ntb24gOn4jIGNhdCAvc3lzL2J1cy91bHBpL2Rldmlj ZXMvY2lfaGRyYy4qLnVscGkvdWV2ZW50IAo+IERFVlRZUEU9dWxwaV9kZXZpY2UKPiBNT0RBTElB Uz11bHBpOnYwNDI0cDAwMDYKPiBERVZUWVBFPXVscGlfZGV2aWNlCj4gTU9EQUxJQVM9dWxwaTp2 MDQyNHAwMDA2Cj4gCj4gU28gbWF5YmUgZHJpdmVycy91c2IvcGh5L3BoeS11bHBpLmMgc2hvdWxk IGJlIHVzZWQsIGJ1dCBJIGRvbid0IHNlZQo+IGEgc2ltcGxlIHdheSB0byBkbyBzbyBhbmQgdXNp bmcgdGhlIGdlbmVyaWMgUEhZIHdvcmtzLgo+IAoKSXQgaXMgY29ycmVjdCB5b3UgdXNlIHBoeS1n ZW5lcmljLmMgaWYgaXQgY2FuIGxldCB5b3VyIGRlc2lnbgp3b3JrLCB0aGFua3MuCg==