* [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).