From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5951EC83F17 for ; Wed, 9 Jul 2025 22:57:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To: References:Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version: Subject:Date:From:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=44xtDejjX+cOYzwJus0n967vXdzxuc76assiHHEt97U=; b=JLyQSkFJS7ueckLJ8ifZP0ED2+ QhqNC4sCTsG8niKgeyJj9q4Z/6lD699fil5hPm/cYbMV38BpwvJGsXCtoZDVWRdxodtisLEkVqHSg 19ChnIrMJFduFfpgYzKsXV2mT0rxsA/pSXtsiFob9U2gpEfsklBOxnqLm6o9hQSnw0yXV9SCYQULE l5gEv3r+T8qLhw5NXkNqlZx2kD+hRevo383bsYah4bP221oDO92VTVPcDNWMueXg1op5SpqEL3RvY 8xS7tk0Ys+HgB6Em0BEcHq+dDxM2110HFIAABqNBH8nHzcbZFBbB4PN8PuUzWX66JuFxsO7I7rnAk +bkYUxCA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uZdip-0000000A9DL-0XJU; Wed, 09 Jul 2025 22:57:03 +0000 Received: from nyc.source.kernel.org ([2604:1380:45d1:ec00::3]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uZbwJ-00000009rQ0-3EXy for linux-arm-kernel@lists.infradead.org; Wed, 09 Jul 2025 21:02:53 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id F1E66A549A6; Wed, 9 Jul 2025 21:02:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPS id 5E956C4CEF6; Wed, 9 Jul 2025 21:02:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752094970; bh=htJO8DNvMG8JfxhKULyjO956ceacV6C/omT3F7WroKI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=fLhBsufoucrQGk3FvBX8Q+vZI50h6aR54S3xmUb9VoILDBEyGFYUifGJ16tXpCxFa QVjec+/SYcnDxrEuw+JKEZ91gAiMOqUgSp2ue6qRj3FrBVf8nBqQkOrRmO/NAJf7IQ u02MK3xxCCXOH6a8NHz3Ba/MMHMdVed5CUROV9E/zC3cJJy/gY75n5eW66dokGhv8R xCrd5g+4e7laoKncY+ZZ1M9X5bN03Q8KKmFJEJMxCDi663LlD8/Txn7EeTA61um1o8 eyI3tK5VZN5UjJVG+vayUa3FNm+7qyZBJWLiTO7p4o9RwFZY3Vh2ZQq+FxYp5nhn0H yX8XHVfMRVOlA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46D3BC83F14; Wed, 9 Jul 2025 21:02:50 +0000 (UTC) From: Frank Li via B4 Relay Date: Wed, 09 Jul 2025 17:02:14 -0400 Subject: [PATCH v20 2/9] PCI: imx6: Add LUT configuration for MSI/IOMMU in Endpoint mode MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Message-Id: <20250709-ep-msi-v20-2-43d56f9bd54a@nxp.com> References: <20250709-ep-msi-v20-0-43d56f9bd54a@nxp.com> In-Reply-To: <20250709-ep-msi-v20-0-43d56f9bd54a@nxp.com> To: Kishon Vijay Abraham I , "Rafael J. Wysocki" , Thomas Gleixner , Anup Patel , Kishon Vijay Abraham I , Marc Zyngier , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Kishon Vijay Abraham I , Bjorn Helgaas , Arnd Bergmann , Shuah Khan , Richard Zhu , Lucas Stach , Lorenzo Pieralisi , Rob Herring , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= Cc: Niklas Cassel , dlemoal@kernel.org, jdmason@kudzu.us, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, linux-kselftest@vger.kernel.org, imx@lists.linux.dev, devicetree@vger.kernel.org, Niklas Cassel , Frank Li X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1752094968; l=1837; i=Frank.Li@nxp.com; s=20240130; h=from:subject:message-id; bh=undgD4r0xoItEmBKrD+Vrj1bBDbTL2OdUvPEHbj/82U=; b=UftBhBB5urlKpS68xrUOJvV6CLNrw47J/fL/rwqDL8F1cheHU1wwj+yZiMcvVUqGReyXmVPop f4AAJivAacpCO/GBVA+1NdB7lsWczq1tDlzVcGLHVUjKnmylLgjY0N3 X-Developer-Key: i=Frank.Li@nxp.com; a=ed25519; pk=I0L1sDUfPxpAkRvPKy7MdauTuSENRq+DnA+G4qcS94Q= X-Endpoint-Received: by B4 Relay for Frank.Li@nxp.com/20240130 with auth_id=121 X-Original-From: Frank Li X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250709_140251_962981_291BCEC8 X-CRM114-Status: GOOD ( 14.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Frank.Li@nxp.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Frank Li Add LUT entry for Endpoint mode by calling imx_pcie_add_lut_by_rid(0), since only one physical function is supported. This sets up a single LUT entry required for MSI or IOMMU. The Endpoint function can operate without LUT if neither IOMMU nor MSI is used. This LUT setup enables the EP doorbell feature by allowing the Root Complex to trigger the EP’s MSI controller. Signed-off-by: Frank Li --- change in v20 - update commit message change from v14 to v16 - none change from v13 to v14 - new patch --- drivers/pci/controller/dwc/pci-imx6.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 032b906c44dfaa374a32f511098402a494ef5677..3123bf49e209cc0fc448d6e02a472e280d538033 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1063,7 +1063,10 @@ static int imx_pcie_add_lut(struct imx_pcie *imx_pcie, u16 rid, u8 sid) data1 |= IMX95_PE0_LUT_VLD; regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA1, data1); - data2 = IMX95_PE0_LUT_MASK; /* Match all bits of RID */ + if (imx_pcie->drvdata->mode == DW_PCIE_EP_TYPE) + data2 = 0x7; /* EP side's RID from RC, only 'D' is meansful */ + else + data2 = IMX95_PE0_LUT_MASK; /* Match all bits of RID */ data2 |= FIELD_PREP(IMX95_PE0_LUT_REQID, rid); regmap_write(imx_pcie->iomuxc_gpr, IMX95_PE0_LUT_DATA2, data2); @@ -1767,6 +1770,9 @@ static int imx_pcie_probe(struct platform_device *pdev) ret = imx_add_pcie_ep(imx_pcie, pdev); if (ret < 0) return ret; + + /* Only support one physical function */ + imx_pcie_add_lut_by_rid(imx_pcie, 0); } else { pci->pp.use_atu_msg = true; ret = dw_pcie_host_init(&pci->pp); -- 2.34.1