[PATCH v5 00/13] Raspberry Pi 400/Compute Module 4 support

Peter Robinson pbrobinson at gmail.com
Tue Dec 29 11:58:11 CET 2020


Hi Nicolas,

With the xhci patch snippet the pci/xhci crash I was seeing is now gone.

I am seeing an error which I need to test a bit more around mmc
voltage select which I didn't see previously:

Card did not respond to voltage select! : -110

I'm going to do some wider testing.

Overall this looks good
Series Tested-by: Peter Robinson <pbrobinson at gmail.com>

> This series could be split into at least two or even three parts, but I
> kept it as is for now as it contains all the changes needed in order to
> have u-boot working on the new Raspberry Pi 400 and Raspberry Pi Compute
> Module 4.
>
> There are core changes, specifically with regard to cpu to bus address
> space translations. So far we had relied on hard-coded values but RPi
> needs per device translations as it has at least three distinct bus
> address spaces with different offsets. So it's a good opportunity to
> implement bus translations the right way by parsing DT's dma-ranges.
>
> Here's a more concrete example of what we're dealing with:
>
>  - On a RPi4, SoC version BCM2711C0 with 8GB of memory
>
>         [0x0 0x200000000]   [0x200000000 0x400000000]  [0xc0000000 0x100000000]  [0x00000000 0x100000000]
>          phys/cpu address       PCIe bus address           Legacy peripheral           emmc2 address
>              space                   space                   address space                space
>
>  - On a RPi4, SoC version BCM2711C0 with 4GB of memory
>
>         [0x0 0x100000000]   [0x100000000 0x200000000]  [0xc0000000 0x100000000]  [0x00000000 0x100000000]
>           phys/cpu address      PCIe bus address          Legacy peripheral            emmc2 address
>             space                  space                    address space                space
>
> - On a RPi4, SoC version BCM2711B0 with 8GB of memory (bus can only access the
>   lower 3GB of memory because of a SoC routing bug)
>
>         [0x0 0x200000000]   [0x00000000 0xC0000000]   [0xc0000000 0x100000000]
>          phys/cpu address      PCIe bus address          Legacy peripheral
>             space                  space                   address space
>
> ---
>
> Changes since v4:
>  - Get rid of #ifs all over the place
>
> Changes since v3:
>  - Add commit "video: arm: rpi: Add brcm,bcm2711-hdmi0 compatible", it's
>    pretty harmless
>  - Get rid of non-device based phys2bus call in xhci & mmc
>  - Simon's review changes in tests
>  - Comment some of the APIs
>
> Changes since v2:
>  - Test builds not broken with buildman
>  - Add tests to all DM changes
>  - Make code conditional with config option
>  - Correct OF refcount
>  - Add config changes
>  - Address small changes as per reviews
>
> Changes since v1:
>  - Fix some issues in 'dm: Introduce xxx_get_dma_range()'
>  - Fix some typos in commit messages
>  - Change DTB file name for RPi400
>  - Address Matthias' comments
>
> Nicolas Saenz Julienne (13):
>   rpi: Add identifier for the new RPi400
>   rpi: Add identifier for the new CM4
>   pci: pcie-brcmstb: Fix inbound window configurations
>   dm: Introduce xxx_get_dma_range()
>   dm: test: Add test case for dev_get_dma_ranges()
>   dm: Introduce DMA constraints into the core device model
>   dm: test: Add test case for dev->dma_offset
>   dm: Introduce dev_phys_to_bus()/dev_bus_to_phys()
>   dm: test: Add test case for dev_phys_to_bus()/dev_bus_to_phys()
>   xhci: translate virtual addresses into the bus's address space
>   mmc: Introduce mmc_phys_to_bus()/mmc_bus_to_phys()
>   configs: rpi4: Enable DM_DMA across all RPi4 configurations
>   video: arm: rpi: Add brcm,bcm2711-hdmi0 compatible
>
>  arch/sandbox/dts/test.dts          | 21 ++++++++
>  board/raspberrypi/rpi/rpi.c        | 10 ++++
>  common/fdt_support.c               | 73 ++++++++++++++++++++++++++++
>  configs/rpi_4_32b_defconfig        |  1 +
>  configs/rpi_4_defconfig            |  1 +
>  configs/rpi_arm64_defconfig        |  1 +
>  configs/sandbox64_defconfig        |  1 +
>  configs/sandbox_defconfig          |  1 +
>  configs/sandbox_flattree_defconfig |  1 +
>  configs/sandbox_spl_defconfig      |  1 +
>  drivers/core/Kconfig               | 10 ++++
>  drivers/core/device.c              | 41 ++++++++++++++++
>  drivers/core/of_addr.c             | 78 ++++++++++++++++++++++++++++++
>  drivers/core/ofnode.c              |  9 ++++
>  drivers/core/read.c                |  6 +++
>  drivers/mmc/sdhci.c                | 12 +++--
>  drivers/pci/pcie_brcmstb.c         | 12 ++---
>  drivers/usb/host/xhci-mem.c        | 45 +++++++++--------
>  drivers/usb/host/xhci-ring.c       | 11 +++--
>  drivers/usb/host/xhci.c            |  4 +-
>  drivers/video/bcm2835.c            |  1 +
>  include/dm/device.h                | 13 +++++
>  include/dm/of_addr.h               | 17 +++++++
>  include/dm/ofnode.h                | 16 ++++++
>  include/dm/read.h                  | 21 ++++++++
>  include/fdt_support.h              | 14 ++++++
>  include/mmc.h                      |  6 +++
>  include/phys2bus.h                 | 17 +++++++
>  include/usb/xhci.h                 | 20 +++++++-
>  test/dm/Makefile                   |  2 +
>  test/dm/core.c                     | 30 ++++++++++++
>  test/dm/phys2bus.c                 | 37 ++++++++++++++
>  test/dm/read.c                     | 49 +++++++++++++++++++
>  33 files changed, 542 insertions(+), 40 deletions(-)
>  create mode 100644 test/dm/phys2bus.c
>  create mode 100644 test/dm/read.c
>
> --
> 2.29.2
>


More information about the U-Boot mailing list