[PATCH v4 00/13] Raspberry Pi 400/Compute Module 4 support
Simon Glass
sjg at chromium.org
Wed Dec 23 01:19:01 CET 2020
Hi Nicolas,
On Tue, 22 Dec 2020 at 05:36, Nicolas Saenz Julienne
<nsaenzjulienne at suse.de> wrote:
>
> @Simon: I had to roll back all "if (CONFIG_IS_ENABLED(DM_DMA)" uses. As
> per buildman it breaks compilation when !DM or !DM_DMA due to access to
> undefined variables, namely dev and dev->dma_offset. I figure in u-boot
> we root for small Image sizes, so defining the variables regarless of
> them being needed is not an option.
Our approach so far is to define inline functions to get/set the
variables, which do nothing if those vars don't exist. See
gd_of_root() for example.
>
> ---
>
> 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 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 | 45 +++++++++++++++++
> drivers/core/of_addr.c | 78 ++++++++++++++++++++++++++++++
> drivers/core/ofnode.c | 9 ++++
> drivers/core/read.c | 6 +++
> drivers/mmc/sdhci.c | 7 +--
> 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 | 5 ++
> include/dm/of_addr.h | 17 +++++++
> include/dm/ofnode.h | 16 ++++++
> include/dm/read.h | 21 ++++++++
> include/fdt_support.h | 14 ++++++
> include/mmc.h | 10 ++++
> include/phys2bus.h | 16 ++++++
> include/usb/xhci.h | 22 ++++++++-
> test/dm/Makefile | 2 +
> test/dm/core.c | 30 ++++++++++++
> test/dm/phys2bus.c | 37 ++++++++++++++
> test/dm/read.c | 49 +++++++++++++++++++
> 33 files changed, 540 insertions(+), 38 deletions(-)
> create mode 100644 test/dm/phys2bus.c
> create mode 100644 test/dm/read.c
>
> --
> 2.29.2
>
Regards,
Simon
More information about the U-Boot
mailing list