From nobody Thu Dec 18 14:27:32 2025 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 5032AC4167B for ; Fri, 1 Dec 2023 16:18:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378567AbjLAQSE (ORCPT ); Fri, 1 Dec 2023 11:18:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378448AbjLAQRs (ORCPT ); Fri, 1 Dec 2023 11:17:48 -0500 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2073.outbound.protection.outlook.com [40.107.247.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 556CE1BEB; Fri, 1 Dec 2023 08:17:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h4enNaUtgCrSbmx/IbWIrrOP50av4DFN08wlPm8EF2+iS4NU0UXUkPOYn1Y1S2y6k4FAIhcy38fBzd/B91awe1QL3zyVQfN8fyJx31cKB955E7sW04VQTVG38elCCd+fdzTcMIlKA6MiCXB0uhI7eUtOeucg400SWf/CBMsmf/XhqKMKIjtA5bjN6iIEjkLOTbvCAcekx4oFHmkTi+/etp08voFSWxHhdeUe9cD4GiSdmv2amuKQSVWVyZCHp3+nakwrYGGRuE2YUudnGL/wa0rhvtpgoslxtdwlGXxNcUtpqTfpDQ0nKD1U2SOybU0WAOAvbuQGwbBZg3ZQdAxKUA== 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=JNYVfd/bi3kgw9foq8T63xE5hNVb3oc+FIB96u4aF74=; b=KvY9LRbc5K5itU37plZJLlcr19d8+EaGzxn4MdO5YvqrcyMiO99rECt2qXVs/SxwB57IZYpQo1sEEFOTJuIdaj1sby2SJMzwZbDhNcXVXEgHIQSg60jHf7hKli0AjmASXd2DENLNSX5Lf12haxPXkxqn+nvWNYVqUVqSv/3xhfci+R6ZbtG2ARVuhtb3D1/EgOz70SMzlCsf7xr5gF/074pL8/OS7n2KgGCrxFcxYtK24Rykh2HaZZrVxpdzERcOMJ4lK8g3WTbykTiAroCrJEO4AYXPZZwq94q84DaC/8MmSwsPoC+IJOrRzzQmm/QUZc2KAo6Ywx8WLsiKb7sYKQ== 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=JNYVfd/bi3kgw9foq8T63xE5hNVb3oc+FIB96u4aF74=; b=fgHjD5b0ghIXW050uoqs/xI4L/+/24QwRqapgFYcPbedpvgOF1CGzGYD8Plcbo2oAQczgkhMvVQVZNf/Fbs8nmPTDMG+B0iJkoUNRdVsz16Xg4/Lt0Dko6bf9KmmzSfjPMjIMEFOICagnop/0+w6ozTDFycb7V65XHDGDQYJUFU= 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 DU2PR04MB8695.eurprd04.prod.outlook.com (2603:10a6:10:2de::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.13; Fri, 1 Dec 2023 16:17:35 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40%6]) with mapi id 15.20.7046.015; Fri, 1 Dec 2023 16:17:35 +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 v5 1/4] PCI: layerscape: Add function pointer for exit_from_l2() Date: Fri, 1 Dec 2023 11:17:09 -0500 Message-Id: <20231201161712.1645987-2-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231201161712.1645987-1-Frank.Li@nxp.com> References: <20231201161712.1645987-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR17CA0070.namprd17.prod.outlook.com (2603:10b6:a03:167::47) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DU2PR04MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a8db370-fd28-49b8-88f4-08dbf289072f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: c2UinjZJQFvoIEnYSAFkN3MCSwNGw/SAo6AFXoT+rNZMe35DeeCyoEwu3yy/LW2gJigWmZFkqjcDDI0TkbDk4lk4z4e/0yp5mrTtLgAYIYkWNOhP6u1aLfodQcSjIp4W2dsqXamP2YmtALs/AiKj48rNS64NNQspR/Hv3EaROJgZ0KfrdDkM9n+uitWoPt6OWTd168pt/uKZ7Vh+VvyVTpFvCkNUsjRKVXf0MtVl211ZijlxJDwx/3i1ygIzdqHqqigteO3PCPbDazmUqQWGZulEJUd/2LhQvDRc5O0dDOlO7byRynxFWMDpXfN9lzsqTz0XsqWEjnZSqxJHaKhk8qib9F2oTCaatnhSbIogLTFaRXiOz4SQe+kH0U0Ui0tzP8wabDC/pWu0r54/kZ2YX9sRYSgIlpCoZr/cOBK8dtjPI1G/6FU9c22uo6rcdrcd6KwwLZNTD9iJY09BA8Fr7FMzs+iaNYs3Gxz5tZrdL7BB6UOXV8K3kdFrJeiVw/24A7m4+uSrpaa7o0IEr8mb9r3D2H1xZAy1xt/3ajZzjGUXYQEKn1rH2qiD7r8vKfFOKoyXwWLPQ0QeJUPjlPPQWNTRar5Juzch3V981b4TSX+k4fd0TD8YJuDuNLh2H9Mh 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)(136003)(366004)(376002)(396003)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(38100700002)(38350700005)(6512007)(41300700001)(83380400001)(2616005)(316002)(6486002)(6916009)(52116002)(66556008)(66946007)(6666004)(6506007)(66476007)(478600001)(36756003)(5660300002)(2906002)(7416002)(26005)(4326008)(8676002)(8936002)(86362001)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?192dW7QJOVcsM+SLyFS68RhyUfE3soq5dZAB2etvStBq8rcDVU/JvgxGOGGM?= =?us-ascii?Q?+/pzW3WmqmL4AYaK7/xnwitkF5S0LpWxOZyEj7WQtz/hHy7b4PQKphloI0bH?= =?us-ascii?Q?e2/PlXZ57rfhs73nUZR9a7VSqLTs8QSZa8+Jamhv4j+ATTaxJZclJOd/cH8O?= =?us-ascii?Q?kGNygyev3rDGolP0+iSZn6ar16v4O5xAtNvWiyXPEOkW22yxrrvECbmR79sa?= =?us-ascii?Q?6q1KGYff+pAqhxKmKz2meZO/luX49eEoS8B4i+1RnUT6+Y6S20AEX3arArhZ?= =?us-ascii?Q?ypBcQ7ysaWP1GbGEzqyigDO4PWKN0PbNWdoiofBhMyA+XN6Chmt3DmqwLxRW?= =?us-ascii?Q?ow45nIwUHcKo4QNiLDtKbWU9BtP86zfRWGFTOCVDETlTXix2GtWqQKFcra6D?= =?us-ascii?Q?2EuaqaQTnPi6FjsvfHJLzKe+TB7aLIIR7S3khFzQuADGwQpwzUDkX7IdzvHa?= =?us-ascii?Q?X7K0tWZhxgkfadcvZ6QtVfCbcTTL8vNdNIgw7VUAH9+oyhgJ0Rzq+g38Ugr4?= =?us-ascii?Q?dMBe9wjWu2d6e2eX+0nM95uTOfRZgBevHCwbpa7jf6f1nlwepo1Kl4AxNmX0?= =?us-ascii?Q?K7SoY6IouLavDb7AQLSNy2q8Or9mGdiD3s3iyEuYydp5zDaCF3nyBQeJD0G7?= =?us-ascii?Q?OIE5AheEA/lxsdKMEG6nvmcCM+4TaU26jq6ftcG3KwZBrztpo1GjNXIaEDOr?= =?us-ascii?Q?slVnbVPsS4TmiGnRa8nfFyfM4+K6aRyUdMNT/7qn2esO3rkJRmSJrfa72bg9?= =?us-ascii?Q?jI2PzAGgyt9Ehr2SKvi3QSHi5T9RiuD6rXJdvL+Wl7hjT1IFfbXeFEyLKl7Y?= =?us-ascii?Q?EzSRTh2zWHjjQ3bHHS118NjW0RWZ7Us2liTrFHDBDQnktrMl7Ha5TnScftwf?= =?us-ascii?Q?/YhktfV5qDepvM/yRE+IOHBxe/rvGLw3WJ5YZwmxzmrk6w5DOZptUNUowqn6?= =?us-ascii?Q?ltuWr8JjPzWjMbXJC1mrUhUa0pifjjI9vl/ddI+6kX+sxixe5Na0BJrfu2aU?= =?us-ascii?Q?E6+W4YX8bKmunVdB43bkIu4hlQVmFKZsmam3MWTG6ehvWhNkgagCPyoYM8JD?= =?us-ascii?Q?qN+ZBS+t/47v5LIaqUD5Ur1ruypBJ7/5HgHraMgv9QCQw3mRrMMqjL0QnOX0?= =?us-ascii?Q?byiIjJ+ktLSSIhVNbx9gSlSR0oF49/2EwgGI9yRphr7KMFMJoPP/q523j/Da?= =?us-ascii?Q?9K9Wq1Ut3uG9meiN8Z105CdJEEKHNIaKAwFxT++w3SXfB7ewkrttDMWfY7az?= =?us-ascii?Q?ejmouTBPsi+6ke5SD3oWLmQP5G/UAbFgnhBxStNQPbi4rICdvUo0yme+ypp7?= =?us-ascii?Q?1FPAS/nZXdethn9503RybDr1LV83N/y0mmGc2tGC/99ehcERrHoG1rBVaA6P?= =?us-ascii?Q?+oX4Zfhhs9gD2x2wVd7LH5hSXzAX3OL7cjgdC60vmDqR7BUKZYqt4M3ZLrLf?= =?us-ascii?Q?4UCjklAb3sugPo8RRBBLz/ifIHyyZ8qZcK9QF4ld/9TmWpA5dXeLzmdKVxqI?= =?us-ascii?Q?24zDYRhMG+TSzfEKd6MnZmcgidzhU6EsVOfM0w1fX8+ZqJSDdm+OdWasAfTI?= =?us-ascii?Q?KrhK11++C3IZUo55gS8kxy1/NjQRX5XB85ALry1o?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a8db370-fd28-49b8-88f4-08dbf289072f X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2023 16:17:34.9604 (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: YQyO7d91WG7DJl2l3dfmgSWitYsRDhLV6iYWZ9ezB6nUxomjpLWwlXRe5PRSSjTGXIAwxM8mCDN+a3zhCTQi9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8695 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. Change ls_pcie_exit_from_l2() return value from void to int. Return error if exit_from_l2() failure at exit resume flow. Reviewed-by: Manivannan Sadhasivam Signed-off-by: Frank Li Acked-by: Roy Zang --- Notes: Change from v4 to v5 - none Change from v3 to v4 - update commit message Add mani's review by tag 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 Thu Dec 18 14:27:32 2025 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 1DACCC4167B for ; Fri, 1 Dec 2023 16:18:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378708AbjLAQSM (ORCPT ); Fri, 1 Dec 2023 11:18:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230126AbjLAQRw (ORCPT ); Fri, 1 Dec 2023 11:17:52 -0500 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2073.outbound.protection.outlook.com [40.107.247.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C89431FCA; Fri, 1 Dec 2023 08:17:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TC5e8cu8Ox7RFbjvEp6+SKUv2FsXhhlsu6h1gcAwdICmuSSqklsODJvTc7P6FU5dUoJc6SnuiqJFrtdOIjr+pdciVRJB8Wsad/aUNZeKY3kcsSJeUEO2WBWby7K4BwnWRlzAa0GK7pndwgWAe1llkgoDhB6iD1VWWuvPLXwFzq6kSQhahZsgeqwEjat1Pb5uEHGKCzNdYeCsFt2Ah/lgf1/GK84Bte3B51lRdyQGvNRBxg2h+CwMFu/q2OA1OeLZ3eAWMzbEi/C6hWfVApES0gTUIk8nab+ki6Yla95ehB4aZuPCr5CKh6Ao3WH4vwxvWMx71e27NVUUN/Gm0bOvEQ== 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=2yNDMKFiwS7ub/xZFChRGWt4ujBRA1Io/5jPbEhzwKo=; b=A+wrvCJqls4OiCcGD+vOxD9cVHsWnnmuQXVqZnK26akAot1WjRtxEqlwZL3KUWozTNg+/hP0a9rJcPT6DZEgRYJh4kfINHBUtFJaCSpcufnw7OEfLIiVcosSxKkoWUUkD3rcDBh2KJuPoKbhqA8NQBbrT2itH/FPRcbHM+UUcYGkE1Vua0O6w4f9gv6HZXFnjXuvPBpriCzN1miDyR8lud1PLhPOLsA2B+zbM67URmvKWmtKFiaImYSFJq/KOgit77Opr78b4/tIsjJ6OOtXBRh2xscIueOkGqyXp7+RsBRp1MvszSSpQ6k+CVrsBJ++6Moq0h06a7HAb46LRLCFwA== 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=2yNDMKFiwS7ub/xZFChRGWt4ujBRA1Io/5jPbEhzwKo=; b=Y9Zem0cmT0Wr9GSipC8QmuhcjdQet1i6KAW95VWr+ZKNIBoR3cJ8JRps2tz2+oRJVU3J80NPla8FBPEE8aziFGDVD0SHZ3qNDk3zAdf3I3jEYTQ9ifHHkuQSPXRUN7QxbKXsOYEM0RnWikVQs/2oNjtK2PoKytGNqnHwCpUUg/E= 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 DU2PR04MB8695.eurprd04.prod.outlook.com (2603:10a6:10:2de::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.13; Fri, 1 Dec 2023 16:17:39 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40%6]) with mapi id 15.20.7046.015; Fri, 1 Dec 2023 16:17:38 +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 v5 2/4] PCI: layerscape: Add suspend/resume for ls1021a Date: Fri, 1 Dec 2023 11:17:10 -0500 Message-Id: <20231201161712.1645987-3-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231201161712.1645987-1-Frank.Li@nxp.com> References: <20231201161712.1645987-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR17CA0070.namprd17.prod.outlook.com (2603:10b6:a03:167::47) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DU2PR04MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 83dd3b3a-4767-4b68-3484-08dbf2890943 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qV3ELql9CJnSRfy5LIrNsr/b6lT8LEOKGsz0oxVrv8wwp+j3YwuUPfmIPLON/dZ+05RtkcUNedenscr/3L+Q1AokhVevOSOR08qZ4tStUbVRW0Kr7SFHu1AOyrodyO4YcAICOyx50X7h+kM9msqo0/WHSb1lDBZEXbo0TUBAu0DIZLgoaVA5kPjMoemJjWu5vwZzCQQgX6S47oLrKcEOXGBAHI5umOCBZijpJTQ014ohPG3syuZ3FoljPMAW2E3ESf7iOl+WUiHTgiMCaPmP1NzV/3AHzULnZZhD25hWmCc3gaKElrjU2VH5VYz70xAhNI7LSqVBkxgy2CQrtWE1tabLRcTKtNx92zAgIZlANBZRar6ByZBSKWFyMzlYIgoABORcKg9rzdcI6ztva1e6ND6ifDsoY+yqmaVB8F6ytHtmhWr8U/wA7Vl71HDNpHiv3xPsjnlyhiBfkm4vEd4ZP20lzfEjcgPPPvmnaaZ7VpgL+8tjPX4FwOYoXvUTHeciP1VV27BgaySyCKQ/RUT6Srf0/TQj3tmpY95D+ApEDC1Sf5fZpG8q9hGVX4kHk06fe/Xmh7IduXx41I0yMtEpMGaGwmSF/nVLZp9bgyCxAg7Cizdjfah2J/XS8IJAEqkX 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)(136003)(366004)(376002)(396003)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(38100700002)(38350700005)(6512007)(41300700001)(83380400001)(2616005)(316002)(6486002)(6916009)(52116002)(66556008)(66946007)(6666004)(6506007)(66476007)(478600001)(36756003)(5660300002)(2906002)(7416002)(15650500001)(26005)(4326008)(8676002)(8936002)(86362001)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?z5xVGM/wt5MohXrtOqaXw1HrEvhRP3c3g6b9tZSzs9y7gN4IuPYND6mKttGN?= =?us-ascii?Q?ai0NqjB/+4vq+LxR/hwYEukSTh/mjxThm1x8dv3npDFJd2s5ZvlpTZ+WUgP+?= =?us-ascii?Q?tZnu1RYMjXEGlDYGFKKArGpuw77Fuy5vXhHbFK4Ly8ldRS1SUjZg6rtyYesJ?= =?us-ascii?Q?06m3EJ7RsF9DGdcm2xl3P2W6yv7U2DiCcyEhc4jhQ857S/sGRBk6SOMwz8dT?= =?us-ascii?Q?Jdg7ZoQpZQkUdlr7xOrpmUiNxhvp5L3bJCOi98DmSzA7bHgNmcjhKK+otPnh?= =?us-ascii?Q?9kULUp5z8rBYqXyImt3NyvBW1fLPDZboX9h3k/nVz8mlsApPZOAnLivRAwU0?= =?us-ascii?Q?2htSVjGO93bVCJgRRY7z8r4KC9lVXk+kvh24CvJnIF5/d54yqrzesRI109qW?= =?us-ascii?Q?j8tcvAcrd0V/9afvo2FojAhE49LhQihODIHNmaw0AK0NLEZv4Hi2aT20fn7F?= =?us-ascii?Q?djaSjQdoR6gxSuNiZ9Riw7fUxuifgvnuLgaO23je2z7Sgl4xfy5vC7QFLX+B?= =?us-ascii?Q?/M3EJ9SPmLtP5sS44CBi7f66Pk5qSK3UU2BV3dCcFWuyZkKapqPvjDLJ8e33?= =?us-ascii?Q?+RL7SKY9LoRq/wF2KJck8E56s+Gq+1OfQJ5TUNa7dfhEYz875cp1WgQjCxOu?= =?us-ascii?Q?ZXa2iCd9SHpTJs0nFvdtnIoQBXEXz4ychS5Xkjjfdbmy2EN96acLjJy69GUf?= =?us-ascii?Q?+j4LhqguLc/iaJtaqGZpsSQ4xpGXnYvjn4SQCICkfWStzxNQen19Bn5Uy8Vw?= =?us-ascii?Q?l0E7U+jY3rYs4cYMWHXaZaCbo9HUzAVGqR9Agqwn/SIl0iMb7lLeqoHuZT6j?= =?us-ascii?Q?gCIYFug+/rpBoPlz5wAe61swJqqmrxTXw9ybG35TPVRvks5oMfMtckm/2BKb?= =?us-ascii?Q?AlizpTBBMsbznLRA4Nb+/GAjJybRnxHT582E1aSF4LWoz59sCs7UcqqK6dMc?= =?us-ascii?Q?USYFowevHkqTWHjXprSb/IhctmUb+597EiHJ6lQCQ0S9kqjnVU5wFmZlEo6l?= =?us-ascii?Q?qmu0mBqlghnBWmAZBTT2Tr9ctdncz4a/yx1AjBtNo+RBkHuD56mtT18i66S+?= =?us-ascii?Q?RVU/ejclo5iz7ukIYFeuMbx9ToJaLBU1/xzpBPuvBgMFGOqWj+1de16aEKv9?= =?us-ascii?Q?f9JE2YPASuzrw0HS7+JVp/0AhMcCGC74A8aYb0cBrYBKwiJ9MM8yDfF7lDEB?= =?us-ascii?Q?EqIUX0BZ1S7WpVYfcQIKowlCYRs2S7vpEvTH+AWEeAuDREKYQ3a6bBMGIbeg?= =?us-ascii?Q?UQcMO27iU8dWd9Cp9YDP2xIyFtrb8+/gn9g7Ds7FH8pAEsUvXc4BDHUYHX8E?= =?us-ascii?Q?Ll8L0EzVTKwr4xI5X0WHg2XT2LIfY/MB+7MbsGtqcPcAqQ+t+y4RQTFczlWv?= =?us-ascii?Q?mTb2YZCTsLq8Sie0NsYL63W+IDPzbVhF9sg9fiTisYuZ57Jgb6+k9I9nUQAk?= =?us-ascii?Q?GJNAQRFYawvHZfwgdn6tFcbwRnPiAnivxweEnUKd9jAadE2ZhSA4vxVG35oA?= =?us-ascii?Q?86Yq3VtKIUpiQNs5Da/P7Rn2NYGn0AnMQYFaHLxZWD9fjc9oKHxJ+Oc3lUTR?= =?us-ascii?Q?3FXeOeaafK8efIXbTvKLEw0Jn3PYnB2lz4s8ys+t?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83dd3b3a-4767-4b68-3484-08dbf2890943 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2023 16:17:38.4525 (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: gA50gslnAgngHUkENUoprOamOTDmqLmQrnmfDIFMYeiagyubmF/uN9OMXEIELPpu+0Y8sPiy2EJaHzh4k4XjDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8695 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add suspend/resume support for Layerscape LS1021a. In the suspend path, PME_Turn_Off message is sent to the endpoint to transition the link to L2/L3_Ready state. In this SoC, there is no way to check if the controller has received the PME_To_Ack from the endpoint or not. So to be on the safer side, the driver just waits for PCIE_PME_TO_L2_TIMEOUT_US before asserting the SoC specific PMXMTTURNOFF bit to complete the PME_Turn_Off handshake. Then the link would enter L2/L3 state depending on the VAUX supply. In the resume path, the link is brought back from L2 to L0 by doing a software reset. Signed-off-by: Frank Li Acked-by: Roy Zang Reviewed-by: Manivannan Sadhasivam --- Notes: Change from v4 to v5 - update comit message - remove a empty line - use comments /* Reset the PEX wrapper to bring the link out of L2 */ - pci->pp.ops =3D pcie->drvdata->ops, ls_pcie_host_ops to the "ops" member of layerscape_drvdata. - don't set pcie->scfg =3D NULL at error path =20 Change from v3 to v4 - update commit message. - it is reset a glue logic part for PCI controller. - use regmap_write_bits() to reduce code change. =20 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 | 81 ++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index aea89926bcc4f..8bdaae9be7d56 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -35,11 +35,19 @@ #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 struct ls_pcie_drvdata { const u32 pf_off; + const struct dw_pcie_host_ops *ops; int (*exit_from_l2)(struct dw_pcie_rp *pp); + bool scfg_support; bool pm_support; }; =20 @@ -47,6 +55,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,18 +181,70 @@ static int ls_pcie_host_init(struct dw_pcie_rp *pp) return 0; } =20 +static void scfg_pcie_send_turnoff_msg(struct regmap *scfg, u32 reg, u32 m= ask) +{ + /* Send PME_Turn_Off message */ + regmap_write_bits(scfg, reg, mask, mask); + + /* + * 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_write_bits(scfg, reg, mask, 0); +} + +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); + + scfg_pcie_send_turnoff_msg(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), PMXMT= TURNOFF); +} + +static int scfg_pcie_exit_from_l2(struct regmap *scfg, u32 reg, u32 mask) +{ + /* Reset the PEX wrapper to bring the link out of L2 */ + regmap_write_bits(scfg, reg, mask, mask); + regmap_write_bits(scfg, reg, mask, 0); + + return 0; +} + +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); + + return scfg_pcie_exit_from_l2(pcie->scfg, SCFG_PEXSFTRSTCR, PEXSR(pcie->i= ndex)); +} + 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, + .scfg_support =3D true, + .ops =3D &ls1021a_pcie_host_ops, + .exit_from_l2 =3D ls1021a_pcie_exit_from_l2, }; =20 static const struct ls_pcie_drvdata layerscape_drvdata =3D { .pf_off =3D 0xc0000, .pm_support =3D true, + .ops =3D &ls_pcie_host_ops; .exit_from_l2 =3D ls_pcie_exit_from_l2, }; =20 @@ -205,6 +267,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 +284,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; =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 +295,20 @@ 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->scfg_support) { + 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) + return ret; + + pcie->index =3D index[1]; + } + if (!ls_pcie_is_bridge(pcie)) return -ENODEV; =20 --=20 2.34.1 From nobody Thu Dec 18 14:27:32 2025 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 50C80C10DC1 for ; Fri, 1 Dec 2023 16:18:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378459AbjLAQSU (ORCPT ); Fri, 1 Dec 2023 11:18:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235278AbjLAQRz (ORCPT ); Fri, 1 Dec 2023 11:17:55 -0500 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2073.outbound.protection.outlook.com [40.107.247.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB6C81725; Fri, 1 Dec 2023 08:17:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NEArlzHfMUKE78Bbi27PYyy5mRoZwqqd+z4CQD+7cUlpbP+aEEOsAWv8OpyxxgPjw77F0ThMQsfGXIKLcwZYoSLXGfpHC1Tk2Q0hPDd7BBQnTdCEANg7iQf7FooCDrH5D//aDGS9fLxfOAOVflzEzwYblXQ5DgxcU4Nerto9JKPhRYXkQWGBfsTVKOTStE+qGXNRf1mSl5B1l+5714RPYq8CWTvZwuQnH58zzqDnGterB2ABHJZpO/3pTYoHLktipXhMRbGWiEb1e+tGfrKuOVpBx3Y9/TUniAugSQrpZSpClm1Ux5u0A5Xp7n98G1NKQRB2trLMLBgmr9XGYZemGA== 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=EZuNV9kksOAXnbFMKPV4mm0W3R5AfohdIrVKa2Mmx+w=; b=ZcgirzCrjS1BJFgfZ6Y40xSnWrCGHjem/wkL4uGcFONyGT/UIPIvOI000KatnV4cWz+L0vhnQElCW+VdR3J0i3nZnYvc5WmNWzUvY/w8uDz3SM6o6lz/3eMITY/zybvsUIzssHbsoIDZYouTJpIbfQZOB/o1u4i4G97YqtsiZSwX98pBrHxxevmfMlORFLLQNDtUCgY0aSenUeDAFP3h/choM23EAXfwGVG3hgkXsX+GWe+1J+YZYd+IiFfw71dWtDkcKz/oHS5hMZX5S4atlBzpEXLl87yW/r74mzpKuyJV09H1CyOGYOC5sTiZstYUARne+f0y8UvlxKGUwWACUw== 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=EZuNV9kksOAXnbFMKPV4mm0W3R5AfohdIrVKa2Mmx+w=; b=N+tEZkRwLfjgf3+ZJoDbpydAurBU7SPx2ur/8D5YSAFthZJ4seJdOHNClfWv6eqfJn9l85Ei1mMxI1QzwNN03RAdq71kkoJLx2KQK/aUkcWIMA6wQafp8/P09fu2v2pF1EHSwxgomqZ9mPw85fwkVhtLgXlMePd46YNE4UNFmcI= 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 DU2PR04MB8695.eurprd04.prod.outlook.com (2603:10a6:10:2de::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.13; Fri, 1 Dec 2023 16:17:42 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40%6]) with mapi id 15.20.7046.015; Fri, 1 Dec 2023 16:17:42 +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 v5 3/4] PCI: layerscape(ep): Rename pf_* as pf_lut_* Date: Fri, 1 Dec 2023 11:17:11 -0500 Message-Id: <20231201161712.1645987-4-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231201161712.1645987-1-Frank.Li@nxp.com> References: <20231201161712.1645987-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR17CA0070.namprd17.prod.outlook.com (2603:10b6:a03:167::47) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DU2PR04MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: 4632ae41-e9b8-4158-42a6-08dbf2890b59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ks2liMbC60QCsh6U2mXt5efq1ya/kbpbAT+kwbUB4hMW3RwDBUnUQTAA5DCkC/ut9QjPjagUVd9sbz8xZwNKedk38VC4JbVmLIm0/LURj/WVxpoQkbuzUDB0BFOSan7YCphzm7mLCcBl2GI0zD418uxJmRYxTjXevW3p0+rTk5b1GuVokc5im2xvuiKc2wdgo6Q8bALa7OaukBWgfwqXSsF4wzDf5gElMauA62iwMu8Qt4d5mBp7BfzlkVC0onJbffvbHX4qlzzfSy6X6gpYOPPRTKkbCEz1oV3/L+FiFvQ/OKQwVAxZ3FDDCDu2RN9x02e/3hXghx6ky4HPEonnoMjAbbM5ODklLwo7u7ZofA40UFLPKSH/SYT+pyeVOQBgCDnm/PdDEKcqXaLH3nlXL+N7XoEwEBzGLPJNuaN8RczyY42d6A1prGTeQKaRvmXRnAIBC0+hMq/OiXzUGR3B8A43fCyyVs0bsb2jRdjMkJvN2pENu1JalWDZhu45uKWsswzmSsaJQuhnRL4CMSA3X8ZPMUACd3GR9IyTjtnp8r+AMyRvqpkjGn5rmGplv+yqlEchBxkGfC+MdALgIFxFs9BeuiqOW93m6fHWx0AmFId+kC8SU6Jk393QR43ufiRu 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)(136003)(366004)(376002)(396003)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(38100700002)(38350700005)(6512007)(41300700001)(83380400001)(2616005)(316002)(6486002)(6916009)(52116002)(66556008)(66946007)(6666004)(6506007)(66476007)(478600001)(36756003)(5660300002)(2906002)(7416002)(26005)(4326008)(8676002)(8936002)(86362001)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?+F+QMf4RXYgr63OXxr6tTj+ICUrmVGQBAo8ZyyCU+1MJh1HxMuOzKtoBK/Mu?= =?us-ascii?Q?JErtiyijwHwQOVXV6CBQY/LD+FJE84rxTskRmAxd3sRK6bMWc92TTf8vnro8?= =?us-ascii?Q?jzYBag3Mr6DEOEezioz9RQgm6VLumT99BMmAAUVZ7hkAZhPwmyIN/mqhim92?= =?us-ascii?Q?DroIlB13pefbiwcm+t/dJ2+dFQdSF08DfHy0YUi5RByhlhNSj0YCRqWDtb2A?= =?us-ascii?Q?Lyx14/SeRRlFnV1a6GFFC8UCa/q06QxT+3I43dAzrQqkoO0I73n20wGPU7DV?= =?us-ascii?Q?Es2fMgr/An5Swh2X4QpkCCUPjFabvlEJGe8G0HCabVSOVBCNEcqylu1zMG2T?= =?us-ascii?Q?9FpFw1BpPdkyqeX4tpetwu3RJtLWMQzPSrvmLevIBepoIATpiHiaNCfcnR9O?= =?us-ascii?Q?ya5xSyZeZrgyWh73If+rqjOZzeBuipdyzeQ+4W8cJVh6BRJfRsP7Q2NvC0Ed?= =?us-ascii?Q?91Aym888V943B6wXVj8G+BT3xdvvTvWVqbA5dntA+SZ+Kj0FLJUlgKcpFM5N?= =?us-ascii?Q?CtkuOXKVCAqh8kTlrjRM4ZWTpWctpJQ6T7FgNfjtdFiBwdE0Q2TAcxiQ8Yed?= =?us-ascii?Q?Wr+EsOk8BXaE4tq5CRrHWcfMlhL9sJIKDIqSVsn6V8565RshCyGJcEZHecpV?= =?us-ascii?Q?UULavjAxv4X7lOyF2imtPzY8Pgdm4D5Nyr1hoRr7s+Qgc/PvwPUSH2eFS7RM?= =?us-ascii?Q?SbJcM8aPBa13laWefFsL1cYKF7hPd/q1xMV6e/aoK+50/Xzqmvh7kFpA/8z/?= =?us-ascii?Q?KtgiOcpCESVmrRNlYf/MyyMU4bMBtnCEehHzmjAWf84ObC6TOiutzj70ZQ63?= =?us-ascii?Q?PlqlRff+IYcmoTXvTcXgEeS3CuaQ0L9SjvK4HmghgmvBgL553kyvG8DaXT6P?= =?us-ascii?Q?d5Pz0vpYcX9307XIXFj3643+VSVdiIdh7+McLrIyq4WMIbFnM9Jvloml8Kze?= =?us-ascii?Q?W9+HHEnTvzCFLa7EiJMgRiUnPpcN9bqrrnJrRXhWu8LYtdmMS184bZJWVPSv?= =?us-ascii?Q?JA7jfNh8MGGVdiuAgxRuQClVcOWH+dMdLxP8eTwJAPooquENe+NIxp6eSjz0?= =?us-ascii?Q?EhrAkafIRwRC/m7BSoOcJAlJp8SdLdkJh/Lq2U7GEDrtRAPFsCwXx8liqHEL?= =?us-ascii?Q?eFFlFpLlLKMy/dNU1X3jC/9jOtHyMphDQrrEWX0pT+9wi12dkEWn80vWXFT5?= =?us-ascii?Q?aIJmuaJ1JjlfE/CAhRvlgilX/FvLmxSEQTUYMzHDV6KvDROWig2yn/ABJhd2?= =?us-ascii?Q?aGTjhiYfr+QxfEF5dRQTf/mECRLYSrVGEnwglQKk4FUk5hEOLrVKeelN3mcp?= =?us-ascii?Q?or10B0CXq3c6OzhRYpIpZ+CxDYAwz1rG+RjH++3lHdLIdnaGb7VQT67N4p6t?= =?us-ascii?Q?MIlspesS/dNljDDngTMxnEC0mPF3o/HAL5wxqXyrcpTOiPfa3MgH7G4YaISs?= =?us-ascii?Q?FyYdQ1GwVwGBlrjKJV5oBeOcN2yz/F0F68t2m6j5jdOdwLaYG/UYguPHyD9p?= =?us-ascii?Q?9yVkYZ4qjtI8X2pG5pfCXb81TXPvraB9Xfso1AeO/Jle5QEWso0UkImT3CZ0?= =?us-ascii?Q?dX+GUr1v/cXOzNbPwryia5K4e76VqyQqrdtf+R8z?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4632ae41-e9b8-4158-42a6-08dbf2890b59 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2023 16:17:42.0043 (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: mBjY+WYS5G8LC8HraXhuwGa0yuUUJel2vx0QYfRtMF7igLGoILSt0esViwZ1rl0Y6jKEld1IT6jvKElbAAGrfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8695 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 Acked-by: Roy Zang Reviewed-by: Manivannan Sadhasivam --- Notes: pf_lut is better than pf_* or lut* because some chip use 'pf', some chip use 'lut'. =20 Change from v4 to v5 - rename layerscape-ep code also change from v1 to v4 - new patch at v3 .../pci/controller/dwc/pci-layerscape-ep.c | 16 ++++----- drivers/pci/controller/dwc/pci-layerscape.c | 36 +++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape-ep.c b/drivers/pci/c= ontroller/dwc/pci-layerscape-ep.c index 3d3c50ef4b6ff..2ca339f938a86 100644 --- a/drivers/pci/controller/dwc/pci-layerscape-ep.c +++ b/drivers/pci/controller/dwc/pci-layerscape-ep.c @@ -49,7 +49,7 @@ struct ls_pcie_ep { bool big_endian; }; =20 -static u32 ls_lut_readl(struct ls_pcie_ep *pcie, u32 offset) +static u32 ls_pcie_pf_lut_readl(struct ls_pcie_ep *pcie, u32 offset) { struct dw_pcie *pci =3D pcie->pci; =20 @@ -59,7 +59,7 @@ static u32 ls_lut_readl(struct ls_pcie_ep *pcie, u32 offs= et) return ioread32(pci->dbi_base + offset); } =20 -static void ls_lut_writel(struct ls_pcie_ep *pcie, u32 offset, u32 value) +static void ls_pcie_pf_lut_writel(struct ls_pcie_ep *pcie, u32 offset, u32= value) { struct dw_pcie *pci =3D pcie->pci; =20 @@ -76,8 +76,8 @@ static irqreturn_t ls_pcie_ep_event_handler(int irq, void= *dev_id) u32 val, cfg; u8 offset; =20 - val =3D ls_lut_readl(pcie, PEX_PF0_PME_MES_DR); - ls_lut_writel(pcie, PEX_PF0_PME_MES_DR, val); + val =3D ls_pcie_pf_lut_readl(pcie, PEX_PF0_PME_MES_DR); + ls_pcie_pf_lut_writel(pcie, PEX_PF0_PME_MES_DR, val); =20 if (!val) return IRQ_NONE; @@ -96,9 +96,9 @@ static irqreturn_t ls_pcie_ep_event_handler(int irq, void= *dev_id) dw_pcie_writel_dbi(pci, offset + PCI_EXP_LNKCAP, pcie->lnkcap); dw_pcie_dbi_ro_wr_dis(pci); =20 - cfg =3D ls_lut_readl(pcie, PEX_PF0_CONFIG); + cfg =3D ls_pcie_pf_lut_readl(pcie, PEX_PF0_CONFIG); cfg |=3D PEX_PF0_CFG_READY; - ls_lut_writel(pcie, PEX_PF0_CONFIG, cfg); + ls_pcie_pf_lut_writel(pcie, PEX_PF0_CONFIG, cfg); dw_pcie_ep_linkup(&pci->ep); =20 dev_dbg(pci->dev, "Link up\n"); @@ -130,10 +130,10 @@ static int ls_pcie_ep_interrupt_init(struct ls_pcie_e= p *pcie, } =20 /* Enable interrupts */ - val =3D ls_lut_readl(pcie, PEX_PF0_PME_MES_IER); + val =3D ls_pcie_pf_lut_readl(pcie, PEX_PF0_PME_MES_IER); val |=3D PEX_PF0_PME_MES_IER_LDDIE | PEX_PF0_PME_MES_IER_HRDIE | PEX_PF0_PME_MES_IER_LUDIE; - ls_lut_writel(pcie, PEX_PF0_PME_MES_IER, val); + ls_pcie_pf_lut_writel(pcie, PEX_PF0_PME_MES_IER, val); =20 return 0; } diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index 8bdaae9be7d56..a9151e98fde6f 100644 --- a/drivers/pci/controller/dwc/pci-layerscape.c +++ b/drivers/pci/controller/dwc/pci-layerscape.c @@ -44,7 +44,7 @@ #define PCIE_IATU_NUM 6 =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); bool scfg_support; @@ -54,13 +54,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) @@ -101,20 +101,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) @@ -124,11 +124,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); @@ -147,15 +147,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); @@ -242,9 +242,9 @@ 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, - .ops =3D &ls_pcie_host_ops; + .ops =3D &ls_pcie_host_ops, .exit_from_l2 =3D ls_pcie_exit_from_l2, }; =20 @@ -293,7 +293,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->scfg_support) { pcie->scfg =3D syscon_regmap_lookup_by_phandle(dev->of_node, "fsl,pcie-s= cfg"); --=20 2.34.1 From nobody Thu Dec 18 14:27:32 2025 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 78B00C4167B for ; Fri, 1 Dec 2023 16:18:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378439AbjLAQS0 (ORCPT ); Fri, 1 Dec 2023 11:18:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235286AbjLAQR4 (ORCPT ); Fri, 1 Dec 2023 11:17:56 -0500 Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02on2073.outbound.protection.outlook.com [40.107.247.73]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4969A1FD8; Fri, 1 Dec 2023 08:17:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SgflryI4OQTmFAZsAU5pL0K4qCFAaCXg/6bIBy5Q5MS++3XLuKtvvAmJrkP+MJLz3PXkWz/7AdLYLrrvDp6ciGz28KyEnXXWLr4/R5D3SQOqpEkR0E/uImHReQjLbg9PMWtbSqZ/TZKcfV1vj68LAtJajAFu6+3X6WyFh4kzmT8KRXL1csLUeszUwjCCtMsSqBXKiuWykj8pCdNwSFWexbRVrb8rCy0FvIGissYM0HLs15oJaGM2OcfpuZ/vympG/fveh5UnQ4UZcgdQ1yJYEs3W0P0yt61z2I7aOymIB9knMXkUuKgohY4/iS6MX1D36+VeTNoIEsJ0DG1TOIcFbw== 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=5/itE1CfJVNNbdpV0HoeFDYZuxVJSywlC6AVPVp2ON4=; b=YICUt6a39JSplZqqxxCBxzxIf5ksas5QlMGpqlbKDpsGmsA8DJcbXN9G8GmExyOXzlsUnO6NVasB+xBijvDeK0lHrZ1PVq2Cl298cEoWv4CA+GPP2FrTbIX0ts3ygY3VRbTO9URo7ilshaZIWLs6966yQ+IjjSeXTlKoGdPAhJRuQNoGDRAPj1dFXHaFe3uMZjRBUhnZ1SWjskijjHC0xvaIdLiMFtaSOv1xrOBZKSXl3wR+sDzDy56bOEDKchDp6KXo3L8dh5047Hbvf/17E9H1CeqI1DnTr2PdJTcvQK3xwcEFEjdzJLpINROd6j/YBVutXSumE2wJAegZZy3qsA== 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=5/itE1CfJVNNbdpV0HoeFDYZuxVJSywlC6AVPVp2ON4=; b=TRSvzROO+Y2Xl0+ExCGd568tD1H/yPD7q+ad9xq3s5opprMDMH9EVS1dNfJmFI7iIsHzpld6C+ZX6Cr5okAVCZBJrctv/awNmEjeT3knKbziWvaVncjrEK6TITbo5dLqjdJdsk30WKXR9zc6DD4W7R8aT74c1SBnZiH4MBm2gB0= 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 DU2PR04MB8695.eurprd04.prod.outlook.com (2603:10a6:10:2de::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.13; Fri, 1 Dec 2023 16:17:45 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::95f5:5118:258f:ee40%6]) with mapi id 15.20.7046.015; Fri, 1 Dec 2023 16:17:45 +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 v5 4/4] PCI: layerscape: Add suspend/resume for ls1043a Date: Fri, 1 Dec 2023 11:17:12 -0500 Message-Id: <20231201161712.1645987-5-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231201161712.1645987-1-Frank.Li@nxp.com> References: <20231201161712.1645987-1-Frank.Li@nxp.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: BY5PR17CA0070.namprd17.prod.outlook.com (2603:10b6:a03:167::47) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DU2PR04MB8695:EE_ X-MS-Office365-Filtering-Correlation-Id: bef8c711-36c9-443a-1a8f-08dbf2890d74 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VAlqwGpT7IE7hWA5Iyg4jt/hEGDWhLJgq+9MEaoAfH8SusL0DmTL/V4bDErKzJId1pdNxURhtqHTMQysNoZE2U8djbi1sI+OD6HQxUHqdqwiY/nGtabpMV0JbCQh4porjReJ1iijKLSIOSX7w/ebHPuI7MjBwYJuGlUBVBxSI2t65RDXvpqQmWb1dGozv378udctLVdLII12z0NwwUB/pOiz2WCzD1iBFQWxfbmgvHl8vyrg6IhwX73rvXkuzlVn4CjceK+P+v1QNwm0Up0102mvCiGPPHgS0y955Sli6fo6VBusDy3PHVfzO0z7xek3cCqKN0IjEQ8Pp5f+HBOT2fiKacGaW8EAZlk+Wa9MmqYQeq8GTbk62iUb4YX36kYJW83tTmPWcwPWD9W64/Hpy9Pi8sISxaOmOMcSSqIhtNDb7VOMOJferbQpjxqKBNuAj4s4tfNpT1q/z/dpG+jAK9rwEOEre3KUdsdFZNOpXmpgYoEgpAt4qAY+vKiFcYdTTojUjnO463ZUwWacvz+54vPehjuDY+xfCyAKHq/uWFzWJ0A67UIkBKTS8RMv/9/g5KXLqazUadSouyelOOm35E5TIiqWGov3neJJpKb+J8os24yayGmDzYnOohITm3wd 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)(136003)(366004)(376002)(396003)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(38100700002)(38350700005)(6512007)(41300700001)(83380400001)(2616005)(316002)(6486002)(6916009)(52116002)(66556008)(66946007)(6666004)(6506007)(66476007)(478600001)(36756003)(5660300002)(2906002)(7416002)(15650500001)(26005)(4326008)(8676002)(8936002)(86362001)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?j/UcZxrp+TpWsNdxFTZpVAywkGk0XHhDmLfWJNtdjIymhFiX3bmsUwGJwQdV?= =?us-ascii?Q?E7tYCKFZo/idG2SNWMiiwdJqzEkZF0mpTgO3hDwipk56YesJfXFUPqvEijdd?= =?us-ascii?Q?u/RBfINLIbjClw2vn03xb3J8CiNzMugimKB12XOr8v11BHrAhga2ZsoMqYJi?= =?us-ascii?Q?gUHCCflTsyW8JnWfQV+SUA8d2DnKSZ6p+IfCHsZ1xoKgh6dchKD/lSxVosEw?= =?us-ascii?Q?pAtOecrp0H9HdzpVgtES9hhMksUUMELJcDZ+ei2JjQJBbKVuILnEj/ov5eB3?= =?us-ascii?Q?3gGyHmOZL0Cl85ozgNAdxW5HIfy0+BUn02ibcoJLmAxqJ+DotjHKwQ8Elpks?= =?us-ascii?Q?KEsGqBkpMfx9gjbi7Ah3uM2tBIsOZy7fHxNEv5JtCJr88I3plllD2Xg/JESV?= =?us-ascii?Q?XxjeV9qCXhu8mh2BGb//7k/Zq6g4lBZoe5uGZiCFE8q+cG6jv9lfGTrrexeE?= =?us-ascii?Q?aWTfRkUSt36d4r9tuE+ZmulDs1aTazq+UVNGfBWR0c5xOynxWx9XwyHSehns?= =?us-ascii?Q?xkekNiyMgOADqEAh24eKBIAjNsJVBfc0rvcbb5mEVfwrB3uk6Nkz5+nXFH1x?= =?us-ascii?Q?bBf3L/RCndoSMLbUHRqfcuH2OvMto05mgiwpqnUtCDZdfBQ0ibNtsEtPzuMJ?= =?us-ascii?Q?qZzLEW2j1HnF95z0WNy1u+7HUd1jFwAVV04FIqjnhpY68Q+bjxLBRIIvdW22?= =?us-ascii?Q?GMP7lc8uRfKU8JGSMzFrIJcyJnyBc6AL+xGLQq3O+HffnbFQL+hfG4KXgmbW?= =?us-ascii?Q?SLRfPJ/yGmBZqHSzGEwOfijWmzCqlH/UTNqmjmAnF499uMw88Hy1HYlDLrAL?= =?us-ascii?Q?WyYQ8fGYgm8407625kSj7de1PG8IdrI9SBwtJOz0WnhTfxVFZJURcuI8g9h1?= =?us-ascii?Q?Y3z8otIF4EI6d04lCKFbjpQQNoLwML6MphRMMeH/a+sfBS1eEYLAOu9fqtRV?= =?us-ascii?Q?/+gh5roUldQsQSeDAqWzeSR4pHb6mELHVns2jU9+1fKQf2XEY0yX3EkLePYN?= =?us-ascii?Q?L/tj6WivoDxAD+hwvVcHm5LncbSmfBh0uNw5us+bvv9wDrhexTpBQwyx/ooV?= =?us-ascii?Q?kMfhx4kFOyom34kVxqR+/Yp9I1vmX4guNAIGeLCvvPaNbPHq22HDjijoeudB?= =?us-ascii?Q?x8nvHX/R3JznFtzcI6w3JhyjykcWOnvhrSQbUdp9nzVaQWaa7xlGJOql9LPQ?= =?us-ascii?Q?P0BoG400l5GNLQQkw1wnZHotLow4ghPuMDna4p3JGp2Y7KNkTyP6eNmlYbm1?= =?us-ascii?Q?50HYmkTa+azfnLSfEhKBtklud9DqGQrc4VlbMvkEyo6euozHOYho8/iNs4xB?= =?us-ascii?Q?wfPCPzOxpkbOVqCuelShzSKPE+sAZIjPVXOcjkL/8jb+1XiL/za2i7/zyNdA?= =?us-ascii?Q?PSUlb0PvkJXXJ8yVsfuFP1ji5ed2w/v06vVvEArBI9xwrLmla3jZvEZuK5gE?= =?us-ascii?Q?mK+QbJ1GLWgruvN0HMfgj54ZDZRd4kmfTwYRfAMqB6wWBBt1paaZ9r/c34cB?= =?us-ascii?Q?p2i2+LWPjYJav9/8KcsBvbC3essB9sVo/JyYvEMdoXXqShiwCjt9kFCZDms7?= =?us-ascii?Q?nz2dg2hUBxyN6xHZ+/ojHBHnv49f0SfniFrkg0m5?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bef8c711-36c9-443a-1a8f-08dbf2890d74 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2023 16:17:45.4793 (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: 69YYGyPL8EkMJM79V/u0Fm/HT5/tQFxhbjGkSDdtoqfMtRKuSJmiGHJXXYYGHsBGB2pg1AWoS4DMNSWEr3AReQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8695 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add suspend/resume support for Layerscape LS1043a. In the suspend path, PME_Turn_Off message is sent to the endpoint to transition the link to L2/L3_Ready state. In this SoC, there is no way to check if the controller has received the PME_To_Ack from the endpoint or not. So to be on the safer side, the driver just waits for PCIE_PME_TO_L2_TIMEOUT_US before asserting the SoC specific PMXMTTURNOFF bit to complete the PME_Turn_Off handshake. Then the link would enter L2/L3 state depending on the VAUX supply. In the resume path, the link is brought back from L2 to L0 by doing a software reset. Signed-off-by: Frank Li Acked-by: Roy Zang Reviewed-by: Manivannan Sadhasivam --- Notes: Change from v4 to v5 - update commit message - use comments /* Reset the PEX wrapper to bring the link out of L2 */ =20 Change from v3 to v4 - Call scfg_pcie_send_turnoff_msg() shared with ls1021a - update commit message =20 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 | 63 ++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-layerscape.c b/drivers/pci/cont= roller/dwc/pci-layerscape.c index a9151e98fde6f..715365e91f8ef 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 struct ls_pcie_drvdata { @@ -224,6 +233,45 @@ static int ls1021a_pcie_exit_from_l2(struct dw_pcie_rp= *pp) return scfg_pcie_exit_from_l2(pcie->scfg, SCFG_PEXSFTRSTCR, PEXSR(pcie->i= ndex)); } =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); + + scfg_pcie_send_turnoff_msg(pcie->scfg, SCFG_PEXPMECR, PEXPME(pcie->index)= ); +} + +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; + + /* + * Reset the PEX wrapper to bring the link out of L2. + * 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, @@ -241,6 +289,19 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = =3D { .exit_from_l2 =3D ls1021a_pcie_exit_from_l2, }; =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, + .scfg_support =3D true, + .ops =3D &ls1043a_pcie_host_ops, + .exit_from_l2 =3D ls1043a_pcie_exit_from_l2, +}; + static const struct ls_pcie_drvdata layerscape_drvdata =3D { .pf_lut_off =3D 0xc0000, .pm_support =3D true, @@ -252,7 +313,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