linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs
@ 2021-12-09 20:47 Jim Quinlan
  2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Jim Quinlan @ 2021-12-09 20:47 UTC (permalink / raw)
  To: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, jim2101024,
	james.quinlan
  Cc: open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Krzysztof Wilczyński,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	Rob Herring, Saenz Julienne

With this patchset, the Broadcom STB PCIe controller driver 
supports Arm, Arm64, and now MIPs.

Jim Quinlan (4):
  dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
  MIPS: bmips: Add support PCIe controller device nodes
  MIPS: bmips: Remove obsolete DMA mapping support
  PCI: brcmstb: Augment driver for MIPs SOCs

 .../bindings/pci/brcm,stb-pcie.yaml           |   2 +
 arch/mips/Kconfig                             |   1 -
 arch/mips/bmips/dma.c                         | 106 +-----------------
 arch/mips/boot/dts/brcm/bcm7425.dtsi          |  30 +++++
 arch/mips/boot/dts/brcm/bcm7435.dtsi          |  30 +++++
 arch/mips/boot/dts/brcm/bcm97425svmb.dts      |   9 ++
 arch/mips/boot/dts/brcm/bcm97435svmb.dts      |   9 ++
 drivers/pci/controller/Kconfig                |   2 +-
 drivers/pci/controller/pcie-brcmstb.c         |  82 +++++++++++++-
 9 files changed, 161 insertions(+), 110 deletions(-)


base-commit: ded746bfc94398d2ee9de315a187677b207b2004
prerequisite-patch-id: d47ce1906f7e175cc394be96f85a6eade86a9097
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
  2021-12-09 20:47 [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs Jim Quinlan
@ 2021-12-09 20:47 ` Jim Quinlan
  2021-12-09 21:29   ` Florian Fainelli
  2021-12-15 19:50   ` Rob Herring
  2021-12-09 20:47 ` [PATCH v1 4/4] PCI: brcmstb: Augment driver for " Jim Quinlan
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 11+ messages in thread
From: Jim Quinlan @ 2021-12-09 20:47 UTC (permalink / raw)
  To: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, jim2101024,
	james.quinlan
  Cc: Florian Fainelli, Rob Herring, Saenz Julienne,
	moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	open list

The Broadcom STB Arm and MIPs SOCs use the same PCIe controller
HW, although the MIPs version is older.

Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
---
 Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
index 1fe102743f82..043412e7735f 100644
--- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@ -19,6 +19,8 @@ properties:
           - brcm,bcm7278-pcie # Broadcom 7278 Arm
           - brcm,bcm7216-pcie # Broadcom 7216 Arm
           - brcm,bcm7445-pcie # Broadcom 7445 Arm
+          - brcm,bcm7425-pcie # Broadcom 7425 MIPs
+          - brcm,bcm7435-pcie # Broadcom 7435 MIPs
 
   reg:
     maxItems: 1
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v1 4/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2021-12-09 20:47 [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs Jim Quinlan
  2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
@ 2021-12-09 20:47 ` Jim Quinlan
  2021-12-09 21:32   ` Florian Fainelli
  2022-07-06 21:42   ` Bjorn Helgaas
  2022-01-05 10:42 ` [PATCH v1 0/4] " Thomas Bogendoerfer
  2022-01-11 15:18 ` Thomas Bogendoerfer
  3 siblings, 2 replies; 11+ messages in thread
From: Jim Quinlan @ 2021-12-09 20:47 UTC (permalink / raw)
  To: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, jim2101024,
	james.quinlan
  Cc: Lorenzo Pieralisi, Rob Herring, Krzysztof Wilczyński,
	Florian Fainelli, open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE

The current brcmstb driver works for Arm and Arm64.  A few things are
modified here for us to support MIPs as well.

  o There are four outbound range register groups and each directs a window
    of up to 128MB.  Even though there are four 128MB DT "ranges" in the
    bmips PCIe DT node, these ranges are contiguous and are collapsed into
    a single range by the OF range parser.  Now the driver assumes a single
    range -- for MIPs only -- and splits it back into 128MB sizes.

  o For bcm7425, the config space accesses must be 32-bit reads or
    writes.  In addition, the 4k config space register array is missing
    and not used.

  o The registers for the upper 32-bits of the outbound window address do
    not exist.

  o Burst size must be set to 256 (this refers to an internal bus).

Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
---
 drivers/pci/controller/Kconfig        |  2 +-
 drivers/pci/controller/pcie-brcmstb.c | 82 +++++++++++++++++++++++++--
 2 files changed, 79 insertions(+), 5 deletions(-)

diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
index 93b141110537..4ac474d4a956 100644
--- a/drivers/pci/controller/Kconfig
+++ b/drivers/pci/controller/Kconfig
@@ -274,7 +274,7 @@ config PCIE_BRCMSTB
 		   BMIPS_GENERIC || COMPILE_TEST
 	depends on OF
 	depends on PCI_MSI_IRQ_DOMAIN
-	default ARCH_BRCMSTB
+	default ARCH_BRCMSTB || BMIPS_GENERIC
 	help
 	  Say Y here to enable PCIe host controller support for
 	  Broadcom STB based SoCs, like the Raspberry Pi 4.
diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
index 1fc7bd49a7ad..a267cd5b3233 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -118,6 +118,7 @@
 #define PCIE_MISC_HARD_PCIE_HARD_DEBUG					0x4204
 #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK	0x2
 #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK		0x08000000
+#define  PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK		0x00800000
 
 
 #define PCIE_INTR2_CPU_BASE		0x4300
@@ -205,6 +206,8 @@ enum {
 
 enum pcie_type {
 	GENERIC,
+	BCM7425,
+	BCM7435,
 	BCM4908,
 	BCM7278,
 	BCM2711,
@@ -223,6 +226,12 @@ static const int pcie_offsets[] = {
 	[EXT_CFG_DATA]   = 0x9004,
 };
 
+static const int pcie_offsets_bmips_7425[] = {
+	[RGR1_SW_INIT_1] = 0x8010,
+	[EXT_CFG_INDEX]  = 0x8300,
+	[EXT_CFG_DATA]   = 0x8304,
+};
+
 static const struct pcie_cfg_data generic_cfg = {
 	.offsets	= pcie_offsets,
 	.type		= GENERIC,
@@ -230,6 +239,20 @@ static const struct pcie_cfg_data generic_cfg = {
 	.bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic,
 };
 
+static const struct pcie_cfg_data bcm7425_cfg = {
+	.offsets	= pcie_offsets_bmips_7425,
+	.type		= BCM7425,
+	.perst_set	= brcm_pcie_perst_set_generic,
+	.bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic,
+};
+
+static const struct pcie_cfg_data bcm7435_cfg = {
+	.offsets	= pcie_offsets,
+	.type		= BCM7435,
+	.perst_set	= brcm_pcie_perst_set_generic,
+	.bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic,
+};
+
 static const struct pcie_cfg_data bcm4908_cfg = {
 	.offsets	= pcie_offsets,
 	.type		= BCM4908,
@@ -297,6 +320,11 @@ struct brcm_pcie {
 	void			(*bridge_sw_init_set)(struct brcm_pcie *pcie, u32 val);
 };
 
+static inline bool is_bmips(const struct brcm_pcie *pcie)
+{
+	return pcie->type == BCM7435 || pcie->type == BCM7425;
+}
+
 /*
  * This is to convert the size of the inbound "BAR" region to the
  * non-linear values of PCIE_X_MISC_RC_BAR[123]_CONFIG_LO.SIZE
@@ -443,6 +471,9 @@ static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie,
 			  PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_LIMIT_MASK);
 	writel(tmp, pcie->base + PCIE_MEM_WIN0_BASE_LIMIT(win));
 
+	if (is_bmips(pcie))
+		return;
+
 	/* Write the cpu & limit addr upper bits */
 	high_addr_shift =
 		HWEIGHT32(PCIE_MISC_CPU_2_PCIE_MEM_WIN0_BASE_LIMIT_BASE_MASK);
@@ -718,12 +749,35 @@ static void __iomem *brcm_pcie_map_conf(struct pci_bus *bus, unsigned int devfn,
 	return base + PCIE_EXT_CFG_DATA + where;
 }
 
+static void __iomem *brcm_pcie_map_conf32(struct pci_bus *bus, unsigned int devfn,
+					 int where)
+{
+	struct brcm_pcie *pcie = bus->sysdata;
+	void __iomem *base = pcie->base;
+	int idx;
+
+	/* Accesses to the RC go right to the RC registers if slot==0 */
+	if (pci_is_root_bus(bus))
+		return PCI_SLOT(devfn) ? NULL : base + (where & ~0x3);
+
+	/* For devices, write to the config space index register */
+	idx = PCIE_ECAM_OFFSET(bus->number, devfn, (where & ~3));
+	writel(idx, base + IDX_ADDR(pcie));
+	return base + DATA_ADDR(pcie);
+}
+
 static struct pci_ops brcm_pcie_ops = {
 	.map_bus = brcm_pcie_map_conf,
 	.read = pci_generic_config_read,
 	.write = pci_generic_config_write,
 };
 
+static struct pci_ops brcm_pcie_ops32 = {
+	.map_bus = brcm_pcie_map_conf32,
+	.read = pci_generic_config_read32,
+	.write = pci_generic_config_write32,
+};
+
 static inline void brcm_pcie_bridge_sw_init_set_generic(struct brcm_pcie *pcie, u32 val)
 {
 	u32 tmp, mask =  RGR1_SW_INIT_1_INIT_GENERIC_MASK;
@@ -883,7 +937,10 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
 	pcie->bridge_sw_init_set(pcie, 0);
 
 	tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
-	tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
+	if (is_bmips(pcie))
+		tmp &= ~PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
+	else
+		tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
 	writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
 	/* Wait for SerDes to be stable */
 	usleep_range(100, 200);
@@ -893,8 +950,10 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
 	 * is encoded as 0=128, 1=256, 2=512, 3=Rsvd, for BCM7278 it
 	 * is encoded as 0=Rsvd, 1=128, 2=256, 3=512.
 	 */
-	if (pcie->type == BCM2711)
-		burst = 0x0; /* 128B */
+	if (is_bmips(pcie))
+		burst = 0x1; /* 256 bytes */
+	else if (pcie->type == BCM2711)
+		burst = 0x0; /* 128 bytes */
 	else if (pcie->type == BCM7278)
 		burst = 0x3; /* 512 bytes */
 	else
@@ -988,6 +1047,19 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
 			return -EINVAL;
 		}
 
+		if (is_bmips(pcie)) {
+			u64 start = res->start;
+			unsigned int j, nwins = resource_size(res) / SZ_128M;
+
+			/* bmips PCIe outbound windows have a 128MB max size */
+			if (nwins > BRCM_NUM_PCIE_OUT_WINS)
+				nwins = BRCM_NUM_PCIE_OUT_WINS;
+			for (j = 0; j < nwins; j++, start += SZ_128M)
+				brcm_pcie_set_outbound_win(pcie, j, start,
+							   start - entry->offset,
+							   SZ_128M);
+			break;
+		}
 		brcm_pcie_set_outbound_win(pcie, num_out_wins, res->start,
 					   res->start - entry->offset,
 					   resource_size(res));
@@ -1226,6 +1298,8 @@ static const struct of_device_id brcm_pcie_match[] = {
 	{ .compatible = "brcm,bcm7278-pcie", .data = &bcm7278_cfg },
 	{ .compatible = "brcm,bcm7216-pcie", .data = &bcm7278_cfg },
 	{ .compatible = "brcm,bcm7445-pcie", .data = &generic_cfg },
+	{ .compatible = "brcm,bcm7435-pcie", .data = &bcm7435_cfg },
+	{ .compatible = "brcm,bcm7425-pcie", .data = &bcm7425_cfg },
 	{},
 };
 
@@ -1315,7 +1389,7 @@ static int brcm_pcie_probe(struct platform_device *pdev)
 		}
 	}
 
-	bridge->ops = &brcm_pcie_ops;
+	bridge->ops = pcie->type == BCM7425 ? &brcm_pcie_ops32 : &brcm_pcie_ops;
 	bridge->sysdata = pcie;
 
 	platform_set_drvdata(pdev, pcie);
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
  2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
@ 2021-12-09 21:29   ` Florian Fainelli
  2021-12-15 19:50   ` Rob Herring
  1 sibling, 0 replies; 11+ messages in thread
From: Florian Fainelli @ 2021-12-09 21:29 UTC (permalink / raw)
  To: Jim Quinlan, linux-pci, linux-mips, Nicolas Saenz Julienne,
	Bjorn Helgaas, Kevin Cernekee, bcm-kernel-feedback-list,
	james.quinlan
  Cc: Florian Fainelli, Rob Herring, Saenz Julienne,
	moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	open list

On 12/9/21 12:47 PM, Jim Quinlan wrote:
> The Broadcom STB Arm and MIPs SOCs use the same PCIe controller
> HW, although the MIPs version is older.
> 
> Signed-off-by: Jim Quinlan <jim2101024@gmail.com>

Acked-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 4/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2021-12-09 20:47 ` [PATCH v1 4/4] PCI: brcmstb: Augment driver for " Jim Quinlan
@ 2021-12-09 21:32   ` Florian Fainelli
  2022-07-06 21:42   ` Bjorn Helgaas
  1 sibling, 0 replies; 11+ messages in thread
From: Florian Fainelli @ 2021-12-09 21:32 UTC (permalink / raw)
  To: Jim Quinlan, linux-pci, linux-mips, Nicolas Saenz Julienne,
	Bjorn Helgaas, Kevin Cernekee, bcm-kernel-feedback-list,
	james.quinlan
  Cc: Lorenzo Pieralisi, Rob Herring, Krzysztof Wilczyński,
	Florian Fainelli, open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE

On 12/9/21 12:47 PM, Jim Quinlan wrote:
> The current brcmstb driver works for Arm and Arm64.  A few things are
> modified here for us to support MIPs as well.
> 
>   o There are four outbound range register groups and each directs a window
>     of up to 128MB.  Even though there are four 128MB DT "ranges" in the
>     bmips PCIe DT node, these ranges are contiguous and are collapsed into
>     a single range by the OF range parser.  Now the driver assumes a single
>     range -- for MIPs only -- and splits it back into 128MB sizes.
> 
>   o For bcm7425, the config space accesses must be 32-bit reads or
>     writes.  In addition, the 4k config space register array is missing
>     and not used.
> 
>   o The registers for the upper 32-bits of the outbound window address do
>     not exist.
> 
>   o Burst size must be set to 256 (this refers to an internal bus).
> 
> Signed-off-by: Jim Quinlan <jim2101024@gmail.com>

Acked-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
  2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
  2021-12-09 21:29   ` Florian Fainelli
@ 2021-12-15 19:50   ` Rob Herring
  1 sibling, 0 replies; 11+ messages in thread
From: Rob Herring @ 2021-12-15 19:50 UTC (permalink / raw)
  To: Jim Quinlan
  Cc: bcm-kernel-feedback-list, Florian Fainelli, devicetree,
	Kevin Cernekee, linux-mips, Saenz Julienne,
	Nicolas Saenz Julienne, Bjorn Helgaas, linux-arm-kernel,
	Rob Herring, james.quinlan, linux-rpi-kernel, linux-kernel,
	linux-pci

On Thu, 09 Dec 2021 15:47:22 -0500, Jim Quinlan wrote:
> The Broadcom STB Arm and MIPs SOCs use the same PCIe controller
> HW, although the MIPs version is older.
> 
> Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
> ---
>  Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 2 ++
>  1 file changed, 2 insertions(+)
> 

Acked-by: Rob Herring <robh@kernel.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2021-12-09 20:47 [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs Jim Quinlan
  2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
  2021-12-09 20:47 ` [PATCH v1 4/4] PCI: brcmstb: Augment driver for " Jim Quinlan
@ 2022-01-05 10:42 ` Thomas Bogendoerfer
  2022-01-07 22:36   ` Jim Quinlan
  2022-01-11 15:18 ` Thomas Bogendoerfer
  3 siblings, 1 reply; 11+ messages in thread
From: Thomas Bogendoerfer @ 2022-01-05 10:42 UTC (permalink / raw)
  To: Jim Quinlan
  Cc: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, james.quinlan,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Krzysztof Wilczyński,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	Rob Herring, Saenz Julienne

On Thu, Dec 09, 2021 at 03:47:21PM -0500, Jim Quinlan wrote:
> With this patchset, the Broadcom STB PCIe controller driver 
> supports Arm, Arm64, and now MIPs.
> 
> Jim Quinlan (4):
>   dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
>   MIPS: bmips: Add support PCIe controller device nodes
>   MIPS: bmips: Remove obsolete DMA mapping support
>   PCI: brcmstb: Augment driver for MIPs SOCs
> 
>  .../bindings/pci/brcm,stb-pcie.yaml           |   2 +
>  arch/mips/Kconfig                             |   1 -
>  arch/mips/bmips/dma.c                         | 106 +-----------------
>  arch/mips/boot/dts/brcm/bcm7425.dtsi          |  30 +++++
>  arch/mips/boot/dts/brcm/bcm7435.dtsi          |  30 +++++
>  arch/mips/boot/dts/brcm/bcm97425svmb.dts      |   9 ++
>  arch/mips/boot/dts/brcm/bcm97435svmb.dts      |   9 ++
>  drivers/pci/controller/Kconfig                |   2 +-
>  drivers/pci/controller/pcie-brcmstb.c         |  82 +++++++++++++-
>  9 files changed, 161 insertions(+), 110 deletions(-)

if nobody objects I'd like to add this series to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2022-01-05 10:42 ` [PATCH v1 0/4] " Thomas Bogendoerfer
@ 2022-01-07 22:36   ` Jim Quinlan
  0 siblings, 0 replies; 11+ messages in thread
From: Jim Quinlan @ 2022-01-07 22:36 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Jim Quinlan,
	open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS, linux-mips,
	Nicolas Saenz Julienne, Bjorn Helgaas, Kevin Cernekee,
	maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Krzysztof Wilczyński,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	Rob Herring, Saenz Julienne

On Wed, Jan 5, 2022 at 5:42 AM Thomas Bogendoerfer
<tsbogend@alpha.franken.de> wrote:
>
> On Thu, Dec 09, 2021 at 03:47:21PM -0500, Jim Quinlan wrote:
> > With this patchset, the Broadcom STB PCIe controller driver
> > supports Arm, Arm64, and now MIPs.
> >
> > Jim Quinlan (4):
> >   dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
> >   MIPS: bmips: Add support PCIe controller device nodes
> >   MIPS: bmips: Remove obsolete DMA mapping support
> >   PCI: brcmstb: Augment driver for MIPs SOCs
> >
> >  .../bindings/pci/brcm,stb-pcie.yaml           |   2 +
> >  arch/mips/Kconfig                             |   1 -
> >  arch/mips/bmips/dma.c                         | 106 +-----------------
> >  arch/mips/boot/dts/brcm/bcm7425.dtsi          |  30 +++++
> >  arch/mips/boot/dts/brcm/bcm7435.dtsi          |  30 +++++
> >  arch/mips/boot/dts/brcm/bcm97425svmb.dts      |   9 ++
> >  arch/mips/boot/dts/brcm/bcm97435svmb.dts      |   9 ++
> >  drivers/pci/controller/Kconfig                |   2 +-
> >  drivers/pci/controller/pcie-brcmstb.c         |  82 +++++++++++++-
> >  9 files changed, 161 insertions(+), 110 deletions(-)
>
> if nobody objects I'd like to add this series to mips-next.
Hi Thomas,

I have another pullreq in progress [1] that may possibly be accepted
soon.  I have tested that
these two pullreqs do not conflict or cause compiler errors regardless
of their merge order.

Regards,
Jim Quinlan
Broadcom STB

[1] [PATCH v10 0/7] PCI: brcmstb: root port turns on sub-device power


[PATCH v10 0/7] PCI: brcmstb: root port turns on sub-device power

>
> Thomas.
>
> --
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea.                                                [ RFC1925, 2.3 ]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2021-12-09 20:47 [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs Jim Quinlan
                   ` (2 preceding siblings ...)
  2022-01-05 10:42 ` [PATCH v1 0/4] " Thomas Bogendoerfer
@ 2022-01-11 15:18 ` Thomas Bogendoerfer
  3 siblings, 0 replies; 11+ messages in thread
From: Thomas Bogendoerfer @ 2022-01-11 15:18 UTC (permalink / raw)
  To: Jim Quinlan
  Cc: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, james.quinlan,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Krzysztof Wilczyński,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	Rob Herring, Saenz Julienne

On Thu, Dec 09, 2021 at 03:47:21PM -0500, Jim Quinlan wrote:
> With this patchset, the Broadcom STB PCIe controller driver 
> supports Arm, Arm64, and now MIPs.
> 
> Jim Quinlan (4):
>   dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 MIPs SOCs
>   MIPS: bmips: Add support PCIe controller device nodes
>   MIPS: bmips: Remove obsolete DMA mapping support
>   PCI: brcmstb: Augment driver for MIPs SOCs
> 
>  .../bindings/pci/brcm,stb-pcie.yaml           |   2 +
>  arch/mips/Kconfig                             |   1 -
>  arch/mips/bmips/dma.c                         | 106 +-----------------
>  arch/mips/boot/dts/brcm/bcm7425.dtsi          |  30 +++++
>  arch/mips/boot/dts/brcm/bcm7435.dtsi          |  30 +++++
>  arch/mips/boot/dts/brcm/bcm97425svmb.dts      |   9 ++
>  arch/mips/boot/dts/brcm/bcm97435svmb.dts      |   9 ++
>  drivers/pci/controller/Kconfig                |   2 +-
>  drivers/pci/controller/pcie-brcmstb.c         |  82 +++++++++++++-
>  9 files changed, 161 insertions(+), 110 deletions(-)

series applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 4/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2021-12-09 20:47 ` [PATCH v1 4/4] PCI: brcmstb: Augment driver for " Jim Quinlan
  2021-12-09 21:32   ` Florian Fainelli
@ 2022-07-06 21:42   ` Bjorn Helgaas
  2022-07-08 13:37     ` Jim Quinlan
  1 sibling, 1 reply; 11+ messages in thread
From: Bjorn Helgaas @ 2022-07-06 21:42 UTC (permalink / raw)
  To: Jim Quinlan
  Cc: linux-pci, linux-mips, Nicolas Saenz Julienne, Bjorn Helgaas,
	Kevin Cernekee, bcm-kernel-feedback-list, james.quinlan,
	Lorenzo Pieralisi, Rob Herring, Krzysztof Wilczyński,
	Florian Fainelli, open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE

On Thu, Dec 09, 2021 at 03:47:25PM -0500, Jim Quinlan wrote:
> The current brcmstb driver works for Arm and Arm64.  A few things are
> modified here for us to support MIPs as well.
> 
>   o There are four outbound range register groups and each directs a window
>     of up to 128MB.  Even though there are four 128MB DT "ranges" in the
>     bmips PCIe DT node, these ranges are contiguous and are collapsed into
>     a single range by the OF range parser.  Now the driver assumes a single
>     range -- for MIPs only -- and splits it back into 128MB sizes.
> 
>   o For bcm7425, the config space accesses must be 32-bit reads or
>     writes.  In addition, the 4k config space register array is missing
>     and not used.
> 
>   o The registers for the upper 32-bits of the outbound window address do
>     not exist.
> 
>   o Burst size must be set to 256 (this refers to an internal bus).
> ...

> @@ -118,6 +118,7 @@
>  #define PCIE_MISC_HARD_PCIE_HARD_DEBUG					0x4204
>  #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK	0x2
>  #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK		0x08000000
> +#define  PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK		0x00800000

> @@ -883,7 +937,10 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
>  	pcie->bridge_sw_init_set(pcie, 0);
>  
>  	tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
> -	tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
> +	if (is_bmips(pcie))
> +		tmp &= ~PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
> +	else
> +		tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
>  	writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
>  	/* Wait for SerDes to be stable */
>  	usleep_range(100, 200);

brcm_pcie_resume() has similar code that updates
PCIE_MISC_HARD_PCIE_HARD_DEBUG [1]:

  tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
  u32p_replace_bits(&tmp, 0, PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK);
  writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);

  /* wait for serdes to be stable */
  udelay(100);

This patch didn't change brcm_pcie_resume() to check is_bmips().
Should it?

If so, it would be nice to use the same method for updating the value
(either u32p_replace_bits or plain C bitops) in both places.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/pcie-brcmstb.c?id=v5.18#n1452

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v1 4/4] PCI: brcmstb: Augment driver for MIPs SOCs
  2022-07-06 21:42   ` Bjorn Helgaas
@ 2022-07-08 13:37     ` Jim Quinlan
  0 siblings, 0 replies; 11+ messages in thread
From: Jim Quinlan @ 2022-07-08 13:37 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Jim Quinlan,
	open list:PCI NATIVE HOST BRIDGE AND ENDPOINT DRIVERS, linux-mips,
	Nicolas Saenz Julienne, Bjorn Helgaas, Kevin Cernekee,
	maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE, Lorenzo Pieralisi,
	Rob Herring, Krzysztof Wilczyński, Florian Fainelli,
	open list,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE,
	moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE


[-- Attachment #1.1: Type: text/plain, Size: 2743 bytes --]

On Wed, Jul 6, 2022 at 5:42 PM Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> On Thu, Dec 09, 2021 at 03:47:25PM -0500, Jim Quinlan wrote:
> > The current brcmstb driver works for Arm and Arm64.  A few things are
> > modified here for us to support MIPs as well.
> >
> >   o There are four outbound range register groups and each directs a window
> >     of up to 128MB.  Even though there are four 128MB DT "ranges" in the
> >     bmips PCIe DT node, these ranges are contiguous and are collapsed into
> >     a single range by the OF range parser.  Now the driver assumes a single
> >     range -- for MIPs only -- and splits it back into 128MB sizes.
> >
> >   o For bcm7425, the config space accesses must be 32-bit reads or
> >     writes.  In addition, the 4k config space register array is missing
> >     and not used.
> >
> >   o The registers for the upper 32-bits of the outbound window address do
> >     not exist.
> >
> >   o Burst size must be set to 256 (this refers to an internal bus).
> > ...
>
> > @@ -118,6 +118,7 @@
> >  #define PCIE_MISC_HARD_PCIE_HARD_DEBUG                                       0x4204
> >  #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_CLKREQ_DEBUG_ENABLE_MASK     0x2
> >  #define  PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK             0x08000000
> > +#define  PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK               0x00800000
>
> > @@ -883,7 +937,10 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
> >       pcie->bridge_sw_init_set(pcie, 0);
> >
> >       tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
> > -     tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
> > +     if (is_bmips(pcie))
> > +             tmp &= ~PCIE_BMIPS_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
> > +     else
> > +             tmp &= ~PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK;
> >       writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
> >       /* Wait for SerDes to be stable */
> >       usleep_range(100, 200);
>
> brcm_pcie_resume() has similar code that updates
> PCIE_MISC_HARD_PCIE_HARD_DEBUG [1]:
>
>   tmp = readl(base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
>   u32p_replace_bits(&tmp, 0, PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK);
>   writel(tmp, base + PCIE_MISC_HARD_PCIE_HARD_DEBUG);
>
>   /* wait for serdes to be stable */
>   udelay(100);
>
> This patch didn't change brcm_pcie_resume() to check is_bmips().
> Should it?
>
> If so, it would be nice to use the same method for updating the value
> (either u32p_replace_bits or plain C bitops) in both places.

Will send a patch to fix this, thanks.

Jim Quinlan
Broadcom STB

>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/pci/controller/pcie-brcmstb.c?id=v5.18#n1452

[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4210 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-07-08 13:38 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-12-09 20:47 [PATCH v1 0/4] PCI: brcmstb: Augment driver for MIPs SOCs Jim Quinlan
2021-12-09 20:47 ` [PATCH v1 1/4] dt-bindings: PCI: Add compatible string for Brcmstb 74[23]5 " Jim Quinlan
2021-12-09 21:29   ` Florian Fainelli
2021-12-15 19:50   ` Rob Herring
2021-12-09 20:47 ` [PATCH v1 4/4] PCI: brcmstb: Augment driver for " Jim Quinlan
2021-12-09 21:32   ` Florian Fainelli
2022-07-06 21:42   ` Bjorn Helgaas
2022-07-08 13:37     ` Jim Quinlan
2022-01-05 10:42 ` [PATCH v1 0/4] " Thomas Bogendoerfer
2022-01-07 22:36   ` Jim Quinlan
2022-01-11 15:18 ` Thomas Bogendoerfer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).