111c122751
- Add qemu-riscv64spl Patch queue updated from git://github.com/openSUSE/u-boot.git tumbleweed-2021.01 * Patches added: 0031-efi_loader-Avoid-emitting-efi_var_b.patch - Drop pcm051rev3 for Phytec Wega board - Fix binary extension for sunxi based boards - Add Pinephone - Fix documentation location Update to v2021.01. Patch queue updated from git://github.com/openSUSE/u-boot.git tumbleweed-2021.01 * Patches dropped: 0028-usb-xhci-xhci_bulk_tx-Don-t-BUG-whe.patch 0029-Revert-Fix-data-abort-caused-by-mis.patch 0030-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch 0031-pci-brcmstb-Cleanup-controller-stat.patch * Patches added: 0028-usb-xhci-pci-Add-DM_FLAG_OS_PREPARE.patch 0029-pci-brcmstb-Cleanup-controller-stat.patch 0030-fs-btrfs-Select-SHA256-in-Kconfig.patch OBS-URL: https://build.opensuse.org/request/show/872955 OBS-URL: https://build.opensuse.org/package/show/hardware:boot/u-boot?expand=0&rev=127
55 lines
2.2 KiB
Diff
55 lines
2.2 KiB
Diff
From ce6a449a4b8721a295915187e5fa9fab0b686b3b Mon Sep 17 00:00:00 2001
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Date: Tue, 12 Jan 2021 13:55:21 +0100
|
|
Subject: [PATCH] pci: pcie-brcmstb: Fix inbound window configurations
|
|
|
|
So far we've assumed a fixed configuration for inbound windows as we had
|
|
a single user for this controller. But the controller's DMA constraints
|
|
were improved starting with BCM2711's B1 revision of the SoC, notably
|
|
available in CM4 and Pi400. They allow for wider inbound windows. We can
|
|
now cover the whole address space, whereas before we where limited to
|
|
the lower 3GB.
|
|
|
|
This information is passed to us through DT's 'dma-ranges' property and
|
|
it's specially important for us to honor it since some interactions with
|
|
the board's co-processor assume we're doing so (specifically the XHCI
|
|
firmware load operation, which is handled by the co-processor after
|
|
u-boot has correctly configured the PCIe controller).
|
|
|
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
|
---
|
|
drivers/pci/pcie_brcmstb.c | 12 +++++-------
|
|
1 file changed, 5 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/drivers/pci/pcie_brcmstb.c b/drivers/pci/pcie_brcmstb.c
|
|
index dade79e9c8..f6e8ad0d0a 100644
|
|
--- a/drivers/pci/pcie_brcmstb.c
|
|
+++ b/drivers/pci/pcie_brcmstb.c
|
|
@@ -432,6 +432,7 @@ static int brcm_pcie_probe(struct udevice *dev)
|
|
struct pci_controller *hose = dev_get_uclass_priv(ctlr);
|
|
struct brcm_pcie *pcie = dev_get_priv(dev);
|
|
void __iomem *base = pcie->base;
|
|
+ struct pci_region region;
|
|
bool ssc_good = false;
|
|
int num_out_wins = 0;
|
|
u64 rc_bar2_offset, rc_bar2_size;
|
|
@@ -468,13 +469,10 @@ static int brcm_pcie_probe(struct udevice *dev)
|
|
MISC_CTRL_SCB_ACCESS_EN_MASK |
|
|
MISC_CTRL_CFG_READ_UR_MODE_MASK |
|
|
MISC_CTRL_MAX_BURST_SIZE_128);
|
|
- /*
|
|
- * TODO: When support for other SoCs than BCM2711 is added we may
|
|
- * need to use the base address and size(s) provided in the dma-ranges
|
|
- * property.
|
|
- */
|
|
- rc_bar2_offset = 0;
|
|
- rc_bar2_size = 0xc0000000;
|
|
+
|
|
+ pci_get_dma_regions(dev, ®ion, 0);
|
|
+ rc_bar2_offset = region.bus_start - region.phys_start;
|
|
+ rc_bar2_size = 1ULL << fls64(region.size - 1);
|
|
|
|
tmp = lower_32_bits(rc_bar2_offset);
|
|
u32p_replace_bits(&tmp, brcm_pcie_encode_ibar_size(rc_bar2_size),
|