From patchwork Fri Mar 28 03:02:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Zhu X-Patchwork-Id: 14031592 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 839E0C3600B for ; Fri, 28 Mar 2025 03:12:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=3WnF5MaPL0vkEvqmEIuMdyzOkw6oxR0mcwbchi+5rt0=; b=Zvb9FSitxZvIiX1Lj19LtunTvz F4khc6La0mTnwyS6xZalHZkCVnq9dMbZybPwCdC6kgI1VZA9WH8g3ghc1mC83Nq5uB0z6iBzY6/9X ff6LnN7kSi4UpACxAzIKrtx3KEVd8HFdOENmlhzIuoBWnXwAyosLMxjAJP+hyppuQUZ7mw9XyPwyR hfxaxIPyafB99BcL6TfXI9wx3gN6VqCxXQCLvZEfguB3zjrHxPAyxFOLXcAQMEnZWj43Dm/Heaj6c MT0YOOjSexGRprDx87HScS5+1F1mXuE9bzZPhowT5hD3ZUj95oq1TBhWvwgFRHZ5SF1vIXpROuZau GKKM3J3g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty08y-0000000CTp2-0c0X; Fri, 28 Mar 2025 03:12:28 +0000 Received: from mail-vi1eur02on20623.outbound.protection.outlook.com ([2a01:111:f403:2607::623] helo=EUR02-VI1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty00e-0000000CSm5-2C2m for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 03:03:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vL7lDo4573K4ZuTZ/IpEcFPGzrt4zKt2wKG1ZQm2AMYt19/kZgZ4VTSTvjW3DhCFEAWBHwoepbcbx6tVNRjPUycB62G+fB7wBj+b1Inev/+TfTh4Ldy/W+XcuDcilMuirskLvHTQnL5iQQRXy0zBzTbxZwwG2Oi7c++pbWNWA4rCNi1RNQQ+rIeL0k1xa8HzQaFxIh1FakaRGxoBEOPJuCSkwDkNRGsarbiB64ZE3mAZLqbRqUe8Hsftr45qp8MKYrwPB2B+g4GiZ2vAXzPY3MRNAH6fkykdZjmSz112L2Iki7tWx/lpisRVlntqP2L34paeLjymm1XKNdPvgBoJJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3WnF5MaPL0vkEvqmEIuMdyzOkw6oxR0mcwbchi+5rt0=; b=TwS+9OnHUwoE0TmYeIqtIIIy8MoDNC5cZz1+CQvq2x/baQUvx4gIqy2CBi2aabGuUHKwCZpeqpFFes8AFh6mV35C4Dz5t1c2a2b8VoWlSuB01UMxKiYQ+Jx4D3i2o/9HNtJpEMrUyrDgUsQb2NUDie4JYE9svwVMJwSZW5wfBDNr3Y8x6cFh1BVjOP6fWr/E1le/GfeiZU5M2m0dymT1FmBL2gWXZa6Bw8L5p1417Tdw6/68YgHfCEOz6yKytiEkxXyf2NCTwcC+C6EqbNGMJuouvgafYiwLlB3IlIgDlfq0HJ38fWjIc1G1TPrfjtkpa2rW62GEwqmkhWOFej/86Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3WnF5MaPL0vkEvqmEIuMdyzOkw6oxR0mcwbchi+5rt0=; b=Aj6x5hzRYsL0iTM++i05dqcm+hPv8wc29go+WrMjISlnRLEh9o6L0I3Ccuh4yb1ux947Kh3nxJ9WjT+dxjIPjjF7zPcmugOow0PN8s5HuCjyNi7wqfxe7XV4tVl9KmZfUGCo0mbY1OO6YjI1/kjhKx9AjyFzHrzrO41iTu6Pn+HJ2hITXcjLvf6fXiHZ25m6G/pUmeoU+mWH5vEeYcIDS1ARtfVS8veM5JiGzWyYW/lRs7QkeEnKZHcrYN1xXeF+soEHu5ztA2cgAqQ/b0qR9nfZ7Pdg0kBpzX+x2mqDt3v9CodlXgNHSWaW6PAIeJPTCNy5t8L+9DGrNI8HSGRYJQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) by AS8PR04MB8961.eurprd04.prod.outlook.com (2603:10a6:20b:42c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.44; Fri, 28 Mar 2025 03:03:48 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93%5]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 03:03:48 +0000 From: Richard Zhu To: frank.li@nxp.com, l.stach@pengutronix.de, lpieralisi@kernel.org, kw@linux.com, manivannan.sadhasivam@linaro.org, robh@kernel.org, bhelgaas@google.com, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com Cc: linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, Richard Zhu Subject: [PATCH v3 4/6] PCI: imx6: Let i.MX95 PCIe compliance with 8GT/s Receiver Impedance ECN Date: Fri, 28 Mar 2025 11:02:11 +0800 Message-Id: <20250328030213.1650990-5-hongxing.zhu@nxp.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20250328030213.1650990-1-hongxing.zhu@nxp.com> References: <20250328030213.1650990-1-hongxing.zhu@nxp.com> X-ClientProxiedBy: SG2PR02CA0047.apcprd02.prod.outlook.com (2603:1096:3:18::35) To AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8676:EE_|AS8PR04MB8961:EE_ X-MS-Office365-Filtering-Correlation-Id: b684d01e-40c8-4d03-c203-08dd6da528ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|7416014|52116014|1800799024|366016|38350700014|921020; X-Microsoft-Antispam-Message-Info: QbqgTWeJhcs2+0VlH/Mu5BhsUm3S7sjzqnAl7pB4Srs+ELFjj8qf+/JHemWhvyG/IBRq4Y2ZA0GhqopLyDbz3pmBp5zW6jfrdlet+JZv6MmYsGjCjtDz3E9eS5p/3FynWjcOUAtBucI+/BUU3Fg9YQZjK6Ut6qNsbYcyZCYYmCuAaBVK/kaEvbVUZk2DXU3T2GQLac+46uYgaFw2ZhFxGr9TrOaoQ9U5xF8ffyOK3SXV0pZNkS8F1sCwl5xJgkQJ1M2uCkkfFQWBQGhHdQjmy27SUx1246k6N3/aUIyKUtT4ytZP727i5A82t07fo0aurrIaeXOC4nKXiHYvPkMSTYKIkrX/JWiEnhFWO48gEHj7KTPUhVWvlfnrY65mcbkg7GyTGtapWb++YgtPVvYWooJijfp/fPc+xc0k9YmDY6dBMZdzReW92VDInUiHA5Xse06eGZWOI0tKvzwlri9oAIS4RqAegtO0KJhON2jkjXF9oA+TmfgvJKGL3tMYkx6XyyAdByRnVLq9Pgxsl5w9TRfwfteEaF4j52C+NFMupZINAW0xUPAG8B445uAYJDXXbtZ5ET5ztTGTzFtcUZ9AAyllCKrjc5/M99fsXQsoiatynFgfYBVwKWT/PCR9wV6p8gOWDN3rmE0/66hfSvPel1W2FdBIaPIxSSQUPKbGCi0qd5QsF30Odo+BcCWm0xzFTyqH0nRUPvo3im5yQhmUxuX0gdDW6BH6sl/c/+gCnZjvAQxyGFKv/RdKS1kvewjVm2tE9MbCPJX1CfxglpwY2KdRGncR6ncANbLvtSZVW7DMNHK4CSv01ZVevVQ9tTmIkmdFMR38Wwmvr61BwLZCFAByroA00Fnt7yxfxrn9QBBut7G+OiyGD/EhH+JksY2lqiF+rf7+FmzDl7LRxXvhljm4iMFArPNQfTf+VfZCtx6N3BaqPJyzZ1EEkXOGwzoIQM8OjptxQNcAT4PEL/pguuvVLBSqTI/JsJQejUfn75uPTmd6940JslPTbDIrelhWoakp63b+1Sal2fMOyUrRoMdGtey4++qw/namk72AWLGh1R98iFHcsbMZb6BFU4Psuq8ZNZmrayrzeqUYClwCctYXDLn+qZZj6H6xtd5XHUBKWodXypAbZr+7KDvsX34/8frwXze1tEwWBPtYUPX0j6dtc1ce3Adil7l3WxUSK9ZNlCjI+5kKVnzO1KYHJcbN0DTI2BjRifYCk9SNVCXVAkDaIdsorANZQm84bHINnsfYYcJcamYZ5if6bJsB7JhdlBJktIpYpTRbvGBkXBfNpruyebIC8pEgC+e6hCjNvCwg4Kf8frRo2gg58APT2RCiJcV/Mn3rMdQGPYk1j93vw1YC4mHgjZ3yQLHWL1Q1bQJUw5nsaRhhUIWlNfBPSGndBQeelFsB6q23tdJASnQK2HZKaYe2yg5Rc9FVTJZEzdGPhVC6oxw/gfhKUaSxgwXbgKAOAf5V8TE3pPulWPKxKA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR04MB8676.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(7416014)(52116014)(1800799024)(366016)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: n8nxeOeitizUlQEjAUMh0FHZxVEHjCL4ijHVUyh9uQy5FW6fmBZ3AF2ByrkDY3ha5Ygyl/ONsJReTWFlPwGihS57bGSdnB9qAH6T4Oa4YouR1yAbmjSOSIacpziVLlxXuXyv8/0ZtMlg3CSgOEiTXH8/HK4O71iIeYaiGBptIX0QYfDIcvR+fy09kw4xHBYJi75FlK9BPVROWw0cifL+yOk6jxLWoVUERdtk/iJdjuNb/z1crXZsjWSgKABcZ0ELzkqbWjQesN4/IBevlHsS73cu6KB6sZs9zT2WWWNivsKLcl+9nfFzELzqSlSML94KqTRZzlD6T3zYRMQJSFqwOlDYYZ3pdfBVobs3v2nx2AH3t1/5tNMaqTYuQN0vBohSK5ZSVh4vh/jXVd2pYqju9TdPPa7ZCXbYGGnhvJnxpd5tWhZ+NnrvGSL74yQuZzav/smXPLXsY68TnIAQZ+28awtT2PlKsnJ2RKYzWYw3keqiuArK0aSgBV3Txf0Hevt9vautICKDXOqzeDM37+m3gbE7bgBNr6Uow51rowpBvAaWKtVWNKK2xTqS4+dEwhCzFKjcfwcO5NsHOiw0YFLxJl9JPec2TnodtH3Ra7zkixXA0xDCG4jkKOTpJh8E4DyS6+/UIhguR0+yu+IpjOu4cWb2p7T8X2bm4m5AJMtLPMXVaDDJNGeVQ0BI6fnhsIrEN9IGRfNglTzo3tl2dN2ds+8g7rU6Kl6n44mtjML9HebSqnpTiOfNID0fiKii/Ndm5ZW4DieeAxFq7YUrv13AgnJSGV+QWmr2Z2GOXJEMl28hgnTHBDkeSihfi2D+75dZgIThlBFtneiVlhr6ycV+E8bUwIkdqlGZvJvYvkA17H+D+e2m3aA56SfjIWxbwXkbYjE9gXo8YKiXL1hx3aKpsM2jGkC6mLq1almL7RoABwMilZAqBWUsdgwPspWbdzFWB0BRiphANn0M8ly2q/l/LRmMx7JDwjFG5qAD82k7k7MbuP9qOeXQftTOkJwmv3xIFZr5VEWfW6kug1uOJWZa3kZswYDRIUqSKm2HsghURjcK/X1awt5dsh77DTnpC1ePc6/3M25yXGWQFR80Upp7Om/nxjbSBHpdX206xPs7qyVDpm6jUPsfyfl6RfjiZbIzny/spvWAdtNeSpS557vzZkupnG4Kat2D8Bz9Swsfw/tTbrnPPQTxeCkTXIlcLVireJcCyf/f63sjAM6Eqi71cF2QdH8h2Ge3GEAk73b/EDgkLkksFhOFuLIsEHZn5UKxxiCspKsfAMEJaj+J2pCXUC0uYakkS4T4ebz2cslkBGWPvAdJ/b3AiMaeJVzVsI+RvzRhYDwEr+Rakbl6DIP6WuFqxJrEhXVAVV8cY6cOycgp3qbnyDhfGnOaFKV1r/a79bzKl9K6zH8GML6vSU7jtPF7urU8ixPxgV4woaUcvvLEnfbllFHrfKXj86TZWeKgBPgjbxwY3uiRUmcgg6BvV2yKtSkpJYFX+A2ewA8Qc/OXkAP/M7FptJDxKcyVXvl1EnrbIxCNTixfMYPEz1VZogu0vEt33U2soVch/LiqOZnCKKG36K2IDkARnoECCph1 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b684d01e-40c8-4d03-c203-08dd6da528ef X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 03:03:48.1898 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7OQQPDT3bkIuNOEdrKiYrVZUAyUhjyDdAj48D51TUcg1tfWCgaaFsD3l/fNXi9xJxdKiJ3Q/N/Zmg5/+2WobFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8961 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_200352_563568_342B851F X-CRM114-Status: GOOD ( 13.96 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org ERR051586: Compliance with 8GT/s Receiver Impedance ECN. The default value of GEN3_RELATED_OFF[GEN3_ZRXDC_NONCOMPL] is 1 which makes receiver non-compliant with the ZRX-DC parameter for 2.5 GT/s when operating at 8 GT/s or higher. It causes unnecessary timeout in L1. Workaround: Program GEN3_RELATED_OFF[GEN3_ZRXDC_NONCOMPL] to 0. Signed-off-by: Richard Zhu Reviewed-by: Frank Li --- drivers/pci/controller/dwc/pci-imx6.c | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 82402e52eff2..35194b543551 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -110,6 +110,7 @@ enum imx_pcie_variants { */ #define IMX_PCIE_FLAG_BROKEN_SUSPEND BIT(9) #define IMX_PCIE_FLAG_HAS_LUT BIT(10) +#define IMX_PCIE_FLAG_8GT_ECN_ERR051586 BIT(11) #define imx_check_flag(pci, val) (pci->drvdata->flags & val) @@ -1263,6 +1264,32 @@ static void imx_pcie_host_exit(struct dw_pcie_rp *pp) regulator_disable(imx_pcie->vpcie); } +static void imx_pcie_host_post_init(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + struct imx_pcie *imx_pcie = to_imx_pcie(pci); + u32 val; + + if (imx_pcie->drvdata->flags & IMX_PCIE_FLAG_8GT_ECN_ERR051586) { + /* + * ERR051586: Compliance with 8GT/s Receiver Impedance ECN + * + * The default value of GEN3_RELATED_OFF[GEN3_ZRXDC_NONCOMPL] + * is 1 which makes receiver non-compliant with the ZRX-DC + * parameter for 2.5 GT/s when operating at 8 GT/s or higher. + * It causes unnecessary timeout in L1. + * + * Workaround: Program GEN3_RELATED_OFF[GEN3_ZRXDC_NONCOMPL] + * to 0. + */ + dw_pcie_dbi_ro_wr_en(pci); + val = dw_pcie_readl_dbi(pci, GEN3_RELATED_OFF); + val &= ~GEN3_RELATED_OFF_GEN3_ZRXDC_NONCOMPL; + dw_pcie_writel_dbi(pci, GEN3_RELATED_OFF, val); + dw_pcie_dbi_ro_wr_dis(pci); + } +} + static u64 imx_pcie_cpu_addr_fixup(struct dw_pcie *pcie, u64 cpu_addr) { struct imx_pcie *imx_pcie = to_imx_pcie(pcie); @@ -1304,6 +1331,7 @@ static const struct dw_pcie_host_ops imx_pcie_host_ops = { static const struct dw_pcie_host_ops imx_pcie_host_dw_pme_ops = { .init = imx_pcie_host_init, .deinit = imx_pcie_host_exit, + .post_init = imx_pcie_host_post_init, }; static const struct dw_pcie_ops dw_pcie_ops = { @@ -1403,6 +1431,7 @@ static int imx_add_pcie_ep(struct imx_pcie *imx_pcie, struct device *dev = pci->dev; imx_pcie_host_init(pp); + imx_pcie_host_post_init(pp); ep = &pci->ep; ep->ops = &pcie_ep_ops; @@ -1812,6 +1841,7 @@ static const struct imx_pcie_drvdata drvdata[] = { .variant = IMX95, .flags = IMX_PCIE_FLAG_HAS_SERDES | IMX_PCIE_FLAG_HAS_LUT | + IMX_PCIE_FLAG_8GT_ECN_ERR051586 | IMX_PCIE_FLAG_SUPPORTS_SUSPEND, .ltssm_off = IMX95_PE0_GEN_CTRL_3, .ltssm_mask = IMX95_PCIE_LTSSM_EN, @@ -1865,6 +1895,7 @@ static const struct imx_pcie_drvdata drvdata[] = { [IMX95_EP] = { .variant = IMX95_EP, .flags = IMX_PCIE_FLAG_HAS_SERDES | + IMX_PCIE_FLAG_8GT_ECN_ERR051586 | IMX_PCIE_FLAG_SUPPORT_64BIT, .ltssm_off = IMX95_PE0_GEN_CTRL_3, .ltssm_mask = IMX95_PCIE_LTSSM_EN,