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=-22.3 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable 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 9531EC4320E for ; Thu, 2 Sep 2021 15:33:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 75373610FA for ; Thu, 2 Sep 2021 15:33:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345868AbhIBPey (ORCPT ); Thu, 2 Sep 2021 11:34:54 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:14598 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234465AbhIBPex (ORCPT ); Thu, 2 Sep 2021 11:34:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1630596835; x=1662132835; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=JgfkoEk3Oz6MBOFRBUywRBWEVqLOfJf+ZwZeo5Ek0e4=; b=b09ppBHVaKA6QtyGvz5q0a48aZXL7hzJ37IsJA7bKr10lgIPaSS40mk+ QWrV3tEOlYIWpej0sJpTtEeGOZ02LIOm83cZeP+q0tmWL1M1J20VcP7Nx lB/Im6DR0lDM0vLqrXX/T7GksWUyMwq09BZ0/mLQ+s3MZ+qHCTXaXPty4 EaV0BgeOltMGpQJoDD9hE3VgTbV12kvjNXMlCBfEwa5n0epaSe+OR2gAL 80nJCitXl+b7hWJUuOQ5JoUQbc1BfZ7hOUX/mJ0MPmmcdu1hv0NtfjXD+ kwwoegSbQMNQKHwKCy36rDIR0j8Pa/pesn2Q34mthLcOQq6g3hFPqe7Gg A==; IronPort-SDR: uBNR4d0uI22mXVpRuiFV8FuOxkLrawOgjTw7WzE5wy1aedemhj4n6evph02MxbpLsDgEakiAsz qTBV502NWvCUDS6lauJQv+fkM1ZgG1j2VxAC2L2zhgxbaab0yyDTByRl3W30e1r8fOVde5yrn3 n/L8eChOvKD35dmrSIPctv4qfLXlBA11Ip789tusDRE16Ed4PGl18aD52zCCSqlIOwoC76huf8 Zh55nakHpog4s8fpjNjurR57GT9wVMb9e8aKVk0DS+r+WezeD03Q2TrOdwIujfyJS6pOIOgfIY lwPdCZcY8l/ZjnQo1CHSHqUX X-IronPort-AV: E=Sophos;i="5.85,262,1624345200"; d="scan'208";a="130512848" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 02 Sep 2021 08:33:53 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Thu, 2 Sep 2021 08:33:53 -0700 Received: from [10.12.72.121] (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2176.14 via Frontend Transport; Thu, 2 Sep 2021 08:33:51 -0700 Subject: Re: [RFC PATCH] USB: host: ehci-atmel: Allow enabling HSIC on SAMA5D2 To: Alexander Dahl , Alan Stern , , Cristian Birsan CC: , Greg Kroah-Hartman , Alexandre Belloni , Ludovic Desroches , References: <20210823140052.GA120849@rowland.harvard.edu> <20210824063702.24586-1-ada@thorsis.com> From: Nicolas Ferre Organization: microchip Message-ID: <7c3d1248-b708-68f9-a76a-712e345b8218@microchip.com> Date: Thu, 2 Sep 2021 17:33:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210824063702.24586-1-ada@thorsis.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Alexander, On 24/08/2021 at 08:37, Alexander Dahl wrote: > Unlike other SoC series featuring the 'atmel,at91sam9g45-ehci' USB EHCI > controller, which have embedded USB high-speed transceivers for each > port, the third port on the SAMA5D2 series is HSIC only. That HSIC > interface is not enabled after a power-on reset, but can be enabled by > setting a flag in a vendor specific EHCI register. > > The register offsets added to the new header file were compared with > those for the SAM9G45, SAM9X25, SAMA5D3, SAMA5D4, and SAM9X60 series and > there are no differences in the offsets or contents of those registers. > Which of those additional vendor specific registers are supported, > differs by SoC family. So while the HSIC enable feature is currently > only present for SAMA5D2, it probably does not hurt to set it on the > other families, hence no additional check for SoC family here. > > Tested on a custom board featuring a SAMA5D27C-D5M SiP connected to an > USB3503 hub with an upstream HSIC interface. > > Link: https://community.atmel.com/forum/sama5d2-using-hsic-under-linux > Signed-off-by: Alexander Dahl Sorry for not having coming back to you earlier, summertime... What you are looking for is what Cristian developed in our "vendor tree" and that needs to be "Mainlined": https://github.com/linux4sam/linux-at91/commit/ca368f544899c14b03df9ce7510684f03acf1bf9 It allows us to have a gigabit Ethernet HSIC connected on our sama5d2 ICP board. It works well for some time. For DT, we rely on the standard "phy_type" property set to "hsic" as highlighted in this DT node on the ICP board precisely: https://github.com/linux4sam/linux-at91/blob/master/arch/arm/boot/dts/at91-sama5d2_icp.dts#L766 This way we can use the of_usb_get_phy_mode() standard function: https://github.com/linux4sam/linux-at91/blob/master/drivers/usb/phy/of.c#L28 All this tells me that I would prefer Cristi's approach. If agreed, we'll make sure to make progress on the mainlining part soon. Hope that it helps. Best regards, Nicolas > --- > > Notes: > - for introducing new dt binding, would be nice to convert old one > first, probably needs split up and multiple iteration review? > - name of that new dt property? > - register definitions put to a separate file, like > 'drivers/usb/host/ehci-fsl.h' > - unsure where exactly in the probe process that register write should > happen, datasheet gives no hint > - should suspend/resume be considered? > > drivers/usb/host/ehci-atmel.c | 17 +++++++++++++++++ > drivers/usb/host/ehci-atmel.h | 19 +++++++++++++++++++ > 2 files changed, 36 insertions(+) > create mode 100644 drivers/usb/host/ehci-atmel.h > > diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c > index e893467d659c..f8d9e686c082 100644 > --- a/drivers/usb/host/ehci-atmel.c > +++ b/drivers/usb/host/ehci-atmel.c > @@ -20,6 +20,7 @@ > #include > > #include "ehci.h" > +#include "ehci-atmel.h" > > #define DRIVER_DESC "EHCI Atmel driver" > > @@ -85,6 +86,7 @@ static void atmel_stop_ehci(struct platform_device *pdev) > > static int ehci_atmel_drv_probe(struct platform_device *pdev) > { > + struct device_node *np = pdev->dev.of_node; > struct usb_hcd *hcd; > const struct hc_driver *driver = &ehci_atmel_hc_driver; > struct resource *res; > @@ -149,6 +151,14 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev) > > atmel_start_ehci(pdev); > > + if (of_property_read_bool(np, "atmel,enable-hsic")) { > + u32 tmp; > + > + tmp = ehci_readl(ehci, hcd->regs + AT91_UHPHS_INSNREG08); > + tmp |= AT91_UHPHS_HSIC_EN; > + ehci_writel(ehci, tmp, hcd->regs + AT91_UHPHS_INSNREG08); > + } > + > retval = usb_add_hcd(hcd, irq, IRQF_SHARED); > if (retval) > goto fail_add_hcd; > @@ -170,10 +180,17 @@ static int ehci_atmel_drv_probe(struct platform_device *pdev) > static int ehci_atmel_drv_remove(struct platform_device *pdev) > { > struct usb_hcd *hcd = platform_get_drvdata(pdev); > + struct ehci_hcd *ehci; > + u32 tmp; > > usb_remove_hcd(hcd); > usb_put_hcd(hcd); > > + ehci = hcd_to_ehci(hcd); > + tmp = ehci_readl(ehci, hcd->regs + AT91_UHPHS_INSNREG08); > + tmp &= ~AT91_UHPHS_HSIC_EN; > + ehci_writel(ehci, tmp, hcd->regs + AT91_UHPHS_INSNREG08); > + > atmel_stop_ehci(pdev); > > return 0; > diff --git a/drivers/usb/host/ehci-atmel.h b/drivers/usb/host/ehci-atmel.h > new file mode 100644 > index 000000000000..4c4998c2a6dd > --- /dev/null > +++ b/drivers/usb/host/ehci-atmel.h > @@ -0,0 +1,19 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Vendor specific definitions for EHCI on Atmel/Microchip SoCs. > + * > + * © 2021 Alexander Dahl > + */ > +#ifndef EHCI_ATMEL_H > +#define EHCI_ATMEL_H > + > +/* device specific register offsets, taken from SAMA5D2 datasheet */ > + > +#define AT91_UHPHS_INSNREG06 0xA8 /* AHB Error Status Register */ > + > +#define AT91_UHPHS_INSNREG07 0xAC /* AHB Master Error Address Register */ > + > +#define AT91_UHPHS_INSNREG08 0xB0 /* HSIC Enable/Disable Register */ > +#define AT91_UHPHS_HSIC_EN (1 << 2) /* HSIC Enable/Disable */ > + > +#endif /* ECHI_ATMEL_H */ > > base-commit: e22ce8eb631bdc47a4a4ea7ecf4e4ba499db4f93 > -- > 2.30.2 > -- Nicolas Ferre 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=-22.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 63DFBC432BE for ; Thu, 2 Sep 2021 15:37:02 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2575860F91 for ; Thu, 2 Sep 2021 15:37:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2575860F91 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=microchip.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:CC:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Izm7kKRQy8iPZNExCcpYA9TaRIkw+3GUfX729hwieEg=; b=kAk4NwceY6rjBArafsAiJ1w2Qd 06eJJax8w0tPQbxmu42k8djyXMHI6dPwORuTy6Wa3a8d8mt2VvDoIMV6mRkCuBhQ60R+mGHRhTMMy Ikt4hhcnbFpAxvZhpe+pEGw14JsTp2OPco/bdR7mqqNvsMbLMoiMJBfi/THAErPZFlCwgWIjiE67Q b7oclE8ccLNr327sArAS5HOJhyE7YuA9Z+r0xZRtwE0foRVbYFyRNrV6gXCKJq+h+DlyTwDwYVwRI 6+rRdLdh9QC3Ovye0M7DJCG6Zkg34KgX+D0iaifjFNrQ8W9agsEj0eQ9772BJxsjDtFcdRBNa328G 9SP0oiUg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mLoj7-009uWM-6f; Thu, 02 Sep 2021 15:34:05 +0000 Received: from esa.microchip.iphmx.com ([68.232.154.123]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mLoiz-009uU8-NZ for linux-arm-kernel@lists.infradead.org; Thu, 02 Sep 2021 15:34:02 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1630596837; x=1662132837; h=subject:to:cc:references:from:message-id:date: mime-version:in-reply-to:content-transfer-encoding; bh=JgfkoEk3Oz6MBOFRBUywRBWEVqLOfJf+ZwZeo5Ek0e4=; b=OAo3OvL+Gv0Sre1Ky9lcOnQSYG9iZESBj6YIWL/AVoQ6YNI5o9GLfjbl 0/ut6wh5U5sFQOlN5zpD16mbvGRyBv1bCMbldS9UCHSO8x3VMsI4dxJWB oOqxPB2DlfdzbGC09w0HfxOYrK/wrrQ0Xb8k0ORrVTkwj+dWEkQp3yHYQ nAJhBmNzpJS+/a4tFp/sC6iaYY1xBHOF0DC53rSxDFcH4thn7e39vR/ib xVqvjrpQNYO6i9GHIzDJwWlZNKnukvp8XkxvfUs1KpBxBRKu0VPvwsRpp EjAqeJVJh/PWg51jW6GX0/yH4mfuzgkf/I4E3pHE1NwlLfUWWjhxTRbsO w==; IronPort-SDR: uBNR4d0uI22mXVpRuiFV8FuOxkLrawOgjTw7WzE5wy1aedemhj4n6evph02MxbpLsDgEakiAsz qTBV502NWvCUDS6lauJQv+fkM1ZgG1j2VxAC2L2zhgxbaab0yyDTByRl3W30e1r8fOVde5yrn3 n/L8eChOvKD35dmrSIPctv4qfLXlBA11Ip789tusDRE16Ed4PGl18aD52zCCSqlIOwoC76huf8 Zh55nakHpog4s8fpjNjurR57GT9wVMb9e8aKVk0DS+r+WezeD03Q2TrOdwIujfyJS6pOIOgfIY lwPdCZcY8l/ZjnQo1CHSHqUX X-IronPort-AV: E=Sophos;i="5.85,262,1624345200"; d="scan'208";a="130512848" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 02 Sep 2021 08:33:53 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Thu, 2 Sep 2021 08:33:53 -0700 Received: from [10.12.72.121] (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2176.14 via Frontend Transport; Thu, 2 Sep 2021 08:33:51 -0700 Subject: Re: [RFC PATCH] USB: host: ehci-atmel: Allow enabling HSIC on SAMA5D2 To: Alexander Dahl , Alan Stern , , Cristian Birsan CC: , Greg Kroah-Hartman , Alexandre Belloni , Ludovic Desroches , References: <20210823140052.GA120849@rowland.harvard.edu> <20210824063702.24586-1-ada@thorsis.com> From: Nicolas Ferre Organization: microchip Message-ID: <7c3d1248-b708-68f9-a76a-712e345b8218@microchip.com> Date: Thu, 2 Sep 2021 17:33:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210824063702.24586-1-ada@thorsis.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210902_083357_880810_FEEF27AA X-CRM114-Status: GOOD ( 35.59 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQWxleGFuZGVyLAoKT24gMjQvMDgvMjAyMSBhdCAwODozNywgQWxleGFuZGVyIERhaGwgd3Jv dGU6Cj4gVW5saWtlIG90aGVyIFNvQyBzZXJpZXMgZmVhdHVyaW5nIHRoZSAnYXRtZWwsYXQ5MXNh bTlnNDUtZWhjaScgVVNCIEVIQ0kKPiBjb250cm9sbGVyLCB3aGljaCBoYXZlIGVtYmVkZGVkIFVT QiBoaWdoLXNwZWVkIHRyYW5zY2VpdmVycyBmb3IgZWFjaAo+IHBvcnQsIHRoZSB0aGlyZCBwb3J0 IG9uIHRoZSBTQU1BNUQyIHNlcmllcyBpcyBIU0lDIG9ubHkuICBUaGF0IEhTSUMKPiBpbnRlcmZh Y2UgaXMgbm90IGVuYWJsZWQgYWZ0ZXIgYSBwb3dlci1vbiByZXNldCwgYnV0IGNhbiBiZSBlbmFi bGVkIGJ5Cj4gc2V0dGluZyBhIGZsYWcgaW4gYSB2ZW5kb3Igc3BlY2lmaWMgRUhDSSByZWdpc3Rl ci4KPiAKPiBUaGUgcmVnaXN0ZXIgb2Zmc2V0cyBhZGRlZCB0byB0aGUgbmV3IGhlYWRlciBmaWxl IHdlcmUgY29tcGFyZWQgd2l0aAo+IHRob3NlIGZvciB0aGUgU0FNOUc0NSwgU0FNOVgyNSwgU0FN QTVEMywgU0FNQTVENCwgYW5kIFNBTTlYNjAgc2VyaWVzIGFuZAo+IHRoZXJlIGFyZSBubyBkaWZm ZXJlbmNlcyBpbiB0aGUgb2Zmc2V0cyBvciBjb250ZW50cyBvZiB0aG9zZSByZWdpc3RlcnMuCj4g V2hpY2ggb2YgdGhvc2UgYWRkaXRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgcmVnaXN0ZXJzIGFyZSBz dXBwb3J0ZWQsCj4gZGlmZmVycyBieSBTb0MgZmFtaWx5LiAgU28gd2hpbGUgdGhlIEhTSUMgZW5h YmxlIGZlYXR1cmUgaXMgY3VycmVudGx5Cj4gb25seSBwcmVzZW50IGZvciBTQU1BNUQyLCBpdCBw cm9iYWJseSBkb2VzIG5vdCBodXJ0IHRvIHNldCBpdCBvbiB0aGUKPiBvdGhlciBmYW1pbGllcywg aGVuY2Ugbm8gYWRkaXRpb25hbCBjaGVjayBmb3IgU29DIGZhbWlseSBoZXJlLgo+IAo+IFRlc3Rl ZCBvbiBhIGN1c3RvbSBib2FyZCBmZWF0dXJpbmcgYSBTQU1BNUQyN0MtRDVNIFNpUCBjb25uZWN0 ZWQgdG8gYW4KPiBVU0IzNTAzIGh1YiB3aXRoIGFuIHVwc3RyZWFtIEhTSUMgaW50ZXJmYWNlLgo+ IAo+IExpbms6IGh0dHBzOi8vY29tbXVuaXR5LmF0bWVsLmNvbS9mb3J1bS9zYW1hNWQyLXVzaW5n LWhzaWMtdW5kZXItbGludXgKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgRGFobCA8YWRhQHRo b3JzaXMuY29tPgoKU29ycnkgZm9yIG5vdCBoYXZpbmcgY29taW5nIGJhY2sgdG8geW91IGVhcmxp ZXIsIHN1bW1lcnRpbWUuLi4KCldoYXQgeW91IGFyZSBsb29raW5nIGZvciBpcyB3aGF0IENyaXN0 aWFuIGRldmVsb3BlZCBpbiBvdXIgInZlbmRvciB0cmVlIiAKYW5kIHRoYXQgbmVlZHMgdG8gYmUg Ik1haW5saW5lZCI6Cmh0dHBzOi8vZ2l0aHViLmNvbS9saW51eDRzYW0vbGludXgtYXQ5MS9jb21t aXQvY2EzNjhmNTQ0ODk5YzE0YjAzZGY5Y2U3NTEwNjg0ZjAzYWNmMWJmOQoKSXQgYWxsb3dzIHVz IHRvIGhhdmUgYSBnaWdhYml0IEV0aGVybmV0IEhTSUMgY29ubmVjdGVkIG9uIG91ciBzYW1hNWQy IApJQ1AgYm9hcmQuIEl0IHdvcmtzIHdlbGwgZm9yIHNvbWUgdGltZS4KCkZvciBEVCwgd2UgcmVs eSBvbiB0aGUgc3RhbmRhcmQgInBoeV90eXBlIiBwcm9wZXJ0eSBzZXQgdG8gImhzaWMiIGFzIApo aWdobGlnaHRlZCBpbiB0aGlzIERUIG5vZGUgb24gdGhlIElDUCBib2FyZCBwcmVjaXNlbHk6Cmh0 dHBzOi8vZ2l0aHViLmNvbS9saW51eDRzYW0vbGludXgtYXQ5MS9ibG9iL21hc3Rlci9hcmNoL2Fy bS9ib290L2R0cy9hdDkxLXNhbWE1ZDJfaWNwLmR0cyNMNzY2CgpUaGlzIHdheSB3ZSBjYW4gdXNl IHRoZSBvZl91c2JfZ2V0X3BoeV9tb2RlKCkgc3RhbmRhcmQgZnVuY3Rpb246Cmh0dHBzOi8vZ2l0 aHViLmNvbS9saW51eDRzYW0vbGludXgtYXQ5MS9ibG9iL21hc3Rlci9kcml2ZXJzL3VzYi9waHkv b2YuYyNMMjgKCkFsbCB0aGlzIHRlbGxzIG1lIHRoYXQgSSB3b3VsZCBwcmVmZXIgQ3Jpc3RpJ3Mg YXBwcm9hY2guIElmIGFncmVlZCwgCndlJ2xsIG1ha2Ugc3VyZSB0byBtYWtlIHByb2dyZXNzIG9u IHRoZSBtYWlubGluaW5nIHBhcnQgc29vbi4KCkhvcGUgdGhhdCBpdCBoZWxwcy4gQmVzdCByZWdh cmRzLAogICBOaWNvbGFzCgo+IC0tLQo+IAo+IE5vdGVzOgo+ICAgICAgLSBmb3IgaW50cm9kdWNp bmcgbmV3IGR0IGJpbmRpbmcsIHdvdWxkIGJlIG5pY2UgdG8gY29udmVydCBvbGQgb25lCj4gICAg ICAgIGZpcnN0LCBwcm9iYWJseSBuZWVkcyBzcGxpdCB1cCBhbmQgbXVsdGlwbGUgaXRlcmF0aW9u IHJldmlldz8KPiAgICAgIC0gbmFtZSBvZiB0aGF0IG5ldyBkdCBwcm9wZXJ0eT8KPiAgICAgIC0g cmVnaXN0ZXIgZGVmaW5pdGlvbnMgcHV0IHRvIGEgc2VwYXJhdGUgZmlsZSwgbGlrZQo+ICAgICAg ICAnZHJpdmVycy91c2IvaG9zdC9laGNpLWZzbC5oJwo+ICAgICAgLSB1bnN1cmUgd2hlcmUgZXhh Y3RseSBpbiB0aGUgcHJvYmUgcHJvY2VzcyB0aGF0IHJlZ2lzdGVyIHdyaXRlIHNob3VsZAo+ICAg ICAgICBoYXBwZW4sIGRhdGFzaGVldCBnaXZlcyBubyBoaW50Cj4gICAgICAtIHNob3VsZCBzdXNw ZW5kL3Jlc3VtZSBiZSBjb25zaWRlcmVkPwo+IAo+ICAgZHJpdmVycy91c2IvaG9zdC9laGNpLWF0 bWVsLmMgfCAxNyArKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy91c2IvaG9zdC9laGNpLWF0 bWVsLmggfCAxOSArKysrKysrKysrKysrKysrKysrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDM2IGlu c2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3VzYi9ob3N0L2VoY2kt YXRtZWwuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXRtZWwuYyBi L2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5jCj4gaW5kZXggZTg5MzQ2N2Q2NTljLi5mOGQ5 ZTY4NmMwODIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvaG9zdC9laGNpLWF0bWVsLmMKPiAr KysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXRtZWwuYwo+IEBAIC0yMCw2ICsyMCw3IEBACj4g ICAjaW5jbHVkZSA8bGludXgvdXNiL2hjZC5oPgo+IAo+ICAgI2luY2x1ZGUgImVoY2kuaCIKPiAr I2luY2x1ZGUgImVoY2ktYXRtZWwuaCIKPiAKPiAgICNkZWZpbmUgRFJJVkVSX0RFU0MgIkVIQ0kg QXRtZWwgZHJpdmVyIgo+IAo+IEBAIC04NSw2ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGF0bWVsX3N0 b3BfZWhjaShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+IAo+ICAgc3RhdGljIGludCBl aGNpX2F0bWVsX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAgewo+ ICsgICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOwo+ICAg ICAgICAgIHN0cnVjdCB1c2JfaGNkICpoY2Q7Cj4gICAgICAgICAgY29uc3Qgc3RydWN0IGhjX2Ry aXZlciAqZHJpdmVyID0gJmVoY2lfYXRtZWxfaGNfZHJpdmVyOwo+ICAgICAgICAgIHN0cnVjdCBy ZXNvdXJjZSAqcmVzOwo+IEBAIC0xNDksNiArMTUxLDE0IEBAIHN0YXRpYyBpbnQgZWhjaV9hdG1l bF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAKPiAgICAgICAgICBh dG1lbF9zdGFydF9laGNpKHBkZXYpOwo+IAo+ICsgICAgICAgaWYgKG9mX3Byb3BlcnR5X3JlYWRf Ym9vbChucCwgImF0bWVsLGVuYWJsZS1oc2ljIikpIHsKPiArICAgICAgICAgICAgICAgdTMyIHRt cDsKPiArCj4gKyAgICAgICAgICAgICAgIHRtcCA9IGVoY2lfcmVhZGwoZWhjaSwgaGNkLT5yZWdz ICsgQVQ5MV9VSFBIU19JTlNOUkVHMDgpOwo+ICsgICAgICAgICAgICAgICB0bXAgfD0gQVQ5MV9V SFBIU19IU0lDX0VOOwo+ICsgICAgICAgICAgICAgICBlaGNpX3dyaXRlbChlaGNpLCB0bXAsIGhj ZC0+cmVncyArIEFUOTFfVUhQSFNfSU5TTlJFRzA4KTsKPiArICAgICAgIH0KPiArCj4gICAgICAg ICAgcmV0dmFsID0gdXNiX2FkZF9oY2QoaGNkLCBpcnEsIElSUUZfU0hBUkVEKTsKPiAgICAgICAg ICBpZiAocmV0dmFsKQo+ICAgICAgICAgICAgICAgICAgZ290byBmYWlsX2FkZF9oY2Q7Cj4gQEAg LTE3MCwxMCArMTgwLDE3IEBAIHN0YXRpYyBpbnQgZWhjaV9hdG1lbF9kcnZfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgIHN0YXRpYyBpbnQgZWhjaV9hdG1lbF9kcnZfcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gICB7Cj4gICAgICAgICAgc3RydWN0 IHVzYl9oY2QgKmhjZCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsgICAgICAgc3Ry dWN0IGVoY2lfaGNkICplaGNpOwo+ICsgICAgICAgdTMyIHRtcDsKPiAKPiAgICAgICAgICB1c2Jf cmVtb3ZlX2hjZChoY2QpOwo+ICAgICAgICAgIHVzYl9wdXRfaGNkKGhjZCk7Cj4gCj4gKyAgICAg ICBlaGNpID0gaGNkX3RvX2VoY2koaGNkKTsKPiArICAgICAgIHRtcCA9IGVoY2lfcmVhZGwoZWhj aSwgaGNkLT5yZWdzICsgQVQ5MV9VSFBIU19JTlNOUkVHMDgpOwo+ICsgICAgICAgdG1wICY9IH5B VDkxX1VIUEhTX0hTSUNfRU47Cj4gKyAgICAgICBlaGNpX3dyaXRlbChlaGNpLCB0bXAsIGhjZC0+ cmVncyArIEFUOTFfVUhQSFNfSU5TTlJFRzA4KTsKPiArCj4gICAgICAgICAgYXRtZWxfc3RvcF9l aGNpKHBkZXYpOwo+IAo+ICAgICAgICAgIHJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3VzYi9ob3N0L2VoY2ktYXRtZWwuaCBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5oCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjRjNDk5OGMyYTZkZAo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXRtZWwuaAo+IEBA IC0wLDAgKzEsMTkgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8K PiArLyoKPiArICogVmVuZG9yIHNwZWNpZmljIGRlZmluaXRpb25zIGZvciBFSENJIG9uIEF0bWVs L01pY3JvY2hpcCBTb0NzLgo+ICsgKgo+ICsgKiDCqSAyMDIxIEFsZXhhbmRlciBEYWhsIDxhZGFA dGhvcnNpcy5jb20+Cj4gKyAqLwo+ICsjaWZuZGVmIEVIQ0lfQVRNRUxfSAo+ICsjZGVmaW5lIEVI Q0lfQVRNRUxfSAo+ICsKPiArLyogZGV2aWNlIHNwZWNpZmljIHJlZ2lzdGVyIG9mZnNldHMsIHRh a2VuIGZyb20gU0FNQTVEMiBkYXRhc2hlZXQgKi8KPiArCj4gKyNkZWZpbmUgQVQ5MV9VSFBIU19J TlNOUkVHMDYgICAgMHhBOCAgICAgICAgLyogQUhCIEVycm9yIFN0YXR1cyBSZWdpc3RlciAqLwo+ ICsKPiArI2RlZmluZSBBVDkxX1VIUEhTX0lOU05SRUcwNyAgICAweEFDICAgICAgICAvKiBBSEIg TWFzdGVyIEVycm9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KPiArCj4gKyNkZWZpbmUgQVQ5MV9VSFBI U19JTlNOUkVHMDggICAgMHhCMCAgICAgICAgLyogSFNJQyBFbmFibGUvRGlzYWJsZSBSZWdpc3Rl ciAqLwo+ICsjZGVmaW5lIEFUOTFfVUhQSFNfSFNJQ19FTiAgICAgICgxIDw8IDIpICAgIC8qIEhT SUMgRW5hYmxlL0Rpc2FibGUgKi8KPiArCj4gKyNlbmRpZiAvKiBFQ0hJX0FUTUVMX0ggKi8KPiAK PiBiYXNlLWNvbW1pdDogZTIyY2U4ZWI2MzFiZGM0N2E0YTRlYTdlY2Y0ZTRiYTQ5OWRiNGY5Mwo+ IC0tCj4gMi4zMC4yCj4gCgoKLS0gCk5pY29sYXMgRmVycmUKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK