[PATCH] ARM: bcm283x: change the virtual address of the XHCI PCI device base

Stefan Agner stefan at agner.ch
Fri Sep 3 16:23:00 CEST 2021


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.szyprowski at 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 <stefan at 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>


More information about the U-Boot mailing list