On 2021-06-17 11:22, Marek Szyprowski wrote: > Move the XHCI PCI device base up in the virtual address space. This fixes > initialization failure observed with newer Raspberry Pi firmware, later > than 63b1922311 ("firmware: arm_loader: Update armstubs with those from > PR 117). It looks that chosing 0xff800000 as the XHCI PCI device base > conflicts with the updated ARM/VideoCore firmware. > > This also requires to reduce the size of the mapped PCI device region > from 8MiB to 4MiB to fit into 32bit address space. This is still enough > for the XHCI PCI device. > > Signed-off-by: Marek Szyprowski <m.szyprow...@samsung.com> > --- > This fixes the issue observed on ARM 32bit after upgrading the RPi4 > firmware files, described some time ago here: > https://lists.denx.de/pipermail/u-boot/2021-February/442317.html
This also fixes an issue we are seeing in Home Assistant: https://github.com/home-assistant/operating-system/issues/1490 It does seem that it depends on the binary size (since USB enumeration worked with 2021.04 at one point, but after enabling more configurations it caused issues). So: Tested-by: Stefan Agner <ste...@agner.ch> I've seen that this did not make it into master yet, which tree is this expected to get merged through? -- Stefan > --- > arch/arm/mach-bcm283x/init.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c > index 49027ce0a2..9803499985 100644 > --- a/arch/arm/mach-bcm283x/init.c > +++ b/arch/arm/mach-bcm283x/init.c > @@ -14,7 +14,7 @@ > #include <asm/global_data.h> > > #define BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS 0x600000000UL > -#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x800000UL > +#define BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE 0x400000UL > > #ifdef CONFIG_ARM64 > #include <asm/armv8/mmu.h> > @@ -148,7 +148,7 @@ int mach_cpu_init(void) > > #ifdef CONFIG_ARMV7_LPAE > #ifdef CONFIG_TARGET_RPI_4_32B > -#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL > +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xffc00000UL > #include <addr_map.h> > #include <asm/system.h>