From nobody Fri Jan 2 00:09:21 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B44CC41513 for ; Tue, 17 Oct 2023 19:32:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344242AbjJQTcZ (ORCPT ); Tue, 17 Oct 2023 15:32:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344153AbjJQTcR (ORCPT ); Tue, 17 Oct 2023 15:32:17 -0400 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2082.outbound.protection.outlook.com [40.107.13.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 645E898; Tue, 17 Oct 2023 12:32:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WCNli6s2zd5Tl9EjbZoR8SVS/OYxm0aAxbrAkB/fk8L8pDN1vKKpcApwGallD6nIJ9u8SHcl2lrdfr3PAHlO34cuLM8ZNHZEZfX7wpupAg4Q7sa5fR40Wes6IkC7Dcf70O7OjwxxJ7bc9AOJHBTd1y97rB6xD9kFs8oy4mbewnv4u5RxHSot3m71AWGfej5ksD5C+/9LzuGShvxdIWomXgAFodWN8/fnL5uyHAXTBaFdS6jplO/t0PbuaVEVHPBt/pqVCIf3uwWm7rssHKnCKC1/9QHqvthCDeikQSY/uqQpIOuAcrLMnBZtu828Q5iFVB60eH7DYXNJ8Jitf9tl7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=gKSv5ns13+Vwh9w5zcidhpwTsxZiZ3E11/VeL77XzYU=; b=mzeYhRHOHRAoh+ZUf7NWIVNnvqTb8N08uKzepwCge+6XV8gKLLeuA3tTH8oOUF/cDWuGt+WDYcRSxUsIErSw6W3jdjcBRMSzRc+DQv1hfpsPrLIPw2YYeQOE0dETHC906TPorv/3gmgFEV4O0gLd82EVaTdZGJSgLFIrnredqrqnVqXU/ejFwgs5qBkJw0V2tKET1Ntj1Xh3zPe7aTLpA7QLz1Cxab8858Xy4zMYRDdJTl0oquDhfxLRs0pvRjOXhF1fQf4qG7xt0TnOiBVlqzFL1kHOisgf7nbDudiyy4TsV3wsu0qxbtKiJ0h1FgALM61su9ZwbOjhQ3DdHr7Hag== 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=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gKSv5ns13+Vwh9w5zcidhpwTsxZiZ3E11/VeL77XzYU=; b=bRImuUJvWi1J4wvzFUMJWX3Gksu+xd1A5qYdSzqlsoDP0okl0Oe3vEgFmE2UcEOT7+XA8fP1rPP81FntA4bi6Nz/KuBHH3LsvRZZNiLHb5LkNpjhttIOY/NjJeuvsP33JCk4vrGvGMBCAgpPc1wbZshJYR9EUcN8sZcxiSrZelQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB8948.eurprd04.prod.outlook.com (2603:10a6:20b:42f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.34; Tue, 17 Oct 2023 19:32:11 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.021; Tue, 17 Oct 2023 19:32:11 +0000 From: Frank Li To: manivannan.sadhasivam@linaro.org Cc: Frank.Li@nxp.com, bhelgaas@google.com, imx@lists.linux.dev, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, lpieralisi@kernel.org, minghuan.Lian@nxp.com, mingkai.hu@nxp.com, robh@kernel.org, roy.zang@nxp.com Subject: [PATCH v3 1/4] PCI: layerscape: Add function pointer for exit_from_l2() Date: Tue, 17 Oct 2023 15:31:42 -0400 Message-Id: <20231017193145.3198380-2-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017193145.3198380-1-Frank.Li@nxp.com> References: <20231017193145.3198380-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR06CA0013.namprd06.prod.outlook.com (2603:10b6:a03:d4::26) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB8948:EE_ X-MS-Office365-Filtering-Correlation-Id: 89d4fd15-2d89-4a5f-27f1-08dbcf47c202 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OqegyHv58XLaa4VfAf7HjmBEyjZW1XHjy/PEV+kStMdZODfGHYViiNBdryw+DW9vka5POnquctdWqWJdp/lFNIboNzWQzdWDAirQCIs79unEFi/OMqi3Znvp6FArgr+vElhGpg3krexDXIkk6TVZqATgZu0aDo/0kPHxAYOoGICTri1VilnVL07mp6FyQFCEGrwsDbzAGMrvyb8a1kmFEqPMy8/vDkatd5MJ5vbAM73XShxtNjcVNItzrNgRJK8zaDoItichKo8m0d2TdvUVTh7gYPJ520iTGi21om40Q7mHWcIxJwZeoDGGIwrFSCCecDBjirWDQ4I+nE+mVzodwRZVFfzxODXvh6g/SjEvsiipJWQJdZ+MFSIgMfzeQwlgoEtPXk/8oNWQ2LRYPUN2WtVhDbn+7GptWmIU1bsgWALHOf7vtSSyJcACOTMcJpZtKZ5BG0aQbU7lDsShCuUuU2BBtv+cD9x7IWoKZu8Es3gvPNxg+n9D/9vS1UEKxG6anv2cOwmy55oB9fmw1E7ga0poyXG04BIlfDEifZ7lhvUjDO6/bzaGhps6gmt7fFX7OcnybnFGwb70i6IOhVsTcSQLUAk1ccPEmfWLFKkbvQsfkTj8ZJqSrit9W6sn4cnc X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(346002)(136003)(39860400002)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(6506007)(52116002)(6666004)(83380400001)(38350700005)(26005)(6512007)(2616005)(38100700002)(2906002)(86362001)(4326008)(6486002)(5660300002)(8676002)(36756003)(8936002)(41300700001)(66556008)(66946007)(316002)(66476007)(6916009)(7416002)(1076003)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?uU3Xt2/+G5smLPsQp6BDv5SX1fDVsvx2+yF95YPcCy4/oAW6WssedklK1jwD?= =?us-ascii?Q?7sCZ2CZfS+TeaXBduc1FXGbGteOEY8IgR7xu9maxOI5z586Cspl8qerAyZWs?= =?us-ascii?Q?ePkftz+bUVfuY17C/su2Dxof4giJwso0/qreKIkfWiPtfotC1+xV9arNg89P?= =?us-ascii?Q?zQQ037FupTHkipOBw1Zl3PLN7aWOo/1ZhS52Ju7+enmSfUMvi5E0c1tlCh+p?= =?us-ascii?Q?J3dH7PJ2ua9tDY6vR/XTYQxR87QIMFmh9i+dWnuw7scKUS6AuVw0kZntQr8h?= =?us-ascii?Q?AlCSr+9V0nSU8ybRUWQzMzTNf63xgILmMyPuQmmGoiR9fU1Z07ef6YoPn/w2?= =?us-ascii?Q?BpQb1PYbnc2Qt9mK8bDPJd01sMjE4cX87dQ4xIzpzPXPBVoljbui/XVYky4+?= =?us-ascii?Q?PSubF2twq5671SEbtNE58vi6Jf5x9ZwJrtpcKZPB93OyKGP/CWQEaD9lAAQu?= =?us-ascii?Q?poyIXD4e/EAHlNEUPl3mBjsaDoQ8oAsvuD90kWkj2xoR+7FyW9j4FdvpucKq?= =?us-ascii?Q?6Q759aWfIsURGUawNWqnHLX/8KjThunRshiD9QoTJJnM6IipVUJFU84XYeMS?= =?us-ascii?Q?USzvD0Evnze5pmLAi18mdO97CPI8YpajJlHRVuNiZOQmQbMIoNCWSlDdwUme?= =?us-ascii?Q?qKWSe0daUBj0FEzCXB1Nw09q1Q7zRf++nVNJcbODVFisuvlE/K0lZmUi5JMl?= =?us-ascii?Q?5/5j4nv23vc0S0vKzU6IvVF4/fHKSb/JCOc9DmCg9vgKCgunMinv2LZ5exiy?= =?us-ascii?Q?PLux2bnmAzLWopErRTbB70UBiflrj4zccy03oSnNsPAHrK/xyENUscHr+S5V?= =?us-ascii?Q?iHftXpcvc1t4QVBn77g9FnrnhEFzdydTkQlPjIeWJWdYLeMEgDjut1u789No?= =?us-ascii?Q?j2SxEvYU5OQQO0hPdz9Kg+8RFFaRgkkQfySm15hkbQADf+vN8dzQf8e2YxBE?= =?us-ascii?Q?BC4b6gonjrUd6ip/Wqq1ZxzvAnTdT5RKfLe9ecbI0IRmcAfVhZ/7wWgSnp2v?= =?us-ascii?Q?21uLvI/JPydmKe0FaZ7XprimUP62SithVE32i8Gh/bMeEV8IZTsX5VB7Fwb1?= =?us-ascii?Q?EQ3OfDsPHGw7VgqjE01rRhaedi3Y1yvszWE4HB1DqIXRBQsNZb6tmx0fn4nI?= =?us-ascii?Q?F3DPfy75bme+OKX5JgbDOSr9OKcDbKRJR2O7yBCHT79UjwZif/xqZeqIO/xA?= =?us-ascii?Q?A1F1Bf2p7ZgYLQv8+B9ByGHIjZ6HUmrSgjeeNULrQG6xmGvKBE5slLPUbBnD?= =?us-ascii?Q?oFuRIcVYnx1yJU6mPAWz/krMqmaWFwcFkg5M1SoZFsMaDXLvsZ/iA/FmxWBs?= =?us-ascii?Q?PmKOo1dpIpVKGzOkTu/4QIiJFOLidY4U9W4GuHinZHTrYP5h85axwlXMQh16?= =?us-ascii?Q?iz3VDAXEGqgQNrcVCEGBw6UAyOhQutG/5pO1Y8JZiX8Z6LktlBouURIWaPhA?= =?us-ascii?Q?VxodsgBnPMDPyePE+ib3hFi5yUYhQbD7OqSOQUnPlq4rnisXZ+Dq3QRMUobU?= =?us-ascii?Q?UxOUmGIc3ECH5cqrzDRu1H/UTmR+vxtDVJbnIWMOfQyJCFJL5NeniwOsP9YX?= =?us-ascii?Q?xoA+s+CYz5mOtdwUvEnQF8y98q+ruBXAIqJ1SNgX?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89d4fd15-2d89-4a5f-27f1-08dbcf47c202 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 19:32:10.9892 (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: /UpQQ9RG6k8q75exJpDPBrocX5Bc4/gdnK/+QoqX9Cu5b+KwTUCrMsuEFxms/k3qa+3rUHnkYXhtTNo35kEXIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8948 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Since difference SoCs require different sequence for exiting L2, let's add a separate "exit_from_l2()" callback. This callback can be used to execute SoC specific sequence. Signed-off-by: Frank Li Reviewed-by: Manivannan Sadhasivam --- Notes: Change from v2 to v3 - fixed according to mani's feedback 1. update commit message 2. move dw_pcie_host_ops to next patch 3. check return value from exit_from_l2() Change from v1 to v2 - change subject 'a' to 'A' =20 Change from v1 to v2 - change subject 'a' to 'A' drivers/pci/controller/dwc/pci-layerscape.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index 37956e09c65bd..aea89926bcc4f 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -39,6 +39,7 @@ =20 struct ls_pcie_drvdata { const u32 pf_off; + int (*exit_from_l2)(struct dw_pcie_rp *pp); bool pm_support; }; =20 @@ -125,7 +126,7 @@ static void ls_pcie_send_turnoff_msg(struct dw_pcie_rp = *pp) dev_err(pcie->pci->dev, "PME_Turn_off timeout\n"); } =20 -static void ls_pcie_exit_from_l2(struct dw_pcie_rp *pp) +static int ls_pcie_exit_from_l2(struct dw_pcie_rp *pp) { struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); struct ls_pcie *pcie =3D to_ls_pcie(pci); @@ -150,6 +151,8 @@ static void ls_pcie_exit_from_l2(struct dw_pcie_rp *pp) 10000); if (ret) dev_err(pcie->pci->dev, "L2 exit timeout\n"); + + return ret; } =20 static int ls_pcie_host_init(struct dw_pcie_rp *pp) @@ -180,6 +183,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata =3D= { static const struct ls_pcie_drvdata layerscape_drvdata =3D { .pf_off =3D 0xc0000, .pm_support =3D true, + .exit_from_l2 =3D ls_pcie_exit_from_l2, }; =20 static const struct of_device_id ls_pcie_of_match[] =3D { @@ -247,11 +251,14 @@ static int ls_pcie_suspend_noirq(struct device *dev) static int ls_pcie_resume_noirq(struct device *dev) { struct ls_pcie *pcie =3D dev_get_drvdata(dev); + int ret; =20 if (!pcie->drvdata->pm_support) return 0; =20 - ls_pcie_exit_from_l2(&pcie->pci->pp); + ret =3D pcie->drvdata->exit_from_l2(&pcie->pci->pp); + if (ret) + return ret; =20 return dw_pcie_resume_noirq(pcie->pci); } --=20 2.34.1 From nobody Fri Jan 2 00:09:21 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C3410CDB474 for ; Tue, 17 Oct 2023 19:32:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344188AbjJQTc2 (ORCPT ); Tue, 17 Oct 2023 15:32:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344232AbjJQTcS (ORCPT ); Tue, 17 Oct 2023 15:32:18 -0400 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2082.outbound.protection.outlook.com [40.107.13.82]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B51BBF0; Tue, 17 Oct 2023 12:32:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Thmi/awuLN1su0U7f6fkj6tPGr3TYPmSCAD6AmEx/BDp9+roXPxTLpX03GW8SyXqORentVolS+Qh5OLXlIotSPef3oj8QdElc0lCzvJJ53BNluXBOKcNFOaiL210pjyYq8A78S6fH1XDz5EKHx4GXKqZKsslA3g2pSRPJ25V+lLyrv14ERxHJuPILsfhPaI0WEOPKQOh+Wovcl7FvD+kgKkZzpxybGHnfdLdZLRZcmJr9lxl7VpdHf12J6F9/d4XPw1I565Fv8RjUxF63nL640Zr5FK1DlKXYEwdegCp4oDBjxEojhx3QwD6akt7+MBJNqsefYwHklNyLlkWVEIj+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=u5bbgyiXjy1ZwWl0lC244NceqXrZiMoHNxahg5vZLQU=; b=jWT/YpuVYN78I+zkmrBWwimmkfjno/Qm1ESvO/NZaFp+icV2bWLgN2mK13JIvJVhY43yXcl+vjXQvxN1TJNLMRN8QCdStN5I0nzohkg2LKQYeYs+GPb1umeevY+mPexukykUAcx96J/lHBpnmIPdKLvFrsxrxzvkDZkTmMO4mCn1t+5psmmflQqYS0Wr2FAgdCy7M1g4XLywcinozkk3eUNCETjVgOiTNJgnO8WGS/cEPnJAIE5MYMim13e10PnwPRG0hB6ALG97J+HlxQnQ8YQKAUzs1cfiTNYZjZbY2gIUIYvM2jPvHy04mlKtTwY9Jg5iQepOBVzYP+udTyzRGw== 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=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u5bbgyiXjy1ZwWl0lC244NceqXrZiMoHNxahg5vZLQU=; b=lhwQhJhKWn19MGOVjL33vb3Yrs+34P5mT7hu9yonqV5s5Gzjvpl0DHFOlgvqXW2aMb0xVf6J5s1dCIZTyFGFwHN8nvqGakN0ZBPZRRkR3Bs0udFJbYYlubFJmCPk/bFr8NPEV3Jn9D6ftF+NHQ+0L/3Fr69NEm+shcBRppubUxU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB8948.eurprd04.prod.outlook.com (2603:10a6:20b:42f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.34; Tue, 17 Oct 2023 19:32:14 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.021; Tue, 17 Oct 2023 19:32:14 +0000 From: Frank Li To: manivannan.sadhasivam@linaro.org Cc: Frank.Li@nxp.com, bhelgaas@google.com, imx@lists.linux.dev, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, lpieralisi@kernel.org, minghuan.Lian@nxp.com, mingkai.hu@nxp.com, robh@kernel.org, roy.zang@nxp.com Subject: [PATCH v3 2/4] PCI: layerscape: Add suspend/resume for ls1021a Date: Tue, 17 Oct 2023 15:31:43 -0400 Message-Id: <20231017193145.3198380-3-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017193145.3198380-1-Frank.Li@nxp.com> References: <20231017193145.3198380-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR06CA0013.namprd06.prod.outlook.com (2603:10b6:a03:d4::26) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB8948:EE_ X-MS-Office365-Filtering-Correlation-Id: 54f07355-131e-4776-9861-08dbcf47c41a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JiMgWVd85QcpWK2/F1nnDakML8dXDiIPSEHy4IMPZcMdGnulczCERNCpP3iouMX/SGi6Lnt+i28DZvX1DZ0EXpDq1AlfOSTrD4eVqLDEagOUAMEg9+ro6pl4EHwQReYCgBf08Q9lwr/droeRZi97vRj6JKhSA/HtN8VeZOa1oMD81IYYZggrwde0kGbmLZa13zBmhNmxhf0FfAqW7gErtBvO9LQMX+vL2VdZx8n0+wkEluTZ7IdwB6qMKvAJUqlAERTdnuRv6Yps4CLevzsi4lGMGqo7uQ2SjrtRMBt3yfF0B/IGYGxC23LVGR1YIGi5rjh8hu+hz0F4ktFW9yuNzIFs/1+oOoti5a5hcLit5Tv13LD4aaa1E1RusM0mnTLpt+jNc0HHoW3mOyy/dwZvKQ6HCdfXWCsDmRnRVdinpNw1GbSZTUfHVJbjGdXVkOVcHZ04yFDho9mKIypsgB6EJirk+wMVWEy9LX2wEy6YGFLFDPDGobUzye2BmAybTP/Z5nINojU5dqbvwQIGelO5Bne+ALiS9QOOz/Y1d1iQPMIVMXLRr9fFSqrPCncOKf9srV8OJUtwW071a+k0yozE8FTcUEWvLggX3pLUx/YJJwphaglUk4GQuxo9AvnmAUY0 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(346002)(136003)(39860400002)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(6506007)(52116002)(6666004)(83380400001)(38350700005)(26005)(6512007)(2616005)(38100700002)(15650500001)(2906002)(86362001)(4326008)(6486002)(5660300002)(8676002)(36756003)(8936002)(41300700001)(66556008)(66946007)(316002)(66476007)(6916009)(7416002)(1076003)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?TngB2IrPGR2LZF1cqDddCbTC6TLw4ruOUTQccUEeC7XO70QL3xepw3sFhRRI?= =?us-ascii?Q?QzOkVaVVlxCLR/64OaxRVPZyU0EcICKjZw8XPIPuEVKYKhmpYWaadK5VGlEV?= =?us-ascii?Q?7IHVxfwW1c2Bf1ZXU2+i5JbyjDjVJPGXqcNz3a3aOEh2WQkmj0uyonD9EAb5?= =?us-ascii?Q?7+k6BALwOmtbXJwq9AMn2ULnMCn9RouBD87P8mNHsjogW+R87vFXL1HpX/ef?= =?us-ascii?Q?2leuilcAk7lXr8o4xBz+V/1/9aSFsWGxeAPirs1x7ABnhcZy4VRbsvKj9i6f?= =?us-ascii?Q?neVZO9pEl/EZsiokd7+n1mf/v9SqPvChhMTZBKlZpQo4+LIvdt4IGfl2pfGE?= =?us-ascii?Q?iDsDgghlsgBdCDvAW8dj14bvOj3ReN4MlgQGwijMel2w9KC+S94kejznMIc1?= =?us-ascii?Q?JR37P8rtJkAOCXeODOBw6ykdmoY76HhhDc3Ug7PVrlqihmUSIcJeej1ARfd5?= =?us-ascii?Q?PplvaMenwJZ7aZPZ8S5f0QQyxMmt8SiBzkgnd7KAgwXd1XvZjj5EHrtXaK+o?= =?us-ascii?Q?7cEh8feDV9DLHx/hJKfBVTWvYU4cxI8wVUeENDNbar0VAEsSe+2yNJKHD9mJ?= =?us-ascii?Q?KJiYQEMYV2JDLX5FAil4ewtzGejwyRqrX2w9Ac8z7hLD5oH/BdHFacIcIA81?= =?us-ascii?Q?sRri8BqRFh47rvlVj07ugdm0GDH57JIeG4CqE5vlhl8a9zzxaYb0lW44Zl69?= =?us-ascii?Q?WDaz17OrxvYkvK+9GHDDe29PJmTdpQLzvofx9eeiJDxeCpECEOHGvrRsJm4H?= =?us-ascii?Q?umr0AYgQJgcyOsK9mzCo8Msyqe8s1V+w25w6ByvUXvkJYvwnMjz2fpt1z474?= =?us-ascii?Q?8lSgR9bQrh+m4Uz6frA4BFGcyMpVS/OpLGhDQcDVz1Nhhpxe+YCo5LLFWKmv?= =?us-ascii?Q?UWah/5XLaHMs0vptW7mB7h434h2vpTDKVrr7ybX5KBMVP5qcpOUYt8lNqn6n?= =?us-ascii?Q?4ikCua3MKFyctQHYOx91suWurBwWYn0VaUL+iK/9aC6dneET8a1Jaj6j8H25?= =?us-ascii?Q?qjWah0a5YE6rp1qs7Li+GYrHtE1ursLMsnRRWfrEJAaNPRBA0WGIggSDbchO?= =?us-ascii?Q?gh3RNhaZQzbxyNpO9s6VCrnXx3wS4eZiFtCoUVLmEvBgye8HgEBHmRWogImO?= =?us-ascii?Q?cideP1Tk03bKPw/kOycFGjz4BbO1mPaHJvdSJtuUtPW5JFq1dY6Hgio0WKmT?= =?us-ascii?Q?47SVxslAbpmHIgMjr9jJhvESYlS7ChNyvDfSL432fNTb4g7mi02KMB2Ii8CZ?= =?us-ascii?Q?hfTdiJk0qcm9zOdGoB+Aiqa56KopvITnTGMaodWHH8GtIp8eWlvF8vAU+Ois?= =?us-ascii?Q?8TXQaDSYPkqwX5K3KrSvm0XvP/VN0ZzyNW3k3lr04xTdM66/tmRrqFs/APmt?= =?us-ascii?Q?ZrkQP1Rz4ljhkX3D7gHGiH5wyu5U5p6iYAZrfsRw6iG8ZiJBG7ZebIpyRV1A?= =?us-ascii?Q?O1zzd+CmosVgEI6fBxzuTjxCzxT2e7bw316P5eMU+ilrCFsQQL/YaR8my2K8?= =?us-ascii?Q?GxH6QHBKGKtYWfsHVJEIuEtrQCSQ16RvgPhU8jihS8jgZty4S2GdChgL7jj/?= =?us-ascii?Q?aiyyza9DULMcnXmsTPwiVZP/7DHmQp+Mcl30oi2q?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 54f07355-131e-4776-9861-08dbcf47c41a X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 19:32:14.4766 (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: 0v4F4bwdS9kq5goU1x9S4rcoeIadioJ5I7KWLaKqNBMdCdmyXGS810YDaLcq0lq8l7gJRROKN4qMwSgLSr43Sw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8948 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" ls1021a add suspend/resume support. Implement callback ls1021a_pcie_send_turnoff_msg(), which write scfg's SCFG_PEXPMWRCR to issue PME_Turn_off message. Implement ls1021a_pcie_exit_from_l2() to let controller exit L2 state. Signed-off-by: Frank Li --- Notes: Change from v2 to v3 - update according to mani's feedback change from v1 to v2 - change subject 'a' to 'A' drivers/pci/controller/dwc/pci-layerscape.c | 86 ++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index aea89926bcc4f..6f47cfe146c44 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -35,11 +35,21 @@ #define PF_MCR_PTOMR BIT(0) #define PF_MCR_EXL2S BIT(1) =20 +/* LS1021A PEXn PM Write Control Register */ +#define SCFG_PEXPMWRCR(idx) (0x5c + (idx) * 0x64) +#define PMXMTTURNOFF BIT(31) +#define SCFG_PEXSFTRSTCR 0x190 +#define PEXSR(idx) BIT(idx) + #define PCIE_IATU_NUM 6 =20 +#define LS_PCIE_DRV_SCFG BIT(0) + struct ls_pcie_drvdata { const u32 pf_off; + const struct dw_pcie_host_ops *ops; int (*exit_from_l2)(struct dw_pcie_rp *pp); + int flags; bool pm_support; }; =20 @@ -47,6 +57,8 @@ struct ls_pcie { struct dw_pcie *pci; const struct ls_pcie_drvdata *drvdata; void __iomem *pf_base; + struct regmap *scfg; + int index; bool big_endian; }; =20 @@ -171,13 +183,65 @@ static int ls_pcie_host_init(struct dw_pcie_rp *pp) return 0; } =20 +static void ls1021a_pcie_send_turnoff_msg(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie =3D to_ls_pcie(pci); + u32 val; + + /* Send PME_Turn_Off message */ + regmap_read(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), &val); + val |=3D PMXMTTURNOFF; + regmap_write(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), val); + + /* + * There is no specific register to check for PME_To_Ack from endpoint. + * So on the safe side, wait for PCIE_PME_TO_L2_TIMEOUT_US. + */ + mdelay(PCIE_PME_TO_L2_TIMEOUT_US/1000); + + /* + * Layerscape hardware reference manual recommends clearing the PMXMTTURN= OFF bit + * to complete the PME_Turn_Off handshake. + */ + regmap_read(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), &val); + val &=3D ~PMXMTTURNOFF; + regmap_write(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), val); +} + +static int ls1021a_pcie_exit_from_l2(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie =3D to_ls_pcie(pci); + u32 val; + + /* Only way exit from l2 is that do software reset */ + regmap_read(pcie->scfg, SCFG_PEXSFTRSTCR, &val); + val |=3D PEXSR(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXSFTRSTCR, val); + + regmap_read(pcie->scfg, SCFG_PEXSFTRSTCR, &val); + val &=3D ~PEXSR(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXSFTRSTCR, val); + + return 0; +} + static const struct dw_pcie_host_ops ls_pcie_host_ops =3D { .host_init =3D ls_pcie_host_init, .pme_turn_off =3D ls_pcie_send_turnoff_msg, }; =20 +static const struct dw_pcie_host_ops ls1021a_pcie_host_ops =3D { + .host_init =3D ls_pcie_host_init, + .pme_turn_off =3D ls1021a_pcie_send_turnoff_msg, +}; + static const struct ls_pcie_drvdata ls1021a_drvdata =3D { - .pm_support =3D false, + .pm_support =3D true, + .ops =3D &ls1021a_pcie_host_ops, + .exit_from_l2 =3D ls1021a_pcie_exit_from_l2, + .flags =3D LS_PCIE_DRV_SCFG, }; =20 static const struct ls_pcie_drvdata layerscape_drvdata =3D { @@ -205,6 +269,8 @@ static int ls_pcie_probe(struct platform_device *pdev) struct dw_pcie *pci; struct ls_pcie *pcie; struct resource *dbi_base; + u32 index[2]; + int ret; =20 pcie =3D devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); if (!pcie) @@ -220,6 +286,7 @@ static int ls_pcie_probe(struct platform_device *pdev) pci->pp.ops =3D &ls_pcie_host_ops; =20 pcie->pci =3D pci; + pci->pp.ops =3D pcie->drvdata->ops ? pcie->drvdata->ops : &ls_pcie_host_o= ps; =20 dbi_base =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); pci->dbi_base =3D devm_pci_remap_cfg_resource(dev, dbi_base); @@ -230,6 +297,23 @@ static int ls_pcie_probe(struct platform_device *pdev) =20 pcie->pf_base =3D pci->dbi_base + pcie->drvdata->pf_off; =20 + if (pcie->drvdata->flags & LS_PCIE_DRV_SCFG) { + + pcie->scfg =3D syscon_regmap_lookup_by_phandle(dev->of_node, "fsl,pcie-s= cfg"); + if (IS_ERR(pcie->scfg)) { + dev_err(dev, "No syscfg phandle specified\n"); + return PTR_ERR(pcie->scfg); + } + + ret =3D of_property_read_u32_array(dev->of_node, "fsl,pcie-scfg", index,= 2); + if (ret) { + pcie->scfg =3D NULL; + return ret; + } + + pcie->index =3D index[1]; + } + if (!ls_pcie_is_bridge(pcie)) return -ENODEV; =20 --=20 2.34.1 From nobody Fri Jan 2 00:09:21 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AFB8DCDB474 for ; Tue, 17 Oct 2023 20:46:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234999AbjJQUqG (ORCPT ); Tue, 17 Oct 2023 16:46:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344309AbjJQTcW (ORCPT ); Tue, 17 Oct 2023 15:32:22 -0400 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2041.outbound.protection.outlook.com [40.107.13.41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 418D8ED; Tue, 17 Oct 2023 12:32:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=guFgFzPAa+UGrPoWx/Lnk4pJkpH0T4yu451c9U1NuJjbfbONfeKIOk5sCIeBXzuVenmRy4d0EE6XwKiayepv/+jamQjGwKZQ3POk9iyAgqNO/c850Xw7FgU8zu7BKkMKhGZr5DWSypG5di9ahe/x6OCLY/O1lbrWjnsD6AG8rwlUuGbRq0Qiuft20KmCYVDZceOmYUgsKfV607+TD7EULXbx2GZ4UmhwJFRtKABjwLO1PsPSSqYg8NYkZ4BxsvBB+wjlc8RWT59iFBiVMCCCjsD5JcP67JuFIqQUmQ4qXr6K7wJHWhc23xS2ELPVYsVeaHfEq1wOoYgaepI5/qNh7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=QxkdJECaH4y9A07SriLtqtwi2hunRS2N34XPnJlu8bM=; b=T1XoinbFkOfB2EK2+4Kk5wut1HDsE4A3Li8aSLpkypI3TKtzt2yg4SuWctIsc2jr2hlWVL40ks/T5rzM+CiWjRD+CdYIc6Ib7y+fNeqMdM2xY0r/Fc8W7oG5D8DG6sS8UoxU5jsqARPzChW534dZVd+OQfBKDfbw09zAv1LHCj0Spmq8tLszizv5/Fk+GHcumCnMPxqYaJLnZFyirtMPA6lULPL87xMtETBG3kyCJQbPEQ1aNGBfSPQzLMg/nyytY9ZHY61c9OOVg0ejtV39mDbbRjAyrdryIDq8uwSoHB/FTKtd2KYmx1eI+BfA06y+5wR0lWSvJ62844M+zdAHIg== 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=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QxkdJECaH4y9A07SriLtqtwi2hunRS2N34XPnJlu8bM=; b=KL8Gy7byj8uDnppS4qvStgU/TW95uovlkwk8Mq90FGgCWBxq9af/2l+HbLDw07VZLZhM683tnIPF5EL9dRTEpDtO0UkMBueN9zDhzQghoJOhBqsb/uRRjzVmzBGypuGqpVzsdxEa8lc2d7PCMNuqJg0n2MZ8Sn0aRZ22j3+03Qk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB8948.eurprd04.prod.outlook.com (2603:10a6:20b:42f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.34; Tue, 17 Oct 2023 19:32:18 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.021; Tue, 17 Oct 2023 19:32:17 +0000 From: Frank Li To: manivannan.sadhasivam@linaro.org Cc: Frank.Li@nxp.com, bhelgaas@google.com, imx@lists.linux.dev, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, lpieralisi@kernel.org, minghuan.Lian@nxp.com, mingkai.hu@nxp.com, robh@kernel.org, roy.zang@nxp.com Subject: [PATCH v3 3/4] PCI: layerscape: Rename pf_* as pf_lut_* Date: Tue, 17 Oct 2023 15:31:44 -0400 Message-Id: <20231017193145.3198380-4-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017193145.3198380-1-Frank.Li@nxp.com> References: <20231017193145.3198380-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR06CA0013.namprd06.prod.outlook.com (2603:10b6:a03:d4::26) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB8948:EE_ X-MS-Office365-Filtering-Correlation-Id: f1183563-d7f1-44a0-08cf-08dbcf47c633 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AyBtbEOrjvIVYNixKRh/G5C1XcLpiqW5H8imVVA9Pkpw02P2iUb2ZzbCBitmZfE28LUW+tlrpV+CSq2GmJDYPiHdWFjBgYFbSgM0/ZIIl2WYTkAGJPZNMo516ha24tQf9g/j8Ehfx2SoNxUnq4rj/qWkQ6PFEbYkdk5UcEnli2RG3mIJqeRouhCxABAePJMYcVJ8gm6skmzEf3FERbee2P66A2GBgs/QpVdGejkXqAwMm/CBDbVfhElWOcr0I1jYT4O3unZjfxxrmvZoiAa/gfNsh21w7aLthe3gQLUqp7crV5q7jTcZM8dmEdqlQPKiCiYKHCsXVQEmfWss/8BnnVqQg/pbGUnLBI2Oz9Jelmwop7x6SjGI471NIwX6hnvApWEjNXdP67BimFbc3XwwOGAyqHJPGqZpzZ01GQYBK8JMh6iRwEH0eUq0g6PQnKi+KqLwc7cnDFvgy9Lp9OOZ4/jOCdyMT39o+OePKT1SAwxxIshtuQXUl6y/c99qdfYK2kP3BdxHiIrdYw3H9TM619L13+z4+kSXimbaI4AffOiGUJmtuJ/G8laPMi6S3hFxSOho/E4PlNS5wS55YUn/cDv0K9wQb+MJuFWj2mH1qCBp7/n29fxun6Z8mcz3B5UF X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(346002)(136003)(39860400002)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(6506007)(52116002)(6666004)(83380400001)(38350700005)(26005)(6512007)(2616005)(38100700002)(2906002)(86362001)(4326008)(6486002)(5660300002)(8676002)(36756003)(8936002)(41300700001)(66556008)(66946007)(316002)(66476007)(6916009)(7416002)(1076003)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2m3/5UJb9z40PQRoSpoLnPlP3AJPcMOu4hspvenvXQvsSIiz1Fx9k1aVUB3u?= =?us-ascii?Q?a1opBpDMAd54ilAoMG+BDU2alk5vjw9sGDohEnaCHN4uNZB9uarHOfq+3f1b?= =?us-ascii?Q?Vc4jvKQeJkJvFUR75YEGIgYsgefvX04Zgwc9tMaOdOT++s1AxyB/y3OBzOs6?= =?us-ascii?Q?eP8lurKXEKzNnTog3XHIdpLGFsKpzZZiv4XeSQezN+lBAdQYUHumRm69dFdO?= =?us-ascii?Q?u5ArTJ5X/rgo/TCCsJhoqrdAMwqoHs//p2+IKxQ2kezGYciDffKnMmyGVlS6?= =?us-ascii?Q?L1jCHX/ABAC8/WUqzL41cO2T01WmK4EitGcFz89iTLb51FHuHU+itqb235wZ?= =?us-ascii?Q?oP+s4TTnzqJvGhkhyPczvLW1MHz52aEpFNFFynwmJIdoCmgmIPv9q+Yg3PRf?= =?us-ascii?Q?goUgrqGqiTiIggL304FTsWIovVJosp0xv/jE1Tl77P/5OB0V+kFhVKdRwkcN?= =?us-ascii?Q?Xkx1qgWc6d+hF0bPEST89Hur6TufVHcvHry+Ln/eJJ/XXecKuBgJ8IngE/BQ?= =?us-ascii?Q?t+uen9/8LNJ9rHQAI5vHtk5AU87ZSRG/mIIk0RUmHff9ixEiqmrnTFg3QEZH?= =?us-ascii?Q?fai5Svti6x+WnBZtUhy2T38ZL4jFM20FI217LX1EKYTm4pKANeCDfQ8X9sWV?= =?us-ascii?Q?cP+PywEdw0neDTAcokdlQba4+e0quPCeafSta6aMJWXHjno4wczEGilvRDq+?= =?us-ascii?Q?xJ1tf57bRcCuDKoER/n1p5Pm2OZnzMrVKpjI+v9fSMiflMhWA05n27Cqd8+Q?= =?us-ascii?Q?pzz81iChrjnWEUF+G39ZatALKMnLasBbeoX13cowS85a3LQrj8I5/QvDB72+?= =?us-ascii?Q?wB0XdezPjCNM3tDn5Odu8gV6kzKWIDtuDmythY12wSj8A41ss6AhFdMk1YWZ?= =?us-ascii?Q?dbdV1+TLIHWwQ+MmylhwLPjnXrKk/UAhGgH8kWPZygouZVDjePFAPZbJTkBn?= =?us-ascii?Q?mhmoj+rTFhMw5otcCWW+U8qtOikmxn6TKROqtGZYHiS1/krmlN1EjE/83oAf?= =?us-ascii?Q?98abDqGVybWImgCNRcJbB0FJCLmdg2RryhzA4nqWIXO/8cnHE0ZyX+cJ3bnW?= =?us-ascii?Q?Wq6C12TqNSCF2U9eLfqdEvTIho1EytA6ebWjSGQxVX3jDy3wFj5JDfGTw5Vb?= =?us-ascii?Q?pHLf2+drX2QWOmL/qyJrXjvUVRy8eJooD7gPqFCcGyfPlhuOfcBsWQVbONRK?= =?us-ascii?Q?vNm/Bl+w3YWvgQztBmJMqIm4i0HhMefhmifEM1WOLwGl4PDMUflb/tfHwfn/?= =?us-ascii?Q?ytkMzYdvswK1J5idJ++UG9UFtn/X2RDOP+1X7A9rvjR62+Mja7/iGo92K9FT?= =?us-ascii?Q?iUBScEQKJ9tVTYksg+erD6Gss6vn4QCO5Mt93x/tcwb1iEqWzPGM8XfpoVUT?= =?us-ascii?Q?E3m0PR6o977xcG76Izs/G18NyPK2XChYi0C1+hozkTKE7Rp335/dLCaztQBu?= =?us-ascii?Q?5DborzanhA7iBapp3lXv+4KsAzpLNdGhPI0au5vlOaRmjktamhSEAMFgh1Ys?= =?us-ascii?Q?F2iRceDp569mL32tkUKL//LQ6VlhcwiDhNE2NFznC1+VsDNl70IynI6BckDv?= =?us-ascii?Q?GDXAMG332aNCAYxHY4fGzt4994buT13QDfIfVEwB?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f1183563-d7f1-44a0-08cf-08dbcf47c633 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 19:32:17.9413 (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: iIkFmdTa8cFVaPNvUY7SSl/wmVmPmS9vgZhc4Z0aonPWyBxi00eNDuTq7fE2W7YftMI99FFDrJhrCqd388ztdA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8948 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 'pf' and 'lut' is just difference name in difference chips, but basic it is a MMIO base address plus an offset. Rename it to avoid duplicate pf_* and lut_* in driver. Signed-off-by: Frank Li --- Notes: change from v1 to v3 - new patch at v3 drivers/pci/controller/dwc/pci-layerscape.c | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index 6f47cfe146c44..4b663b20d8612 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -46,7 +46,7 @@ #define LS_PCIE_DRV_SCFG BIT(0) =20 struct ls_pcie_drvdata { - const u32 pf_off; + const u32 pf_lut_off; const struct dw_pcie_host_ops *ops; int (*exit_from_l2)(struct dw_pcie_rp *pp); int flags; @@ -56,13 +56,13 @@ struct ls_pcie_drvdata { struct ls_pcie { struct dw_pcie *pci; const struct ls_pcie_drvdata *drvdata; - void __iomem *pf_base; + void __iomem *pf_lut_base; struct regmap *scfg; int index; bool big_endian; }; =20 -#define ls_pcie_pf_readl_addr(addr) ls_pcie_pf_readl(pcie, addr) +#define ls_pcie_pf_lut_readl_addr(addr) ls_pcie_pf_lut_readl(pcie, addr) #define to_ls_pcie(x) dev_get_drvdata((x)->dev) =20 static bool ls_pcie_is_bridge(struct ls_pcie *pcie) @@ -103,20 +103,20 @@ static void ls_pcie_fix_error_response(struct ls_pcie= *pcie) iowrite32(PCIE_ABSERR_SETTING, pci->dbi_base + PCIE_ABSERR); } =20 -static u32 ls_pcie_pf_readl(struct ls_pcie *pcie, u32 off) +static u32 ls_pcie_pf_lut_readl(struct ls_pcie *pcie, u32 off) { if (pcie->big_endian) - return ioread32be(pcie->pf_base + off); + return ioread32be(pcie->pf_lut_base + off); =20 - return ioread32(pcie->pf_base + off); + return ioread32(pcie->pf_lut_base + off); } =20 -static void ls_pcie_pf_writel(struct ls_pcie *pcie, u32 off, u32 val) +static void ls_pcie_pf_lut_writel(struct ls_pcie *pcie, u32 off, u32 val) { if (pcie->big_endian) - iowrite32be(val, pcie->pf_base + off); + iowrite32be(val, pcie->pf_lut_base + off); else - iowrite32(val, pcie->pf_base + off); + iowrite32(val, pcie->pf_lut_base + off); } =20 static void ls_pcie_send_turnoff_msg(struct dw_pcie_rp *pp) @@ -126,11 +126,11 @@ static void ls_pcie_send_turnoff_msg(struct dw_pcie_r= p *pp) u32 val; int ret; =20 - val =3D ls_pcie_pf_readl(pcie, LS_PCIE_PF_MCR); + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_PF_MCR); val |=3D PF_MCR_PTOMR; - ls_pcie_pf_writel(pcie, LS_PCIE_PF_MCR, val); + ls_pcie_pf_lut_writel(pcie, LS_PCIE_PF_MCR, val); =20 - ret =3D readx_poll_timeout(ls_pcie_pf_readl_addr, LS_PCIE_PF_MCR, + ret =3D readx_poll_timeout(ls_pcie_pf_lut_readl_addr, LS_PCIE_PF_MCR, val, !(val & PF_MCR_PTOMR), PCIE_PME_TO_L2_TIMEOUT_US/10, PCIE_PME_TO_L2_TIMEOUT_US); @@ -149,15 +149,15 @@ static int ls_pcie_exit_from_l2(struct dw_pcie_rp *pp) * Set PF_MCR_EXL2S bit in LS_PCIE_PF_MCR register for the link * to exit L2 state. */ - val =3D ls_pcie_pf_readl(pcie, LS_PCIE_PF_MCR); + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_PF_MCR); val |=3D PF_MCR_EXL2S; - ls_pcie_pf_writel(pcie, LS_PCIE_PF_MCR, val); + ls_pcie_pf_lut_writel(pcie, LS_PCIE_PF_MCR, val); =20 /* * L2 exit timeout of 10ms is not defined in the specifications, * it was chosen based on empirical observations. */ - ret =3D readx_poll_timeout(ls_pcie_pf_readl_addr, LS_PCIE_PF_MCR, + ret =3D readx_poll_timeout(ls_pcie_pf_lut_readl_addr, LS_PCIE_PF_MCR, val, !(val & PF_MCR_EXL2S), 1000, 10000); @@ -245,7 +245,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata =3D= { }; =20 static const struct ls_pcie_drvdata layerscape_drvdata =3D { - .pf_off =3D 0xc0000, + .pf_lut_off =3D 0xc0000, .pm_support =3D true, .exit_from_l2 =3D ls_pcie_exit_from_l2, }; @@ -295,7 +295,7 @@ static int ls_pcie_probe(struct platform_device *pdev) =20 pcie->big_endian =3D of_property_read_bool(dev->of_node, "big-endian"); =20 - pcie->pf_base =3D pci->dbi_base + pcie->drvdata->pf_off; + pcie->pf_lut_base =3D pci->dbi_base + pcie->drvdata->pf_lut_off; =20 if (pcie->drvdata->flags & LS_PCIE_DRV_SCFG) { =20 --=20 2.34.1 From nobody Fri Jan 2 00:09:21 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A617CDB474 for ; Tue, 17 Oct 2023 19:32:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344337AbjJQTcb (ORCPT ); Tue, 17 Oct 2023 15:32:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344252AbjJQTcZ (ORCPT ); Tue, 17 Oct 2023 15:32:25 -0400 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on2055.outbound.protection.outlook.com [40.107.13.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BEA6A98; Tue, 17 Oct 2023 12:32:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LvfF3kjbsqChm6GXJEOdtbZWSK0aZy0ZkEb3/TSAre88jr5/eP0KM75plf+FyEFQryi5G5f01zXPSUl92Tg5IuTIz0uznYfvvI+jRyjmJP+w+C7fyKcX0z7CfCQD37prZqp5aKaUdI6dmukSDss/qoJzz2zDiLoPvSJgpES2XwbGcS4E9IK8y7JATVo12XpsS8AHqUEqEEtBfMoLzQfRvictdk2jaloW3HaK66sNQKCIdvfygFjXAVft2/fXLc2KOD5R0bbQW5coDgCQGAFH7JvVue6z1xSkebpCYczVW9v1IrL/IiCDSj7GXNBDSz8UwrFWrNiAWGXC7XrwlJttUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=3WlrkLBB+fRC84m/Ncrmr7Y6VDuPmKBShIK1YkfnCDE=; b=COK+8V+9L9wdL361sJmk3O7Q4/wI76Q2fEZ4PCl43bzSuEmeJi5vpS65USMGFo5ayVnaot/4SuhPY9mjC/NPnaNZl1wA3JefU+my+VeCyTxy/JCFUZB+zwYrPyc/COwtGcQSXN/Cj/CULwSl6gUMFZ9EJbVeo/Fq09bmFokR+NY5rbm+XOio21vVBfKb1Pb4Ky9aumInPjul5s3ea7JOgwERqweXTCks/XPiAw/R5bO57n4h/egc2Gyk9OtZHISiAAHicSM1LHjhz3YJ9jXOuCm7wdLbEW5bla43j+uX5MHWdiMnKXyI2dcTSbK7L8gqJtMc3yTH8+6rARHN2ev3Xw== 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=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3WlrkLBB+fRC84m/Ncrmr7Y6VDuPmKBShIK1YkfnCDE=; b=pyqb303+qolgrLKIG6RU354++pi3hMl/MtRWUHglVCGbK1CjGOsMegdCKw+OnjDDzMl6NEmsMQjmjRW+Lsz6tbu4sq0P1Kej84Q50vgaoc6gLWsn+Gj7b7Dc265eKbB4Xj9R2RHqD0RgRnf1aZ4Xn3J6izBXwEh62hWabYpkJxo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by AS8PR04MB8948.eurprd04.prod.outlook.com (2603:10a6:20b:42f::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6886.34; Tue, 17 Oct 2023 19:32:21 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.021; Tue, 17 Oct 2023 19:32:21 +0000 From: Frank Li To: manivannan.sadhasivam@linaro.org Cc: Frank.Li@nxp.com, bhelgaas@google.com, imx@lists.linux.dev, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, lpieralisi@kernel.org, minghuan.Lian@nxp.com, mingkai.hu@nxp.com, robh@kernel.org, roy.zang@nxp.com Subject: [PATCH v3 4/4] PCI: layerscape: Add suspend/resume for ls1043a Date: Tue, 17 Oct 2023 15:31:45 -0400 Message-Id: <20231017193145.3198380-5-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231017193145.3198380-1-Frank.Li@nxp.com> References: <20231017193145.3198380-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BYAPR06CA0013.namprd06.prod.outlook.com (2603:10b6:a03:d4::26) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|AS8PR04MB8948:EE_ X-MS-Office365-Filtering-Correlation-Id: d5f6e585-9c86-408e-1705-08dbcf47c849 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mrpgXsOAGEyAHJUoJbl/pkPueSJ04mWSA76ETJ3tBjvUprUgJOmA407qOZyroSkHBQg0D7yNw7WdZaq3996XfkaArj9yLPlLpc4aab5VQCu5m3i0xOix4Bg7eglpBntufopqsnjhihFuxNfKsqtU69/gME/PRhGiWarPBWj+c7WeoQ1DOJaqQe6yFi1v/Om5eXlxsU/ovD8YYHi+jTYszedoWvHbWqlyWeI0y3vbJ/LKQrJS+Nw6xKFZTJ09zuWf7OyQwsgs5inQ49DhH+DtYdRY7gIodvskTrRXLb57vezUkLpyifsLGQlpIrgm7+B/4Ep66eqSJmmpmCxUvzIAVD0RF6UOxRnsSqlVaD5jY9ArRLuIrEPNhG5MTwqaS4mbFv0AOcVxwieUZbUYp86/QALv6kRQMZEXpR0lOQUl0z0KLzzCks7ZI6Fx6cbinjwYRzcdErNbHPRYqyPb1JyyTb1batrxdSI/Rnu04bz0CIsNPSTgTXlNKB2G9vP3yza+Nf4+R8hvoVO6Y/KuHan7kY7xu8n7vO4k4nGdnjy9fx73N7u381pe0t4c3PQsOOXupVVt3/4OkKh2WziGMAmefllEZT52WREzNMx6nV923GM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(346002)(136003)(39860400002)(230922051799003)(186009)(451199024)(1800799009)(64100799003)(6506007)(52116002)(6666004)(83380400001)(38350700005)(26005)(6512007)(2616005)(38100700002)(15650500001)(2906002)(86362001)(4326008)(6486002)(5660300002)(8676002)(36756003)(8936002)(41300700001)(66556008)(66946007)(316002)(66476007)(6916009)(7416002)(1076003)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?b1Zt95IeghmeGvn9h4tBqaIEt2wDzWFaB+y74GS13qhDD38XskYvvXlagxQt?= =?us-ascii?Q?2Kk14Oew2jIT1ffcuYdHgJFII9vkjfw+xDUrtcYDmP/uHmTW2j7bBEbIawtt?= =?us-ascii?Q?DrMwzqBBRrS9kIfPf+uDSG6pPM+V4VIvqHiL5RLzk0EHHYPzzXnlGXytEFcH?= =?us-ascii?Q?qZ9qRSJrTj65O2zWtnqZ1k8v/9UEXkmjVo1eDkW+Yoqh3kKedlF0qnqcUZz2?= =?us-ascii?Q?2MAx0L8dkvoEo2pCeZ/MXgEXpXRHmHguleVn3O/VWOgJVmtjZ56k7Nq9OK1W?= =?us-ascii?Q?Of8SNv6X3SFmsxGwj+PPtL7DCMaSzuWJGk+oA5ozn+j1DOofjn9YCWZHxn58?= =?us-ascii?Q?3uXcdaYQnmyn8pUcbDaDFOSZty5CiqaUgOuqc7SUSm07OskfpYmK5V/3sJWM?= =?us-ascii?Q?jvr85OhQKSxF7kYT64CgUSddpPzLePqlYTOITlHo8w/Hlg2v1yPZRIaNchdx?= =?us-ascii?Q?+QjkBcjdW9RXg4YwSufP7O1qXkZOLRQH/mlh5NrZfNW9Q0HDuQmBSvIwNX/B?= =?us-ascii?Q?3a2Ftu8hO+F3v3yARtSdED5njG0FxusjGB4ZoK/aPj7sRAcxd5fBxfFkiPh7?= =?us-ascii?Q?w1C0G8ZH+Xx3oeKLOE+H7hhUTJvEDvgFFrXna8c/F3R42LY9VeI7qsPikpEK?= =?us-ascii?Q?Zjh5jWRcMLNXIloKONOktVRWHFkB8OSsiDx3zF5w0N3nob61fHh3kxgZ0Drz?= =?us-ascii?Q?QbX2JbQ1ezOLdAXp4HkuvA4ngQIakuxem61oXYbzqEVceagF+T/UBXELdJ+9?= =?us-ascii?Q?KbHYG28B54dPfV6bQsn/+a4IyRGmM1a8nnSJ2BQJJlGECAHAoc3RWufU2vqQ?= =?us-ascii?Q?77rzdNRzN+tO9ZAj990QlJz1hKhVFaFtzkVpzyLSIi1qcrzOVka6YLw5+nxG?= =?us-ascii?Q?pDt/8RcWWRxff9HkRU0gG43p4EKsG91/KAxPuUOvTLFlOlZv59Unkz/udXjb?= =?us-ascii?Q?KyikO1A4G00k7tAKIyZCQAIBu+iXUKiese3oBMil8LnAXuV+OaS9Ic/TCr1p?= =?us-ascii?Q?K+LWvAqYncdmXWkNfiMYrAhHVP2X/I+Wo73pCdpsPaM8KpHzlYBlwuxkcNsF?= =?us-ascii?Q?OFfr7p9xaYFytpr8Gpoz9tHUSHXsUG0JDe28G6FvBEI6LEreEb5anwFkZzph?= =?us-ascii?Q?jXHX4uewFvfixESA5vjiWwV0qptFn3WySV5hZesGgLxqAcTzA0xFsLzOGGAn?= =?us-ascii?Q?HLbUwaM64BQyKZezHTDEEYAZaGqsGMKk1bs7TOnFJUm4hhyVMsQTFMoMojb5?= =?us-ascii?Q?bFnQp6glJPAOTXq3Fks8tow1WAWO5cWBF7yQy8cAz9IAJQGIez+u45zu4ZkN?= =?us-ascii?Q?hzaBgk90uLI6siWFHwiP7cEmwRJyjZohfC4kal+lv9gYvoVQIqHQV41H6rBK?= =?us-ascii?Q?9EzU3gkhgRB+zZKYEZB8UGoenlyrJgBZ4WONXBnIpH4iw4guWfkIxV8kGr50?= =?us-ascii?Q?p3+EjfJs2NSqKLGNdTgGS7W4rMsfXI8nn/eNYP/pYS1QhNJLa2yagPEO1K9i?= =?us-ascii?Q?k5dPVnaguQJxnQcUrPDpXHEgkng/EdaYihURIjwTFtn+sos1TeVyuX4NDZ3H?= =?us-ascii?Q?GDPi+7B24cBFnfDPqsyyGFWpC4cc7meqxGk/UZf+?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5f6e585-9c86-408e-1705-08dbcf47c849 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2023 19:32:21.4171 (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: CttJn5yErEm5kOEMQ+jAVuVLN736ddNpOdZnhVhJWhzAZ/AbddkpFLLmtT1NFahzAPmTlRlcPmDb+u9CU3q67g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8948 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" ls1043a add suspend/resume support. Implement ls1043a_pcie_send_turnoff_msg() to send PME_Turn_Off message. Implement ls1043a_pcie_exit_from_l2() to exit from L2 state. Signed-off-by: Frank Li --- Notes: Change from v2 to v3 - Remove ls_pcie_lut_readl(writel) function =20 Change from v1 to v2 - Update subject 'a' to 'A' drivers/pci/controller/dwc/pci-layerscape.c | 86 ++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index 4b663b20d8612..9656224960b0c 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -41,6 +41,15 @@ #define SCFG_PEXSFTRSTCR 0x190 #define PEXSR(idx) BIT(idx) =20 +/* LS1043A PEX PME control register */ +#define SCFG_PEXPMECR 0x144 +#define PEXPME(idx) BIT(31 - (idx) * 4) + +/* LS1043A PEX LUT debug register */ +#define LS_PCIE_LDBG 0x7fc +#define LDBG_SR BIT(30) +#define LDBG_WE BIT(31) + #define PCIE_IATU_NUM 6 =20 #define LS_PCIE_DRV_SCFG BIT(0) @@ -227,6 +236,68 @@ static int ls1021a_pcie_exit_from_l2(struct dw_pcie_rp= *pp) return 0; } =20 +static void ls1043a_pcie_send_turnoff_msg(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie =3D to_ls_pcie(pci); + u32 val; + + if (!pcie->scfg) { + dev_dbg(pcie->pci->dev, "SYSCFG is NULL\n"); + return; + } + + /* Send Turn_off message */ + regmap_read(pcie->scfg, SCFG_PEXPMECR, &val); + val |=3D PEXPME(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXPMECR, val); + + /* + * There is no specific register to check for PME_To_Ack from endpoint. + * So on the safe side, wait for PCIE_PME_TO_L2_TIMEOUT_US. + */ + mdelay(PCIE_PME_TO_L2_TIMEOUT_US/1000); + + /* + * Layerscape hardware reference manual recommends clearing the PMXMTTURN= OFF bit + * to complete the PME_Turn_Off handshake. + */ + regmap_read(pcie->scfg, SCFG_PEXPMECR, &val); + val &=3D ~PEXPME(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXPMECR, val); +} + +static int ls1043a_pcie_exit_from_l2(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci =3D to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie =3D to_ls_pcie(pci); + u32 val; + + /* + * Only way let PEX module exit L2 is do a software reset. + * LDBG_WE: allows the user to have write access to the PEXDBG[SR] for bo= th setting and + * clearing the soft reset on the PEX module. + * LDBG_SR: When SR is set to 1, the PEX module enters soft reset. + */ + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val |=3D LDBG_WE; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val |=3D LDBG_SR; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val &=3D ~LDBG_SR; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val =3D ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val &=3D ~LDBG_WE; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + return 0; +} + static const struct dw_pcie_host_ops ls_pcie_host_ops =3D { .host_init =3D ls_pcie_host_init, .pme_turn_off =3D ls_pcie_send_turnoff_msg, @@ -244,6 +315,19 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = =3D { .flags =3D LS_PCIE_DRV_SCFG, }; =20 +static const struct dw_pcie_host_ops ls1043a_pcie_host_ops =3D { + .host_init =3D ls_pcie_host_init, + .pme_turn_off =3D ls1043a_pcie_send_turnoff_msg, +}; + +static const struct ls_pcie_drvdata ls1043a_drvdata =3D { + .pf_lut_off =3D 0x10000, + .pm_support =3D true, + .ops =3D &ls1043a_pcie_host_ops, + .exit_from_l2 =3D ls1043a_pcie_exit_from_l2, + .flags =3D LS_PCIE_DRV_SCFG, +}; + static const struct ls_pcie_drvdata layerscape_drvdata =3D { .pf_lut_off =3D 0xc0000, .pm_support =3D true, @@ -254,7 +338,7 @@ static const struct of_device_id ls_pcie_of_match[] =3D= { { .compatible =3D "fsl,ls1012a-pcie", .data =3D &layerscape_drvdata }, { .compatible =3D "fsl,ls1021a-pcie", .data =3D &ls1021a_drvdata }, { .compatible =3D "fsl,ls1028a-pcie", .data =3D &layerscape_drvdata }, - { .compatible =3D "fsl,ls1043a-pcie", .data =3D &ls1021a_drvdata }, + { .compatible =3D "fsl,ls1043a-pcie", .data =3D &ls1043a_drvdata }, { .compatible =3D "fsl,ls1046a-pcie", .data =3D &layerscape_drvdata }, { .compatible =3D "fsl,ls2080a-pcie", .data =3D &layerscape_drvdata }, { .compatible =3D "fsl,ls2085a-pcie", .data =3D &layerscape_drvdata }, --=20 2.34.1