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=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 24176C1B0E3 for ; Thu, 10 Dec 2020 18:05:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E814C23E22 for ; Thu, 10 Dec 2020 18:05:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392606AbgLJSFa (ORCPT ); Thu, 10 Dec 2020 13:05:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391429AbgLJSFY (ORCPT ); Thu, 10 Dec 2020 13:05:24 -0500 Received: from mail-lj1-x241.google.com (mail-lj1-x241.google.com [IPv6:2a00:1450:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36778C061793; Thu, 10 Dec 2020 10:04:44 -0800 (PST) Received: by mail-lj1-x241.google.com with SMTP id b10so5398717ljp.6; Thu, 10 Dec 2020 10:04:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C2pscJBqzkM2zDI7JC2pNLpw87RIapi+iZ8V2MUxssg=; b=neIjQRqLRs8+RHrvKWzprlomtojZHDMDVa3OnL58IjT/RQP66axILI0xv1SLZPembe b6w6ji9JnkDciiztRW/o0rRDJIh+LlBPjPrgt89psKH0zuncU8zovy4f6Sp0wudHsopD AjedyzYbOUGZG+5CLICQVdUq/MNFeFNqqC0DyZma1tjkAKRpWSXvStnp7+SQ7/oRdiXg j0HWueI3Ns9vUFPmBfruzSY9PSYemn+zZ81Hg+LMvN+hjMtCB1lxSMTKFC92QoXxCvqN vt0pdcUHZMzKqNzEX05wKWMys3jA4eRpXnQQ0/QdVQdKukv1fAifhTBfZtg2KlTSBZMP ELdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C2pscJBqzkM2zDI7JC2pNLpw87RIapi+iZ8V2MUxssg=; b=dfhRlKRTTsVpIq8nlsBwImNVMwRdpyOwjFy3PXN5Yqbl0fjhATDWQGLc7X+LWZH/hO 2fFJqJ9zyGKmST9NaJla2PFHZp8eJRSQ3cHGdSfKki5N9Vs421KEk9hB4hDaOtTCFzTm jk8tt1k009CWDxHdeiw+B9XGY+P0j3jIWb9nfY7dUcdqeo/CmbP9sVIHoRdePzEJzrmZ vnnbyHjW/TI9fouACpRYf1s6MALUX+qJqxswm+pOOe94D/Zoh6qZ2sC2VWBRB+/ZHT06 B3GRglqSt0GSw3UqpNK7x++ScHFfDI8ALGth93In6BqVqb444Jp+d/lPsUSAL0/oQnoP 9Yww== X-Gm-Message-State: AOAM531hVGa1r8FBKpSPAbJ6KAj9388C3UTi+KePwOk8bv7hDIdAkkuL WQp7f8SRCBYM/RH9jCVelug= X-Google-Smtp-Source: ABdhPJw1BV90OYZi0tKInUs0nesy6tFd9q+9u63aIEriW/zyil4vnntrEVS+x9RYY4np1Vt9h9dKjw== X-Received: by 2002:a2e:8346:: with SMTP id l6mr3517312ljh.132.1607623482765; Thu, 10 Dec 2020 10:04:42 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id c136sm601855lfg.306.2020.12.10.10.04.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 10:04:42 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Lorenzo Pieralisi , Rob Herring Cc: Bjorn Helgaas , linux-pci@vger.kernel.org, devicetree@vger.kernel.org, Florian Fainelli , Nicolas Saenz Julienne , Philipp Zabel , linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= Subject: [PATCH v3 2/2] PCI: brcmstb: support BCM4908 with external PERST# signal controller Date: Thu, 10 Dec 2020 19:04:21 +0100 Message-Id: <20201210180421.7230-3-zajec5@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201210180421.7230-1-zajec5@gmail.com> References: <20201210180421.7230-1-zajec5@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Rafał Miłecki BCM4908 uses external MISC block for controlling PERST# signal. Use it as a reset controller. Signed-off-by: Rafał Miłecki Acked-by: Florian Fainelli --- V2: Reorder BCM4908 in the enum pcie_type Use devm_reset_control_get_optional_exclusive() Don't move hw_rev read up in the code --- drivers/pci/controller/Kconfig | 2 +- drivers/pci/controller/pcie-brcmstb.c | 32 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig index 64e2f5e379aa..d44c70bb88f6 100644 --- a/drivers/pci/controller/Kconfig +++ b/drivers/pci/controller/Kconfig @@ -273,7 +273,7 @@ config VMD config PCIE_BRCMSTB tristate "Broadcom Brcmstb PCIe host controller" - depends on ARCH_BRCMSTB || ARCH_BCM2835 || COMPILE_TEST + depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || COMPILE_TEST depends on OF depends on PCI_MSI_IRQ_DOMAIN default ARCH_BRCMSTB diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 9c3d2982248d..98536cf3af58 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -96,6 +96,7 @@ #define PCIE_MISC_REVISION 0x406c #define BRCM_PCIE_HW_REV_33 0x0303 +#define BRCM_PCIE_HW_REV_3_20 0x0320 #define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT 0x4070 #define PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_MASK 0xfff00000 @@ -190,6 +191,7 @@ struct brcm_pcie; static inline void brcm_pcie_bridge_sw_init_set_7278(struct brcm_pcie *pcie, u32 val); static inline void brcm_pcie_bridge_sw_init_set_generic(struct brcm_pcie *pcie, u32 val); +static inline void brcm_pcie_perst_set_4908(struct brcm_pcie *pcie, u32 val); static inline void brcm_pcie_perst_set_7278(struct brcm_pcie *pcie, u32 val); static inline void brcm_pcie_perst_set_generic(struct brcm_pcie *pcie, u32 val); @@ -206,6 +208,7 @@ enum { enum pcie_type { GENERIC, + BCM4908, BCM7278, BCM2711, }; @@ -230,6 +233,13 @@ static const struct pcie_cfg_data generic_cfg = { .bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic, }; +static const struct pcie_cfg_data bcm4908_cfg = { + .offsets = pcie_offsets, + .type = BCM4908, + .perst_set = brcm_pcie_perst_set_4908, + .bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic, +}; + static const int pcie_offset_bcm7278[] = { [RGR1_SW_INIT_1] = 0xc010, [EXT_CFG_INDEX] = 0x9000, @@ -282,6 +292,7 @@ struct brcm_pcie { const int *reg_offsets; enum pcie_type type; struct reset_control *rescal; + struct reset_control *perst_reset; int num_memc; u64 memc_size[PCIE_BRCM_MAX_MEMC]; u32 hw_rev; @@ -747,6 +758,17 @@ static inline void brcm_pcie_bridge_sw_init_set_7278(struct brcm_pcie *pcie, u32 writel(tmp, pcie->base + PCIE_RGR1_SW_INIT_1(pcie)); } +static inline void brcm_pcie_perst_set_4908(struct brcm_pcie *pcie, u32 val) +{ + if (WARN_ONCE(!pcie->perst_reset, "missing PERST# reset controller\n")) + return; + + if (val) + reset_control_assert(pcie->perst_reset); + else + reset_control_deassert(pcie->perst_reset); +} + static inline void brcm_pcie_perst_set_7278(struct brcm_pcie *pcie, u32 val) { u32 tmp; @@ -1206,6 +1228,7 @@ static int brcm_pcie_remove(struct platform_device *pdev) static const struct of_device_id brcm_pcie_match[] = { { .compatible = "brcm,bcm2711-pcie", .data = &bcm2711_cfg }, + { .compatible = "brcm,bcm4908-pcie", .data = &bcm4908_cfg }, { .compatible = "brcm,bcm7211-pcie", .data = &generic_cfg }, { .compatible = "brcm,bcm7278-pcie", .data = &bcm7278_cfg }, { .compatible = "brcm,bcm7216-pcie", .data = &bcm7278_cfg }, @@ -1262,6 +1285,11 @@ static int brcm_pcie_probe(struct platform_device *pdev) clk_disable_unprepare(pcie->clk); return PTR_ERR(pcie->rescal); } + pcie->perst_reset = devm_reset_control_get_optional_exclusive(&pdev->dev, "perst"); + if (IS_ERR(pcie->perst_reset)) { + clk_disable_unprepare(pcie->clk); + return PTR_ERR(pcie->perst_reset); + } ret = reset_control_deassert(pcie->rescal); if (ret) @@ -1279,6 +1307,10 @@ static int brcm_pcie_probe(struct platform_device *pdev) goto fail; pcie->hw_rev = readl(pcie->base + PCIE_MISC_REVISION); + if (pcie->type == BCM4908 && pcie->hw_rev >= BRCM_PCIE_HW_REV_3_20) { + dev_err(pcie->dev, "hardware revision with unsupported PERST# setup\n"); + goto fail; + } msi_np = of_parse_phandle(pcie->np, "msi-parent", 0); if (pci_msi_enabled() && msi_np == pcie->np) { -- 2.26.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=-13.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 0085AC433FE for ; Thu, 10 Dec 2020 18:06:04 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 9BDC323C44 for ; Thu, 10 Dec 2020 18:06:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9BDC323C44 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version: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=SEDZQBR4Ej/98gV9v8FtNnabZ3vzcixYSVBBn7MhUAE=; b=x/dTSfsb2SLVYNmZSMOhoW16T ECm/Y4F8NQIL8FFKpYoqAzy+jKXdwT5ILUHVKVu/aXpJt0VKCkSisd2dVkh3cdfkDrRg4tMSMZ8r2 6lh+yWtKK5XVrsLo44GjCwoTuEYKhIkrTgLpUZcC0MnBvo+ktCw+0DNOyq49I5eTBoFcABSfsCyYb ibWQTiwkQSOyF+LLANGYA5787rZHv+RcGWjK+ohOjSuRbJ+x0O5E1nhMo3DaV7PW87K9mdbB2YOfY fUNpcZcc3pm5R+q2Tal+SPamaFXBuvA7+ggJGV93twPTXvkfbR0fyRTrOLE4wIaoH9ayCh8QgDhJu lfPuDVhsw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1knQJ9-00078S-Lq; Thu, 10 Dec 2020 18:04:51 +0000 Received: from mail-lj1-x241.google.com ([2a00:1450:4864:20::241]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1knQJ2-00075x-8j; Thu, 10 Dec 2020 18:04:45 +0000 Received: by mail-lj1-x241.google.com with SMTP id e7so7685076ljg.10; Thu, 10 Dec 2020 10:04:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C2pscJBqzkM2zDI7JC2pNLpw87RIapi+iZ8V2MUxssg=; b=neIjQRqLRs8+RHrvKWzprlomtojZHDMDVa3OnL58IjT/RQP66axILI0xv1SLZPembe b6w6ji9JnkDciiztRW/o0rRDJIh+LlBPjPrgt89psKH0zuncU8zovy4f6Sp0wudHsopD AjedyzYbOUGZG+5CLICQVdUq/MNFeFNqqC0DyZma1tjkAKRpWSXvStnp7+SQ7/oRdiXg j0HWueI3Ns9vUFPmBfruzSY9PSYemn+zZ81Hg+LMvN+hjMtCB1lxSMTKFC92QoXxCvqN vt0pdcUHZMzKqNzEX05wKWMys3jA4eRpXnQQ0/QdVQdKukv1fAifhTBfZtg2KlTSBZMP ELdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C2pscJBqzkM2zDI7JC2pNLpw87RIapi+iZ8V2MUxssg=; b=KiPzaZZzpX23lQJUn1/pQr+EMNYNFvf5BjfzL750uwis0ZIFyIx4sHunoFHQ72MHkX nJV+yItbP2AV3mHTxZX5fsDHSgXivtNQ/gKBD1DhUBtnETGkUuwGza6ydn7KFAOXv+BP 7SgMeQVBkMcSh6A1B+QxS4vWWBErmz4ToYmjmCY6W3nBQoob01x9o2Jbw3UkAF+mDdBE itFDQPeI5bh54087hw+CQV+sWuWTrbCuqvNpdsDL7kR/z4JYbZR5F9ooZs/2SmuXS76D HNNOTbwsCs55lKMVMKZeS3Q+gb9CcbdLYC1sruNWEG0Ygitfu/7c3pygptEWseoID7jt ultg== X-Gm-Message-State: AOAM530n2yp5J2uUvMkekUKWxoWD9xW65UOPFkwelH2hqE7doqNFeP+s oK7W52cAodS66yNf/5VKcTM= X-Google-Smtp-Source: ABdhPJw1BV90OYZi0tKInUs0nesy6tFd9q+9u63aIEriW/zyil4vnntrEVS+x9RYY4np1Vt9h9dKjw== X-Received: by 2002:a2e:8346:: with SMTP id l6mr3517312ljh.132.1607623482765; Thu, 10 Dec 2020 10:04:42 -0800 (PST) Received: from localhost.lan (ip-194-187-74-233.konfederacka.maverick.com.pl. [194.187.74.233]) by smtp.gmail.com with ESMTPSA id c136sm601855lfg.306.2020.12.10.10.04.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 10:04:42 -0800 (PST) From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= To: Lorenzo Pieralisi , Rob Herring Subject: [PATCH v3 2/2] PCI: brcmstb: support BCM4908 with external PERST# signal controller Date: Thu, 10 Dec 2020 19:04:21 +0100 Message-Id: <20201210180421.7230-3-zajec5@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201210180421.7230-1-zajec5@gmail.com> References: <20201210180421.7230-1-zajec5@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201210_130444_423582_8EF99EC7 X-CRM114-Status: GOOD ( 19.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Florian Fainelli , linux-pci@vger.kernel.org, =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Philipp Zabel , Bjorn Helgaas , Nicolas Saenz Julienne 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 RnJvbTogUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgoKQkNNNDkwOCB1c2VzIGV4 dGVybmFsIE1JU0MgYmxvY2sgZm9yIGNvbnRyb2xsaW5nIFBFUlNUIyBzaWduYWwuIFVzZSBpdAph cyBhIHJlc2V0IGNvbnRyb2xsZXIuCgpTaWduZWQtb2ZmLWJ5OiBSYWZhxYIgTWnFgmVja2kgPHJh ZmFsQG1pbGVja2kucGw+CkFja2VkLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdt YWlsLmNvbT4KLS0tClYyOiBSZW9yZGVyIEJDTTQ5MDggaW4gdGhlIGVudW0gcGNpZV90eXBlCiAg ICBVc2UgZGV2bV9yZXNldF9jb250cm9sX2dldF9vcHRpb25hbF9leGNsdXNpdmUoKQogICAgRG9u J3QgbW92ZSBod19yZXYgcmVhZCB1cCBpbiB0aGUgY29kZQotLS0KIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvS2NvbmZpZyAgICAgICAgfCAgMiArLQogZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LWJyY21zdGIuYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFu Z2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9wY2kvY29udHJvbGxlci9LY29uZmlnIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmln CmluZGV4IDY0ZTJmNWUzNzlhYS4uZDQ0YzcwYmI4OGY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL0tjb25maWcKKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmln CkBAIC0yNzMsNyArMjczLDcgQEAgY29uZmlnIFZNRAogCiBjb25maWcgUENJRV9CUkNNU1RCCiAJ dHJpc3RhdGUgIkJyb2FkY29tIEJyY21zdGIgUENJZSBob3N0IGNvbnRyb2xsZXIiCi0JZGVwZW5k cyBvbiBBUkNIX0JSQ01TVEIgfHwgQVJDSF9CQ00yODM1IHx8IENPTVBJTEVfVEVTVAorCWRlcGVu ZHMgb24gQVJDSF9CUkNNU1RCIHx8IEFSQ0hfQkNNMjgzNSB8fCBBUkNIX0JDTTQ5MDggfHwgQ09N UElMRV9URVNUCiAJZGVwZW5kcyBvbiBPRgogCWRlcGVuZHMgb24gUENJX01TSV9JUlFfRE9NQUlO CiAJZGVmYXVsdCBBUkNIX0JSQ01TVEIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpZS1icmNtc3RiLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYnJjbXN0Yi5j CmluZGV4IDljM2QyOTgyMjQ4ZC4uOTg1MzZjZjNhZjU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL3BjaWUtYnJjbXN0Yi5jCisrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpZS1icmNtc3RiLmMKQEAgLTk2LDYgKzk2LDcgQEAKIAogI2RlZmluZSBQQ0lFX01JU0NfUkVW SVNJT04JCQkJMHg0MDZjCiAjZGVmaW5lICBCUkNNX1BDSUVfSFdfUkVWXzMzCQkJCTB4MDMwMwor I2RlZmluZSAgQlJDTV9QQ0lFX0hXX1JFVl8zXzIwCQkJCTB4MDMyMAogCiAjZGVmaW5lIFBDSUVf TUlTQ19DUFVfMl9QQ0lFX01FTV9XSU4wX0JBU0VfTElNSVQJCTB4NDA3MAogI2RlZmluZSAgUENJ RV9NSVNDX0NQVV8yX1BDSUVfTUVNX1dJTjBfQkFTRV9MSU1JVF9MSU1JVF9NQVNLCTB4ZmZmMDAw MDAKQEAgLTE5MCw2ICsxOTEsNyBAQAogc3RydWN0IGJyY21fcGNpZTsKIHN0YXRpYyBpbmxpbmUg dm9pZCBicmNtX3BjaWVfYnJpZGdlX3N3X2luaXRfc2V0XzcyNzgoc3RydWN0IGJyY21fcGNpZSAq cGNpZSwgdTMyIHZhbCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgYnJjbV9wY2llX2JyaWRnZV9zd19p bml0X3NldF9nZW5lcmljKHN0cnVjdCBicmNtX3BjaWUgKnBjaWUsIHUzMiB2YWwpOworc3RhdGlj IGlubGluZSB2b2lkIGJyY21fcGNpZV9wZXJzdF9zZXRfNDkwOChzdHJ1Y3QgYnJjbV9wY2llICpw Y2llLCB1MzIgdmFsKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBicmNtX3BjaWVfcGVyc3Rfc2V0Xzcy Nzgoc3RydWN0IGJyY21fcGNpZSAqcGNpZSwgdTMyIHZhbCk7CiBzdGF0aWMgaW5saW5lIHZvaWQg YnJjbV9wY2llX3BlcnN0X3NldF9nZW5lcmljKHN0cnVjdCBicmNtX3BjaWUgKnBjaWUsIHUzMiB2 YWwpOwogCkBAIC0yMDYsNiArMjA4LDcgQEAgZW51bSB7CiAKIGVudW0gcGNpZV90eXBlIHsKIAlH RU5FUklDLAorCUJDTTQ5MDgsCiAJQkNNNzI3OCwKIAlCQ00yNzExLAogfTsKQEAgLTIzMCw2ICsy MzMsMTMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2llX2NmZ19kYXRhIGdlbmVyaWNfY2ZnID0g ewogCS5icmlkZ2Vfc3dfaW5pdF9zZXQgPSBicmNtX3BjaWVfYnJpZGdlX3N3X2luaXRfc2V0X2dl bmVyaWMsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IHBjaWVfY2ZnX2RhdGEgYmNtNDkwOF9j ZmcgPSB7CisJLm9mZnNldHMJPSBwY2llX29mZnNldHMsCisJLnR5cGUJCT0gQkNNNDkwOCwKKwku cGVyc3Rfc2V0CT0gYnJjbV9wY2llX3BlcnN0X3NldF80OTA4LAorCS5icmlkZ2Vfc3dfaW5pdF9z ZXQgPSBicmNtX3BjaWVfYnJpZGdlX3N3X2luaXRfc2V0X2dlbmVyaWMsCit9OworCiBzdGF0aWMg Y29uc3QgaW50IHBjaWVfb2Zmc2V0X2JjbTcyNzhbXSA9IHsKIAlbUkdSMV9TV19JTklUXzFdID0g MHhjMDEwLAogCVtFWFRfQ0ZHX0lOREVYXSA9IDB4OTAwMCwKQEAgLTI4Miw2ICsyOTIsNyBAQCBz dHJ1Y3QgYnJjbV9wY2llIHsKIAljb25zdCBpbnQJCSpyZWdfb2Zmc2V0czsKIAllbnVtIHBjaWVf dHlwZQkJdHlwZTsKIAlzdHJ1Y3QgcmVzZXRfY29udHJvbAkqcmVzY2FsOworCXN0cnVjdCByZXNl dF9jb250cm9sCSpwZXJzdF9yZXNldDsKIAlpbnQJCQludW1fbWVtYzsKIAl1NjQJCQltZW1jX3Np emVbUENJRV9CUkNNX01BWF9NRU1DXTsKIAl1MzIJCQlod19yZXY7CkBAIC03NDcsNiArNzU4LDE3 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBicmNtX3BjaWVfYnJpZGdlX3N3X2luaXRfc2V0XzcyNzgo c3RydWN0IGJyY21fcGNpZSAqcGNpZSwgdTMyCiAJd3JpdGVsKHRtcCwgcGNpZS0+YmFzZSArIFBD SUVfUkdSMV9TV19JTklUXzEocGNpZSkpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgYnJjbV9w Y2llX3BlcnN0X3NldF80OTA4KHN0cnVjdCBicmNtX3BjaWUgKnBjaWUsIHUzMiB2YWwpCit7CisJ aWYgKFdBUk5fT05DRSghcGNpZS0+cGVyc3RfcmVzZXQsICJtaXNzaW5nIFBFUlNUIyByZXNldCBj b250cm9sbGVyXG4iKSkKKwkJcmV0dXJuOworCisJaWYgKHZhbCkKKwkJcmVzZXRfY29udHJvbF9h c3NlcnQocGNpZS0+cGVyc3RfcmVzZXQpOworCWVsc2UKKwkJcmVzZXRfY29udHJvbF9kZWFzc2Vy dChwY2llLT5wZXJzdF9yZXNldCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBicmNtX3BjaWVf cGVyc3Rfc2V0XzcyNzgoc3RydWN0IGJyY21fcGNpZSAqcGNpZSwgdTMyIHZhbCkKIHsKIAl1MzIg dG1wOwpAQCAtMTIwNiw2ICsxMjI4LDcgQEAgc3RhdGljIGludCBicmNtX3BjaWVfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIGJyY21fcGNpZV9tYXRjaFtdID0gewogCXsgLmNvbXBhdGlibGUgPSAiYnJjbSxiY20y NzExLXBjaWUiLCAuZGF0YSA9ICZiY20yNzExX2NmZyB9LAorCXsgLmNvbXBhdGlibGUgPSAiYnJj bSxiY200OTA4LXBjaWUiLCAuZGF0YSA9ICZiY200OTA4X2NmZyB9LAogCXsgLmNvbXBhdGlibGUg PSAiYnJjbSxiY203MjExLXBjaWUiLCAuZGF0YSA9ICZnZW5lcmljX2NmZyB9LAogCXsgLmNvbXBh dGlibGUgPSAiYnJjbSxiY203Mjc4LXBjaWUiLCAuZGF0YSA9ICZiY203Mjc4X2NmZyB9LAogCXsg LmNvbXBhdGlibGUgPSAiYnJjbSxiY203MjE2LXBjaWUiLCAuZGF0YSA9ICZiY203Mjc4X2NmZyB9 LApAQCAtMTI2Miw2ICsxMjg1LDExIEBAIHN0YXRpYyBpbnQgYnJjbV9wY2llX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCWNsa19kaXNhYmxlX3VucHJlcGFyZShwY2llLT5j bGspOwogCQlyZXR1cm4gUFRSX0VSUihwY2llLT5yZXNjYWwpOwogCX0KKwlwY2llLT5wZXJzdF9y ZXNldCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfb3B0aW9uYWxfZXhjbHVzaXZlKCZwZGV2LT5k ZXYsICJwZXJzdCIpOworCWlmIChJU19FUlIocGNpZS0+cGVyc3RfcmVzZXQpKSB7CisJCWNsa19k aXNhYmxlX3VucHJlcGFyZShwY2llLT5jbGspOworCQlyZXR1cm4gUFRSX0VSUihwY2llLT5wZXJz dF9yZXNldCk7CisJfQogCiAJcmV0ID0gcmVzZXRfY29udHJvbF9kZWFzc2VydChwY2llLT5yZXNj YWwpOwogCWlmIChyZXQpCkBAIC0xMjc5LDYgKzEzMDcsMTAgQEAgc3RhdGljIGludCBicmNtX3Bj aWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJZ290byBmYWlsOwogCiAJ cGNpZS0+aHdfcmV2ID0gcmVhZGwocGNpZS0+YmFzZSArIFBDSUVfTUlTQ19SRVZJU0lPTik7CisJ aWYgKHBjaWUtPnR5cGUgPT0gQkNNNDkwOCAmJiBwY2llLT5od19yZXYgPj0gQlJDTV9QQ0lFX0hX X1JFVl8zXzIwKSB7CisJCWRldl9lcnIocGNpZS0+ZGV2LCAiaGFyZHdhcmUgcmV2aXNpb24gd2l0 aCB1bnN1cHBvcnRlZCBQRVJTVCMgc2V0dXBcbiIpOworCQlnb3RvIGZhaWw7CisJfQogCiAJbXNp X25wID0gb2ZfcGFyc2VfcGhhbmRsZShwY2llLT5ucCwgIm1zaS1wYXJlbnQiLCAwKTsKIAlpZiAo cGNpX21zaV9lbmFibGVkKCkgJiYgbXNpX25wID09IHBjaWUtPm5wKSB7Ci0tIAoyLjI2LjIKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==