* Backport USB PCIe/XHCI patches to U-Boot 2020.07 Backport relevant patches required to make PCIe/USB XHCI work. * Backport/integrate PCIe device tree changes from upstream Linux U-Boot uses the device tree provided by upstream Linux. Make sure the device tree has the relevant chanages to make VL805 USB controller reset work. * Document RPi 4 USB mass storage support (#746)
86 lines
2.9 KiB
Diff
86 lines
2.9 KiB
Diff
From a8c492ef2a3a73d435765ce28944efebce5cfa17 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <a8c492ef2a3a73d435765ce28944efebce5cfa17.1595101389.git.stefan@agner.ch>
|
|
In-Reply-To: <040a141f84f2f84bf8be18f85b4cdb34bf066df0.1595101389.git.stefan@agner.ch>
|
|
References: <040a141f84f2f84bf8be18f85b4cdb34bf066df0.1595101389.git.stefan@agner.ch>
|
|
From: Marek Szyprowski <m.szyprowski@samsung.com>
|
|
Date: Wed, 3 Jun 2020 14:43:44 +0200
|
|
Subject: [PATCH 19/20] rpi4: add a mapping for the PCIe XHCI controller MMIO
|
|
registers (ARM 32bit)
|
|
|
|
Create a non-cacheable mapping for the 0x600000000 physical memory region,
|
|
where MMIO registers for the PCIe XHCI controller are instantiated by the
|
|
PCIe bridge. Due to 32bit limit in the CPU virtual address space in ARM
|
|
32bit mode, this region is mapped at 0xff800000 CPU virtual address.
|
|
|
|
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
|
|
---
|
|
arch/arm/mach-bcm283x/Kconfig | 1 +
|
|
arch/arm/mach-bcm283x/include/mach/base.h | 8 ++++++++
|
|
arch/arm/mach-bcm283x/init.c | 21 +++++++++++++++++++++
|
|
3 files changed, 30 insertions(+)
|
|
|
|
diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
|
|
index e6eb904e7f..b3287ce8bc 100644
|
|
--- a/arch/arm/mach-bcm283x/Kconfig
|
|
+++ b/arch/arm/mach-bcm283x/Kconfig
|
|
@@ -36,6 +36,7 @@ config BCM2711_32B
|
|
select BCM2711
|
|
select ARMV7_LPAE
|
|
select CPU_V7A
|
|
+ select PHYS_64BIT
|
|
|
|
config BCM2711_64B
|
|
bool "Broadcom BCM2711 SoC 64-bit support"
|
|
diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h
|
|
index c4ae39852f..4ccaf69693 100644
|
|
--- a/arch/arm/mach-bcm283x/include/mach/base.h
|
|
+++ b/arch/arm/mach-bcm283x/include/mach/base.h
|
|
@@ -8,4 +8,12 @@
|
|
|
|
extern unsigned long rpi_bcm283x_base;
|
|
|
|
+#ifdef CONFIG_ARMV7_LPAE
|
|
+#ifdef CONFIG_TARGET_RPI_4_32B
|
|
+#include <addr_map.h>
|
|
+#define phys_to_virt addrmap_phys_to_virt
|
|
+#define virt_to_phys addrmap_virt_to_phys
|
|
+#endif
|
|
+#endif
|
|
+
|
|
#endif
|
|
diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c
|
|
index cf4c5b245d..f2a5411623 100644
|
|
--- a/arch/arm/mach-bcm283x/init.c
|
|
+++ b/arch/arm/mach-bcm283x/init.c
|
|
@@ -146,6 +146,27 @@ int mach_cpu_init(void)
|
|
}
|
|
|
|
#ifdef CONFIG_ARMV7_LPAE
|
|
+#ifdef CONFIG_TARGET_RPI_4_32B
|
|
+#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL
|
|
+#include <addr_map.h>
|
|
+#include <asm/system.h>
|
|
+
|
|
+void init_addr_map(void)
|
|
+{
|
|
+ mmu_set_region_dcache_behaviour_phys(BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT,
|
|
+ BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS,
|
|
+ BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE,
|
|
+ DCACHE_OFF);
|
|
+
|
|
+ /* identity mapping for 0..BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT */
|
|
+ addrmap_set_entry(0, 0, BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT, 0);
|
|
+ /* XHCI MMIO on PCIe at BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT */
|
|
+ addrmap_set_entry(BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT,
|
|
+ BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS,
|
|
+ BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE, 1);
|
|
+}
|
|
+#endif
|
|
+
|
|
void enable_caches(void)
|
|
{
|
|
dcache_enable();
|
|
--
|
|
2.27.0
|
|
|