aboutsummaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
Diffstat (limited to 'board')
-rw-r--r--board/aarch64-efi/genimage-efi.cfg8
-rw-r--r--board/aarch64-efi/grub.cfg2
-rw-r--r--board/aarch64-efi/readme.txt21
-rw-r--r--board/atmel/readme.txt2
-rw-r--r--board/beaglev/extlinux.conf4
-rw-r--r--board/beaglev/genimage.cfg12
-rw-r--r--board/beaglev/patches/uboot/0001-include-configs-starfive-vic7100-adjust-fdt_addr_r.patch39
-rwxr-xr-xboard/beaglev/post-build.sh17
-rw-r--r--board/beaglev/readme.txt124
-rw-r--r--board/boundarydevices/common/boot.cmd65
-rw-r--r--board/boundarydevices/common/readme.txt3
-rw-r--r--board/boundarydevices/common/upgrade.cmd25
-rw-r--r--board/microchip/sama5d2_icp/genimage.cfg31
-rw-r--r--board/minnowboard/fs-overlay-graphical/etc/X11/xorg.conf.d/01-modules.conf11
-rwxr-xr-xboard/qemu/aarch64-sbsa/assemble-flash-images11
-rw-r--r--board/qemu/aarch64-sbsa/genimage.cfg30
-rw-r--r--board/qemu/aarch64-sbsa/grub.cfg6
-rw-r--r--board/qemu/aarch64-sbsa/linux.config68
-rw-r--r--board/qemu/aarch64-sbsa/readme.txt32
-rw-r--r--board/qemu/s390x/patches/linux/0001-arch-s390-disable-SSP-when-needed.patch47
-rw-r--r--board/qemu/sparc64-sun4u/patches/linux/0001-sparc64-avoid-stringop-overread-warning-to-access-Ma.patch154
-rw-r--r--board/raspberrypi/genimage-raspberrypicm4io-64.cfg30
-rw-r--r--board/raspberrypi/genimage-raspberrypicm4io.cfg30
-rw-r--r--board/raspberrypi/readme.txt46
l---------board/raspberrypicm4io1
l---------board/raspberrypicm4io-641
-rw-r--r--board/stmicroelectronics/stm32f469-disco/extlinux.conf4
-rwxr-xr-xboard/stmicroelectronics/stm32f469-disco/flash.sh4
-rw-r--r--board/stmicroelectronics/stm32f469-disco/genimage.cfg27
-rw-r--r--board/stmicroelectronics/stm32f469-disco/linux.fragment1
-rw-r--r--board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch33
-rwxr-xr-xboard/stmicroelectronics/stm32f469-disco/post-build.sh4
-rw-r--r--board/stmicroelectronics/stm32f469-disco/readme.txt16
-rw-r--r--board/uevm5432/genimage.cfg26
-rw-r--r--board/uevm5432/readme.txt40
35 files changed, 898 insertions, 77 deletions
diff --git a/board/aarch64-efi/genimage-efi.cfg b/board/aarch64-efi/genimage-efi.cfg
index f93ab9d64f..34cca1d64e 100644
--- a/board/aarch64-efi/genimage-efi.cfg
+++ b/board/aarch64-efi/genimage-efi.cfg
@@ -14,17 +14,19 @@ image efi-part.vfat {
}
image disk.img {
-
hdimage {
+ gpt = true
}
partition boot {
- partition-type = 0xEF
image = "efi-part.vfat"
+ partition-type-uuid = c12a7328-f81f-11d2-ba4b-00a0c93ec93b
+ offset = 32768
+ bootable = true
}
partition root {
- partition-type = 0x83
+ partition-type-uuid = b921b045-1df0-41c3-af44-4c6f280d3fae
image = "rootfs.ext2"
}
}
diff --git a/board/aarch64-efi/grub.cfg b/board/aarch64-efi/grub.cfg
index ab88da91b9..d99e19c4cd 100644
--- a/board/aarch64-efi/grub.cfg
+++ b/board/aarch64-efi/grub.cfg
@@ -2,5 +2,5 @@ set default="0"
set timeout="5"
menuentry "Buildroot" {
- linux /Image root=/dev/vda2 rootwait console=ttyAMA0
+ linux /Image root=PARTLABEL=root rootwait
}
diff --git a/board/aarch64-efi/readme.txt b/board/aarch64-efi/readme.txt
index 65a6345b6c..164993eea4 100644
--- a/board/aarch64-efi/readme.txt
+++ b/board/aarch64-efi/readme.txt
@@ -1,6 +1,10 @@
The aarch64_efi_defconfig allows to build a minimal Linux system that
-can boot on all AArch64 servers providing an EFI firmware and ACPI.
+can boot on all AArch64 servers providing an EFI firmware.
+
+This includes all Arm EBBR[1] compliant systems, and all Arm SystemReady[2]
+compliant systems for example.
+
Building and booting
====================
@@ -32,3 +36,18 @@ Note that </path/to/QEMU_EFI.fd> needs to point to a valid aarch64 UEFI
firmware image for qemu.
It may be provided by your distribution as a edk2-aarch64 or AAVMF
package, in path such as /usr/share/edk2/aarch64/QEMU_EFI.fd .
+
+U-Boot based qemu firmware
+==========================
+
+A qemu firmware with support for UEFI based on U-Boot can be built following
+the instructions in [3], with qemu_arm64_defconfig.
+
+This should give you a nor_flash.bin, which you can use with qemu as an
+alternative to QEMU_EFI.fd. You will also need to change the machine
+specification to "-M virt,secure" on qemu command line, to enable TrustZone
+support, and you will need to increase the memory with "-m 1024".
+
+[1]: https://github.com/ARM-software/ebbr
+[2]: https://developer.arm.com/architectures/system-architectures/arm-systemready
+[3]: https://github.com/glikely/u-boot-tfa-build
diff --git a/board/atmel/readme.txt b/board/atmel/readme.txt
index 1f21dd15e4..a29d027214 100644
--- a/board/atmel/readme.txt
+++ b/board/atmel/readme.txt
@@ -23,6 +23,8 @@ This guide covers the following configurations:
- microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig
- microchip_sam9x60ek_mmc_defconfig
- microchip_sam9x60ek_mmc_dev_defconfig
+ - microchip_sama5d2_icp_mmc_defconfig
+ - microchip_sama5d2_icp_mmc_dev_defconfig
These configurations will use AT91Bootstrap, u-boot and a linux kernel from
the git trees maintained by Atmel.
diff --git a/board/beaglev/extlinux.conf b/board/beaglev/extlinux.conf
new file mode 100644
index 0000000000..c5444d094c
--- /dev/null
+++ b/board/beaglev/extlinux.conf
@@ -0,0 +1,4 @@
+label linux
+ kernel /boot/Image
+ devicetree /boot/starfive_vic7100_beagle_v.dtb
+ append console=ttyS0,115200 earlyprintk root=PARTUUID=0fef845a-c6e1-45bc-82f7-002fa720f958 rootwait
diff --git a/board/beaglev/genimage.cfg b/board/beaglev/genimage.cfg
new file mode 100644
index 0000000000..f38bb7f86c
--- /dev/null
+++ b/board/beaglev/genimage.cfg
@@ -0,0 +1,12 @@
+image sdcard.img {
+ hdimage {
+ gpt = true
+ }
+
+ partition rootfs {
+ partition-type-uuid = 72ec70a6-cf74-40e6-bd49-4bda08e8f224
+ partition-uuid = 0fef845a-c6e1-45bc-82f7-002fa720f958
+ bootable = "true"
+ image = "rootfs.ext4"
+ }
+}
diff --git a/board/beaglev/patches/uboot/0001-include-configs-starfive-vic7100-adjust-fdt_addr_r.patch b/board/beaglev/patches/uboot/0001-include-configs-starfive-vic7100-adjust-fdt_addr_r.patch
new file mode 100644
index 0000000000..74d70f2721
--- /dev/null
+++ b/board/beaglev/patches/uboot/0001-include-configs-starfive-vic7100-adjust-fdt_addr_r.patch
@@ -0,0 +1,39 @@
+From 2c4c813940c577590f3352cef0c49a8def17905d Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Wed, 28 Apr 2021 22:58:45 +0200
+Subject: [PATCH] include/configs/starfive-vic7100: adjust fdt_addr_r
+
+The default fdt_addr_r of 0x88000000 doesn't work, the kernel never
+boots. Using 0x90000000 works fine.
+
+Since it would overlap with the kernel_comp_addr_r area, this one is
+moved 16 MB further, at 0x91000000.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ include/configs/starfive-vic7100.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/configs/starfive-vic7100.h b/include/configs/starfive-vic7100.h
+index 8c5915a73c..7150a23873 100644
+--- a/include/configs/starfive-vic7100.h
++++ b/include/configs/starfive-vic7100.h
+@@ -111,13 +111,13 @@
+ "fdt_high=0xffffffffffffffff\0" \
+ "initrd_high=0xffffffffffffffff\0" \
+ "kernel_addr_r=0x84000000\0" \
+- "fdt_addr_r=0x88000000\0" \
++ "fdt_addr_r=0x90000000\0" \
+ "scriptaddr=0x88100000\0" \
+ "script_offset_f=0x1fff000\0" \
+ "script_size_f=0x1000\0" \
+ "pxefile_addr_r=0x88200000\0" \
+ "ramdisk_addr_r=0x88300000\0" \
+- "kernel_comp_addr_r=0x90000000\0" \
++ "kernel_comp_addr_r=0x91000000\0" \
+ "kernel_comp_size=0x10000000\0" \
+ "type_guid_gpt_loader1=" TYPE_GUID_LOADER1 "\0" \
+ "type_guid_gpt_loader2=" TYPE_GUID_LOADER2 "\0" \
+--
+2.30.2
+
diff --git a/board/beaglev/post-build.sh b/board/beaglev/post-build.sh
new file mode 100755
index 0000000000..b19b9bf6d0
--- /dev/null
+++ b/board/beaglev/post-build.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+BOARD_DIR=$(dirname $0)
+
+# The DTB to use is provided within the U-Boot source tree, so we grab
+# it from there, and install it to TARGET_DIR/boot/.
+eval $(make -C ${CONFIG_DIR} --no-print-directory QUOTED_VARS=YES VARS=UBOOT_DIR printvars)
+install -D -m0644 ${UBOOT_DIR}/arch/riscv/dts/starfive_vic7100_beagle_v.dtb \
+ ${TARGET_DIR}/boot/starfive_vic7100_beagle_v.dtb
+
+# Bring the extlinux.conf file in.
+install -D -m 0644 ${BOARD_DIR}/extlinux.conf \
+ ${TARGET_DIR}/boot/extlinux/extlinux.conf
+
+# To be reflashed through Xmodem, the bootloader needs to be prepended
+# with a 4-byte header that contains the total size of the file.
+perl -e 'print pack("l", (stat @ARGV[0])[7])' ${BINARIES_DIR}/fw_payload.bin > ${BINARIES_DIR}/fw_payload.bin.out
+cat ${BINARIES_DIR}/fw_payload.bin >> ${BINARIES_DIR}/fw_payload.bin.out
diff --git a/board/beaglev/readme.txt b/board/beaglev/readme.txt
new file mode 100644
index 0000000000..60678059e1
--- /dev/null
+++ b/board/beaglev/readme.txt
@@ -0,0 +1,124 @@
+BeagleV
+=======
+
+BeagleV is a low-cost RISC-V 64-bit based platform, powered by a
+Starfive JH7100 processor. The current defconfig in Buildroot has been
+tested with the JH7100 chip used on the beta version of the BeagleV
+board.
+
+How to build
+============
+
+$ make beaglev_defconfig
+$ make
+
+Build results
+=============
+
+After building, output/images contains:
+
++ bootloader-BEAGLEV-buildroot.bin.out
++ ddrinit-2133-buildroot.bin.out
++ Image
++ fw_payload.bin
++ fw_payload.bin.out
++ fw_payload.elf
++ rootfs.ext2
++ rootfs.ext4
++ sdcard.img
++ u-boot.bin
+
+The four important files are:
+
+ - bootloader-BEAGLEV-buildroot.bin.out, the first stage bootloader
+
+ - ddrinit-2133-buildroot.bin.out, the DDR initialization firmware
+
+ - fw_payload.bin.out, which is the bootloader image, containing
+ both OpenSBI and U-Boot.
+
+ - sdcard.img, the SD card image, which contains the root filesystem,
+ kernel image and Device Tree.
+
+Flashing the SD card image
+==========================
+
+$ sudo dd if=output/images/sdcard.img of=/dev/sdX
+
+Preparing the board
+===================
+
+Connect the Beagle-V fan to the 5V supply (pin 2 or 4 of the GPIO
+connector) and GND (pin 6 of the GPIO connector).
+
+Connect a TTL UART cable to pin 8 (TX), 10 (RX) and 14 (GND).
+
+Insert your SD card.
+
+Power-up the board using an USB-C cable.
+
+Flashing OpenSBI/U-Boot
+=======================
+
+The bootloader pre-flashed on the Beagle-V has a non-working
+fdt_addr_r environment variable value, so it won't work
+as-is. Reflashing the bootloader with the bootloader image produced by
+Buildroot is necessary.
+
+When the board starts up, a pre-loader shows a count down of 2
+seconds, interrupt by pressing any key. You should reach a menu like
+this:
+
+--------8<----------
+
+bootloader version:210209-4547a8d
+ddr 0x00000000, 1M test
+ddr 0x00100000, 2M test
+DDR clk 2133M,Version: 210302-5aea32f
+0
+***************************************************
+*************** FLASH PROGRAMMING *****************
+***************************************************
+
+0:update uboot
+1:quit
+select the function:
+
+--------8<----------
+
+Press 0 and Enter. You will now see "C" characters being
+displayed. Ask your serial port communication program to send
+fw_payload.bin.out using the Xmodem protocol.
+
+After reflashing is complete, restart the board, it will automatically
+start the system from the SD card, and reach the login prompt.
+
+Flashing low-level bootloaders
+==============================
+
+The BeagleV comes pre-flashed with functional low-level bootloaders
+(called "secondboot" and "ddrinit"). Re-flashing them is not necessary
+to use this Buildroot defconfig. However, for the sake of
+completeness, Buildroot builds and provides those low-level bootloader
+images.
+
+You can flash them as follows:
+
+ - In the same "pre-loader" menu as the one used above, instead of
+ entering 0 or 1, enter the magic "root@s5t" string. This enters the
+ "expert" features.
+
+ - Then, press 0 and send over X-modem the
+ bootloader-BEAGLEV-buildroot.bin.out file.
+
+ - Then, press 1 and send over X-modem the
+ ddrinit-2133-buildroot.bin.out.
+
+Note that the reflashing mechanism itself relies on those low-level
+bootloaders, so if you flash non-working versions, you'll have to go
+through a recovery process. This requires wiring up to a separate
+debug UART, which pins are located near the HDMI connector. See
+https://wiki.seeedstudio.com/BeagleV-Update-bootloader-ddr-init-boot-uboot-Recover-bootloader/
+section "Recover the bootloader" for more details. The instructions
+make use of a jh7100-recover tool, which Buildroot has built as part
+of this defconfig: it is available as output/host/bin/jh7100-recover.
diff --git a/board/boundarydevices/common/boot.cmd b/board/boundarydevices/common/boot.cmd
index dbc3b3c373..2f2bd8d045 100644
--- a/board/boundarydevices/common/boot.cmd
+++ b/board/boundarydevices/common/boot.cmd
@@ -1,17 +1,20 @@
setenv bootargs ''
-setenv initrd_high 0xffffffff
m4=''
kernelimage=zImage
bootcommand=bootz
a_base=0x10000000
-if itest.s x51 == "x${imx_cpu}" ; then
+
+#grab 1st 2/3 characters of string
+setexpr cpu2 sub "^(..?).*" "\\1" "${imx_cpu}"
+setexpr cpu3 sub "^(..?.?).*" "\\1" "${imx_cpu}"
+if itest.s x51 == "x${cpu2}" ; then
a_base=0x90000000
-elif itest.s x53 == "x${imx_cpu}"; then
+elif itest.s x53 == "x${cpu2}"; then
a_base=0x70000000
-elif itest.s x6SX == "x${imx_cpu}" || itest.s x6ULL == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
+elif itest.s x6SX == "x${cpu3}" || itest.s x6U == "x${cpu2}" || itest.s x7D == "x${cpu2}"; then
a_base=0x80000000
-elif itest.s x8MQ == "x${imx_cpu}" || itest.s x8MM == "x${imx_cpu}" || itest.s x8MMQ == "x${imx_cpu}" || itest.s x8MNano == "x${imx_cpu}"; then
+elif itest.s x8M == "x${cpu2}"; then
a_base=0x40000000
kernelimage=Image
bootcommand=booti
@@ -24,8 +27,7 @@ fi
setexpr a_script ${a_base} + 0x00800000
setexpr a_zImage ${a_base} + 0x00800000
setexpr a_fdt ${a_base} + 0x03000000
-setexpr a_ramdisk ${a_base} + 0x03800000
-setexpr a_initrd ${a_base} + 0x03a00000
+setexpr a_initrd ${a_base} + 0x03100000
setexpr a_reset_cause_marker ${a_base} + 0x80
setexpr a_reset_cause ${a_base} + 0x84
@@ -35,30 +37,32 @@ if itest.s "x" == "x${board}" ; then
fi
if itest.s "x" == "x${fdt_file}" ; then
- if itest.s x6SOLO == "x${imx_cpu}" ; then
- fdt_file=imx6dl-${board}.dtb;
- elif itest.s x6DL == "x${imx_cpu}" ; then
+ if itest.s x51 == "x${cpu2}" ; then
+ fdt_file=imx51-${board}${m4}.dtb;
+ elif itest.s x53 == "x${cpu2}" ; then
+ fdt_file=imx53-${board}${m4}.dtb;
+ elif itest.s x6DL == "x${cpu3}" || itest.s x6SO == "x${cpu3}" ; then
fdt_file=imx6dl-${board}.dtb;
- elif itest.s x6QP == "x${imx_cpu}" ; then
+ elif itest.s x6QP == "x${cpu3}" ; then
fdt_file=imx6qp-${board}.dtb;
- elif itest.s x6SX == "x${imx_cpu}" ; then
+ elif itest.s x6SX == "x${cpu3}" ; then
fdt_file=imx6sx-${board}${m4}.dtb;
- elif itest.s x6ULL == "x${imx_cpu}" ; then
+ elif itest.s x6UL == "x${cpu3}" ; then
fdt_file=imx6ull-${board}.dtb;
- elif itest.s x7D == "x${imx_cpu}" ; then
+ elif itest.s x7D == "x${cpu2}" ; then
fdt_file=imx7d-${board}${m4}.dtb;
- elif itest.s x8MQ == "x${imx_cpu}" ; then
- fdt_file=imx8mq-${board}${m4}.dtb;
- elif itest.s x8MM == "x${imx_cpu}" ; then
+ elif itest.s x8MM == "x${cpu3}" ; then
fdt_file=imx8mm-${board}${m4}.dtb;
- elif itest.s x8MMQ == "x${imx_cpu}" ; then
- fdt_file=imx8mm-${board}${m4}.dtb;
- elif itest.s x8MNano == "x${imx_cpu}" ; then
+ elif itest.s x8MN == "x${cpu3}" ; then
fdt_file=imx8mn-${board}${m4}.dtb;
- elif itest.s x51 == "x${imx_cpu}" ; then
- fdt_file=imx51-${board}.dtb;
- elif itest.s x53 == "x${imx_cpu}" ; then
- fdt_file=imx53-${board}.dtb;
+ elif itest.s x8MP == "x${cpu3}" ; then
+ if itest *0x30360800 == 0x00824310 ; then
+ fdt_file=imx8mp-a0-${board}${m4}.dtb;
+ else
+ fdt_file=imx8mp-${board}${m4}.dtb;
+ fi
+ elif itest.s x8MQ == "x${cpu3}" ; then
+ fdt_file=imx8mq-${board}${m4}.dtb;
else
fdt_file=imx6q-${board}.dtb;
fi
@@ -71,11 +75,20 @@ fi
if load ${devtype} ${devnum}:${distro_bootpart} ${a_script} uEnv.txt ; then
env import -t ${a_script} ${filesize}
fi
-setenv bootargs ${bootargs} console=${console},115200 vmalloc=400M consoleblank=0 rootwait fixrtc cpu=${imx_cpu} board=${board}
+
+if itest.s x${console} != x ; then
+ setenv bootargs ${bootargs} console=${console},115200
+fi
+if itest.s "x" == "x$vmalloc" ; then
+ vmalloc=400M
+fi
+if itest.s x${consoleblank} == x ; then
+ consoleblank=0
+fi
+setenv bootargs ${bootargs} vmalloc=${vmalloc} consoleblank=${consoleblank} rootwait fixrtc cpu=${imx_cpu} board=${board} uboot_release=${uboot_release}
if load ${devtype} ${devnum}:${distro_bootpart} ${a_fdt} ${prefix}${fdt_file} ; then
fdt addr ${a_fdt}
- setenv fdt_high 0xffffffff
else
echo "!!!! Error loading ${prefix}${fdt_file}";
exit;
diff --git a/board/boundarydevices/common/readme.txt b/board/boundarydevices/common/readme.txt
index 307cfb5549..d3169b08f5 100644
--- a/board/boundarydevices/common/readme.txt
+++ b/board/boundarydevices/common/readme.txt
@@ -31,6 +31,9 @@ Here is the list of targeted platforms per defconfig:
- Nitrogen8MNano
- Nitrogen8MNano_SOM
+- nitrogen8mp_defconfig
+ - Nitrogen8MPlus_SOM
+
To install, simply copy the image to your storage (SD, eMMC, USB):
$ sudo dd if=output/images/sdcard.img of=/dev/sdX
diff --git a/board/boundarydevices/common/upgrade.cmd b/board/boundarydevices/common/upgrade.cmd
index ce32d77b5b..a26bacd9aa 100644
--- a/board/boundarydevices/common/upgrade.cmd
+++ b/board/boundarydevices/common/upgrade.cmd
@@ -9,18 +9,24 @@ qspi_offset=0x0
a_base=0x12000000
block_size=0x200
-if itest.s x51 == "x${imx_cpu}"; then
+#grab 1st 2/3 characters of string
+setexpr cpu2 sub "^(..?).*" "\\1" "${imx_cpu}"
+setexpr cpu3 sub "^(..?.?).*" "\\1" "${imx_cpu}"
+if itest.s x51 == "x${cpu2}"; then
a_base=0x92000000
-elif itest.s x53 == "x${imx_cpu}"; then
+elif itest.s x53 == "x${cpu2}"; then
a_base=0x72000000
-elif itest.s x6SX == "x${imx_cpu}" || itest.s x6ULL == "x${imx_cpu}" || itest.s x7D == "x${imx_cpu}"; then
+elif itest.s x6SX == "x${cpu3}" || itest.s x6U == "x${cpu2}" || itest.s x7D == "x${cpu2}"; then
a_base=0x82000000
-elif itest.s x8MQ == "x${imx_cpu}" || itest.s x8MM == "x${imx_cpu}" || itest.s x8MMQ == "x${imx_cpu}"; then
+elif itest.s x8M == "x${cpu2}"; then
a_base=0x42000000
offset=0x8400
-elif itest.s x8MNano == "x${imx_cpu}"; then
- a_base=0x42000000
- offset=0x8000
+ if itest.s x8MN == "x${cpu3}" || itest.s x8MP == "x${cpu3}"; then
+ offset=0x8000
+ if itest ${env_part} != 0 ; then
+ offset=0x0
+ fi
+ fi
fi
qspi_match=1
@@ -30,7 +36,10 @@ setexpr a_uImage1 ${a_qspi1} + 0x400
setexpr a_uImage2 ${a_qspi2} + 0x400
setexpr a_script ${a_base}
-setenv stdout serial,vga
+if itest.s "x${vidconsole}" == "x" ; then
+ vidconsole=vga
+fi
+setenv stdout serial,${vidconsole}
if itest.s "x${sfname}" == "x" ; then
# U-Boot resides in (e)MMC
diff --git a/board/microchip/sama5d2_icp/genimage.cfg b/board/microchip/sama5d2_icp/genimage.cfg
new file mode 100644
index 0000000000..854751713f
--- /dev/null
+++ b/board/microchip/sama5d2_icp/genimage.cfg
@@ -0,0 +1,31 @@
+# Image for SD card boot on Microchip SAMA5D2 ICP (Industrial Connectivity Platform)
+#
+image boot.vfat {
+ vfat {
+ files = {
+ "zImage",
+ "at91-sama5d2_icp.dtb",
+ "boot.bin",
+ "u-boot.bin"
+ }
+ }
+ size = 16M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ offset = 1M
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ size = 512M
+ }
+}
diff --git a/board/minnowboard/fs-overlay-graphical/etc/X11/xorg.conf.d/01-modules.conf b/board/minnowboard/fs-overlay-graphical/etc/X11/xorg.conf.d/01-modules.conf
new file mode 100644
index 0000000000..91659baa65
--- /dev/null
+++ b/board/minnowboard/fs-overlay-graphical/etc/X11/xorg.conf.d/01-modules.conf
@@ -0,0 +1,11 @@
+
+# Xorg does not implement real dynamic linking and requires that its
+# modules get loaded in the right order.
+# https://forums.gentoo.org/viewtopic-p-8245578.html#8245578
+Section "Module"
+ Load "vgahw"
+ Load "fb"
+ Load "shadowfb"
+ Load "int10"
+ Load "vbe"
+EndSection
diff --git a/board/qemu/aarch64-sbsa/assemble-flash-images b/board/qemu/aarch64-sbsa/assemble-flash-images
new file mode 100755
index 0000000000..abcc276b0b
--- /dev/null
+++ b/board/qemu/aarch64-sbsa/assemble-flash-images
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+BOARD_DIR="$(dirname $0)"
+
+cp -f ${BOARD_DIR}/grub.cfg ${BINARIES_DIR}/efi-part/EFI/BOOT/grub.cfg
+
+# The QEMU sbsa machine expects flash devices to be 256M.
+truncate -s 256M ${BINARIES_DIR}/SBSA_FLASH0.fd
+truncate -s 256M ${BINARIES_DIR}/SBSA_FLASH1.fd
diff --git a/board/qemu/aarch64-sbsa/genimage.cfg b/board/qemu/aarch64-sbsa/genimage.cfg
new file mode 100644
index 0000000000..285b308d90
--- /dev/null
+++ b/board/qemu/aarch64-sbsa/genimage.cfg
@@ -0,0 +1,30 @@
+image efi-part.vfat {
+ vfat {
+ file startup.nsh {
+ image = "efi-part/startup.nsh"
+ }
+ file EFI {
+ image = "efi-part/EFI"
+ }
+ file Image {
+ image = "Image"
+ }
+ }
+ size = 32M
+}
+
+image disk.img {
+ hdimage {
+ gpt = true
+ }
+
+ partition boot {
+ partition-type = 0xEF
+ image = "efi-part.vfat"
+ }
+
+ partition root {
+ partition-type = 0x83
+ image = "rootfs.ext2"
+ }
+}
diff --git a/board/qemu/aarch64-sbsa/grub.cfg b/board/qemu/aarch64-sbsa/grub.cfg
new file mode 100644
index 0000000000..cd486caf4c
--- /dev/null
+++ b/board/qemu/aarch64-sbsa/grub.cfg
@@ -0,0 +1,6 @@
+set default="0"
+set timeout="5"
+
+menuentry "Buildroot" {
+ linux /Image root=/dev/sda2 rootwait console=ttyAMA0
+}
diff --git a/board/qemu/aarch64-sbsa/linux.config b/board/qemu/aarch64-sbsa/linux.config
new file mode 100644
index 0000000000..a60cce02ec
--- /dev/null
+++ b/board/qemu/aarch64-sbsa/linux.config
@@ -0,0 +1,68 @@
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_TASKSTATS=y
+CONFIG_SCHED_AUTOGROUP=y
+CONFIG_PROFILING=y
+CONFIG_ARCH_VEXPRESS=y
+CONFIG_COMPAT=y
+CONFIG_FW_CFG_SYSFS=y
+CONFIG_FW_CFG_SYSFS_CMDLINE=y
+CONFIG_ACPI=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BINFMT_MISC=y
+CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=y
+CONFIG_UNIX=y
+CONFIG_NET_KEY=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_BRIDGE=m
+CONFIG_NET_SCHED=y
+CONFIG_VSOCKETS=y
+CONFIG_PCI=y
+CONFIG_PCI_HOST_GENERIC=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_SG=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+CONFIG_SCSI_SCAN_ASYNC=y
+CONFIG_SCSI_VIRTIO=y
+CONFIG_ATA=y
+CONFIG_SATA_AHCI_PLATFORM=y
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+CONFIG_MACVLAN=y
+CONFIG_VIRTIO_NET=y
+CONFIG_NLMON=y
+CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_VIRTIO_CONSOLE=y
+CONFIG_HW_RANDOM=y
+CONFIG_HW_RANDOM_VIRTIO=y
+CONFIG_TCG_TPM=y
+CONFIG_TCG_TIS=y
+CONFIG_DRM=y
+CONFIG_DRM_VIRTIO_GPU=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_PL031=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_MAILBOX=y
+CONFIG_PL320_MBOX=y
+CONFIG_ARM_SMMU_V3=y
+CONFIG_EXT4_FS=y
+CONFIG_FUSE_FS=y
+CONFIG_VIRTIO_FS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
diff --git a/board/qemu/aarch64-sbsa/readme.txt b/board/qemu/aarch64-sbsa/readme.txt
new file mode 100644
index 0000000000..7935108ef1
--- /dev/null
+++ b/board/qemu/aarch64-sbsa/readme.txt
@@ -0,0 +1,32 @@
+Intro
+=====
+
+The QEMU sbsa-ref machine is primarily meant for firmware development
+and testing according to ARM's SBSA and SBBR standards.
+
+Build
+=====
+
+ $ make qemu_aarch64_sbsa_defconfig
+ $ make
+
+Emulation
+=========
+
+Run the emulation with:
+
+ qemu-system-aarch64 \
+ -M sbsa-ref \
+ -cpu cortex-a53 \
+ -smp 4 \
+ -m 1024 \
+ -nographic \
+ -pflash output/images/SBSA_FLASH0.fd \
+ -pflash output/images/SBSA_FLASH1.fd \
+ -hda output/images/disk.img
+
+Note that if you want to run sbsa-ref emulation with QEMU provided by
+your distro (i.e., not host-qemu by Buildroot) then you may need to
+install the SeaBIOS package for some required drivers. On Debian:
+
+ # apt install seabios
diff --git a/board/qemu/s390x/patches/linux/0001-arch-s390-disable-SSP-when-needed.patch b/board/qemu/s390x/patches/linux/0001-arch-s390-disable-SSP-when-needed.patch
new file mode 100644
index 0000000000..c8199d4fd6
--- /dev/null
+++ b/board/qemu/s390x/patches/linux/0001-arch-s390-disable-SSP-when-needed.patch
@@ -0,0 +1,47 @@
+From 8a054081678ed0b0e56f829bac0a4656e3a198b9 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sat, 8 May 2021 22:03:11 +0200
+Subject: [PATCH] arch/s390: disable SSP when needed
+
+Though -nostdlib is passed in PURGATORY_LDFLAGS and -ffreestanding in
+KBUILD_CFLAGS_DECOMPRESSOR, -fno-stack-protector must also be passed to
+avoid linking errors related to undefined references to
+'__stack_chk_guard' and '__stack_chk_fail' if toolchain enforces
+-fstack-protector.
+
+Fixes:
+ - https://gitlab.com/kubu93/buildroot/-/jobs/1247043361
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ arch/s390/Makefile | 1 +
+ arch/s390/purgatory/Makefile | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/arch/s390/Makefile b/arch/s390/Makefile
+index e443ed9947bd..098abe3a56f3 100644
+--- a/arch/s390/Makefile
++++ b/arch/s390/Makefile
+@@ -28,6 +28,7 @@ KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY
+ KBUILD_CFLAGS_DECOMPRESSOR += -fno-delete-null-pointer-checks -msoft-float -mbackchain
+ KBUILD_CFLAGS_DECOMPRESSOR += -fno-asynchronous-unwind-tables
+ KBUILD_CFLAGS_DECOMPRESSOR += -ffreestanding
++KBUILD_CFLAGS_DECOMPRESSOR += -fno-stack-protector
+ KBUILD_CFLAGS_DECOMPRESSOR += $(call cc-disable-warning, address-of-packed-member)
+ KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO),-g)
+ KBUILD_CFLAGS_DECOMPRESSOR += $(if $(CONFIG_DEBUG_INFO_DWARF4), $(call cc-option, -gdwarf-4,))
+diff --git a/arch/s390/purgatory/Makefile b/arch/s390/purgatory/Makefile
+index c57f8c40e992..21c4ebe29b9a 100644
+--- a/arch/s390/purgatory/Makefile
++++ b/arch/s390/purgatory/Makefile
+@@ -24,6 +24,7 @@ KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes
+ KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
+ KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
+ KBUILD_CFLAGS += -c -MD -Os -m64 -msoft-float -fno-common
++KBUILD_CFLAGS += -fno-stack-protector
+ KBUILD_CFLAGS += $(CLANG_FLAGS)
+ KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
+ KBUILD_AFLAGS := $(filter-out -DCC_USING_EXPOLINE,$(KBUILD_AFLAGS))
+--
+2.30.2
+
diff --git a/board/qemu/sparc64-sun4u/patches/linux/0001-sparc64-avoid-stringop-overread-warning-to-access-Ma.patch b/board/qemu/sparc64-sun4u/patches/linux/0001-sparc64-avoid-stringop-overread-warning-to-access-Ma.patch
new file mode 100644
index 0000000000..c02704696d
--- /dev/null
+++ b/board/qemu/sparc64-sun4u/patches/linux/0001-sparc64-avoid-stringop-overread-warning-to-access-Ma.patch
@@ -0,0 +1,154 @@
+From 82d91965519c20639c24aadd022b2859461562bc Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Tue, 27 Apr 2021 14:54:28 +0200
+Subject: [PATCH] sparc64: avoid stringop-overread warning to access Machine
+ description datas
+
+gcc-11 warns about what appears to be an out-of-range array access but
+stop the build due to -Werror added to cflags:
+
+arch/sparc/kernel/mdesc.c: In function 'mdesc_node_by_name':
+arch/sparc/kernel/mdesc.c:647:22: error: 'strcmp' reading 1 or more bytes from a region of size 0 [-Werror=stringop-overread]
+ 647 | if (!strcmp(names + ep[ret].name_offset, name))
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+arch/sparc/kernel/mdesc.c:77:33: note: at offset 16 into source object 'mdesc' of size 16
+ 77 | struct mdesc_hdr mdesc;
+ | ^~~~~
+arch/sparc/kernel/mdesc.c: In function 'mdesc_get_property':
+arch/sparc/kernel/mdesc.c:692:22: error: 'strcmp' reading 1 or more bytes from a region of size 0 [-Werror=stringop-overread]
+ 692 | if (!strcmp(names + ep->name_offset, name)) {
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+arch/sparc/kernel/mdesc.c:77:33: note: at offset 16 into source object 'mdesc' of size 16
+ 77 | struct mdesc_hdr mdesc;
+ | ^~~~~
+arch/sparc/kernel/mdesc.c: In function 'mdesc_next_arc':
+arch/sparc/kernel/mdesc.c:719:21: error: 'strcmp' reading 1 or more bytes from a region of size 0 [-Werror=stringop-overread]
+ 719 | if (strcmp(names + ep->name_offset, arc_type))
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+arch/sparc/kernel/mdesc.c:77:33: note: at offset 16 into source object 'mdesc' of size 16
+ 77 | struct mdesc_hdr mdesc;
+ | ^~~~~
+cc1: all warnings being treated as errors
+
+The issue was initially reported to gcc [1] where it was analized.
+As suggested, change the struct mdesc_elem * accesses from the end
+of mdesc to those from the beginning of the data array.
+
+Update the prototype of node_block(), name_block() and data_block()
+since the code really seems to want to do is to compute the address
+somewhere into the chunk pointed to by hp.
+
+[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100262
+
+Upstream status: Pending
+https://www.spinics.net/lists/sparclinux/msg26385.html
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ arch/sparc/kernel/mdesc.c | 37 +++++++++++++++++++++----------------
+ 1 file changed, 21 insertions(+), 16 deletions(-)
+
+diff --git a/arch/sparc/kernel/mdesc.c b/arch/sparc/kernel/mdesc.c
+index 8e645ddac58e..3403555aa1e2 100644
+--- a/arch/sparc/kernel/mdesc.c
++++ b/arch/sparc/kernel/mdesc.c
+@@ -75,6 +75,7 @@ struct mdesc_handle {
+ refcount_t refcnt;
+ unsigned int handle_size;
+ struct mdesc_hdr mdesc;
++ char data[];
+ };
+
+ typedef int (*mdesc_node_info_get_f)(struct mdesc_handle *, u64,
+@@ -610,26 +611,30 @@ int mdesc_get_node_info(struct mdesc_handle *hp, u64 node,
+ }
+ EXPORT_SYMBOL(mdesc_get_node_info);
+
+-static struct mdesc_elem *node_block(struct mdesc_hdr *mdesc)
++static struct mdesc_elem *node_block(struct mdesc_handle *hp)
+ {
+- return (struct mdesc_elem *) (mdesc + 1);
++ return (struct mdesc_elem *) hp + offsetof(struct mdesc_handle, data);
+ }
+
+-static void *name_block(struct mdesc_hdr *mdesc)
++static void *name_block(struct mdesc_handle *hp)
+ {
+- return ((void *) node_block(mdesc)) + mdesc->node_sz;
++ struct mdesc_hdr *mdesc = &hp->mdesc;
++
++ return ((void *) node_block(hp)) + mdesc->node_sz;
+ }
+
+-static void *data_block(struct mdesc_hdr *mdesc)
++static void *data_block(struct mdesc_handle *hp)
+ {
+- return ((void *) name_block(mdesc)) + mdesc->name_sz;
++ struct mdesc_hdr *mdesc = &hp->mdesc;
++
++ return ((void *) name_block(hp)) + mdesc->name_sz;
+ }
+
+ u64 mdesc_node_by_name(struct mdesc_handle *hp,
+ u64 from_node, const char *name)
+ {
+- struct mdesc_elem *ep = node_block(&hp->mdesc);
+- const char *names = name_block(&hp->mdesc);
++ struct mdesc_elem *ep = node_block(hp);
++ const char *names = name_block(hp);
+ u64 last_node = hp->mdesc.node_sz / 16;
+ u64 ret;
+
+@@ -657,15 +662,15 @@ EXPORT_SYMBOL(mdesc_node_by_name);
+ const void *mdesc_get_property(struct mdesc_handle *hp, u64 node,
+ const char *name, int *lenp)
+ {
+- const char *names = name_block(&hp->mdesc);
++ const char *names = name_block(hp);
+ u64 last_node = hp->mdesc.node_sz / 16;
+- void *data = data_block(&hp->mdesc);
++ void *data = data_block(hp);
+ struct mdesc_elem *ep;
+
+ if (node == MDESC_NODE_NULL || node >= last_node)
+ return NULL;
+
+- ep = node_block(&hp->mdesc) + node;
++ ep = node_block(hp) + node;
+ ep++;
+ for (; ep->tag != MD_NODE_END; ep++) {
+ void *val = NULL;
+@@ -702,8 +707,8 @@ EXPORT_SYMBOL(mdesc_get_property);
+
+ u64 mdesc_next_arc(struct mdesc_handle *hp, u64 from, const char *arc_type)
+ {
+- struct mdesc_elem *ep, *base = node_block(&hp->mdesc);
+- const char *names = name_block(&hp->mdesc);
++ struct mdesc_elem *ep, *base = node_block(hp);
++ const char *names = name_block(hp);
+ u64 last_node = hp->mdesc.node_sz / 16;
+
+ if (from == MDESC_NODE_NULL || from >= last_node)
+@@ -728,7 +733,7 @@ EXPORT_SYMBOL(mdesc_next_arc);
+
+ u64 mdesc_arc_target(struct mdesc_handle *hp, u64 arc)
+ {
+- struct mdesc_elem *ep, *base = node_block(&hp->mdesc);
++ struct mdesc_elem *ep, *base = node_block(hp);
+
+ ep = base + arc;
+
+@@ -738,8 +743,8 @@ EXPORT_SYMBOL(mdesc_arc_target);
+
+ const char *mdesc_node_name(struct mdesc_handle *hp, u64 node)
+ {
+- struct mdesc_elem *ep, *base = node_block(&hp->mdesc);
+- const char *names = name_block(&hp->mdesc);
++ struct mdesc_elem *ep, *base = node_block(hp);
++ const char *names = name_block(hp);
+ u64 last_node = hp->mdesc.node_sz / 16;
+
+ if (node == MDESC_NODE_NULL || node >= last_node)
+--
+2.30.2
+
diff --git a/board/raspberrypi/genimage-raspberrypicm4io-64.cfg b/board/raspberrypi/genimage-raspberrypicm4io-64.cfg
new file mode 100644
index 0000000000..32a7ca897d
--- /dev/null
+++ b/board/raspberrypi/genimage-raspberrypicm4io-64.cfg
@@ -0,0 +1,30 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "bcm2711-rpi-cm4.dtb",
+ "rpi-firmware/cmdline.txt",
+ "rpi-firmware/config.txt",
+ "rpi-firmware/fixup.dat",
+ "rpi-firmware/start.elf",
+ "rpi-firmware/overlays",
+ "Image"
+ }
+ }
+ size = 32M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ }
+}
diff --git a/board/raspberrypi/genimage-raspberrypicm4io.cfg b/board/raspberrypi/genimage-raspberrypicm4io.cfg
new file mode 100644
index 0000000000..5a42bcfbb4
--- /dev/null
+++ b/board/raspberrypi/genimage-raspberrypicm4io.cfg
@@ -0,0 +1,30 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "bcm2711-rpi-cm4.dtb",
+ "rpi-firmware/cmdline.txt",
+ "rpi-firmware/config.txt",
+ "rpi-firmware/fixup.dat",
+ "rpi-firmware/start.elf",
+ "rpi-firmware/overlays",
+ "zImage"
+ }
+ }
+ size = 32M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ }
+}
diff --git a/board/raspberrypi/readme.txt b/board/raspberrypi/readme.txt
index 8b3de6d251..62cb248633 100644
--- a/board/raspberrypi/readme.txt
+++ b/board/raspberrypi/readme.txt
@@ -9,6 +9,7 @@ These instructions apply to all models of the Raspberry Pi:
- the model B2 (aka Raspberry Pi 2)
- the model B3 (aka Raspberry Pi 3).
- the model B4 (aka Raspberry Pi 4).
+ - the model CM4 (aka Raspberry Pi Compute Module 4 and IO Board).
How to build it
===============
@@ -35,10 +36,26 @@ For model 3 B and B+:
$ make raspberrypi3_defconfig
+or for model 3 B and B+ (64 bit):
+
+ $ make raspberrypi3_64_defconfig
+
For model 4 B:
$ make raspberrypi4_defconfig
+or for model 4 B (64 bit):
+
+ $ make raspberrypi4_64_defconfig
+
+For model CM4 (on IO Board):
+
+ $ make raspberrypicm4io_defconfig
+
+or for CM4 (on IO Board - 64 bit):
+
+ $ make raspberrypicm4io_64_defconfig
+
Build the rootfs
----------------
@@ -63,6 +80,7 @@ After building, you should obtain this tree:
+-- bcm2710-rpi-3-b.dtb [1]
+-- bcm2710-rpi-3-b-plus.dtb [1]
+-- bcm2711-rpi-4-b.dtb [1]
+ +-- bcm2711-rpi-cm4.dtb [1]
+-- boot.vfat
+-- rootfs.ext4
+-- rpi-firmware/
@@ -97,3 +115,31 @@ Insert the SDcard into your Raspberry Pi, and power it up. Your new system
should come up now and start two consoles: one on the serial port on
the P1 header, one on the HDMI output where you can login using a USB
keyboard.
+
+How to write to CM4 eMMC memory
+===============================
+
+For CM4 modules without eMMC memory see above for booting from SD card,
+for CM4 moduels with eMMC memory proceed as following:
+
+- fit jumper on IO Board header J2 to disable eMMC boot
+- connect IO Board micro USB port (J11 USB slave) to your host linux system
+- power up CM4/IO Board (lsusb command should show a '0a5c:2711 Broadcom Corp.
+ BCM2711 Boot' device)
+- run 'sudo ./host/bin/rpiboot', output should look like the following:
+ Waiting for BCM2835/6/7/2711...
+ Loading embedded: bootcode4.bin
+ Sending bootcode.bin
+ Successful read 4 bytes
+ Waiting for BCM2835/6/7/2711...
+ Loading embedded: bootcode4.bin
+ Second stage boot server
+ Loading embedded: start4.elf
+ File read: start4.elf
+ Second stage boot server done
+
+- a USB mass storage device should show up (the CM4 eMMC memory), proceed
+ as described above to copy sdcard.img to it
+- power down CM4/IO Board
+- remove jumper on IO Board header J2 to re-enable eMMC boot
+- power up CM4/IO Board
diff --git a/board/raspberrypicm4io b/board/raspberrypicm4io
new file mode 120000
index 0000000000..fcdafc81ed
--- /dev/null
+++ b/board/raspberrypicm4io
@@ -0,0 +1 @@
+raspberrypi \ No newline at end of file
diff --git a/board/raspberrypicm4io-64 b/board/raspberrypicm4io-64
new file mode 120000
index 0000000000..fcdafc81ed
--- /dev/null
+++ b/board/raspberrypicm4io-64
@@ -0,0 +1 @@
+raspberrypi \ No newline at end of file
diff --git a/board/stmicroelectronics/stm32f469-disco/extlinux.conf b/board/stmicroelectronics/stm32f469-disco/extlinux.conf
new file mode 100644
index 0000000000..1c2db4383b
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/extlinux.conf
@@ -0,0 +1,4 @@
+label stm32f469-disco-buildroot
+ kernel /zImage
+ devicetree /stm32f469-disco.dtb
+ append console=ttySTM0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext2 rootwait earlyprintk consoleblank=0 ignore_loglevel
diff --git a/board/stmicroelectronics/stm32f469-disco/flash.sh b/board/stmicroelectronics/stm32f469-disco/flash.sh
index 0ec0beb2de..984d2b2599 100755
--- a/board/stmicroelectronics/stm32f469-disco/flash.sh
+++ b/board/stmicroelectronics/stm32f469-disco/flash.sh
@@ -13,8 +13,6 @@ ${OUTPUT_DIR}/host/bin/openocd -f board/stm32f469discovery.cfg \
-c "reset init" \
-c "flash probe 0" \
-c "flash info 0" \
- -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469i-disco.bin 0x08000000" \
- -c "flash write_image erase ${OUTPUT_DIR}/images/stm32f469-disco.dtb 0x08004000" \
- -c "flash write_image erase ${OUTPUT_DIR}/images/xipImage 0x08008000" \
+ -c "flash write_image erase ${OUTPUT_DIR}/images/u-boot.bin 0x08000000" \
-c "reset run" \
-c "shutdown"
diff --git a/board/stmicroelectronics/stm32f469-disco/genimage.cfg b/board/stmicroelectronics/stm32f469-disco/genimage.cfg
new file mode 100644
index 0000000000..bc945955fa
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/genimage.cfg
@@ -0,0 +1,27 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "zImage",
+ "stm32f469-disco.dtb",
+ "extlinux"
+ }
+ }
+ size = 16M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition u-boot {
+ partition-type = 0xC
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext2"
+ size = 32M
+ }
+}
+
diff --git a/board/stmicroelectronics/stm32f469-disco/linux.fragment b/board/stmicroelectronics/stm32f469-disco/linux.fragment
new file mode 100644
index 0000000000..90f5e8a8ff
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/linux.fragment
@@ -0,0 +1 @@
+# CONFIG_XIP_KERNEL is not set \ No newline at end of file
diff --git a/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch b/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
deleted file mode 100644
index 750e477dfc..0000000000
--- a/board/stmicroelectronics/stm32f469-disco/patches/linux/0001-ARM-stm32f249-disco-don-t-force-init-in-chosen-boota.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c8f8f33c2f0460a34c9545b01a7972a7ed2df0e9 Mon Sep 17 00:00:00 2001
-From: Christophe Priouzeau <christophe.priouzeau@st.com>
-Date: Mon, 29 May 2017 13:38:16 +0200
-Subject: [PATCH] ARM: stm32f249-disco: don't force init= in /chosen/bootargs
-
-There is no reason to override the kernel's default init= value, as
-this breaks userspace that assumes the kernel default of /init is
-used. Since stm32 is often used with a minimal bootloader
-(afboot-stm32) that doesn't provide any mechanism to override the DTB,
-we need to adjust the kernel command line in the Device Tree source.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
----
- arch/arm/boot/dts/stm32f469-disco.dts | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts
-index 0dd56ef..93ee1b2 100644
---- a/arch/arm/boot/dts/stm32f469-disco.dts
-+++ b/arch/arm/boot/dts/stm32f469-disco.dts
-@@ -53,7 +53,7 @@
- compatible = "st,stm32f469i-disco", "st,stm32f469";
-
- chosen {
-- bootargs = "root=/dev/ram rdinit=/linuxrc";
-+ bootargs = "root=/dev/ram";
- stdout-path = "serial0:115200n8";
- };
-
---
-2.7.4
-
diff --git a/board/stmicroelectronics/stm32f469-disco/post-build.sh b/board/stmicroelectronics/stm32f469-disco/post-build.sh
new file mode 100755
index 0000000000..ec20fca7d9
--- /dev/null
+++ b/board/stmicroelectronics/stm32f469-disco/post-build.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+BOARD_DIR="$(dirname $0)"
+
+install -m 0644 -D $BOARD_DIR/extlinux.conf $BINARIES_DIR/extlinux/extlinux.conf
diff --git a/board/stmicroelectronics/stm32f469-disco/readme.txt b/board/stmicroelectronics/stm32f469-disco/readme.txt
index 888bff08a1..c1e1d30e69 100644
--- a/board/stmicroelectronics/stm32f469-disco/readme.txt
+++ b/board/stmicroelectronics/stm32f469-disco/readme.txt
@@ -15,5 +15,17 @@ Flashing
./board/stmicroelectronics/stm32f469-disco/flash.sh output/
-It will flash the minimal bootloader, the Device Tree Blob, and the
-kernel image which includes the root filesystem as initramfs.
+It will flash the U-boot bootloader.
+
+Creating SD card
+----------------
+
+Buildroot prepares an"sdcard.img" image in the output/images/ directory,
+ready to be dumped on a SD card. Launch the following command as root:
+
+ dd if=output/images/sdcard.img of=/dev/<your-sd-device>
+
+*** WARNING! This will destroy all the card content. Use with care! ***
+
+For details about the medium image layout and its content, see the
+definition in board/stmicroelectronics/stm32f469-disco/genimage.cfg.
diff --git a/board/uevm5432/genimage.cfg b/board/uevm5432/genimage.cfg
new file mode 100644
index 0000000000..f30033f023
--- /dev/null
+++ b/board/uevm5432/genimage.cfg
@@ -0,0 +1,26 @@
+image boot.vfat {
+ vfat {
+ files = {
+ "MLO",
+ "u-boot.img"
+ }
+ }
+ size = 8M
+}
+
+image sdcard.img {
+ hdimage {
+ }
+
+ partition boot {
+ partition-type = 0xC
+ bootable = "true"
+ image = "boot.vfat"
+ }
+
+ partition rootfs {
+ partition-type = 0x83
+ image = "rootfs.ext4"
+ size = 512M
+ }
+}
diff --git a/board/uevm5432/readme.txt b/board/uevm5432/readme.txt
new file mode 100644
index 0000000000..4569fbd84e
--- /dev/null
+++ b/board/uevm5432/readme.txt
@@ -0,0 +1,40 @@
+OMAP5432 uEVM
+=============
+
+This file documents the Buildroot support for the OMAP5432 uEVM[1], a
+single-board computer development platform based on the Texas Instruments
+OMAP5432 system on a chip (SoC).
+
+How to build
+============
+
+ $ make uevm5432_defconfig
+ $ make
+
+How to write the SD card
+========================
+
+Once the build process is finished you will have an image called "sdcard.img"
+in the output/images/ directory.
+
+Copy the bootable "sdcard.img" onto an SD card with "dd":
+
+ $ sudo dd if=output/images/sdcard.img of=/dev/sdX
+ $ sync
+
+Where /dev/sdX is the device node of your SD card (may be /dev/mmcblkX instead
+depending on setup).
+
+To boot from SD card, set the SYSBOOT switches S1 of your OMAP5432 uEVM to the
+following position:
+
+ ON x x
+ x x
+ 1 2 3 4
+
+Insert the micro SDcard in your OMAP5432 uEVM, and power it up with the POWER
+ON push button switch S3. The console is on the micro USB Debug UART, with
+serial settings 115200 8N1. Refer also to the quick start guide[2].
+
+[1]: https://svtronics.com/5432
+[2]: https://www.ti.com/lit/ug/swcu131/swcu131.pdf