From patchwork Fri Mar 28 03:02:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Zhu X-Patchwork-Id: 14031594 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 02260C3600B for ; Fri, 28 Mar 2025 03:14:21 +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=fZF5VMuyND9VoiyeBcaCL6u7bYuMlrmMIbrnDbkkxEo=; b=1zF5ZmiGGUWWC0gq1pejzh3FPy Cbh+uTKvg5jVdxkCl7bS50wl4pIBYyllP2bi60ob8KnxexeueYBLO10qvxm567QDIYnfOEAJwK1ua XYcUAdbzpBq/zxtLFNpwizRR5hZXBbS53quBoAsaIRbYMJjxsjSoHUSDYQVQbo7E8lxAntCWcJRBk G73PJDDd8wFHUe1egrEvtBz8nWPwLnRn2lsL31nNMEfqNv5h/e+c/U7noW+LbJMAjYQXPotGD6EfF tSSY8ruuNyQRD28ZzHaQvY8QcrHoNn7r3ozje1X2DSHb+eA59vfUqEXAQDtiFnY66BgTL7w9gUZYr gJ1WIdlA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty0Af-0000000CU1c-3Tg9; Fri, 28 Mar 2025 03:14:13 +0000 Received: from mail-db5eur02on20619.outbound.protection.outlook.com ([2a01:111:f403:2608::619] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty00h-0000000CSmx-3R48 for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 03:03:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PGQO74s8xhHjKgkZl/YywX7JnussVlQVAku9KG3I5AeejxOFvrbYOamcp+1Y1IXUzHLRduzIiKONQ+13axz7DtY3OgaqXPSGA2f5MDPWlxQgB/StTz2Lu0o7GpZ/2OzzNBSfXXuGKbv6xC961phu1370T/aEPoggCQXBiEQd1uys0gSfgQ+nwZqvesh4/TsNOxvaJRJMd+fyazIwlqk4sTPDyNl7nAj6WXNXpAeyh0YkNEaJV6PbYCbw9QU0fz1MnpydMsEBWDPA1J+P5Pdyylx1st34P/dygpA23OfUs48n71e0ysArLel5Auu348i52R6e0HP5HYENdCCwm+DDNA== 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=fZF5VMuyND9VoiyeBcaCL6u7bYuMlrmMIbrnDbkkxEo=; b=COHh3DyrtAkk4Tuq7ysIFOr3YH2HvzfxKOTrHcmuMODvtTT2syXcHTDdXeE2tleFKmEFDpvYjsV7wSANA27MX2blXMA/4B5zJQ+smyskFlRJZBE431KeD/nWYKRquDeDwXgwlJ8SxbzkHrcXIkRy8kj6M2gsIuqY/ojLd3xOEEOzKgA+fG3yHPHYZnkGRDpD9EJd1Z7lX+hTzs0tV0GzvlDlxcU65425bpTcIFDYNx27Jo3pX89u0jgRXJ+hP05SUyThjSZrDJ73a/ca9WZj0F9/fYxy1Dw7B+k/qGnPgXjW9Cb6gytRjsD8YRgM2Xk2rgLGvxQkvHQTbuuwZbTzhg== 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=fZF5VMuyND9VoiyeBcaCL6u7bYuMlrmMIbrnDbkkxEo=; b=aYLJ2Cc7C7qZT5SpERJSiR7kOF1ANGcrwGU/f3LagCrNOpEmcigtY/gT7hO3xDW24gwL4Ce4HFf3XAhVz3W37Xy6RxzHLsSZw/fK4dhk1JW6+dlgRBXkrK6qpjkPoBPIK9ZTXhw+4qD1m+qi0dlfKppcqpN0zQdKNQg4GVe4K+lP6tsZrEoPTocTBzviz6ftFpj/iCq9JVbviayYwdQMREaE98FABAXqPLD3MWiB7WOIj0bhRltnSHxuW8LcX8c5yPeksxW39boUkFZrSDWFwig9t48UI+MUbk7Bkb2Q5srjT+IsZE3FuACg925sD7739dBHEtOfXB6aAMcNcRpbAg== 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:53 +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:53 +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 v3 5/6] PCI: imx6: Add PLL clock lock check for i.MX95 PCIe Date: Fri, 28 Mar 2025 11:02:12 +0800 Message-Id: <20250328030213.1650990-6-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: f42a12cd-3a24-40d3-66c2-08dd6da52bed 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: CP3yGYLiinFSDzu6xHC6IFJJTlxCp3ifQhu0K5iZcJ+AmctVxYaRcIcD+U5MrGYCDmtduCls9Pnbr2kg/DedQwt1Naqw7KjzyXlC46Ue0hbu1BN5iPO7tynaR0QXN4sfLA3wdiwSEwC+lXnyRMIu2OB9VU/Dunfe+7ysUZBWgyl3EySp01OKSPka5Nv2d5o+aoqqrqVPZFrCSRe9OMmjfJSDjqpik98mNLBz27yGxy7H439G6NXRQaJTiVkqg3H8XGLs0YQMhtgmh4DX0kX4MmQWd/rif9AfJqsuIQ4RkbU0osIGDV3vxfEwqMK/3ES1M5nK9d57zeiuZ1bZO00X79ced8dMxpxrxhlo6Xq6sHJOkAHtdJkFDcVfgCnkwcdf0AZzDI8nBdvAdDkkPtFKb5WFgMEu8YvhWK0Hr1z7vBFVERUMYJcKmbAi7DnyrbLL3KqhHTWP2avAY0a+yB69U8S86FYaj4muu8WU+guOMSCu62vB185ttr1T+UcFgXeQkCUyWPhAHzW9fPYHQAP3lJvgGd6am9HxImHuLVrWff54OdjOP4lBDiza13jiSe6IlJPtGFZkxZysiasODihFn/c5gZ3imktiHsLxGS9kv6xNXhvZD7t9rRrMdiX1uLTyArwjbh4XeEN956wXXeGycUicnqval3uHQbO8/9vx/A4ypdWK8YVbLJje8vQN9rRwe5yG+AwAcxwuYxccIxn3WTjCFMq9jx2ADNOKSRhXz7AdwyLlkXEt6r/mWyDGQqXxnaSKKzfAQhouez2FHobJW51l10nQ5MRH7sE2G00E/QDEL0nqko8NKakExBlMrlEPo7VOSKmUMUgFcn0M5oenDYRIpzNUQ3ji5TUu+cBuGj9cCb/wFD5DkcFujuQ34DIaJqbkPcgqU/WPqyCGYNh2KVKyRqtsx3we+H5guG/2kFL1bGBWGU4GLATaRsaV4NgcdexFv8ZcED7Aat6/nsOH+hLFqdSWsagxkUxz/U/zfyxqy8VIR2T0lyR+k7Bbyg9vHENf8U88H6dwnmMYjSb/gcQUOymJsa+AkJ8V5ecik/PEc/OXZ56Yb4XfHwng1oy8B70sEAtv5rGnKqpHPQZtGj3W6JvGmQAuH2JFTFozMcKJZq2bM0+q0XyKPsldS2xX+03ioeF5n1EwU5MYrbcEacEOTnciIrGBQzQIFf4EhKAIWQnwZRwuhCFyawuEbtZCN2030KUTE1RbSWejcPL4oo5osX7jFMlp+xbueoCcibJbx5pXp+u2Qb9PcnE6KEZf/zsA2/OZ1kcdu+bWzFfQPLJHeI9UC3S46fqKHc+X+GkTuKn81+CxKPlnD/mAZQN70xCOSqTZxBpyG/ZKfnTptWfq03oEtZVP0xKCsvgn1sLw6A8hxpP5DDDKkG+uW6zPGAxk1hkTFNXMVRvqKdM5fBfn8c35S0AldRGEVs53DdKZKNhQbpG2UfZ7fLsGOZ7AiHBddoxo3Wt4JIhSuzU1lg== 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: NeggUbJqeGbi9DUy5emLpFdvFcrxXlPCuBi0CgHHyfkfnDPNi5Ifnuy5dWlx3w/UdjJFP4dOTSNxY1awllIiv29iy0XMj2y8fy6L94kQHxhhGxCvZUkKJrhc5+CMisg4pyQC541lKcDcVB9n1/RNa86fEQEtu/umRxGGw4/nZnssaGQFeW4A9Gk0ygfMeXO/4Ao2M//BI7i3bWLLNv7bHMEr1VcZxhMM2vRwzGLfbr2HmJHgYj/cUJpTPHra4BDHcfYF6UO0JgZn21GDATIFRg6t1VYrQ/FMcWjX9RUhp4lFdis/MUx7YcJeVJ5RRIxtH11j1M9jSnfIvAoV4V3aPtyvUFt6KaN+kxVosVdBljbRQ6Qyw/tyqxaJpCQpcQImkMCvegYXliBTPjN6C+v6GclJNLygkOcmkg2QRQNxLmrqxkfBOdkoyhkJxd58U6pn6MjZLIhgNuE9R9lY9OuhoAAzvauCRL/FbzcoUa8mUSWfQ5r2O6aRh6YlEVujIRdz3WspRb9zoPMva2XNJmF4W2+fuEnKXnEmeQnEztClcX7KD4d+y6AZVd3Lnb/vpmEkoHhr53k6Xhac+SNN+DzZ2X5V8S/1sU+q43/gNSt2WHOghlSLuDPZ9fbIcq7+cP+5bXRuLJpCbpqnSYv40MpVIsjQvfVKFzVPuNU5ol11Ah0TyKowbAI/vEL3KVQA6YgTopSz9Cl3OvbS5t4t8IsIwd6YZX6CagiXPemfaggBAppWldAENPUNvQLphYzV8R03YGtoweElBS1PvBP7pnsrCX907CmGL+3NQyOckl5YI85gStDIrk3L9NQOfPM05Zqx3DvSq04P7+h8d6NPzImhl4IGcqNnoJap4WKcsMjTXj9F75esadmA7YFsD/iFp9Y8RUifwayxDqFCHz/NZYPEXkGx3UYQqm3Y+3mydH0H5XLHPS/XNDFaR7DshOjjAg0jw1Q6if8Ko/TfzsAK7oI+kkkStUqUhYJ9TKZ7GDj/F53gYY5e5N/ObG9VphsmD/UoVCVdGYkW9sKx1nWb24KSQ/+egrPvxtTmWfqXL2jTZd/XhEIfE70uKTaK78JCaJv8sb5hvirfDC+gzCiSRUm2BgkPjSN+G2fouG1m/smADau2EXU0/O/CIfG5N5XI/CshONihMtFAa6HGzr2EU/JaJpwZMR+NhZzPjSUAC3HZCvRmFfBE73u4y6YgkK9UA5BHPU741h5KibM5PStiEonk9PUfmc8HUUqO0Z6mJnXrP5lTm6ButOknfIAlDI41RTXGLb+CaDFlunH69t2CO0MhxXsKcZmuLl13Ju4pVPvt061TL0qWQkWCTkUvfSgEjmNcvDLcbjwJJUyJ8/D3P2XL5/Oe2ME4tnGTJKSf4Tk6tDc5qLW5wCRKtuBauJVsd8B3pbA5hj3IpZlgXPVXGgYVBxeweYPqeHq2EtUkf/BBif4Iv+Zjd8Qk6FL48ZA3p7eJEqYhJpm8/eFzdXj13nEYMx0TrWunARR44QIZmA4amIjcihK8Gxx5xYg0FAf7uWe19pQ/W44Pn5OspTbGnYIYugTAUqvL2Cbmc4X/vP4qXly7Q6SyXdpg6TcsR7+dapj+ X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f42a12cd-3a24-40d3-66c2-08dd6da52bed 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:53.2523 (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: yWkGyoAwJuT3C2oEbuMar+l2+sEK+vIRtuorpKyMr8VG67mPIT/j210iADAtGBB6hqPXDrm+KiDmQnZzgKM/WQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8961 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_200355_858086_BDDBF5C8 X-CRM114-Status: GOOD ( 14.78 ) 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 35194b543551..40eeb02ffb5d 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 -ENODEV; + } + + 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)