From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A5C18C11 for ; Sun, 7 Jan 2024 05:51:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="BrjgRhBY" Received: by mail-pj1-f54.google.com with SMTP id 98e67ed59e1d1-28bf1410e37so782736a91.2 for ; Sat, 06 Jan 2024 21:51:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704606673; x=1705211473; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=7eAcb8U/Xr8Afw7sKhM8tyCYADsawYa0chI/2tUTwyk=; b=BrjgRhBYCdxFxS5gp4scU/9SXvbbDJcgtXHcS5VYvUJ2mooSQTms/zbm9nBprjsiAz 4Vl45TklZy+gTH9FK4C+UmvaJ8gKjV11BMe2IS7HxOg9bV8DLNOHm2okAyYY+ug6hnFx 2o/0osX1xFe8eKJX6W0hiswP/kyinvRKIWdG8m4/fk98IAqtgDV3NwRoXkCx73JTYQHe Yuv/Ptg+BEqdVs86J2mPkvB0fycXeOwwD14ahzWQusciU1YqCcbK06LBTSEP7fm+HoE6 E+MvOjMtEvPg7yvErcq7CvjJs/WH3V41oO3EPwj+VZUit4XRBJc6C8phRKQiSpQxTCLn j8jQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704606673; x=1705211473; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7eAcb8U/Xr8Afw7sKhM8tyCYADsawYa0chI/2tUTwyk=; b=MSGPOC7ORFz5r2HsSZPl2fPkJNBVH8pbSftAYovhd4MP5/HxBrGDni5z8Y4kZP4SBB Yx7bJuKtB/TlBZLD7Te7SDQl5C+iZEPQW2pEV2uCBQsl3fFps9FaKO7tz8SxA+mqk9IC DYZRvtqbbzlrX26SBuwSE39E7Ggepn799z5gSen4pwNtDxeN67yAUkgkK7RbbMDJzNIQ jMOLurG2JMFNg5RIZb2L1eN9VIMYIc33w2/1nBsFxm3kbJ8CXWqKm7IEobyOmn7JfXWu IsP3HnUnxfZ+8zJ1TjOcfpsAFOYYY+f98yTdZZB814m3blPxVZBEVU2ql/n329kdGw1o iQPA== X-Gm-Message-State: AOJu0YyDXm0YWBUI/9tMK9XKWJg/7jij+xjCimVRaX9UyDPB93nXXqNY PCSWJYfekfYBluviEqwKGu0tONfQksUg X-Google-Smtp-Source: AGHT+IGj5EZz0+/fbauC6AN45sMZrVe29Er1ZlBQrJrIMByIAuVk+Xns2TcTYLTphPA7A9ofGaCdPA== X-Received: by 2002:a17:902:f54f:b0:1d3:c942:144c with SMTP id h15-20020a170902f54f00b001d3c942144cmr2692451plf.80.1704606673385; Sat, 06 Jan 2024 21:51:13 -0800 (PST) Received: from thinkpad ([103.197.115.97]) by smtp.gmail.com with ESMTPSA id j5-20020a170902da8500b001d4e05828a9sm3874717plx.260.2024.01.06.21.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 21:51:12 -0800 (PST) Date: Sun, 7 Jan 2024 11:21:06 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: krzysztof.kozlowski@linaro.org, bhelgaas@google.com, conor+dt@kernel.org, devicetree@vger.kernel.org, festevam@gmail.com, helgaas@kernel.org, hongxing.zhu@nxp.com, imx@lists.linux.dev, kernel@pengutronix.de, krzysztof.kozlowski+dt@linaro.org, kw@linux.com, l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lpieralisi@kernel.org, robh@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org Subject: Re: [PATCH v7 12/16] PCI: imx6: Add iMX95 PCIe support Message-ID: <20240107055106.GL3416@thinkpad> References: <20231227182727.1747435-1-Frank.Li@nxp.com> <20231227182727.1747435-13-Frank.Li@nxp.com> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20231227182727.1747435-13-Frank.Li@nxp.com> On Wed, Dec 27, 2023 at 01:27:23PM -0500, Frank Li wrote: Mention 'RC' in subject. > Add iMX95 PCIe basic root complex function support. > Add iMX95 PCIe Root Complex support. > Signed-off-by: Frank Li > --- > > Notes: > Change from v1 to v3 > - none > > drivers/pci/controller/dwc/pci-imx6.c | 90 +++++++++++++++++++++++++-- > 1 file changed, 85 insertions(+), 5 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index d66a2db53bdb7..9e60ab6f1885a 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -42,6 +42,25 @@ > #define IMX8MQ_GPR_PCIE_VREG_BYPASS BIT(12) > #define IMX8MQ_GPR12_PCIE2_CTRL_DEVICE_TYPE GENMASK(11, 8) > > +#define IMX95_PCIE_PHY_GEN_CTRL 0x0 > +#define IMX95_PCIE_REF_USE_PAD BIT(17) > + > +#define IMX95_PCIE_PHY_MPLLA_CTRL 0x10 > +#define IMX95_PCIE_PHY_MPLL_STATE BIT(30) > + > +#define IMX95_PCIE_SS_RW_REG_0 0xf0 > +#define IMX95_PCIE_REF_CLKEN BIT(23) > +#define IMX95_PCIE_PHY_CR_PARA_SEL BIT(9) > + > +#define IMX95_PE0_GEN_CTRL_1 0x1050 > +#define IMX95_PCIE_DEVICE_TYPE GENMASK(3, 0) > + > +#define IMX95_PE0_GEN_CTRL_3 0x1058 > +#define IMX95_PCIE_LTSSM_EN BIT(0) > + > +#define IMX95_PE0_PM_STS 0x1064 > +#define IMX95_PCIE_PM_LINKST_IN_L2 BIT(14) > + > #define to_imx6_pcie(x) dev_get_drvdata((x)->dev) > > enum imx6_pcie_variants { > @@ -52,6 +71,7 @@ enum imx6_pcie_variants { > IMX8MQ, > IMX8MM, > IMX8MP, > + IMX95, > IMX8MQ_EP, > IMX8MM_EP, > IMX8MP_EP, > @@ -63,6 +83,7 @@ enum imx6_pcie_variants { > #define IMX6_PCIE_FLAG_HAS_PHY BIT(3) > #define IMX6_PCIE_FLAG_HAS_APP_RESET BIT(4) > #define IMX6_PCIE_FLAG_HAS_PHY_RESET BIT(5) > +#define IMX6_PCIE_FLAG_HAS_SERDES BIT(6) > > #define imx6_check_flag(pci, val) (pci->drvdata->flags & val) > > @@ -179,6 +200,24 @@ static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie) > return imx6_pcie->controller_id == 1 ? IOMUXC_GPR16 : IOMUXC_GPR14; > } > > +static int imx95_pcie_init_phy(struct imx6_pcie *imx6_pcie) > +{ > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > + IMX95_PCIE_SS_RW_REG_0, > + IMX95_PCIE_PHY_CR_PARA_SEL, > + IMX95_PCIE_PHY_CR_PARA_SEL); > + > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > + IMX95_PCIE_PHY_GEN_CTRL, > + IMX95_PCIE_REF_USE_PAD, 0); > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > + IMX95_PCIE_SS_RW_REG_0, > + IMX95_PCIE_REF_CLKEN, > + IMX95_PCIE_REF_CLKEN); > + > + return 0; > +} > + > static void imx6_pcie_configure_type(struct imx6_pcie *imx6_pcie) > { > const struct imx6_pcie_drvdata *drvdata = imx6_pcie->drvdata; > @@ -579,6 +618,7 @@ static int imx6_pcie_enable_ref_clk(struct imx6_pcie *imx6_pcie) > IMX6Q_GPR1_PCIE_REF_CLK_EN, 1 << 16); > break; > case IMX7D: > + case IMX95: > break; > case IMX8MM: > case IMX8MM_EP: > @@ -696,10 +736,19 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie) > { > struct dw_pcie *pci = imx6_pcie->pci; > struct device *dev = pci->dev; > + u32 val; > > reset_control_deassert(imx6_pcie->pciephy_reset); > > switch (imx6_pcie->drvdata->variant) { > + case IMX95: > + /* Polling the MPLL_STATE */ > + if (regmap_read_poll_timeout(imx6_pcie->iomuxc_gpr, > + IMX95_PCIE_PHY_MPLLA_CTRL, val, > + val & IMX95_PCIE_PHY_MPLL_STATE, > + 10, 10000)) > + dev_err(dev, "PCIe PLL lock timeout\n"); You should return err here because, if core deassert is not performed then the core itself cannot be used. > + break; > case IMX7D: > /* Workaround for ERR010728, failure of PCI-e PLL VCO to > * oscillate, especially when cold. This turns off "Duty-cycle > @@ -1281,12 +1330,32 @@ static int imx6_pcie_probe(struct platform_device *pdev) > return PTR_ERR(imx6_pcie->turnoff_reset); > } > > + if (imx6_pcie->drvdata->gpr) { > /* Grab GPR config register range */ > - imx6_pcie->iomuxc_gpr = > - syscon_regmap_lookup_by_compatible(imx6_pcie->drvdata->gpr); > - if (IS_ERR(imx6_pcie->iomuxc_gpr)) { > - dev_err(dev, "unable to find iomuxc registers\n"); > - return PTR_ERR(imx6_pcie->iomuxc_gpr); > + imx6_pcie->iomuxc_gpr = > + syscon_regmap_lookup_by_compatible(imx6_pcie->drvdata->gpr); > + if (IS_ERR(imx6_pcie->iomuxc_gpr)) > + return dev_err_probe(dev, PTR_ERR(imx6_pcie->iomuxc_gpr), > + "unable to find iomuxc registers\n"); > + } > + > + if (imx6_check_flag(imx6_pcie, IMX6_PCIE_FLAG_HAS_SERDES)) { > + void __iomem *off = devm_platform_ioremap_resource_byname(pdev, "app"); > + > + if (IS_ERR(off)) > + return dev_err_probe(dev, PTR_ERR(off), > + "unable to find serdes registers\n"); > + > + static struct regmap_config regmap_config = { const - Mani -- மணிவண்ணன் சதாசிவம் 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 60CEAC47077 for ; Sun, 7 Jan 2024 05:51:46 +0000 (UTC) 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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ZO0L5R7pmzYWxplxPyP52Bop+vfhNDGPQVLyyU4L0K8=; b=tsg5FfiDpO1/Vz P/+PjipVeiRCh8VP+D8lzQWeIrMZ5ihmQIoGA9i0O+aGRwiECcDFyPgU5WHGdUxtM8x+cdF6e/SQP B+c8keI6GcHQQpmDRHaqVbhE5svMyaKGVfHA7f0a9VidkkLU6WQxfY0eAVvm+Jy9M9l77VhQHNYmb CLbJIKn0o5j50bJDwSXBsloX9o4ug0nrz6yWVzDNU3o/LMcHcNFliRZs1+A5j5vmVqr/jXt4Li442 m3iDzbm0grQiEz9pfVv2MV6RGbEGiEY+5I2aPWNNXOLzdmCKCLKoAbSVKaTpEcjk0U2IwSMGNb+fb wWaaP2R2K+wtD4jjlz9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rMM46-002QZI-0F; Sun, 07 Jan 2024 05:51:18 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rMM42-002QYn-2R for linux-arm-kernel@lists.infradead.org; Sun, 07 Jan 2024 05:51:16 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-28beb1d946fso793117a91.0 for ; Sat, 06 Jan 2024 21:51:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704606673; x=1705211473; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=7eAcb8U/Xr8Afw7sKhM8tyCYADsawYa0chI/2tUTwyk=; b=eLLDPc7X6t0eQCeIIShvsUKMoLfXmHDdsuLWWpS4jAMRjKUCA5MD6oaw0123r6+84C W9zHjq3nVWvKh3aUhWKynaOChddgZas7+FCZrqIs6ECOKhv2RsD0eCEoKZrfMD+oE9vS hQ9W8MWARAD19QNHNCpWJDToeFCitbZmFBNV+7ow98ZU/VoR4t9C12yfXg+yYnmW67/u De+u465ltyMA09Bd0RxNhoYWJ4//Wp37Mo95UUDHOC3mGCDTKAnFDhM+lebhtkD9zYfU qsgiNd07vA1YKGetveYZEOI+NihcXQnNJJXmJ/Ef+rwNxW9e2XVpP2koRE3XaPgpZqmy gshQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704606673; x=1705211473; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7eAcb8U/Xr8Afw7sKhM8tyCYADsawYa0chI/2tUTwyk=; b=eZ0eOVh85FXakN2lgN4mZvWlRgM9iTZbUoOmpVv/jlPIyskD5BQGew1jzyJpOKr0rZ /yeJzNNAt1BRwZYaoplhldohplTVYzK/Z/8q6FTt1QOc0NHzlsEN9GaBOpmiaEcQjKMd UEYUGYtz3R91rrZ1/fyU2FDqnyNVDmJc+2QrXoUltdLC9m3/jj5PuGxNg3evu0TTKe1u sxkiqJ0nnuGE+LKKykVLLbWeW0jj1w7pHd/OctB0ijb56wrvYmIkWYBhbCbrqsWRNhwQ hHg7+Df4zZRGdqriCA4jK483dbqlcyqT/QnAZlupBEkpzWJVn6ShWSRPxxSylR4+7ySW mDUg== X-Gm-Message-State: AOJu0YxfBichfEh30JozykSEZdq33uXjoDocZsWRvSfGYf5Tb6EDavib U+0WS72UDVuDybIkmtwZhzMZBkbov5Q7 X-Google-Smtp-Source: AGHT+IGj5EZz0+/fbauC6AN45sMZrVe29Er1ZlBQrJrIMByIAuVk+Xns2TcTYLTphPA7A9ofGaCdPA== X-Received: by 2002:a17:902:f54f:b0:1d3:c942:144c with SMTP id h15-20020a170902f54f00b001d3c942144cmr2692451plf.80.1704606673385; Sat, 06 Jan 2024 21:51:13 -0800 (PST) Received: from thinkpad ([103.197.115.97]) by smtp.gmail.com with ESMTPSA id j5-20020a170902da8500b001d4e05828a9sm3874717plx.260.2024.01.06.21.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 21:51:12 -0800 (PST) Date: Sun, 7 Jan 2024 11:21:06 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: krzysztof.kozlowski@linaro.org, bhelgaas@google.com, conor+dt@kernel.org, devicetree@vger.kernel.org, festevam@gmail.com, helgaas@kernel.org, hongxing.zhu@nxp.com, imx@lists.linux.dev, kernel@pengutronix.de, krzysztof.kozlowski+dt@linaro.org, kw@linux.com, l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lpieralisi@kernel.org, robh@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org Subject: Re: [PATCH v7 12/16] PCI: imx6: Add iMX95 PCIe support Message-ID: <20240107055106.GL3416@thinkpad> References: <20231227182727.1747435-1-Frank.Li@nxp.com> <20231227182727.1747435-13-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20231227182727.1747435-13-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240106_215114_831562_B612365C X-CRM114-Status: GOOD ( 24.65 ) 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-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 T24gV2VkLCBEZWMgMjcsIDIwMjMgYXQgMDE6Mjc6MjNQTSAtMDUwMCwgRnJhbmsgTGkgd3JvdGU6 CgpNZW50aW9uICdSQycgaW4gc3ViamVjdC4KCj4gQWRkIGlNWDk1IFBDSWUgYmFzaWMgcm9vdCBj b21wbGV4IGZ1bmN0aW9uIHN1cHBvcnQuCj4gCgpBZGQgaU1YOTUgUENJZSBSb290IENvbXBsZXgg c3VwcG9ydC4KCj4gU2lnbmVkLW9mZi1ieTogRnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+Cj4g LS0tCj4gCj4gTm90ZXM6Cj4gICAgIENoYW5nZSBmcm9tIHYxIHRvIHYzCj4gICAgIC0gbm9uZQo+ IAo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jIHwgOTAgKysrKysrKysr KysrKysrKysrKysrKysrKy0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCA1 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9wY2ktaW14Ni5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+IGlu ZGV4IGQ2NmEyZGI1M2JkYjcuLjllNjBhYjZmMTg4NWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9w Y2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvZHdjL3BjaS1pbXg2LmMKPiBAQCAtNDIsNiArNDIsMjUgQEAKPiAgI2RlZmluZSBJTVg4TVFf R1BSX1BDSUVfVlJFR19CWVBBU1MJCUJJVCgxMikKPiAgI2RlZmluZSBJTVg4TVFfR1BSMTJfUENJ RTJfQ1RSTF9ERVZJQ0VfVFlQRQlHRU5NQVNLKDExLCA4KQo+ICAKPiArI2RlZmluZSBJTVg5NV9Q Q0lFX1BIWV9HRU5fQ1RSTAkJCTB4MAo+ICsjZGVmaW5lIElNWDk1X1BDSUVfUkVGX1VTRV9QQUQJ CQlCSVQoMTcpCj4gKwo+ICsjZGVmaW5lIElNWDk1X1BDSUVfUEhZX01QTExBX0NUUkwJCTB4MTAK PiArI2RlZmluZSBJTVg5NV9QQ0lFX1BIWV9NUExMX1NUQVRFCQlCSVQoMzApCj4gKwo+ICsjZGVm aW5lIElNWDk1X1BDSUVfU1NfUldfUkVHXzAJCQkweGYwCj4gKyNkZWZpbmUgSU1YOTVfUENJRV9S RUZfQ0xLRU4JCQlCSVQoMjMpCj4gKyNkZWZpbmUgSU1YOTVfUENJRV9QSFlfQ1JfUEFSQV9TRUwJ CUJJVCg5KQo+ICsKPiArI2RlZmluZSBJTVg5NV9QRTBfR0VOX0NUUkxfMQkJCTB4MTA1MAo+ICsj ZGVmaW5lIElNWDk1X1BDSUVfREVWSUNFX1RZUEUJCQlHRU5NQVNLKDMsIDApCj4gKwo+ICsjZGVm aW5lIElNWDk1X1BFMF9HRU5fQ1RSTF8zCQkJMHgxMDU4Cj4gKyNkZWZpbmUgSU1YOTVfUENJRV9M VFNTTV9FTgkJCUJJVCgwKQo+ICsKPiArI2RlZmluZSBJTVg5NV9QRTBfUE1fU1RTCQkJMHgxMDY0 Cj4gKyNkZWZpbmUgSU1YOTVfUENJRV9QTV9MSU5LU1RfSU5fTDIJCUJJVCgxNCkKPiArCj4gICNk ZWZpbmUgdG9faW14Nl9wY2llKHgpCWRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikKPiAgCj4gIGVu dW0gaW14Nl9wY2llX3ZhcmlhbnRzIHsKPiBAQCAtNTIsNiArNzEsNyBAQCBlbnVtIGlteDZfcGNp ZV92YXJpYW50cyB7Cj4gIAlJTVg4TVEsCj4gIAlJTVg4TU0sCj4gIAlJTVg4TVAsCj4gKwlJTVg5 NSwKPiAgCUlNWDhNUV9FUCwKPiAgCUlNWDhNTV9FUCwKPiAgCUlNWDhNUF9FUCwKPiBAQCAtNjMs NiArODMsNyBAQCBlbnVtIGlteDZfcGNpZV92YXJpYW50cyB7Cj4gICNkZWZpbmUgSU1YNl9QQ0lF X0ZMQUdfSEFTX1BIWQkJCUJJVCgzKQo+ICAjZGVmaW5lIElNWDZfUENJRV9GTEFHX0hBU19BUFBf UkVTRVQJCUJJVCg0KQo+ICAjZGVmaW5lIElNWDZfUENJRV9GTEFHX0hBU19QSFlfUkVTRVQJCUJJ VCg1KQo+ICsjZGVmaW5lIElNWDZfUENJRV9GTEFHX0hBU19TRVJERVMJCUJJVCg2KQo+ICAKPiAg I2RlZmluZSBpbXg2X2NoZWNrX2ZsYWcocGNpLCB2YWwpICAgICAocGNpLT5kcnZkYXRhLT5mbGFn cyAmIHZhbCkKPiAgCj4gQEAgLTE3OSw2ICsyMDAsMjQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBp bXg2X3BjaWVfZ3JwX29mZnNldChjb25zdCBzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4g IAlyZXR1cm4gaW14Nl9wY2llLT5jb250cm9sbGVyX2lkID09IDEgPyBJT01VWENfR1BSMTYgOiBJ T01VWENfR1BSMTQ7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgaW14OTVfcGNpZV9pbml0X3BoeShz dHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4gK3sKPiArCXJlZ21hcF91cGRhdGVfYml0cyhp bXg2X3BjaWUtPmlvbXV4Y19ncHIsCj4gKwkJCUlNWDk1X1BDSUVfU1NfUldfUkVHXzAsCj4gKwkJ CUlNWDk1X1BDSUVfUEhZX0NSX1BBUkFfU0VMLAo+ICsJCQlJTVg5NV9QQ0lFX1BIWV9DUl9QQVJB X1NFTCk7Cj4gKwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwK PiArCQkJICAgSU1YOTVfUENJRV9QSFlfR0VOX0NUUkwsCj4gKwkJCSAgIElNWDk1X1BDSUVfUkVG X1VTRV9QQUQsIDApOwo+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dw ciwKPiArCQkJICAgSU1YOTVfUENJRV9TU19SV19SRUdfMCwKPiArCQkJICAgSU1YOTVfUENJRV9S RUZfQ0xLRU4sCj4gKwkJCSAgIElNWDk1X1BDSUVfUkVGX0NMS0VOKTsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2NvbmZpZ3VyZV90eXBlKHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGlteDZfcGNpZV9k cnZkYXRhICpkcnZkYXRhID0gaW14Nl9wY2llLT5kcnZkYXRhOwo+IEBAIC01NzksNiArNjE4LDcg QEAgc3RhdGljIGludCBpbXg2X3BjaWVfZW5hYmxlX3JlZl9jbGsoc3RydWN0IGlteDZfcGNpZSAq aW14Nl9wY2llKQo+ICAJCQkJICAgSU1YNlFfR1BSMV9QQ0lFX1JFRl9DTEtfRU4sIDEgPDwgMTYp Owo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJTVg3RDoKPiArCWNhc2UgSU1YOTU6Cj4gIAkJYnJlYWs7 Cj4gIAljYXNlIElNWDhNTToKPiAgCWNhc2UgSU1YOE1NX0VQOgo+IEBAIC02OTYsMTAgKzczNiwx OSBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9kZWFzc2VydF9jb3JlX3Jlc2V0KHN0cnVjdCBpbXg2 X3BjaWUgKmlteDZfcGNpZSkKPiAgewo+ICAJc3RydWN0IGR3X3BjaWUgKnBjaSA9IGlteDZfcGNp ZS0+cGNpOwo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gcGNpLT5kZXY7Cj4gKwl1MzIgdmFsOwo+ ICAKPiAgCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaW14Nl9wY2llLT5wY2llcGh5X3Jlc2V0KTsK PiAgCj4gIAlzd2l0Y2ggKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgewo+ICsJY2FzZSBJ TVg5NToKPiArCQkvKiBQb2xsaW5nIHRoZSBNUExMX1NUQVRFICovCj4gKwkJaWYgKHJlZ21hcF9y ZWFkX3BvbGxfdGltZW91dChpbXg2X3BjaWUtPmlvbXV4Y19ncHIsCj4gKwkJCQkJSU1YOTVfUENJ RV9QSFlfTVBMTEFfQ1RSTCwgdmFsLAo+ICsJCQkJCXZhbCAmIElNWDk1X1BDSUVfUEhZX01QTExf U1RBVEUsCj4gKwkJCQkJMTAsIDEwMDAwKSkKPiArCQkJZGV2X2VycihkZXYsICJQQ0llIFBMTCBs b2NrIHRpbWVvdXRcbiIpOwoKWW91IHNob3VsZCByZXR1cm4gZXJyIGhlcmUgYmVjYXVzZSwgaWYg Y29yZSBkZWFzc2VydCBpcyBub3QgcGVyZm9ybWVkIHRoZW4gdGhlCmNvcmUgaXRzZWxmIGNhbm5v dCBiZSB1c2VkLgoKPiArCQlicmVhazsKPiAgCWNhc2UgSU1YN0Q6Cj4gIAkJLyogV29ya2Fyb3Vu ZCBmb3IgRVJSMDEwNzI4LCBmYWlsdXJlIG9mIFBDSS1lIFBMTCBWQ08gdG8KPiAgCQkgKiBvc2Np bGxhdGUsIGVzcGVjaWFsbHkgd2hlbiBjb2xkLiAgVGhpcyB0dXJucyBvZmYgIkR1dHktY3ljbGUK PiBAQCAtMTI4MSwxMiArMTMzMCwzMiBAQCBzdGF0aWMgaW50IGlteDZfcGNpZV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCXJldHVybiBQVFJfRVJSKGlteDZfcGNpZS0+ dHVybm9mZl9yZXNldCk7Cj4gIAl9Cj4gIAo+ICsJaWYgKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Z3By KSB7Cj4gIAkvKiBHcmFiIEdQUiBjb25maWcgcmVnaXN0ZXIgcmFuZ2UgKi8KPiAtCWlteDZfcGNp ZS0+aW9tdXhjX2dwciA9Cj4gLQkJIHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBhdGlibGUo aW14Nl9wY2llLT5kcnZkYXRhLT5ncHIpOwo+IC0JaWYgKElTX0VSUihpbXg2X3BjaWUtPmlvbXV4 Y19ncHIpKSB7Cj4gLQkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gZmluZCBpb211eGMgcmVnaXN0 ZXJzXG4iKTsKPiAtCQlyZXR1cm4gUFRSX0VSUihpbXg2X3BjaWUtPmlvbXV4Y19ncHIpOwo+ICsJ CWlteDZfcGNpZS0+aW9tdXhjX2dwciA9Cj4gKwkJCSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9j b21wYXRpYmxlKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+Z3ByKTsKPiArCQlpZiAoSVNfRVJSKGlteDZf cGNpZS0+aW9tdXhjX2dwcikpCj4gKwkJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VS UihpbXg2X3BjaWUtPmlvbXV4Y19ncHIpLAo+ICsJCQkJCSAgICAgInVuYWJsZSB0byBmaW5kIGlv bXV4YyByZWdpc3RlcnNcbiIpOwo+ICsJfQo+ICsKPiArCWlmIChpbXg2X2NoZWNrX2ZsYWcoaW14 Nl9wY2llLCBJTVg2X1BDSUVfRkxBR19IQVNfU0VSREVTKSkgewo+ICsJCXZvaWQgX19pb21lbSAq b2ZmID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAiYXBwIik7 Cj4gKwo+ICsJCWlmIChJU19FUlIob2ZmKSkKPiArCQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCBQVFJfRVJSKG9mZiksCj4gKwkJCQkJICAgICAidW5hYmxlIHRvIGZpbmQgc2VyZGVzIHJlZ2lz dGVyc1xuIik7Cj4gKwo+ICsJCXN0YXRpYyBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByZWdtYXBfY29u ZmlnID0gewoKY29uc3QKCi0gTWFuaQoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDg rprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1r ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK