]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
drivers: pci: pcie_dw_common: add upper-limit to iATU
authorBen Dooks <ben.dooks@sifive.com>
Thu, 20 Oct 2022 15:51:09 +0000 (16:51 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 12 Dec 2022 19:03:11 +0000 (14:03 -0500)
The 4.6 spec added an upper 32bits to the ATU limit, and since this
driver is already assuming the unrolled feature added in the 4.8
specification this really should be set.

This is causing a bug with testing against the QEMU model as it
defaults the viewports to fully open and not setting this causes
the config viewport to become most of memory (obviously stopping
the emulated system working correctly)

Signed-off-by: Ben Dooks <ben.dooks@sifive.com>
drivers/pci/pcie_dw_common.c
drivers/pci/pcie_dw_common.h

index e66fb1490a5abdd4e20eb5bb360aac9e5351213f..9f8b016d11499098292d63f626a14afdddc4e9cb 100644 (file)
@@ -73,6 +73,8 @@ int pcie_dw_prog_outbound_atu_unroll(struct pcie_dw *pci, int index,
                                 upper_32_bits(cpu_addr));
        dw_pcie_writel_ob_unroll(pci, index, PCIE_ATU_UNR_LIMIT,
                                 lower_32_bits(cpu_addr + size - 1));
+       dw_pcie_writel_ob_unroll(pci, index, PCIE_ATU_UNR_UPPER_LIMIT,
+                                upper_32_bits(cpu_addr + size - 1));
        dw_pcie_writel_ob_unroll(pci, index, PCIE_ATU_UNR_LOWER_TARGET,
                                 lower_32_bits(pci_addr));
        dw_pcie_writel_ob_unroll(pci, index, PCIE_ATU_UNR_UPPER_TARGET,
index 6b701645af65451031ce6f1fae9251fd27dfd949..e0f7796f2a873f91ef74bc6ce84966a4215c22f0 100644 (file)
@@ -32,6 +32,7 @@
 #define PCIE_ATU_UNR_LIMIT             0x10
 #define PCIE_ATU_UNR_LOWER_TARGET      0x14
 #define PCIE_ATU_UNR_UPPER_TARGET      0x18
+#define PCIE_ATU_UNR_UPPER_LIMIT       0x20
 
 #define PCIE_ATU_REGION_INDEX1         (0x1 << 0)
 #define PCIE_ATU_REGION_INDEX0         (0x0 << 0)