From patchwork Tue Apr 8 02:59:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Zhu X-Patchwork-Id: 14042109 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 D65BBC3601E for ; Tue, 8 Apr 2025 03:19: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: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=dqGfTcLo1ZA8us0nOXevDpp5WaCbag6gRfiVsdF4Lus=; b=MvjNbWshjlU9xTioKvQsnFAXq1 GiNeOwyrXaPTlfMQXVAwbWQQsPFR4qUDitobHIgqZ/ypy4FEvFGRK5WTpM4ngqgPw8q711900ZZgo PGrmuJAOiApxxivZjFr8ftSicOeiDNsxCS1VLzKPlIXx0ANgBHJ62NEwoa8hir7ZCho88yXqE+lFD 2gkoYcoKddOLMniP1e2HPvkgPq6RE3reU+WBJr5Q+gzZMosYBzL02dytIgqVMEAsFljeX2zZ+VYwG 99x/WGCiiZR8lviFJZzSkrlUahWWpQq7K5M0e2EUwaHBxIUbwV/LTxO3MwVhxnNaLmWgS0+yuOQLq eznWSRZw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1u1zV4-00000002bvL-1TYG; Tue, 08 Apr 2025 03:19:46 +0000 Received: from mail-westeuropeazlp170120005.outbound.protection.outlook.com ([2a01:111:f403:c201::5] helo=AS8PR03CU001.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1u1zDH-00000002ZgU-0SRd for linux-arm-kernel@lists.infradead.org; Tue, 08 Apr 2025 03:01:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wgnGnJOBtgJARiL6nhmOgwHN6yvqpLVCmf257s0maWYo89dH0MiAPLNrQtif1uwIwJ/Gau+wG33ExT8F9F+MGBzO/JchtLzeHgS11YFjQEP33SppVGpnKibcdYzVxZJmFcYxJXqcB5CrdLXXNrfoabHvC8yDMUSMO6llNbPhs0A1d3y69WsKzsHe8/hJO1irddVo4vuhk63PMl5OV0ThynDVQsldTLTKA30wcQdpVAqB7pKwZn+ApeaCn9Z/v5Z2iaPUhHbscwc4MZ2fE7X+aBz9WCyA5AreQ1Amega3+lgm9Gj/2nTAah/Px6IDFMC1rABKw5jwImmhrmZI6HP8nw== 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=dqGfTcLo1ZA8us0nOXevDpp5WaCbag6gRfiVsdF4Lus=; b=IX5Z26baOdNVX5A5Hv//sDU6UbWy0jqDbdwoqk0b0B8zsml2dWVjvYVsVjxzHHul8cDEdGFHJ32GjQWhJXNGK1RA0WpBqWS6PtwDp10XvkE7Sl390QAzuKtlKSwfdyTS0wDwGp7oMQzDF0FvlP6Pw6aoq9CvJP7B3G4oklxL+HV1i4TOW/t9k1F6nwuuiTu9FzAUKnqNhYJBltW3seriZB7sx8rSg/tbxluiq3722SJnB/oGpqWAckokvXoM2AJRlPI7/rT28mvXO812Y9lP8y/h7tAThmASx99gdrcpx8YlQmQePK3pzejeJSW62L31fhsDmcAM3LMMQmfYbHBhBg== 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=dqGfTcLo1ZA8us0nOXevDpp5WaCbag6gRfiVsdF4Lus=; b=TDgqghYSQx4Klszk6BSf9RIvuyEpbywXyL+sw+XEDtoCDZZcLaGMCUgfmYL8TQ0Xxj06ISzzv7BgL8bXMCcszX5dYlw6wLiv9Cn37pIJsRl8QY3wGefehHxaFlgu5OOK2OsEqx3n+8MkbkOiaV4CtmH/hjeElUb5IhSVJo8ebkP/xtI3LLg6gUaXOZPuYFWHz0A2ylk77WxZMcuaqovK4WxgOl15otEPkIJbf27TFEqAfkUkDB67VM3YRkG4JJec33oDJXTNjEl+vgm5/qyN5aUZagwWtI85naYF0mFeMPBXPecZPQen5Zt9RHb/3UMV3D/PWn5wW56P6RZ1QAcxcw== 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 PA4PR04MB7536.eurprd04.prod.outlook.com (2603:10a6:102:e1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.31; Tue, 8 Apr 2025 03:01:21 +0000 Received: from AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93]) by AS8PR04MB8676.eurprd04.prod.outlook.com ([fe80::28b2:de72:ad25:5d93%4]) with mapi id 15.20.8606.033; Tue, 8 Apr 2025 03:01:21 +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 , Frank Li Subject: [PATCH v5 6/7] PCI: imx6: Add PLL clock lock check for i.MX95 PCIe Date: Tue, 8 Apr 2025 10:59:29 +0800 Message-Id: <20250408025930.1863551-7-hongxing.zhu@nxp.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20250408025930.1863551-1-hongxing.zhu@nxp.com> References: <20250408025930.1863551-1-hongxing.zhu@nxp.com> X-ClientProxiedBy: SG2P153CA0051.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::20) To AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8676:EE_|PA4PR04MB7536:EE_ X-MS-Office365-Filtering-Correlation-Id: ec84bdd2-4be3-4501-5c9a-08dd7649a3a7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|7416014|366016|1800799024|38350700014|921020; X-Microsoft-Antispam-Message-Info: IssO0hZ3IL7f+9OKVAywxZrGfTE0U6KLkIopgnpNBliVSEdIgJgPa3ZyfcaPAYXAk6Rm2sMWD9cTrpGM16wbH7+3XdDoKKJLuSgF73i5FzAq11UhvDGVHRaFRHvCwEf7Ym3INy5PdpJZ74b/HCc6gt9vo9ZYewm57VsscIoj2FPnHkPuMBz+I5EkIgPIzDw5DbvqEEBfC9j5AKUD04+cdjntJLPZkHR9+fxj+zYaI/9tFgHb0IrkPtn3TlgjiRL41GlZ+IxOXB2ua/qU3k27GNtkCf/u/xVbL5ekgOXEBDpX00dPrMGg1Du5Az0myTkY6Z3xDD79w1DkuIifiMkoiQvU8tc2IIBjQI9yv2DnEcZdEmZrp/hmp9HGoo0RT0DR6ETynKisYGmdL/UNCYizuAJSbVf3QYsJalIOoJeODMLPU1rpQtw+0n/sz2IYSZKNQqbUyMPINZgFjUdZXrGnM9Qj6QqrSRrpHsCunQisYSMzgcx2dyR+Zr1IfHj1GdAwcFAnWtgSRwS6pehwqIT3zY86NPu+sLkWZYoCf8R+xEUUN73fybikC9IdH+uXacpCRTTE0Qbg4/fvMXdlR/tGn71cSFdf+EVvlM35P9EVxFFnPuFaDnkpBGLGlkjYDMtSXoV3vIB0PbUzFLex78UyfKi2Ei/7y/9Fh4fzX9+8xivDICdAD8OzC0zBhwVTiYpejOjW+SR+O0MfzzDMIxQY1Fa+2F5ZYvWErgPC45lIWcP8LIZIjJo6SG6lBzYr0PFYRAGGyrLKuJTlVAT7GCB/aDkB9pISbFfFz1ffF5EMwTNkQ5klxqeQ6tp/BwHSa9wPD1ZPUmM4xxchlP0MgbvxZt5FlqXLLFBDLvYarBZGoFOLmblDaIMxzWkuf6uAjBo7E9Ke8pcQaoUWQt3U0zc7EYFFJXHj0CjdcbUdauSFKzSKkYW3hlPZv7tNj2EPsFAJSE+ywy3WdyC5hpcSXqkoJ7+7CFOOVuL35ZWeYV2GRdXIXgDhMOok2O9RR4icQ3Gi8nddfjy3PcpfaDejQGWdpzYdwFSyZj2EKTaX8RmVPLq5WULiGmiLhZs+7i4sGRBQMkZPPuyGR24YZK1p0ZvNvz2t3fYDOQVG8DaVdes9+eEa0QTvg727Tb4xFrF/s9yUwapwlig8DnwQWg9wCkTe9tSz0b24gApkmFzzQ8Sc07LN20bNDbnYk3zxRwHlVh+68M/wZo3jkpMrdIxTc7ieG+EKc/eJ07C0cgIeUiEqD4IfhiIWZGyjmSZjGKAsPqb4zp7tfayEtLIKq5FIUl7QjRX+cYBvU/I4VK2fCU4p5+8D8FDr963USinXG7r6pJ8szAgWPulZcqE46/zCYM6ttAeIKEtENONmzMntU31XzaPWDyQ+aZfkGap/hX3LzCRQdZPSEY3XVkWRvEjB31ia4VFYqpmyBoSdMVAsbWmnsSQ7Vc3QfmxZmHb7taeBRFaxsaOYnGDqLgZo2RpsSxro0g== 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)(52116014)(7416014)(366016)(1800799024)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 21JhnP7NEM/9UZhZCpYEVmjnSUbFdWcgosQ+girPnn6UuxaH27vRoYI9SKqIBVbSFafP/1UuA/W+JYTa34hCQArJOni1w4cpYqjodcthmEzxJZ+4EhXeiFWx4IroE0e6xPem4adXmSlhL+biInZnFaeTW+hC3TxU3xpV2KfYNH4365eyJVjbS1WPK1QqbaR1a+J399GrA3VsM9tPvXqFsOGBIIyB4QzNezyXL5gSxfSiNly02vlNU3985bJRvwm2uemWf1NqJbC4WoKW+izvNnl7o6bcSwEmhTzj6pG1LFWkYJHi4IYzA8yhUUZBGwG8i7zZ+gFkd42sw7XY/Tt2+cfR4aPo3lMuLbqkCw6jbp+vznArIdceAvwSrTLRTaLD2MV2mhOcgB2BwKICtxaANln1C117U0VyyunbiOL6wPGQHxk08MZ21Zq1sR/1qxx7Qs2kYH19udnqbpsarYXAVcNWbg8rzloQP08iu1QDjfRw4OX0MNHJv3yNZjtTZCzU8wH/zhmG3rZI9IjAiqyKxnJNxOqhNDK8cqxE2m6emon3BuprwqEGjgXPQ/dFBiGUDuoakCzqLoa548FXUWmYAWEd2laHNgTnW7lNRqUarAKfbfPvkP1Mm5bGN4JaKo49Su5mWwMYFfQb6Ig6yB8m/aompSFJzkR+NQJbk9OzBkjFm/Roin++1yu0HjVOsj0n6I/EKB29jAvopx9FVyv0GB/0KAojWS3sjV4fY0ZpDMqgLNbXE6SWAhLkaFe+5pAOxBAke2Wojvh4cD8NvLix2mXA+iCLBn78l4fYhCdM1g5jINFt/dj7Jc3pRzYLLJ45eCObYob7ruy+V4ly4pn+SWu2em+M0crVnoh4YMVUBAypCoA75yLqJ8SNpuu9rUOZe60B+Ol4mw6PSQY24qdI/l264+yJlihvY4fHzyAYQ2w+ii7FnOqT+/SAjuFPH8nQv5L1afcTtTjMVnTxvt5ME9kKLVAeFCKvROf1yop0qZvmKyF6SED4h/CrOf470EdwXIPY15BoHfy1CuYYKXt43XGkuMR18/YHGSww35Jxy0TYjP/P8ZW0wLLk2p74jgp6GHgsVdKhigE3UCVpXxSwbSWZUksFFtNUcb0+0usJQVuCgCeN0mHh8kYxnFhs4eE51XpHAwx+zZLT8I8J/jxtTIVbECp6SpWUwWRIlaiABi5mg6shUtgGSd8Vl7bLRoNen+OrYwyg8cxiRyv4TwlRSw5SwuIhUt1+3tpARX5zNx/ukWZEDNZ+IcnhtJP8UtrBZNCO7t+Z9VSzZJv520PJ45IMWh3lA9pDKHRWllhlrmTuA5srYjZ/We0Jj1PX7m9Lbmjju/fxfYVVre8UBOpmFp2GZvda47TPjPcDI9JajJkN2YXbo+1/Jo0xZ6mWeRgIeBoqED8LlDx/cQJWxvUwps/MWCNUHaujbYQTIXud6YSZOGsACB26yReLqwz8Z5qLPChYXsABQW7CfLiswD8jpuVfQNCBnpZgAlMqDQmTJmnX34vMepmvEbuEsHpbzyusbwXZGxCDe81V2G8qdBQIoBHD1P2grbD/m5XmYZl+n+lbv71m+22F/CPiAnOJXIdb X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec84bdd2-4be3-4501-5c9a-08dd7649a3a7 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 03:01:20.9707 (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: bX/zw8pwwrJd2VjBBf/R4uTHj51MzXAVlC5fqFYXKwdhaQwqwhrGP58Y9zHEE5Twlp3NqTEf37x+SIa41kdL1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7536 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250407_200123_149718_78D147B5 X-CRM114-Status: GOOD ( 14.63 ) 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 Add PLL clock lock check for i.MX95 PCIe. Signed-off-by: Richard Zhu Reviewed-by: Frank Li --- drivers/pci/controller/dwc/pci-imx6.c | 28 +++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 7dcc9d88740d..c1d128ec255d 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -45,6 +45,9 @@ #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) @@ -479,6 +482,23 @@ static void imx7d_pcie_wait_for_phy_pll_lock(struct imx_pcie *imx_pcie) dev_err(dev, "PCIe PLL lock timeout\n"); } +static int imx95_pcie_wait_for_phy_pll_lock(struct imx_pcie *imx_pcie) +{ + u32 val; + struct device *dev = imx_pcie->pci->dev; + + if (regmap_read_poll_timeout(imx_pcie->iomuxc_gpr, + IMX95_PCIE_PHY_MPLLA_CTRL, val, + val & IMX95_PCIE_PHY_MPLL_STATE, + PHY_PLL_LOCK_WAIT_USLEEP_MAX, + PHY_PLL_LOCK_WAIT_TIMEOUT)) { + dev_err(dev, "PCIe PLL lock timeout\n"); + return -ETIMEDOUT; + } + + return 0; +} + static int imx_setup_phy_mpll(struct imx_pcie *imx_pcie) { unsigned long phy_rate = 0; @@ -824,6 +844,8 @@ static int imx95_pcie_core_reset(struct imx_pcie *imx_pcie, bool assert) regmap_read_bypassed(imx_pcie->iomuxc_gpr, IMX95_PCIE_RST_CTRL, &val); udelay(10); + } else { + return imx95_pcie_wait_for_phy_pll_lock(imx_pcie); } return 0; @@ -843,11 +865,13 @@ static void imx_pcie_assert_core_reset(struct imx_pcie *imx_pcie) static int imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie) { + int ret = 0; + reset_control_deassert(imx_pcie->pciephy_reset); reset_control_deassert(imx_pcie->apps_reset); if (imx_pcie->drvdata->core_reset) - imx_pcie->drvdata->core_reset(imx_pcie, false); + ret = imx_pcie->drvdata->core_reset(imx_pcie, false); /* Some boards don't have PCIe reset GPIO. */ if (imx_pcie->reset_gpiod) { @@ -857,7 +881,7 @@ static int imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie) msleep(100); } - return 0; + return ret; } static int imx_pcie_wait_for_speed_change(struct imx_pcie *imx_pcie)