This series adds basic support for Apple's M1 SoC to U-Boot. This builds a basic U-Boot that can be used as a payload for the m1n1 boot loader being developed by the Asahi Linux project.
The goal here is to privide an UEFI interface on these machines that allows booting various open source OSes. This initial series provides support for the serial port, framebuffer and the USB 3.1 Type-C ports. It can boot a support OS (e.g. OpenBSD/arm64) from a USB disk. This version attempts to address most comments. It doesn't add a proper WDT/sysreset driver yet since I prefer to do that once the device tree bindings for that have been ironed out. ChangeLog: v2: - Add IOMMU uclass and use it for the DART driver - Cut back DART driver to only support bypass mode - Rework the S5P serial support to use more DT stuff - Update preliminary device trees v3: - Respin for CONFIG_SYS_LOAD_ADDR kconfig migration v4: - Copy generic IOMMU DT bindings from Linux - Explain IOMMU KConfig option - Rename dev_iommu_probe() - Indicate how device trees deviate from upstream - Explain why u-boot-nodtb.bin is used. Mark Kettenis (7): iommu: Add IOMMU uclass test: Add tests for IOMMU uclass arm: apple: Add initial support for Apple's M1 SoC serial: s5p: Add Apple M1 support iommu: Add Apple DART driver arm: dts: apple: Add preliminary device trees doc: board: apple: Add Apple M1 documentation arch/arm/Kconfig | 23 + arch/arm/Makefile | 1 + arch/arm/dts/Makefile | 4 + arch/arm/dts/t8103-j274.dts | 135 +++++ arch/arm/dts/t8103-j293.dts | 97 +++ arch/arm/dts/t8103.dtsi | 560 ++++++++++++++++++ arch/arm/include/asm/arch-m1/uart.h | 41 ++ arch/arm/mach-apple/Kconfig | 18 + arch/arm/mach-apple/Makefile | 4 + arch/arm/mach-apple/board.c | 161 +++++ arch/arm/mach-apple/lowlevel_init.S | 17 + arch/sandbox/dts/test.dts | 6 + configs/apple_m1_defconfig | 20 + configs/sandbox64_defconfig | 1 + configs/sandbox_defconfig | 1 + configs/sandbox_flattree_defconfig | 1 + configs/sandbox_noinst_defconfig | 1 + configs/sandbox_spl_defconfig | 1 + doc/board/apple/index.rst | 9 + doc/board/apple/m1.rst | 59 ++ doc/board/index.rst | 1 + doc/device-tree-bindings/iommu/iommu.txt | 206 +++++++ drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/core/device.c | 8 + drivers/iommu/Kconfig | 27 + drivers/iommu/Makefile | 6 + drivers/iommu/apple_dart.c | 59 ++ drivers/iommu/iommu-uclass.c | 45 ++ drivers/iommu/sandbox_iommu.c | 18 + drivers/serial/Kconfig | 4 +- drivers/serial/serial_s5p.c | 104 +++- include/configs/apple.h | 36 ++ include/dm/uclass-id.h | 1 + .../interrupt-controller/apple-aic.h | 15 + include/dt-bindings/pinctrl/apple.h | 13 + include/dt-bindings/spmi/spmi.h | 10 + include/iommu.h | 16 + test/dm/Makefile | 1 + test/dm/iommu.c | 28 + 40 files changed, 1737 insertions(+), 24 deletions(-) create mode 100644 arch/arm/dts/t8103-j274.dts create mode 100644 arch/arm/dts/t8103-j293.dts create mode 100644 arch/arm/dts/t8103.dtsi create mode 100644 arch/arm/include/asm/arch-m1/uart.h create mode 100644 arch/arm/mach-apple/Kconfig create mode 100644 arch/arm/mach-apple/Makefile create mode 100644 arch/arm/mach-apple/board.c create mode 100644 arch/arm/mach-apple/lowlevel_init.S create mode 100644 configs/apple_m1_defconfig create mode 100644 doc/board/apple/index.rst create mode 100644 doc/board/apple/m1.rst create mode 100644 doc/device-tree-bindings/iommu/iommu.txt create mode 100644 drivers/iommu/Kconfig create mode 100644 drivers/iommu/Makefile create mode 100644 drivers/iommu/apple_dart.c create mode 100644 drivers/iommu/iommu-uclass.c create mode 100644 drivers/iommu/sandbox_iommu.c create mode 100644 include/configs/apple.h create mode 100644 include/dt-bindings/interrupt-controller/apple-aic.h create mode 100644 include/dt-bindings/pinctrl/apple.h create mode 100644 include/dt-bindings/spmi/spmi.h create mode 100644 include/iommu.h create mode 100644 test/dm/iommu.c -- 2.33.0