From patchwork Tue Oct 17 19:31:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13425853 X-Patchwork-Delegate: lorenzo.pieralisi@arm.com 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 2E6C5CDB474 for ; Tue, 17 Oct 2023 19:32:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235034AbjJQTcX (ORCPT ); Tue, 17 Oct 2023 15:32:23 -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> 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: uU3Xt2/+G5smLPsQp6BDv5SX1fDVsvx2+yF95YPcCy4/oAW6WssedklK1jwD7sCZ2CZfS+TeaXBduc1FXGbGteOEY8IgR7xu9maxOI5z586Cspl8qerAyZWsePkftz+bUVfuY17C/su2Dxof4giJwso0/qreKIkfWiPtfotC1+xV9arNg89PzQQ037FupTHkipOBw1Zl3PLN7aWOo/1ZhS52Ju7+enmSfUMvi5E0c1tlCh+pJ3dH7PJ2ua9tDY6vR/XTYQxR87QIMFmh9i+dWnuw7scKUS6AuVw0kZntQr8hAlCSr+9V0nSU8ybRUWQzMzTNf63xgILmMyPuQmmGoiR9fU1Z07ef6YoPn/w2BpQb1PYbnc2Qt9mK8bDPJd01sMjE4cX87dQ4xIzpzPXPBVoljbui/XVYky4+PSubF2twq5671SEbtNE58vi6Jf5x9ZwJrtpcKZPB93OyKGP/CWQEaD9lAAQupoyIXD4e/EAHlNEUPl3mBjsaDoQ8oAsvuD90kWkj2xoR+7FyW9j4FdvpucKq6Q759aWfIsURGUawNWqnHLX/8KjThunRshiD9QoTJJnM6IipVUJFU84XYeMSUSzvD0Evnze5pmLAi18mdO97CPI8YpajJlHRVuNiZOQmQbMIoNCWSlDdwUmeqKWSe0daUBj0FEzCXB1Nw09q1Q7zRf++nVNJcbODVFisuvlE/K0lZmUi5JMl5/5j4nv23vc0S0vKzU6IvVF4/fHKSb/JCOc9DmCg9vgKCgunMinv2LZ5exiyPLux2bnmAzLWopErRTbB70UBiflrj4zccy03oSnNsPAHrK/xyENUscHr+S5ViHftXpcvc1t4QVBn77g9FnrnhEFzdydTkQlPjIeWJWdYLeMEgDjut1u789Noj2SxEvYU5OQQO0hPdz9Kg+8RFFaRgkkQfySm15hkbQADf+vN8dzQf8e2YxBEBC4b6gonjrUd6ip/Wqq1ZxzvAnTdT5RKfLe9ecbI0IRmcAfVhZ/7wWgSnp2v21uLvI/JPydmKe0FaZ7XprimUP62SithVE32i8Gh/bMeEV8IZTsX5VB7Fwb1EQ3OfDsPHGw7VgqjE01rRhaedi3Y1yvszWE4HB1DqIXRBQsNZb6tmx0fn4nIF3DPfy75bme+OKX5JgbDOSr9OKcDbKRJR2O7yBCHT79UjwZif/xqZeqIO/xAA1F1Bf2p7ZgYLQv8+B9ByGHIjZ6HUmrSgjeeNULrQG6xmGvKBE5slLPUbBnDoFuRIcVYnx1yJU6mPAWz/krMqmaWFwcFkg5M1SoZFsMaDXLvsZ/iA/FmxWBsPmKOo1dpIpVKGzOkTu/4QIiJFOLidY4U9W4GuHinZHTrYP5h85axwlXMQh16iz3VDAXEGqgQNrcVCEGBw6UAyOhQutG/5pO1Y8JZiX8Z6LktlBouURIWaPhAVxodsgBnPMDPyePE+ib3hFi5yUYhQbD7OqSOQUnPlq4rnisXZ+Dq3QRMUobUUxOUmGIc3ECH5cqrzDRu1H/UTmR+vxtDVJbnIWMOfQyJCFJL5NeniwOsP9YXxoA+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-pci@vger.kernel.org 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' 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/controller/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 @@ struct ls_pcie_drvdata { const u32 pf_off; + int (*exit_from_l2)(struct dw_pcie_rp *pp); bool pm_support; }; @@ -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"); } -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 = to_dw_pcie_from_pp(pp); struct ls_pcie *pcie = 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; } static int ls_pcie_host_init(struct dw_pcie_rp *pp) @@ -180,6 +183,7 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = { static const struct ls_pcie_drvdata layerscape_drvdata = { .pf_off = 0xc0000, .pm_support = true, + .exit_from_l2 = ls_pcie_exit_from_l2, }; static const struct of_device_id ls_pcie_of_match[] = { @@ -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 = dev_get_drvdata(dev); + int ret; if (!pcie->drvdata->pm_support) return 0; - ls_pcie_exit_from_l2(&pcie->pci->pp); + ret = pcie->drvdata->exit_from_l2(&pcie->pci->pp); + if (ret) + return ret; return dw_pcie_resume_noirq(pcie->pci); } From patchwork Tue Oct 17 19:31:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13425854 X-Patchwork-Delegate: lorenzo.pieralisi@arm.com 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 CA37ECDB483 for ; Tue, 17 Oct 2023 19:32:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343897AbjJQTcY (ORCPT ); Tue, 17 Oct 2023 15:32:24 -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> 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: TngB2IrPGR2LZF1cqDddCbTC6TLw4ruOUTQccUEeC7XO70QL3xepw3sFhRRIQzOkVaVVlxCLR/64OaxRVPZyU0EcICKjZw8XPIPuEVKYKhmpYWaadK5VGlEV7IHVxfwW1c2Bf1ZXU2+i5JbyjDjVJPGXqcNz3a3aOEh2WQkmj0uyonD9EAb57+k6BALwOmtbXJwq9AMn2ULnMCn9RouBD87P8mNHsjogW+R87vFXL1HpX/ef2leuilcAk7lXr8o4xBz+V/1/9aSFsWGxeAPirs1x7ABnhcZy4VRbsvKj9i6fneVZO9pEl/EZsiokd7+n1mf/v9SqPvChhMTZBKlZpQo4+LIvdt4IGfl2pfGEiDsDgghlsgBdCDvAW8dj14bvOj3ReN4MlgQGwijMel2w9KC+S94kejznMIc1JR37P8rtJkAOCXeODOBw6ykdmoY76HhhDc3Ug7PVrlqihmUSIcJeej1ARfd5PplvaMenwJZ7aZPZ8S5f0QQyxMmt8SiBzkgnd7KAgwXd1XvZjj5EHrtXaK+o7cEh8feDV9DLHx/hJKfBVTWvYU4cxI8wVUeENDNbar0VAEsSe+2yNJKHD9mJKJiYQEMYV2JDLX5FAil4ewtzGejwyRqrX2w9Ac8z7hLD5oH/BdHFacIcIA81sRri8BqRFh47rvlVj07ugdm0GDH57JIeG4CqE5vlhl8a9zzxaYb0lW44Zl69WDaz17OrxvYkvK+9GHDDe29PJmTdpQLzvofx9eeiJDxeCpECEOHGvrRsJm4Humr0AYgQJgcyOsK9mzCo8Msyqe8s1V+w25w6ByvUXvkJYvwnMjz2fpt1z4748lSgR9bQrh+m4Uz6frA4BFGcyMpVS/OpLGhDQcDVz1Nhhpxe+YCo5LLFWKmvUWah/5XLaHMs0vptW7mB7h434h2vpTDKVrr7ybX5KBMVP5qcpOUYt8lNqn6n4ikCua3MKFyctQHYOx91suWurBwWYn0VaUL+iK/9aC6dneET8a1Jaj6j8H25qjWah0a5YE6rp1qs7Li+GYrHtE1ursLMsnRRWfrEJAaNPRBA0WGIggSDbchOgh3RNhaZQzbxyNpO9s6VCrnXx3wS4eZiFtCoUVLmEvBgye8HgEBHmRWogImOcideP1Tk03bKPw/kOycFGjz4BbO1mPaHJvdSJtuUtPW5JFq1dY6Hgio0WKmT47SVxslAbpmHIgMjr9jJhvESYlS7ChNyvDfSL432fNTb4g7mi02KMB2Ii8CZhfTdiJk0qcm9zOdGoB+Aiqa56KopvITnTGMaodWHH8GtIp8eWlvF8vAU+Ois8TXQaDSYPkqwX5K3KrSvm0XvP/VN0ZzyNW3k3lr04xTdM66/tmRrqFs/APmtZrkQP1Rz4ljhkX3D7gHGiH5wyu5U5p6iYAZrfsRw6iG8ZiJBG7ZebIpyRV1AO1zzd+CmosVgEI6fBxzuTjxCzxT2e7bw316P5eMU+ilrCFsQQL/YaR8my2K8GxH6QHBKGKtYWfsHVJEIuEtrQCSQ16RvgPhU8jihS8jgZty4S2GdChgL7jj/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-pci@vger.kernel.org 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/controller/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) +/* 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 +#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; }; @@ -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; }; @@ -171,13 +183,65 @@ static int ls_pcie_host_init(struct dw_pcie_rp *pp) return 0; } +static void ls1021a_pcie_send_turnoff_msg(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie = to_ls_pcie(pci); + u32 val; + + /* Send PME_Turn_Off message */ + regmap_read(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), &val); + val |= 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 PMXMTTURNOFF bit + * to complete the PME_Turn_Off handshake. + */ + regmap_read(pcie->scfg, SCFG_PEXPMWRCR(pcie->index), &val); + val &= ~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 = to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie = to_ls_pcie(pci); + u32 val; + + /* Only way exit from l2 is that do software reset */ + regmap_read(pcie->scfg, SCFG_PEXSFTRSTCR, &val); + val |= PEXSR(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXSFTRSTCR, val); + + regmap_read(pcie->scfg, SCFG_PEXSFTRSTCR, &val); + val &= ~PEXSR(pcie->index); + regmap_write(pcie->scfg, SCFG_PEXSFTRSTCR, val); + + return 0; +} + static const struct dw_pcie_host_ops ls_pcie_host_ops = { .host_init = ls_pcie_host_init, .pme_turn_off = ls_pcie_send_turnoff_msg, }; +static const struct dw_pcie_host_ops ls1021a_pcie_host_ops = { + .host_init = ls_pcie_host_init, + .pme_turn_off = ls1021a_pcie_send_turnoff_msg, +}; + static const struct ls_pcie_drvdata ls1021a_drvdata = { - .pm_support = false, + .pm_support = true, + .ops = &ls1021a_pcie_host_ops, + .exit_from_l2 = ls1021a_pcie_exit_from_l2, + .flags = LS_PCIE_DRV_SCFG, }; static const struct ls_pcie_drvdata layerscape_drvdata = { @@ -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; pcie = 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 = &ls_pcie_host_ops; pcie->pci = pci; + pci->pp.ops = pcie->drvdata->ops ? pcie->drvdata->ops : &ls_pcie_host_ops; dbi_base = platform_get_resource_byname(pdev, IORESOURCE_MEM, "regs"); pci->dbi_base = devm_pci_remap_cfg_resource(dev, dbi_base); @@ -230,6 +297,23 @@ static int ls_pcie_probe(struct platform_device *pdev) pcie->pf_base = pci->dbi_base + pcie->drvdata->pf_off; + if (pcie->drvdata->flags & LS_PCIE_DRV_SCFG) { + + pcie->scfg = syscon_regmap_lookup_by_phandle(dev->of_node, "fsl,pcie-scfg"); + if (IS_ERR(pcie->scfg)) { + dev_err(dev, "No syscfg phandle specified\n"); + return PTR_ERR(pcie->scfg); + } + + ret = of_property_read_u32_array(dev->of_node, "fsl,pcie-scfg", index, 2); + if (ret) { + pcie->scfg = NULL; + return ret; + } + + pcie->index = index[1]; + } + if (!ls_pcie_is_bridge(pcie)) return -ENODEV; From patchwork Tue Oct 17 19:31:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13426046 X-Patchwork-Delegate: lorenzo.pieralisi@arm.com 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 17FE9CDB483 for ; Tue, 17 Oct 2023 20:45:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235030AbjJQUpx (ORCPT ); Tue, 17 Oct 2023 16:45:53 -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> 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: 2m3/5UJb9z40PQRoSpoLnPlP3AJPcMOu4hspvenvXQvsSIiz1Fx9k1aVUB3ua1opBpDMAd54ilAoMG+BDU2alk5vjw9sGDohEnaCHN4uNZB9uarHOfq+3f1bVc4jvKQeJkJvFUR75YEGIgYsgefvX04Zgwc9tMaOdOT++s1AxyB/y3OBzOs6eP8lurKXEKzNnTog3XHIdpLGFsKpzZZiv4XeSQezN+lBAdQYUHumRm69dFdOu5ArTJ5X/rgo/TCCsJhoqrdAMwqoHs//p2+IKxQ2kezGYciDffKnMmyGVlS6L1jCHX/ABAC8/WUqzL41cO2T01WmK4EitGcFz89iTLb51FHuHU+itqb235wZoP+s4TTnzqJvGhkhyPczvLW1MHz52aEpFNFFynwmJIdoCmgmIPv9q+Yg3PRfgoUgrqGqiTiIggL304FTsWIovVJosp0xv/jE1Tl77P/5OB0V+kFhVKdRwkcNXkx1qgWc6d+hF0bPEST89Hur6TufVHcvHry+Ln/eJJ/XXecKuBgJ8IngE/BQt+uen9/8LNJ9rHQAI5vHtk5AU87ZSRG/mIIk0RUmHff9ixEiqmrnTFg3QEZHfai5Svti6x+WnBZtUhy2T38ZL4jFM20FI217LX1EKYTm4pKANeCDfQ8X9sWVcP+PywEdw0neDTAcokdlQba4+e0quPCeafSta6aMJWXHjno4wczEGilvRDq+xJ1tf57bRcCuDKoER/n1p5Pm2OZnzMrVKpjI+v9fSMiflMhWA05n27Cqd8+Qpzz81iChrjnWEUF+G39ZatALKMnLasBbeoX13cowS85a3LQrj8I5/QvDB72+wB0XdezPjCNM3tDn5Odu8gV6kzKWIDtuDmythY12wSj8A41ss6AhFdMk1YWZdbdV1+TLIHWwQ+MmylhwLPjnXrKk/UAhGgH8kWPZygouZVDjePFAPZbJTkBnmhmoj+rTFhMw5otcCWW+U8qtOikmxn6TKROqtGZYHiS1/krmlN1EjE/83oAf98abDqGVybWImgCNRcJbB0FJCLmdg2RryhzA4nqWIXO/8cnHE0ZyX+cJ3bnWWq6C12TqNSCF2U9eLfqdEvTIho1EytA6ebWjSGQxVX3jDy3wFj5JDfGTw5VbpHLf2+drX2QWOmL/qyJrXjvUVRy8eJooD7gPqFCcGyfPlhuOfcBsWQVbONRKvNm/Bl+w3YWvgQztBmJMqIm4i0HhMefhmifEM1WOLwGl4PDMUflb/tfHwfn/ytkMzYdvswK1J5idJ++UG9UFtn/X2RDOP+1X7A9rvjR62+Mja7/iGo92K9FTiUBScEQKJ9tVTYksg+erD6Gss6vn4QCO5Mt93x/tcwb1iEqWzPGM8XfpoVUTE3m0PR6o977xcG76Izs/G18NyPK2XChYi0C1+hozkTKE7Rp335/dLCaztQBu5DborzanhA7iBapp3lXv+4KsAzpLNdGhPI0au5vlOaRmjktamhSEAMFgh1YsF2iRceDp569mL32tkUKL//LQ6VlhcwiDhNE2NFznC1+VsDNl70IynI6BckDvGDXAMG332aNCAYxHY4fGzt4994buT13QDfIfVEwB 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-pci@vger.kernel.org '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/controller/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) 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; }; -#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) 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); } -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); - return ioread32(pcie->pf_base + off); + return ioread32(pcie->pf_lut_base + off); } -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); } 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_rp *pp) u32 val; int ret; - val = ls_pcie_pf_readl(pcie, LS_PCIE_PF_MCR); + val = ls_pcie_pf_lut_readl(pcie, LS_PCIE_PF_MCR); val |= PF_MCR_PTOMR; - ls_pcie_pf_writel(pcie, LS_PCIE_PF_MCR, val); + ls_pcie_pf_lut_writel(pcie, LS_PCIE_PF_MCR, val); - ret = readx_poll_timeout(ls_pcie_pf_readl_addr, LS_PCIE_PF_MCR, + ret = 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 = ls_pcie_pf_readl(pcie, LS_PCIE_PF_MCR); + val = ls_pcie_pf_lut_readl(pcie, LS_PCIE_PF_MCR); val |= PF_MCR_EXL2S; - ls_pcie_pf_writel(pcie, LS_PCIE_PF_MCR, val); + ls_pcie_pf_lut_writel(pcie, LS_PCIE_PF_MCR, val); /* * L2 exit timeout of 10ms is not defined in the specifications, * it was chosen based on empirical observations. */ - ret = readx_poll_timeout(ls_pcie_pf_readl_addr, LS_PCIE_PF_MCR, + ret = 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 = { }; static const struct ls_pcie_drvdata layerscape_drvdata = { - .pf_off = 0xc0000, + .pf_lut_off = 0xc0000, .pm_support = true, .exit_from_l2 = ls_pcie_exit_from_l2, }; @@ -295,7 +295,7 @@ static int ls_pcie_probe(struct platform_device *pdev) pcie->big_endian = of_property_read_bool(dev->of_node, "big-endian"); - pcie->pf_base = pci->dbi_base + pcie->drvdata->pf_off; + pcie->pf_lut_base = pci->dbi_base + pcie->drvdata->pf_lut_off; if (pcie->drvdata->flags & LS_PCIE_DRV_SCFG) { From patchwork Tue Oct 17 19:31:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 13425855 X-Patchwork-Delegate: lorenzo.pieralisi@arm.com 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 32D2ACDB482 for ; Tue, 17 Oct 2023 19:32:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344248AbjJQTc1 (ORCPT ); Tue, 17 Oct 2023 15:32:27 -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> 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: b1Zt95IeghmeGvn9h4tBqaIEt2wDzWFaB+y74GS13qhDD38XskYvvXlagxQt2Kk14Oew2jIT1ffcuYdHgJFII9vkjfw+xDUrtcYDmP/uHmTW2j7bBEbIawttDrMwzqBBRrS9kIfPf+uDSG6pPM+V4VIvqHiL5RLzk0EHHYPzzXnlGXytEFcHqZ9qRSJrTj65O2zWtnqZ1k8v/9UEXkmjVo1eDkW+Yoqh3kKedlF0qnqcUZz22MAx0L8dkvoEo2pCeZ/MXgEXpXRHmHguleVn3O/VWOgJVmtjZ56k7Nq9OK1WOf8SNv6X3SFmsxGwj+PPtL7DCMaSzuWJGk+oA5ozn+j1DOofjn9YCWZHxn583uXcdaYQnmyn8pUcbDaDFOSZty5CiqaUgOuqc7SUSm07OskfpYmK5V/3sJWMjvr85OhQKSxF7kYT64CgUSddpPzLePqlYTOITlHo8w/Hlg2v1yPZRIaNchdx+QjkBcjdW9RXg4YwSufP7O1qXkZOLRQH/mlh5NrZfNW9Q0HDuQmBSvIwNX/B3a2Ftu8hO+F3v3yARtSdED5njG0FxusjGB4ZoK/aPj7sRAcxd5fBxfFkiPh7w1C0G8ZH+Xx3oeKLOE+H7hhUTJvEDvgFFrXna8c/F3R42LY9VeI7qsPikpEKZjh5jWRcMLNXIloKONOktVRWHFkB8OSsiDx3zF5w0N3nob61fHh3kxgZ0DrzQbX2JbQ1ezOLdAXp4HkuvA4ngQIakuxem61oXYbzqEVceagF+T/UBXELdJ+9KbHYG28B54dPfV6bQsn/+a4IyRGmM1a8nnSJ2BQJJlGECAHAoc3RWufU2vqQ77rzdNRzN+tO9ZAj990QlJz1hKhVFaFtzkVpzyLSIi1qcrzOVka6YLw5+nxGpDt/8RcWWRxff9HkRU0gG43p4EKsG91/KAxPuUOvTLFlOlZv59Unkz/udXjbKyikO1A4G00k7tAKIyZCQAIBu+iXUKiese3oBMil8LnAXuV+OaS9Ic/TCr1pK+LWvAqYncdmXWkNfiMYrAhHVP2X/I+Wo73pCdpsPaM8KpHzlYBlwuxkcNsFOFfr7p9xaYFytpr8Gpoz9tHUSHXsUG0JDe28G6FvBEI6LEreEb5anwFkZzphjXHX4uewFvfixESA5vjiWwV0qptFn3WySV5hZesGgLxqAcTzA0xFsLzOGGAnHLbUwaM64BQyKZezHTDEEYAZaGqsGMKk1bs7TOnFJUm4hhyVMsQTFMoMojb5bFnQp6glJPAOTXq3Fks8tow1WAWO5cWBF7yQy8cAz9IAJQGIez+u45zu4ZkNhzaBgk90uLI6siWFHwiP7cEmwRJyjZohfC4kal+lv9gYvoVQIqHQV41H6rBK9EzU3gkhgRB+zZKYEZB8UGoenlyrJgBZ4WONXBnIpH4iw4guWfkIxV8kGr50p3+EjfJs2NSqKLGNdTgGS7W4rMsfXI8nn/eNYP/pYS1QhNJLa2yagPEO1K9ik5dPVnaguQJxnQcUrPDpXHEgkng/EdaYihURIjwTFtn+sos1TeVyuX4NDZ3HGDPi+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-pci@vger.kernel.org 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 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/controller/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) +/* 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 #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; } +static void ls1043a_pcie_send_turnoff_msg(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie = 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 |= 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 PMXMTTURNOFF bit + * to complete the PME_Turn_Off handshake. + */ + regmap_read(pcie->scfg, SCFG_PEXPMECR, &val); + val &= ~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 = to_dw_pcie_from_pp(pp); + struct ls_pcie *pcie = 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 both 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 = ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val |= LDBG_WE; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val = ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val |= LDBG_SR; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val = ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val &= ~LDBG_SR; + ls_pcie_pf_lut_writel(pcie, LS_PCIE_LDBG, val); + + val = ls_pcie_pf_lut_readl(pcie, LS_PCIE_LDBG); + val &= ~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 = { .host_init = ls_pcie_host_init, .pme_turn_off = ls_pcie_send_turnoff_msg, @@ -244,6 +315,19 @@ static const struct ls_pcie_drvdata ls1021a_drvdata = { .flags = LS_PCIE_DRV_SCFG, }; +static const struct dw_pcie_host_ops ls1043a_pcie_host_ops = { + .host_init = ls_pcie_host_init, + .pme_turn_off = ls1043a_pcie_send_turnoff_msg, +}; + +static const struct ls_pcie_drvdata ls1043a_drvdata = { + .pf_lut_off = 0x10000, + .pm_support = true, + .ops = &ls1043a_pcie_host_ops, + .exit_from_l2 = ls1043a_pcie_exit_from_l2, + .flags = LS_PCIE_DRV_SCFG, +}; + static const struct ls_pcie_drvdata layerscape_drvdata = { .pf_lut_off = 0xc0000, .pm_support = true, @@ -254,7 +338,7 @@ static const struct of_device_id ls_pcie_of_match[] = { { .compatible = "fsl,ls1012a-pcie", .data = &layerscape_drvdata }, { .compatible = "fsl,ls1021a-pcie", .data = &ls1021a_drvdata }, { .compatible = "fsl,ls1028a-pcie", .data = &layerscape_drvdata }, - { .compatible = "fsl,ls1043a-pcie", .data = &ls1021a_drvdata }, + { .compatible = "fsl,ls1043a-pcie", .data = &ls1043a_drvdata }, { .compatible = "fsl,ls1046a-pcie", .data = &layerscape_drvdata }, { .compatible = "fsl,ls2080a-pcie", .data = &layerscape_drvdata }, { .compatible = "fsl,ls2085a-pcie", .data = &layerscape_drvdata },