From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) (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 A9D2A125AB for ; Sun, 7 Jan 2024 05:33:24 +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="pRvpFaeg" Received: by mail-il1-f174.google.com with SMTP id e9e14a558f8ab-3606e11d9cbso6333105ab.0 for ; Sat, 06 Jan 2024 21:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704605604; x=1705210404; 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=sUxB7wKicUOyFSlq6s48xe3dcqB2CW2xhmx3XZD8AVg=; b=pRvpFaegWltnk/lJjxXSIZIwrBv5napGFfGmfOlCG0k+k6z66bu7ZPTx6+c4zNw3cu WRpLcUzb9fbEsIbPQO0CFJD/f6KggwoLV4YraZEOrv/OtrJylGeQ1eVv3HgdC0IasoKj fZ46b3/eZqTkteKKy1CIrNHowkpuj9rsTdHZv+RY2mU/YhMMHp7ivGPC5l375ESunMsU d0Oloc1N7zMeVcS271+vFLtjURxkIosfSAyjFE5zvdnC+emZTXPJvUhAfZsfr0YqaKjT XiGErfB/wzSquqIcu8iwxVBspHVoX154SnYtaSrix8z7TpRaL1lACxA0kUS3/3ZedyZG igLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704605604; x=1705210404; 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=sUxB7wKicUOyFSlq6s48xe3dcqB2CW2xhmx3XZD8AVg=; b=p0VwMJnT6O6xji6+mn2u5DK/jErZ7fF+NMOE34NrFvZTEar2ZPtJvBUi3oNasVqoi6 4ebnsEs7Q4wNFUiC3WBifaRuHledyOrXt6t2Au0H4v49UL/+FAMT1kJ6QChuhdUWaM2F RdKjYHE73Du4to6VgGnoybWUkk0uYxWYVF0nwyCoU6xjE/H1dAqwPN1CxdTVTcSmNi8v i3kTxEcz7MmmCYzwgXAKIq6RhEnPjLGHtavTOKaRAHMMp1OAoTx2qfG0KwXQVMT0KS47 GV5caytAAaro3iHxQZmHEapGxhCrKXOdEkYfbFmvxjH5598U4qgpDhGqdtCB9+cbTjci EL3A== X-Gm-Message-State: AOJu0YwET/goSnIZfjy51SCD0Z8d2JnxuFkjR7kpHeECv6b3gtHT2l1N 3bnDbckobhN3JvLpPbD9Z5BuDcnHgNHp X-Google-Smtp-Source: AGHT+IFmtKRaDWh6kJgCVs2Mz99P6IEAGvyYDybSnJ6/LBG8vwMMYGCtIcWcTUqkJzaWX+SWHF8dkg== X-Received: by 2002:a92:ca05:0:b0:360:7c05:e484 with SMTP id j5-20020a92ca05000000b003607c05e484mr3356916ils.54.1704605603671; Sat, 06 Jan 2024 21:33:23 -0800 (PST) Received: from thinkpad ([103.197.115.97]) by smtp.gmail.com with ESMTPSA id u13-20020a170902e80d00b001d072365b87sm3858364plg.106.2024.01.06.21.33.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 21:33:23 -0800 (PST) Date: Sun, 7 Jan 2024 11:03:13 +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 08/16] PCI: imx6: Simplify switch-case logic by involve init_phy callback Message-ID: <20240107053313.GH3416@thinkpad> References: <20231227182727.1747435-1-Frank.Li@nxp.com> <20231227182727.1747435-9-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-9-Frank.Li@nxp.com> On Wed, Dec 27, 2023 at 01:27:19PM -0500, Frank Li wrote: Subject: PCI: imx6: Introduce init_phy() callback to simplify PHY initialization > Add drvdata::init_phy() callback function, so difference SOC choose > difference callback function to simple switch-case logic. > Same subject can be used in commit message. > Signed-off-by: Frank Li > --- > > Notes: > change from v1 to v4: > - none > > drivers/pci/controller/dwc/pci-imx6.c | 135 ++++++++++++++------------ > 1 file changed, 71 insertions(+), 64 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index 717e8fa030deb..d66a2db53bdb7 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -69,6 +69,9 @@ enum imx6_pcie_variants { > #define IMX6_PCIE_MAX_CLKS 6 > > #define IMX6_PCIE_MAX_INSTANCES 2 > + > +struct imx6_pcie; > + > struct imx6_pcie_drvdata { > enum imx6_pcie_variants variant; > enum dw_pcie_device_mode mode; > @@ -80,6 +83,7 @@ struct imx6_pcie_drvdata { > const u32 ltssm_mask; > const u32 mode_off[IMX6_PCIE_MAX_INSTANCES]; > const u32 mode_mask[IMX6_PCIE_MAX_INSTANCES]; > + int (*init_phy)(struct imx6_pcie *pcie); > }; > > struct imx6_pcie { > @@ -323,76 +327,69 @@ static int pcie_phy_write(struct imx6_pcie *imx6_pcie, int addr, u16 data) > return 0; > } > > -static void imx6_pcie_init_phy(struct imx6_pcie *imx6_pcie) > +static int imx8mq_pcie_init_phy(struct imx6_pcie *imx6_pcie) > { > - switch (imx6_pcie->drvdata->variant) { > - case IMX8MM: > - case IMX8MM_EP: > - case IMX8MP: > - case IMX8MP_EP: > - /* > - * The PHY initialization had been done in the PHY > - * driver, break here directly. > - */ > - break; > - case IMX8MQ: > - case IMX8MQ_EP: > - /* > - * TODO: Currently this code assumes external > - * oscillator is being used > - */ > + /* > + * TODO: Currently this code assumes external > + * oscillator is being used Wrap the comments to 80 column. > + */ > + regmap_update_bits(imx6_pcie->iomuxc_gpr, > + imx6_pcie_grp_offset(imx6_pcie), > + IMX8MQ_GPR_PCIE_REF_USE_PAD, > + IMX8MQ_GPR_PCIE_REF_USE_PAD); > + /* > + * Regarding the datasheet, the PCIE_VPH is suggested > + * to be 1.8V. If the PCIE_VPH is supplied by 3.3V, the > + * VREG_BYPASS should be cleared to zero. > + */ Same here. > + if (imx6_pcie->vph && regulator_get_voltage(imx6_pcie->vph) > 3000000) > regmap_update_bits(imx6_pcie->iomuxc_gpr, > imx6_pcie_grp_offset(imx6_pcie), > - IMX8MQ_GPR_PCIE_REF_USE_PAD, > - IMX8MQ_GPR_PCIE_REF_USE_PAD); > - /* > - * Regarding the datasheet, the PCIE_VPH is suggested > - * to be 1.8V. If the PCIE_VPH is supplied by 3.3V, the > - * VREG_BYPASS should be cleared to zero. > - */ > - if (imx6_pcie->vph && > - regulator_get_voltage(imx6_pcie->vph) > 3000000) > - regmap_update_bits(imx6_pcie->iomuxc_gpr, > - imx6_pcie_grp_offset(imx6_pcie), > - IMX8MQ_GPR_PCIE_VREG_BYPASS, > - 0); > - break; > - case IMX7D: > - regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, > + IMX8MQ_GPR_PCIE_VREG_BYPASS, > + 0); > + > + return 0; > +} > + > +static int imx7d_pcie_init_phy(struct imx6_pcie *imx6_pcie) > +{ > + return regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR12, For consistency, return 0. - 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 45232C47077 for ; Sun, 7 Jan 2024 05:33:56 +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=CzhvByk4fMrWtZlnl5pnYH7etkm29Cl2S6RFeQ/Nxzs=; b=kHf1Lge4u9OWiK ny/K0yGXwc+b9qaY9swYrPcCzzEM50/VgM3poLkXP69fl0S4ooSH9kQ9FiAZVmZgVw8YROTfVDoLT lSH3xTgiyiH4l71hKkElwflCki2h/6oEeNsFUBPV7G8XUgiZ31ovo4BX6KKDjdJMSaXZDd9Hhq1d+ VN+cSoXEhD8SWzDRUk1wdCD7XSdABELVzyed3xOYFZMSyoKdaYZ8ZFCLV1WeDgLfMIEAy1qeuphIl GnQGF1Y27qK+xQsPnWwyPqtDRZABVvxY4v/W3joPtIq9y2l/0d5v9+cF8BbSTfWFjH2GPoH5D0hi8 H5H/uAl4Gm+YBBm5Yo4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rMLmp-002P6r-2b; Sun, 07 Jan 2024 05:33:27 +0000 Received: from mail-il1-x12a.google.com ([2607:f8b0:4864:20::12a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rMLmn-002P6L-27 for linux-arm-kernel@lists.infradead.org; Sun, 07 Jan 2024 05:33:27 +0000 Received: by mail-il1-x12a.google.com with SMTP id e9e14a558f8ab-360852ae88fso4331735ab.3 for ; Sat, 06 Jan 2024 21:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1704605604; x=1705210404; 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=sUxB7wKicUOyFSlq6s48xe3dcqB2CW2xhmx3XZD8AVg=; b=xxWVGuwsrFY0dTnDXLD3LCFPVR2Hm9e8dHhCk9WHMhVBSGi37EG9N9MAa37XJx4+2c 2ct3zWEyAIPAo8cwjzRAszyNQx4ppGjg75REyIRhCAKdWgn7PeCDndJktK6RihhR9g4Y gNUcq6xsGhLzcARYwqLxEmPZqwoKmNcdzBRiuT0Cyn4CMZ/Jr70kEHjxQ6bFIPD6NfRj r9dV1DQEqi7QsYtiejzLNHwyO56SlFPS7yOs0lQzgv4prv0CV4ZTTth0rfpmsYsGnP4p gOdmD63ogF8h//qF5Vdc8qhHvDP9fyiwBKYectF1D4V9ujlMflO9rhtadJMO6yo23y6K 5X1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704605604; x=1705210404; 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=sUxB7wKicUOyFSlq6s48xe3dcqB2CW2xhmx3XZD8AVg=; b=uSbOWLzZMdor5cDdNqwJnfskezFwHf7ClGb129u3EKhWwyy5Z+M+ncLixwuvaTomD+ tVcsiWRjEHd/WgGraVJwQqcTz/JDKHE2h0d4L2U9DLAA8YnQXp6gTYh/s4R3+9I0KQ8J FzFDSK6M0ygpewUBPrDouStXyYieOB+CD16RCZW8doe/Hw7D2/57s1N3x8G7l1OC1SaA F/WrZcPStuu6EiPdZRjMndQR48wyoAp+/D6ZfPxiZAV8TZuFKL3Afb83G4xAqW3tYlu4 VXpjdqhUnh0AE5BgMseA8zK3ncqs0dc484xpxpgzrxwyUNmjqz0gQkFn19NmFq9jNM5N Setw== X-Gm-Message-State: AOJu0YygXsA1dlmhA+gWWxbnGW+UoKVNg89fMH4uRsEnbvL5ZR1FWhjJ FQyALArA94SQwUtfMhUTR9azv43YvwHe X-Google-Smtp-Source: AGHT+IFmtKRaDWh6kJgCVs2Mz99P6IEAGvyYDybSnJ6/LBG8vwMMYGCtIcWcTUqkJzaWX+SWHF8dkg== X-Received: by 2002:a92:ca05:0:b0:360:7c05:e484 with SMTP id j5-20020a92ca05000000b003607c05e484mr3356916ils.54.1704605603671; Sat, 06 Jan 2024 21:33:23 -0800 (PST) Received: from thinkpad ([103.197.115.97]) by smtp.gmail.com with ESMTPSA id u13-20020a170902e80d00b001d072365b87sm3858364plg.106.2024.01.06.21.33.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jan 2024 21:33:23 -0800 (PST) Date: Sun, 7 Jan 2024 11:03:13 +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 08/16] PCI: imx6: Simplify switch-case logic by involve init_phy callback Message-ID: <20240107053313.GH3416@thinkpad> References: <20231227182727.1747435-1-Frank.Li@nxp.com> <20231227182727.1747435-9-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20231227182727.1747435-9-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240106_213325_747146_6670F86C X-CRM114-Status: GOOD ( 23.22 ) 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 T24gV2VkLCBEZWMgMjcsIDIwMjMgYXQgMDE6Mjc6MTlQTSAtMDUwMCwgRnJhbmsgTGkgd3JvdGU6 CgpTdWJqZWN0OiBQQ0k6IGlteDY6IEludHJvZHVjZSBpbml0X3BoeSgpIGNhbGxiYWNrIHRvIHNp bXBsaWZ5IFBIWSBpbml0aWFsaXphdGlvbgoKPiBBZGQgZHJ2ZGF0YTo6aW5pdF9waHkoKSBjYWxs YmFjayBmdW5jdGlvbiwgc28gZGlmZmVyZW5jZSBTT0MgY2hvb3NlCj4gZGlmZmVyZW5jZSBjYWxs YmFjayBmdW5jdGlvbiB0byBzaW1wbGUgc3dpdGNoLWNhc2UgbG9naWMuCj4gCgpTYW1lIHN1Ympl Y3QgY2FuIGJlIHVzZWQgaW4gY29tbWl0IG1lc3NhZ2UuCgo+IFNpZ25lZC1vZmYtYnk6IEZyYW5r IExpIDxGcmFuay5MaUBueHAuY29tPgo+IC0tLQo+IAo+IE5vdGVzOgo+ICAgICBjaGFuZ2UgZnJv bSB2MSB0byB2NDoKPiAgICAgLSBub25lCj4gCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdj L3BjaS1pbXg2LmMgfCAxMzUgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNo YW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jIGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci9kd2MvcGNpLWlteDYuYwo+IGluZGV4IDcxN2U4ZmEwMzBkZWIuLmQ2NmEyZGI1M2Jk YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpLWlteDYuYwo+ ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1pbXg2LmMKPiBAQCAtNjksNiAr NjksOSBAQCBlbnVtIGlteDZfcGNpZV92YXJpYW50cyB7Cj4gICNkZWZpbmUgSU1YNl9QQ0lFX01B WF9DTEtTICAgICAgIDYKPiAgCj4gICNkZWZpbmUgSU1YNl9QQ0lFX01BWF9JTlNUQU5DRVMJCQky Cj4gKwo+ICtzdHJ1Y3QgaW14Nl9wY2llOwo+ICsKPiAgc3RydWN0IGlteDZfcGNpZV9kcnZkYXRh IHsKPiAgCWVudW0gaW14Nl9wY2llX3ZhcmlhbnRzIHZhcmlhbnQ7Cj4gIAllbnVtIGR3X3BjaWVf ZGV2aWNlX21vZGUgbW9kZTsKPiBAQCAtODAsNiArODMsNyBAQCBzdHJ1Y3QgaW14Nl9wY2llX2Ry dmRhdGEgewo+ICAJY29uc3QgdTMyIGx0c3NtX21hc2s7Cj4gIAljb25zdCB1MzIgbW9kZV9vZmZb SU1YNl9QQ0lFX01BWF9JTlNUQU5DRVNdOwo+ICAJY29uc3QgdTMyIG1vZGVfbWFza1tJTVg2X1BD SUVfTUFYX0lOU1RBTkNFU107Cj4gKwlpbnQgKCppbml0X3BoeSkoc3RydWN0IGlteDZfcGNpZSAq cGNpZSk7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW14Nl9wY2llIHsKPiBAQCAtMzIzLDc2ICszMjcs NjkgQEAgc3RhdGljIGludCBwY2llX3BoeV93cml0ZShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3Bj aWUsIGludCBhZGRyLCB1MTYgZGF0YSkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMg dm9pZCBpbXg2X3BjaWVfaW5pdF9waHkoc3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llKQo+ICtz dGF0aWMgaW50IGlteDhtcV9wY2llX2luaXRfcGh5KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNp ZSkKPiAgewo+IC0Jc3dpdGNoIChpbXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsKPiAtCWNh c2UgSU1YOE1NOgo+IC0JY2FzZSBJTVg4TU1fRVA6Cj4gLQljYXNlIElNWDhNUDoKPiAtCWNhc2Ug SU1YOE1QX0VQOgo+IC0JCS8qCj4gLQkJICogVGhlIFBIWSBpbml0aWFsaXphdGlvbiBoYWQgYmVl biBkb25lIGluIHRoZSBQSFkKPiAtCQkgKiBkcml2ZXIsIGJyZWFrIGhlcmUgZGlyZWN0bHkuCj4g LQkJICovCj4gLQkJYnJlYWs7Cj4gLQljYXNlIElNWDhNUToKPiAtCWNhc2UgSU1YOE1RX0VQOgo+ IC0JCS8qCj4gLQkJICogVE9ETzogQ3VycmVudGx5IHRoaXMgY29kZSBhc3N1bWVzIGV4dGVybmFs Cj4gLQkJICogb3NjaWxsYXRvciBpcyBiZWluZyB1c2VkCj4gLQkJICovCj4gKwkvKgo+ICsJICog VE9ETzogQ3VycmVudGx5IHRoaXMgY29kZSBhc3N1bWVzIGV4dGVybmFsCj4gKwkgKiBvc2NpbGxh dG9yIGlzIGJlaW5nIHVzZWQKCldyYXAgdGhlIGNvbW1lbnRzIHRvIDgwIGNvbHVtbi4KCj4gKwkg Ki8KPiArCXJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsCj4gKwkJCSAg IGlteDZfcGNpZV9ncnBfb2Zmc2V0KGlteDZfcGNpZSksCj4gKwkJCSAgIElNWDhNUV9HUFJfUENJ RV9SRUZfVVNFX1BBRCwKPiArCQkJICAgSU1YOE1RX0dQUl9QQ0lFX1JFRl9VU0VfUEFEKTsKPiAr CS8qCj4gKwkgKiBSZWdhcmRpbmcgdGhlIGRhdGFzaGVldCwgdGhlIFBDSUVfVlBIIGlzIHN1Z2dl c3RlZAo+ICsJICogdG8gYmUgMS44Vi4gSWYgdGhlIFBDSUVfVlBIIGlzIHN1cHBsaWVkIGJ5IDMu M1YsIHRoZQo+ICsJICogVlJFR19CWVBBU1Mgc2hvdWxkIGJlIGNsZWFyZWQgdG8gemVyby4KPiAr CSAqLwoKU2FtZSBoZXJlLgoKPiArCWlmIChpbXg2X3BjaWUtPnZwaCAmJiByZWd1bGF0b3JfZ2V0 X3ZvbHRhZ2UoaW14Nl9wY2llLT52cGgpID4gMzAwMDAwMCkKPiAgCQlyZWdtYXBfdXBkYXRlX2Jp dHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLAo+ICAJCQkJICAgaW14Nl9wY2llX2dycF9vZmZzZXQo aW14Nl9wY2llKSwKPiAtCQkJCSAgIElNWDhNUV9HUFJfUENJRV9SRUZfVVNFX1BBRCwKPiAtCQkJ CSAgIElNWDhNUV9HUFJfUENJRV9SRUZfVVNFX1BBRCk7Cj4gLQkJLyoKPiAtCQkgKiBSZWdhcmRp bmcgdGhlIGRhdGFzaGVldCwgdGhlIFBDSUVfVlBIIGlzIHN1Z2dlc3RlZAo+IC0JCSAqIHRvIGJl IDEuOFYuIElmIHRoZSBQQ0lFX1ZQSCBpcyBzdXBwbGllZCBieSAzLjNWLCB0aGUKPiAtCQkgKiBW UkVHX0JZUEFTUyBzaG91bGQgYmUgY2xlYXJlZCB0byB6ZXJvLgo+IC0JCSAqLwo+IC0JCWlmIChp bXg2X3BjaWUtPnZwaCAmJgo+IC0JCSAgICByZWd1bGF0b3JfZ2V0X3ZvbHRhZ2UoaW14Nl9wY2ll LT52cGgpID4gMzAwMDAwMCkKPiAtCQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9t dXhjX2dwciwKPiAtCQkJCQkgICBpbXg2X3BjaWVfZ3JwX29mZnNldChpbXg2X3BjaWUpLAo+IC0J CQkJCSAgIElNWDhNUV9HUFJfUENJRV9WUkVHX0JZUEFTUywKPiAtCQkJCQkgICAwKTsKPiAtCQli cmVhazsKPiAtCWNhc2UgSU1YN0Q6Cj4gLQkJcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+ aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLAo+ICsJCQkJICAgSU1YOE1RX0dQUl9QQ0lFX1ZSRUdf QllQQVNTLAo+ICsJCQkJICAgMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgaW14N2RfcGNpZV9pbml0X3BoeShzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpCj4g K3sKPiArCXJldHVybglyZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBJ T01VWENfR1BSMTIsCgpGb3IgY29uc2lzdGVuY3ksIHJldHVybiAwLgoKLSBNYW5pCgotLSAK4K6u 4K6j4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=