From patchwork Mon Mar 24 06:26:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Zhu X-Patchwork-Id: 14026832 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 400D7C3600B for ; Mon, 24 Mar 2025 06:49:57 +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=PFxWWJcxoHRrYnpXOG8x7dcCBKKTSrbc+plTP6+XOLY=; b=sY/WvfkjMtKzV5XF/ulxdfFUYx cSU4ChO9Yqrs15Hou6oTS+3BL3qZD4RFs9+5z2/QyBhA3GaywRmE36eo02YjverzLCVj66t8I4Rpu vvJ88BaIxy9mLbpRYRCN7WOY5/PyX0qjrz6lKgQwdnHTObBfpRanyOjHOo4XK/AQKgZg1no6427zg vuRsB36kW1zbJGMqfRpHNkCWvVyW7kjtN5XbUu3my6opBt2OkoDxc8VXim57dNANHFcDrTP0x+yd1 xb0bVk1n8FLABs0dIT/XZuj9jSONUvdrqLUCXqTSnARLWTtns9amz2YJWpPXfBu6iE73a0MDYXQd4 25CYAIrw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1twbd4-00000002Mhg-0JkW; Mon, 24 Mar 2025 06:49:46 +0000 Received: from mail-am6eur05on20627.outbound.protection.outlook.com ([2a01:111:f403:2612::627] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1twbLu-00000002Kb4-17Im for linux-arm-kernel@lists.infradead.org; Mon, 24 Mar 2025 06:32:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PZjYtFKresMYqCX2QPZM+q5j03Mki4IDuUx7UuKOxnNbX5VPd9RdZuNdDw6Snx3bpKSukOcQ7acaAd/uufzX+rDWGMopMfkUUd5cQSR+NuHyZrL3AyaxSX/grGg39/f6LHgulj1Y2DLbIg0IzOLMrQq29BRkEB10S378OfKpm1Oh3MlYdvCIAiehx5eRBkGp08jGq/58Hkblk/TZkREtsSb+vxukHCF1pAEZbnL6+VA0JI9D5G2k+5xPKRQRUO5jQgtWuQk+WOjGowbVzu1ijW3lMOgwk2XQvV8e+2VS+mMCOXLVW942weByHyZaFCCQTJbzRfI8NBwZr/NACAQNDw== 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=PFxWWJcxoHRrYnpXOG8x7dcCBKKTSrbc+plTP6+XOLY=; b=vAu+/fzhEDrIjlXWhvDpGh1MK1W2bn6B86GMpXgMqN48KlW/t8AlGxYiTeekWP6jyFgyaD0n7o6reRGr+vcBlPW4qdlwf5smN8EszITydKkXha8eaewDD1zNVa4gl/qfam4ncyThMjX0DkS7cKAD5VUjUUCd5Icu9MAF/C6Sm9lNGoYSU4kjlinaCS0tIo6yi8pChvQ+Bl0kEyrrCwcUMc+BQ29ItKVc7/njIbrlONOMfK8jQLW3wJAZRI94Jx8BzxvwQ5Dbqz910ReCSPdOp0HJ+XxT37ttHBh+emC5YA3yYk8/oDF6IpSwC6u5LTZ7YmC1IwCQ+1Hm0MD01/6yFg== 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=PFxWWJcxoHRrYnpXOG8x7dcCBKKTSrbc+plTP6+XOLY=; b=Ma/NsqBgYMQ0B1sjNJrFJ5ay8rtPPDT9tD845nX4kqaaBieLkXzM0tPNn8/fWLxsHtObkp0L5iX209IFGCIs4uH7w1+7Krzdxl87W65FeubEeUl220NJc6DgRP3s7emVKjM2b664Eo5Bg77GSD3aHIbrqlei9uhRN4XkhxXEEhBQxji7uNPEhVKkMXFribEMHZNW386QeDjrhbj6m4mGz0Jnf9eV9kX4nUyoTARzwHmdmrjj+oLnK7PfkEBfnHoi4dvkqBGFH4gt3sy9nYmldPOy5NIENyaPazTFFesqHN1JGL0QrT3rvcjdZIYNMUPFwDNRaI10slXM4tFezuUD2Q== 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 PR3PR04MB7436.eurprd04.prod.outlook.com (2603:10a6:102:87::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.42; Mon, 24 Mar 2025 06:31:59 +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.040; Mon, 24 Mar 2025 06:31:59 +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 v1 5/5] PCI: imx6: Save and restore the LUT setting for i.MX95 PCIe Date: Mon, 24 Mar 2025 14:26:47 +0800 Message-Id: <20250324062647.1891896-6-hongxing.zhu@nxp.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20250324062647.1891896-1-hongxing.zhu@nxp.com> References: <20250324062647.1891896-1-hongxing.zhu@nxp.com> X-ClientProxiedBy: SI1PR02CA0013.apcprd02.prod.outlook.com (2603:1096:4:1f7::7) To AS8PR04MB8676.eurprd04.prod.outlook.com (2603:10a6:20b:42b::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8PR04MB8676:EE_|PR3PR04MB7436:EE_ X-MS-Office365-Filtering-Correlation-Id: cd5336c3-28f9-4995-4d09-08dd6a9d94a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|52116014|366016|1800799024|376014|38350700014|921020; X-Microsoft-Antispam-Message-Info: GDwvxFEnC7IwK5FdFBciOHMcgUmHAtoSaYKQ521nuCdC8ZTl80FB/O/wDend8uELAYKPmUt8585vBUKp0oOoHAB1VNiDIg376aWVKQkWhvLT2qYTjFl+dcbLjtt5LErvceVZxgSTm9R/NLYYvtUDB+SyodNKqoSBdnoIROHhpQc7+5vCyeaSj+0ooWZJa6UQ0BhhNgJXQ5Mo2IzAtK5kjnsRiznlsIAQ76Hj/rS9d/E+rTWHpIA3C6I0nw1pyjdkq1Gtu2A84u7c8uBbFO/UinngjcDaVpKwvvtcFxp/W3+tHHVnjRuMqPyRtFnngVx9t5mw6k2qi+rcNwsW7MpGkkcuUVX/5ADCyvH68N5MTBeWHKkmMJvAXcXS0aPH1j/1bi5K/IaeXBVYoyM/rc88ymfFsBA41RuhBN26csGsRrLLEMMG0bR/rnIjXf+86tU6x4IsW4HamV3XA5VRyzwEOisHOaUobbTPVhxbInjneje/IR/a7FSM1rcPGpkTzur3Qoyc94Qgk3XKj1abX7Fg0JLF1yC8hsYXTFAq8WUk+jpkbHzCw5JoSeGXvXBowogw+jpWR5dweWYC+WhWSP5Wx7llWg5DKpK1qg4b8gTAYXAu1LPPgX8PMx9XY5wBfhKq4kLiUoBcBkgQg/a8cKoeMdfAEvbVLnp8f9Mp3HdlvOLCdRw0Jn1M3Pka9d3lPCSsfJxBSvwyvEye7Q0rwxNcyIpIKx2hzQ88e82341DJ8JH7I5jAerh37WHxQfhsJsPgy5PccqqVP2EwkP+k7SLSgzLnjRMtcokxIdfqiKPA/DY/CCKaI6D5qn7Bcd+lI89dalGfpwfLrPt1D3SelATfFlPuydfPJ3Qg5SUTRqP7C5GkXtZ9io4at24/QYkR590hp6ih/ouGZjNW/24vl4sp9TIoxt2Sw+2l+7Q39dD5QKncO+HMwmEv+IxVPfH/tIdZFa3/0GBQP/8vMKGpvAFbkZyhhleNGqnzu1ALq+0oAdP8G48Wb52fGkzJYMBikfxml0x5SGx4bJJm9mNSlRmYGr6SHspsJnrcQ2T0N38RQeB57OxqrukNkJwjk6T4NSlaUhNDAPhMDGBYBOl/d/H8wjSbwhj5WD+pEXvQhDx3ySfZ3N2/gyMxElscOPvNTfQAHOBbnJCT+tM6SZhfd6bE0YIc0R+2/7MRSR462fA5xafBjN0AqLe7sGelztgJgh2ruPZSrPIaQVqF1LWS+QqQ4Neu4wLCrVGKXBrz+7sfZoS9M4lfknMWCQXmWTOY6OvSpnUvMrXgp4t3b5pK0q2/BAFdpG+me6+sD0VypjmXslHSz0t9PalTxKBHhOwc7Aj4APofqrOTjZctd76wFAXffjaU2TrV+QYK6gKfKGHD+rJb9iBFGiRyfHUU4ctGUT+/bazkJ6Tw9X4u+/gkxiJOqlkdi6mWXWvJ4NOaT1XMyp5lDSLY+zFN7uMA5q4hy7xktRagy2fU4fg9fwJF4APjIw== 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)(7416014)(52116014)(366016)(1800799024)(376014)(38350700014)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Wd4L7sYMmS5oG/ZZUpOH+9QS5Lh54Y2wVdCWo92ipWP3jS/kczLTJYSgA94SZFtlL25D96+RQ+QxFmabCmWBVbeQPfX22wAw6j17mn9IjE+NsFGxDLkLPCu+SY0jVNN3bBuwnWi9Vp8Uz2V6A5K0jMzujweQtHBl9zyWp4JC17NFCj8vfdhBcuyiLTG+zV2hNOWwdICQlaOjv+5Cr6tWeDWWFu45c3mY09Vfl1nbiHEEfHlIXWcTcp+ZLjBrJAdLSU0p+M9el5viEph2Qdb9+pQK7JewNov5fF3B3WUdKJbzthcOfc8ObR5134cZwyMQfCWgFLjP2IM2edBsqFDBj/HLvg1yMWuJuFBcgwqvBIQclw9ESyKwyI84GMNFzjkQA3PqqbHbBLkyN7z+V5Q6WMqfzaQfYby787l008T8pdApOTj/pmisH58YNetwLkB9cD4DM/JRa/XNMzsu3OIsvURly4fM48oVBEehdxPVIWfK0rVnShMlo8+f1K9vKJzku1ca8h0o2ezdoJx4yEumzYI9aA6HvCVLiDpofllG7z0Wo9xj9a7UlssgIv8bMei53cvcn8okEyeSfW4rThJSQopSM/viD8s2g7fq+ukQXTCq3dqvgDlp7CScycwKvjlAiqTWN3ihHPLqCB1MfYYO7pZFv34NNeq04nPrcDGJ4QtMBEZNJWaLI6F/Gnd3wNEacNchO7Uot8+zFTDd/KMkncFiwFWlK2ylYIb3+6CNEI1yGGpfx2RoTe5k6u9DcDQR2kz/noMHB+X36RrfzTaZXeTugCm08hh4KUk/R/QQeCA0WqbV8NNH6Rm/p/l0y1rdYqs6cy8e+1095fih04ExZOOv6Xpn0dzndkCVCaAPPP+rdYZ6KwJU+SW3NAe9i9dpuEsIFRr+B+pb0o2gH6fccjzEqBOsDC2HhUatMb9KILn/3zsi4Zjh9MjibODvsoJtmQ1HEA3GAtPoibZssyjwc9gsZfBhb2Fuyfz3GZLY/V+qOuG1LVEysJT/3SprRel6XtT3b1bXTerTnu+JHgcGA+xg5OJSRosYOvTCJ0pBTTB+SOaSNNjNT0AAOFpwApaCy5GWr4nU94KyB9X0bezx7AaZNCFDCKVX5do7kHE6cnBd+jOX5UmYpZUJLung+UDV0bC1T/BFsaS0ITH/4NqT6zGHtYRIDAbUW3Ho018kJMBMyJhoyWGXQgHzTz6AfBiZZA7kjpitql8m6k2AdzikisWuurFTTteS6n2AbtUiuq2nRZ5uBVrxlL46svsiCf51E7L3yNGf0jhx9J50D0ik7D6+kyVxx0wpQtIvydFxqbdRqsJGKaNjzodBUUuFbt8tUL6SZZeOdqRxmsVHni/PtvUg3v+6f7eZfvfGaz5gUnYBveEkSD6EpV0j4N/OQiQmA4txSB7H+PES6OcF8L6Cxqq8oo7v8bVLnu2Op5rIPTr95c61ULknePNkI1/hDoMqIwLeCUaTOklYmiWQRyhxfDiD2Cpih9/V91q9zTGXPg2Bep+QU45NrKVX4EbhfQBDop/gkTZzkktsC+ypPOn3YhLPadxAjRkZj6GnHJ/1nvDJRcDnsO90WrMJyuibwS8Z X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cd5336c3-28f9-4995-4d09-08dd6a9d94a1 X-MS-Exchange-CrossTenant-AuthSource: AS8PR04MB8676.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2025 06:31:59.4340 (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: jToMQD7VMZGZ6J29sk4PRILjWuhZMyhgV4KGuJHDmhgaI2aRDXztwVZyq4C6IBfqq+gwGHSyUbrK8MIJBnHQig== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7436 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250323_233202_311911_12A7CECC X-CRM114-Status: GOOD ( 17.27 ) 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 LUT(look up table) setting would be lost during PCIe suspend on i.MX95. To let i.MX95 PCIe PM work fine, save and restore the LUT setting in suspend and resume operations. Signed-off-by: Richard Zhu --- drivers/pci/controller/dwc/pci-imx6.c | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index dda3eed99bb8..a3a032cbaa3c 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -135,6 +135,11 @@ struct imx_pcie_drvdata { const struct dw_pcie_host_ops *ops; }; +struct imx_lut_data { + u32 data1; + u32 data2; +}; + struct imx_pcie { struct dw_pcie *pci; struct gpio_desc *reset_gpiod; @@ -154,6 +159,8 @@ struct imx_pcie { struct regulator *vph; void __iomem *phy_base; + /* LUT data for pcie */ + struct imx_lut_data luts[IMX95_MAX_LUT]; /* power domain for pcie */ struct device *pd_pcie; /* power domain for pcie phy */ @@ -1468,6 +1475,41 @@ static void imx_pcie_msi_save_restore(struct imx_pcie *imx_pcie, bool save) } } +static void imx_pcie_lut_save_restore(struct imx_pcie *imx_pcie, bool save) +{ + int i; + u32 data1, data2; + + for (i = 0; i < IMX95_MAX_LUT; i++) { + if (save) { + regmap_write(imx_pcie->iomuxc_gpr, + IMX95_PE0_LUT_ACSCTRL, + IMX95_PEO_LUT_RWA | i); + regmap_read(imx_pcie->iomuxc_gpr, + IMX95_PE0_LUT_DATA1, &data1); + regmap_read(imx_pcie->iomuxc_gpr, + IMX95_PE0_LUT_DATA2, &data2); + if (data1 & IMX95_PE0_LUT_VLD) { + imx_pcie->luts[i].data1 = data1; + imx_pcie->luts[i].data2 = data2; + } else { + imx_pcie->luts[i].data1 = 0; + imx_pcie->luts[i].data2 = 0; + } + } else { + if ((imx_pcie->luts[i].data1 & IMX95_PE0_LUT_VLD) == 0) + continue; + + regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, + imx_pcie->luts[i].data1); + regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, + imx_pcie->luts[i].data2); + regmap_write(imx_pcie->iomuxc_gpr, + IMX95_PE0_LUT_ACSCTRL, i); + } + } +} + static int imx_pcie_suspend_noirq(struct device *dev) { struct imx_pcie *imx_pcie = dev_get_drvdata(dev); @@ -1476,6 +1518,8 @@ static int imx_pcie_suspend_noirq(struct device *dev) return 0; imx_pcie_msi_save_restore(imx_pcie, true); + if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT)) + imx_pcie_lut_save_restore(imx_pcie, true); if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_BROKEN_SUSPEND)) { /* * The minimum for a workaround would be to set PERST# and to @@ -1520,6 +1564,8 @@ static int imx_pcie_resume_noirq(struct device *dev) if (ret) return ret; } + if (imx_check_flag(imx_pcie, IMX_PCIE_FLAG_HAS_LUT)) + imx_pcie_lut_save_restore(imx_pcie, false); imx_pcie_msi_save_restore(imx_pcie, false); return 0;