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=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 061F0C432BE for ; Tue, 24 Aug 2021 06:38:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CF97F61265 for ; Tue, 24 Aug 2021 06:38:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231358AbhHXGjU (ORCPT ); Tue, 24 Aug 2021 02:39:20 -0400 Received: from mail.thorsis.com ([92.198.35.195]:38898 "EHLO mail.thorsis.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231401AbhHXGjM (ORCPT ); Tue, 24 Aug 2021 02:39:12 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.thorsis.com (Postfix) with ESMTP id 19950ECC; Tue, 24 Aug 2021 08:38:27 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.thorsis.com Received: from mail.thorsis.com ([127.0.0.1]) by localhost (mail.thorsis.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id q-l84O7cbou0; Tue, 24 Aug 2021 08:38:27 +0200 (CEST) Received: by mail.thorsis.com (Postfix, from userid 109) id 85C50D17; Tue, 24 Aug 2021 08:38:24 +0200 (CEST) Received: from adahl by ada.ifak-system.com with local (Exim 4.92) (envelope-from ) id 1mIQ3S-0006PM-Pe; Tue, 24 Aug 2021 08:37:02 +0200 From: Alexander Dahl To: linux-usb@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, Alan Stern , Greg Kroah-Hartman , Nicolas Ferre , Alexandre Belloni , Ludovic Desroches , linux-kernel@vger.kernel.org Subject: [RFC PATCH] USB: host: ehci-atmel: Allow enabling HSIC on SAMA5D2 Date: Tue, 24 Aug 2021 08:37:02 +0200 Message-Id: <20210824063702.24586-1-ada@thorsis.com> In-Reply-To: <20210823140052.GA120849@rowland.harvard.edu> References: <20210823140052.GA120849@rowland.harvard.edu> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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 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=-14.5 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,SPF_HELO_NONE,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 2FCC7C4338F for ; Tue, 24 Aug 2021 06:40:46 +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 F0F1B611CB for ; Tue, 24 Aug 2021 06:40:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org F0F1B611CB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=thorsis.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-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=Apd9Pk8So1pl5SGLMW5lLdOCVdet9BXmzxPbnRt1ViI=; b=hDuAmu8ClCCaoE1SVmeUtQZi/O veijvfCgXoYeN/K1U8MarYC5BkZhKrWobXC7eB1kLr1TJHmF+T90s+Ju3KapuYvj4HA/E+gUzO8Hl MPi1qAtrGqFzwAHE268eYHzhSofO7fZ+EOC5e35ozKfSdoS1Ju2zIWjS7cjs/wDMADPSRrnUPOVb/ 2/jIQ6ND4Pt0PP+hmX+dWkYx733wfg//UuS7N4VxTK02j3NEu8MkzbCut6GxZxXXcIdBU9YazcPBc WdlgQLfRjgXSGGvKl11bgOraD9Gg6KOjlwsT8UHLw0WJtK5SEZX5d5D/nhzKOczAPbEXPBcklki4Y N8liDeNQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIQ51-001tUJ-Fv; Tue, 24 Aug 2021 06:38:39 +0000 Received: from mail.thorsis.com ([92.198.35.195]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mIQ4u-001tTE-Bk for linux-arm-kernel@lists.infradead.org; Tue, 24 Aug 2021 06:38:36 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.thorsis.com (Postfix) with ESMTP id 42572F07 for ; Tue, 24 Aug 2021 08:38:27 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mail.thorsis.com Received: from mail.thorsis.com ([127.0.0.1]) by localhost (mail.thorsis.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id praITddhgP4u for ; Tue, 24 Aug 2021 08:38:27 +0200 (CEST) Received: by mail.thorsis.com (Postfix, from userid 109) id E5052EF3; Tue, 24 Aug 2021 08:38:24 +0200 (CEST) Received: from adahl by ada.ifak-system.com with local (Exim 4.92) (envelope-from ) id 1mIQ3S-0006PM-Pe; Tue, 24 Aug 2021 08:37:02 +0200 From: Alexander Dahl To: linux-usb@vger.kernel.org Subject: [RFC PATCH] USB: host: ehci-atmel: Allow enabling HSIC on SAMA5D2 Date: Tue, 24 Aug 2021 08:37:02 +0200 Message-Id: <20210824063702.24586-1-ada@thorsis.com> In-Reply-To: <20210823140052.GA120849@rowland.harvard.edu> References: <20210823140052.GA120849@rowland.harvard.edu> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210823_233832_771025_7D5CEE0D X-CRM114-Status: GOOD ( 25.45 ) 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: , Cc: Alexandre Belloni , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, Ludovic Desroches , Alan Stern , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VW5saWtlIG90aGVyIFNvQyBzZXJpZXMgZmVhdHVyaW5nIHRoZSAnYXRtZWwsYXQ5MXNhbTlnNDUt ZWhjaScgVVNCIEVIQ0kKY29udHJvbGxlciwgd2hpY2ggaGF2ZSBlbWJlZGRlZCBVU0IgaGlnaC1z cGVlZCB0cmFuc2NlaXZlcnMgZm9yIGVhY2gKcG9ydCwgdGhlIHRoaXJkIHBvcnQgb24gdGhlIFNB TUE1RDIgc2VyaWVzIGlzIEhTSUMgb25seS4gIFRoYXQgSFNJQwppbnRlcmZhY2UgaXMgbm90IGVu YWJsZWQgYWZ0ZXIgYSBwb3dlci1vbiByZXNldCwgYnV0IGNhbiBiZSBlbmFibGVkIGJ5CnNldHRp bmcgYSBmbGFnIGluIGEgdmVuZG9yIHNwZWNpZmljIEVIQ0kgcmVnaXN0ZXIuCgpUaGUgcmVnaXN0 ZXIgb2Zmc2V0cyBhZGRlZCB0byB0aGUgbmV3IGhlYWRlciBmaWxlIHdlcmUgY29tcGFyZWQgd2l0 aAp0aG9zZSBmb3IgdGhlIFNBTTlHNDUsIFNBTTlYMjUsIFNBTUE1RDMsIFNBTUE1RDQsIGFuZCBT QU05WDYwIHNlcmllcyBhbmQKdGhlcmUgYXJlIG5vIGRpZmZlcmVuY2VzIGluIHRoZSBvZmZzZXRz IG9yIGNvbnRlbnRzIG9mIHRob3NlIHJlZ2lzdGVycy4KV2hpY2ggb2YgdGhvc2UgYWRkaXRpb25h bCB2ZW5kb3Igc3BlY2lmaWMgcmVnaXN0ZXJzIGFyZSBzdXBwb3J0ZWQsCmRpZmZlcnMgYnkgU29D IGZhbWlseS4gIFNvIHdoaWxlIHRoZSBIU0lDIGVuYWJsZSBmZWF0dXJlIGlzIGN1cnJlbnRseQpv bmx5IHByZXNlbnQgZm9yIFNBTUE1RDIsIGl0IHByb2JhYmx5IGRvZXMgbm90IGh1cnQgdG8gc2V0 IGl0IG9uIHRoZQpvdGhlciBmYW1pbGllcywgaGVuY2Ugbm8gYWRkaXRpb25hbCBjaGVjayBmb3Ig U29DIGZhbWlseSBoZXJlLgoKVGVzdGVkIG9uIGEgY3VzdG9tIGJvYXJkIGZlYXR1cmluZyBhIFNB TUE1RDI3Qy1ENU0gU2lQIGNvbm5lY3RlZCB0byBhbgpVU0IzNTAzIGh1YiB3aXRoIGFuIHVwc3Ry ZWFtIEhTSUMgaW50ZXJmYWNlLgoKTGluazogaHR0cHM6Ly9jb21tdW5pdHkuYXRtZWwuY29tL2Zv cnVtL3NhbWE1ZDItdXNpbmctaHNpYy11bmRlci1saW51eApTaWduZWQtb2ZmLWJ5OiBBbGV4YW5k ZXIgRGFobCA8YWRhQHRob3JzaXMuY29tPgotLS0KCk5vdGVzOgogICAgLSBmb3IgaW50cm9kdWNp bmcgbmV3IGR0IGJpbmRpbmcsIHdvdWxkIGJlIG5pY2UgdG8gY29udmVydCBvbGQgb25lCiAgICAg IGZpcnN0LCBwcm9iYWJseSBuZWVkcyBzcGxpdCB1cCBhbmQgbXVsdGlwbGUgaXRlcmF0aW9uIHJl dmlldz8KICAgIC0gbmFtZSBvZiB0aGF0IG5ldyBkdCBwcm9wZXJ0eT8KICAgIC0gcmVnaXN0ZXIg ZGVmaW5pdGlvbnMgcHV0IHRvIGEgc2VwYXJhdGUgZmlsZSwgbGlrZQogICAgICAnZHJpdmVycy91 c2IvaG9zdC9laGNpLWZzbC5oJwogICAgLSB1bnN1cmUgd2hlcmUgZXhhY3RseSBpbiB0aGUgcHJv YmUgcHJvY2VzcyB0aGF0IHJlZ2lzdGVyIHdyaXRlIHNob3VsZAogICAgICBoYXBwZW4sIGRhdGFz aGVldCBnaXZlcyBubyBoaW50CiAgICAtIHNob3VsZCBzdXNwZW5kL3Jlc3VtZSBiZSBjb25zaWRl cmVkPwoKIGRyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5jIHwgMTcgKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5oIHwgMTkgKysrKysrKysrKysrKysrKysr KwogMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy91c2IvaG9zdC9laGNpLWF0bWVsLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9o b3N0L2VoY2ktYXRtZWwuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5jCmluZGV4IGU4 OTM0NjdkNjU5Yy4uZjhkOWU2ODZjMDgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2Vo Y2ktYXRtZWwuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXRtZWwuYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3VzYi9oY2QuaD4KIAogI2luY2x1ZGUgImVoY2kuaCIK KyNpbmNsdWRlICJlaGNpLWF0bWVsLmgiCiAKICNkZWZpbmUgRFJJVkVSX0RFU0MgIkVIQ0kgQXRt ZWwgZHJpdmVyIgogCkBAIC04NSw2ICs4Niw3IEBAIHN0YXRpYyB2b2lkIGF0bWVsX3N0b3BfZWhj aShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiBzdGF0aWMgaW50IGVoY2lfYXRtZWxf ZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CisJc3RydWN0IGRldmlj ZV9ub2RlICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOwogCXN0cnVjdCB1c2JfaGNkICpoY2Q7CiAJ Y29uc3Qgc3RydWN0IGhjX2RyaXZlciAqZHJpdmVyID0gJmVoY2lfYXRtZWxfaGNfZHJpdmVyOwog CXN0cnVjdCByZXNvdXJjZSAqcmVzOwpAQCAtMTQ5LDYgKzE1MSwxNCBAQCBzdGF0aWMgaW50IGVo Y2lfYXRtZWxfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIAlhdG1l bF9zdGFydF9laGNpKHBkZXYpOwogCisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfYm9vbChucCwgImF0 bWVsLGVuYWJsZS1oc2ljIikpIHsKKwkJdTMyIHRtcDsKKworCQl0bXAgPSBlaGNpX3JlYWRsKGVo Y2ksIGhjZC0+cmVncyArIEFUOTFfVUhQSFNfSU5TTlJFRzA4KTsKKwkJdG1wIHw9IEFUOTFfVUhQ SFNfSFNJQ19FTjsKKwkJZWhjaV93cml0ZWwoZWhjaSwgdG1wLCBoY2QtPnJlZ3MgKyBBVDkxX1VI UEhTX0lOU05SRUcwOCk7CisJfQorCiAJcmV0dmFsID0gdXNiX2FkZF9oY2QoaGNkLCBpcnEsIElS UUZfU0hBUkVEKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGZhaWxfYWRkX2hjZDsKQEAgLTE3MCwx MCArMTgwLDE3IEBAIHN0YXRpYyBpbnQgZWhjaV9hdG1lbF9kcnZfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIHN0YXRpYyBpbnQgZWhjaV9hdG1lbF9kcnZfcmVtb3ZlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CiAJc3RydWN0IHVzYl9oY2QgKmhjZCA9IHBsYXRm b3JtX2dldF9kcnZkYXRhKHBkZXYpOworCXN0cnVjdCBlaGNpX2hjZCAqZWhjaTsKKwl1MzIgdG1w OwogCiAJdXNiX3JlbW92ZV9oY2QoaGNkKTsKIAl1c2JfcHV0X2hjZChoY2QpOwogCisJZWhjaSA9 IGhjZF90b19laGNpKGhjZCk7CisJdG1wID0gZWhjaV9yZWFkbChlaGNpLCBoY2QtPnJlZ3MgKyBB VDkxX1VIUEhTX0lOU05SRUcwOCk7CisJdG1wICY9IH5BVDkxX1VIUEhTX0hTSUNfRU47CisJZWhj aV93cml0ZWwoZWhjaSwgdG1wLCBoY2QtPnJlZ3MgKyBBVDkxX1VIUEhTX0lOU05SRUcwOCk7CisK IAlhdG1lbF9zdG9wX2VoY2kocGRldik7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2hvc3QvZWhjaS1hdG1lbC5oIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLWF0bWVsLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40YzQ5OThjMmE2ZGQKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktYXRtZWwuaApAQCAtMCwwICsx LDE5IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLworLyoKKyAqIFZl bmRvciBzcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgRUhDSSBvbiBBdG1lbC9NaWNyb2NoaXAgU29D cy4KKyAqCisgKiDCqSAyMDIxIEFsZXhhbmRlciBEYWhsIDxhZGFAdGhvcnNpcy5jb20+CisgKi8K KyNpZm5kZWYgRUhDSV9BVE1FTF9ICisjZGVmaW5lIEVIQ0lfQVRNRUxfSAorCisvKiBkZXZpY2Ug c3BlY2lmaWMgcmVnaXN0ZXIgb2Zmc2V0cywgdGFrZW4gZnJvbSBTQU1BNUQyIGRhdGFzaGVldCAq LworCisjZGVmaW5lIEFUOTFfVUhQSFNfSU5TTlJFRzA2ICAgIDB4QTggICAgICAgIC8qIEFIQiBF cnJvciBTdGF0dXMgUmVnaXN0ZXIgKi8KKworI2RlZmluZSBBVDkxX1VIUEhTX0lOU05SRUcwNyAg ICAweEFDICAgICAgICAvKiBBSEIgTWFzdGVyIEVycm9yIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKwor I2RlZmluZSBBVDkxX1VIUEhTX0lOU05SRUcwOCAgICAweEIwICAgICAgICAvKiBIU0lDIEVuYWJs ZS9EaXNhYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEFUOTFfVUhQSFNfSFNJQ19FTiAgICAgICgx IDw8IDIpICAgIC8qIEhTSUMgRW5hYmxlL0Rpc2FibGUgKi8KKworI2VuZGlmIC8qIEVDSElfQVRN RUxfSCAqLwoKYmFzZS1jb21taXQ6IGUyMmNlOGViNjMxYmRjNDdhNGE0ZWE3ZWNmNGU0YmE0OTlk YjRmOTMKLS0gCjIuMzAuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK