From patchwork Mon Jul 18 20:28:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauri Sandberg X-Patchwork-Id: 12921750 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 69F7FCCA479 for ; Mon, 18 Jul 2022 20:40:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235151AbiGRUkH (ORCPT ); Mon, 18 Jul 2022 16:40:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233955AbiGRUkG (ORCPT ); Mon, 18 Jul 2022 16:40:06 -0400 Received: from mailserv1.kapsi.fi (mailserv1.kapsi.fi [IPv6:2001:67c:1be8::25:1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9752530571; Mon, 18 Jul 2022 13:40:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ext.kapsi.fi; s=20161220; h=Subject:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=v+UcmGAXDJzCpvpxAoqmI6DOtor+v8w8rmvjZ08+Du0=; b=DOYDLEmBSmGTCN8K0Vodsekt2P F8D1KXuchJ6wCZPbWozg/M5IigBB/Dk1C+VQ5O1lElaLGnzjjCfE6Q1SZwXxIGhq7v7xRYs1OjaJy 33pXthDyDRSDXEuOX8EzTAx2WNhlzSemk+P60CgdWSpYF22rLuZJJjpk2TCVZ9ucgxpmWeaEWxCo8 m/GFIiMB3cLdtAPQImal7hN0gHDY7LFQb0tU/PIEEWtfmD9XksCninBn+ivRvVgcEtG7JwVXJU3Lm p/aMxhNNG0dGC9xHNjcUgYYCqzSmUpXWxeCQvUa156TvQmCvwJQ+VpI5eB/Y11mTSaeM0K9wJaMhG k9WFRgvg==; Received: from a82-197-11-249.mpynet.fi ([82.197.11.249]:56880 helo=localhost) by mailserv1.kapsi.fi with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oDXMv-00G7F2-0V; Mon, 18 Jul 2022 23:29:30 +0300 Received: by localhost (sSMTP sendmail emulation); Mon, 18 Jul 2022 23:29:28 +0300 From: Mauri Sandberg To: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: bhelgaas@google.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, andrew@lunn.ch, sebastian.hesselbarth@gmail.com, gregory.clement@bootlin.com, linux@armlinux.org.uk, lpieralisi@kernel.org, kw@linux.com, thomas.petazzoni@bootlin.com, pali@kernel.org, Mauri Sandberg Date: Mon, 18 Jul 2022 23:28:41 +0300 Message-Id: <20220718202843.6766-2-maukka@ext.kapsi.fi> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220718202843.6766-1-maukka@ext.kapsi.fi> References: <20220718202843.6766-1-maukka@ext.kapsi.fi> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 82.197.11.249 X-SA-Exim-Mail-From: maukka@ext.kapsi.fi Subject: [PATCH 1/2] dt-bindings: PCI: mvebu: Add orion5x compatible X-SA-Exim-Version: 4.2.1 (built Sat, 13 Feb 2021 17:57:42 +0000) X-SA-Exim-Scanned: Yes (on mailserv1.kapsi.fi) Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Add a compatible string to bindings to indicate that orion5x PCIe is supported too. Signed-off-by: Mauri Sandberg Acked-by: Rob Herring --- Documentation/devicetree/bindings/pci/mvebu-pci.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/pci/mvebu-pci.txt b/Documentation/devicetree/bindings/pci/mvebu-pci.txt index 6d022a9d36ee..ced5d030fe55 100644 --- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt +++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt @@ -7,6 +7,7 @@ Mandatory properties: marvell,armada-xp-pcie marvell,dove-pcie marvell,kirkwood-pcie + marvell,orion5x-pcie - #address-cells, set to <3> - #size-cells, set to <2> - #interrupt-cells, set to <1> From patchwork Mon Jul 18 20:28:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mauri Sandberg X-Patchwork-Id: 12921751 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 16EC0C433EF for ; Mon, 18 Jul 2022 20:40:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233955AbiGRUkU (ORCPT ); Mon, 18 Jul 2022 16:40:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236086AbiGRUkK (ORCPT ); Mon, 18 Jul 2022 16:40:10 -0400 Received: from mailserv1.kapsi.fi (mailserv1.kapsi.fi [IPv6:2001:67c:1be8::25:1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC38B3054C; Mon, 18 Jul 2022 13:40:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=ext.kapsi.fi; s=20161220; h=Subject:Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-Id:Date:Cc:To:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=q64OX1RaF24+rgYgUdUthpna0pMNsJC6RL3XDFNHJPk=; b=FLGAEi4tJlTTDhiWeHN6U+lthz vpTgU7E2oDAtyinhkzIzIWr9bg0qWL8/C5diFtWTxwKdDr+OwKMC1DdpDsYHts0TqTRu6ak56/dTu eeiTBii2Hl1smvL7jaKemVvgRu2ElxVmRbmr5GcVMT0GC5JIPClG92xWWkpnja6i7t6eF6HULSI77 SlkUz0Gr/hbLusbH3llLQh/XNoIjg3kbYevcZtPytgyUyCRFV9BnFEgWi9kvIhEs/MKEQ2EGvsJhK nnhCMQAWNQPnPWqA5CS+XBM4Xx6rqHukGdxbcg4/5OgQ0QIgOxiLi2x7lm4QSe0JTrmInAHxaM7xW 6xmUsIsA==; Received: from a82-197-11-249.mpynet.fi ([82.197.11.249]:56882 helo=localhost) by mailserv1.kapsi.fi with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oDXMz-00G7F9-39; Mon, 18 Jul 2022 23:29:35 +0300 Received: by localhost (sSMTP sendmail emulation); Mon, 18 Jul 2022 23:29:32 +0300 From: Mauri Sandberg To: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: bhelgaas@google.com, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, andrew@lunn.ch, sebastian.hesselbarth@gmail.com, gregory.clement@bootlin.com, linux@armlinux.org.uk, lpieralisi@kernel.org, kw@linux.com, thomas.petazzoni@bootlin.com, pali@kernel.org, Mauri Sandberg Date: Mon, 18 Jul 2022 23:28:43 +0300 Message-Id: <20220718202843.6766-4-maukka@ext.kapsi.fi> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220718202843.6766-1-maukka@ext.kapsi.fi> References: <20220718202843.6766-1-maukka@ext.kapsi.fi> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 82.197.11.249 X-SA-Exim-Mail-From: maukka@ext.kapsi.fi Subject: [PATCH 2/2] PCI: mvebu: add support for orion5x X-SA-Exim-Version: 4.2.1 (built Sat, 13 Feb 2021 17:57:42 +0000) X-SA-Exim-Scanned: Yes (on mailserv1.kapsi.fi) Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Add support for orion5x PCIe controller. There is Orion-specific errata that config space via CF8/CFC registers is broken. Workaround documented in errata documented (linked from above documentation) does not work when DMA is used and instead other undocumented workaround is needed which maps config space to memory (and therefore avoids usage of broken CF8/CFC memory mapped registers). Signed-off-by: Mauri Sandberg Cc: Pali Rohár --- arch/arm/mach-orion5x/common.c | 13 ------- drivers/pci/controller/Kconfig | 2 +- drivers/pci/controller/pci-mvebu.c | 59 ++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 14 deletions(-) diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index 7bcb41137bbf..9d8be5ce1266 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c @@ -231,19 +231,6 @@ void __init orion5x_init_early(void) void orion5x_setup_wins(void) { - /* - * The PCIe windows will no longer be statically allocated - * here once Orion5x is migrated to the pci-mvebu driver. - */ - mvebu_mbus_add_window_remap_by_id(ORION_MBUS_PCIE_IO_TARGET, - ORION_MBUS_PCIE_IO_ATTR, - ORION5X_PCIE_IO_PHYS_BASE, - ORION5X_PCIE_IO_SIZE, - ORION5X_PCIE_IO_BUS_BASE); - mvebu_mbus_add_window_by_id(ORION_MBUS_PCIE_MEM_TARGET, - ORION_MBUS_PCIE_MEM_ATTR, - ORION5X_PCIE_MEM_PHYS_BASE, - ORION5X_PCIE_MEM_SIZE); mvebu_mbus_add_window_remap_by_id(ORION_MBUS_PCI_IO_TARGET, ORION_MBUS_PCI_IO_ATTR, ORION5X_PCI_IO_PHYS_BASE, diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig index b8d96d38064d..a249375837f0 100644 --- a/drivers/pci/controller/Kconfig +++ b/drivers/pci/controller/Kconfig @@ -5,7 +5,7 @@ menu "PCI controller drivers" config PCI_MVEBU tristate "Marvell EBU PCIe controller" - depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST + depends on ARCH_MVEBU || ARCH_DOVE || ARCH_ORION5X || COMPILE_TEST depends on MVEBU_MBUS depends on ARM depends on OF diff --git a/drivers/pci/controller/pci-mvebu.c b/drivers/pci/controller/pci-mvebu.c index c1ffdb06c971..1d3052aa7e49 100644 --- a/drivers/pci/controller/pci-mvebu.c +++ b/drivers/pci/controller/pci-mvebu.c @@ -1487,6 +1487,54 @@ static int mvebu_pcie_parse_request_resources(struct mvebu_pcie *pcie) return 0; } +static int orion_pcie_rd_conf_wa(void __iomem *wa_base, struct pci_bus *bus, + u32 devfn, int where, int size, u32 *val) +{ + *val = readl(wa_base + (PCIE_CONF_BUS(bus->number) | + PCIE_CONF_DEV(PCI_SLOT(devfn)) | + PCIE_CONF_FUNC(PCI_FUNC(devfn)) | + PCIE_CONF_REG(where))); + + if (size == 1) + *val = (*val >> (8 * (where & 3))) & 0xff; + else if (size == 2) + *val = (*val >> (8 * (where & 3))) & 0xffff; + + return PCIBIOS_SUCCESSFUL; +} + +/* Relevant only for Orion-1/Orion-NAS */ +#define ORION5X_PCIE_WA_PHYS_BASE 0xf0000000 +#define ORION5X_PCIE_WA_VIRT_BASE IOMEM(0xfd000000) +#define ORION5X_PCIE_WA_SIZE SZ_16M +#define ORION_MBUS_PCIE_WA_TARGET 0x04 +#define ORION_MBUS_PCIE_WA_ATTR 0x79 + +static int mvebu_pcie_child_rd_conf_wa(struct pci_bus *bus, u32 devfn, int where, int size, u32 *val) +{ + struct mvebu_pcie *pcie = bus->sysdata; + struct mvebu_pcie_port *port; + + port = mvebu_pcie_find_port(pcie, bus, devfn); + if (!port) + return PCIBIOS_DEVICE_NOT_FOUND; + + if (!mvebu_pcie_link_up(port)) + return PCIBIOS_DEVICE_NOT_FOUND; + + /* + * We only support access to the non-extended configuration + * space when using the WA access method (or we would have to + * sacrifice 256M of CPU virtual address space.) + */ + if (where >= 0x100) { + *val = 0xffffffff; + return PCIBIOS_DEVICE_NOT_FOUND; + } + + return orion_pcie_rd_conf_wa(ORION5X_PCIE_WA_VIRT_BASE, bus, devfn, where, size, val); +} + static int mvebu_pcie_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -1663,6 +1711,16 @@ static int mvebu_pcie_probe(struct platform_device *pdev) bridge->align_resource = mvebu_pcie_align_resource; bridge->map_irq = mvebu_pcie_map_irq; + if (of_machine_is_compatible("marvell,orion5x-88f5181")) { + dev_info(dev, "Applying Orion-1/Orion-NAS PCIe config read transaction workaround\n"); + + mvebu_pcie_child_ops.read = mvebu_pcie_child_rd_conf_wa; + mvebu_mbus_add_window_by_id(ORION_MBUS_PCIE_WA_TARGET, + ORION_MBUS_PCIE_WA_ATTR, + ORION5X_PCIE_WA_PHYS_BASE, + ORION5X_PCIE_WA_SIZE); + } + return pci_host_probe(bridge); } @@ -1733,6 +1791,7 @@ static const struct of_device_id mvebu_pcie_of_match_table[] = { { .compatible = "marvell,armada-370-pcie", }, { .compatible = "marvell,dove-pcie", }, { .compatible = "marvell,kirkwood-pcie", }, + { .compatible = "marvell,orion5x-pcie", }, {}, }; From patchwork Mon Sep 5 19:23:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 12966466 X-Patchwork-Delegate: robh@kernel.org 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 2E5F0ECAAD3 for ; Mon, 5 Sep 2022 19:25:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230047AbiIETZR (ORCPT ); Mon, 5 Sep 2022 15:25:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229738AbiIETZR (ORCPT ); Mon, 5 Sep 2022 15:25:17 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 981F11D300; Mon, 5 Sep 2022 12:25:15 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 36C9861464; Mon, 5 Sep 2022 19:25:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 72B9FC4347C; Mon, 5 Sep 2022 19:25:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1662405914; bh=falzg4hl4/KX290uSBifmOXJSnweYuOhtmxMd5uXnF0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VJ6TFJjGpyTfdZvcTp12RgL9G1yzer1PD1IZ5Gn38LBgZps/0giuJ84MPEt84qtrL JOpSvLLKOhsrCp7oJ1ocUIaraBEhOpX/A7K9DdFo6Onif/lZuKEt6JO6Xms2YnlHK/ tIeYL4Eotsl7RWTxPhmwXA/a6nWLAJayyCiveNO03jFT8GyjeZ9cGgOgXf1vnQ+Kqg F8sdcEg9IPcIjiQxsVAYRxIMg7yANuzQqt80hLX86IPYZJksLVi+LGvjF6u6xOrQn/ vJN0fSQlqsdA0hLvALLDN7lXlcYVV6M3Bq5QH/65+ft+QjyZqqVSRqgKFlYJtvGKJ1 uf7ttbzqnGXmg== Received: by pali.im (Postfix) id 0D0A42B22; Mon, 5 Sep 2022 21:25:14 +0200 (CEST) From: =?utf-8?q?Pali_Roh=C3=A1r?= To: Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , Krzysztof Kozlowski , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Russell King , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Thomas Petazzoni , Mauri Sandberg Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 3/7] dt-bindings: PCI: mvebu: Add orion5x compatible Date: Mon, 5 Sep 2022 21:23:06 +0200 Message-Id: <20220905192310.22786-4-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220905192310.22786-1-pali@kernel.org> References: <20220718202843.6766-1-maukka@ext.kapsi.fi> <20220905192310.22786-1-pali@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org From: Mauri Sandberg Add a compatible string to bindings to indicate that orion5x PCIe is supported too. Orion requires additional bindings for config space registers. Signed-off-by: Mauri Sandberg Signed-off-by: Pali Rohár Acked-by: Rob Herring --- Changes in v3: * Add more detailed information about MMIO registers --- Documentation/devicetree/bindings/pci/mvebu-pci.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/pci/mvebu-pci.txt b/Documentation/devicetree/bindings/pci/mvebu-pci.txt index 8f0bca42113f..d8d6afc6376a 100644 --- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt +++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt @@ -7,6 +7,7 @@ Mandatory properties: marvell,armada-xp-pcie marvell,dove-pcie marvell,kirkwood-pcie + marvell,orion5x-pcie - #address-cells, set to <3> - #size-cells, set to <2> - #interrupt-cells, set to <1> @@ -60,7 +61,8 @@ PCIe interface, having the following mandatory properties: - reg: used only for interrupt mapping, so only the first four bytes are used to refer to the correct bus number and device number. - assigned-addresses: reference to the MMIO registers used to control - this PCIe interface. + this PCIe interface. first value controls internal registers and + second value (Orion-specific) controls config space registers. - clocks: the clock associated to this PCIe interface - marvell,pcie-port: the physical PCIe port number - status: either "disabled" or "okay"