diff --git a/board/raspberrypi/config_0w.txt b/board/raspberrypi/config_0w.txt new file mode 100644 index 0000000000..195bad449e --- /dev/null +++ b/board/raspberrypi/config_0w.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtoverlay=krnbt=on diff --git a/board/raspberrypi/config_3.txt b/board/raspberrypi/config_3.txt new file mode 100644 index 0000000000..195bad449e --- /dev/null +++ b/board/raspberrypi/config_3.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtoverlay=krnbt=on diff --git a/board/raspberrypi/config_3_64bit.txt b/board/raspberrypi/config_3_64bit.txt new file mode 100644 index 0000000000..34412fa9e8 --- /dev/null +++ b/board/raspberrypi/config_3_64bit.txt @@ -0,0 +1,32 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtoverlay=krnbt=on + +# enable 64bits support +arm_64bit=1 diff --git a/board/raspberrypi/config_3_qt5we.txt b/board/raspberrypi/config_3_qt5we.txt new file mode 100644 index 0000000000..752310b179 --- /dev/null +++ b/board/raspberrypi/config_3_qt5we.txt @@ -0,0 +1,26 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start.elf +fixup_file=fixup.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=200 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt diff --git a/board/raspberrypi/config_4.txt b/board/raspberrypi/config_4.txt new file mode 100644 index 0000000000..ea02d3f071 --- /dev/null +++ b/board/raspberrypi/config_4.txt @@ -0,0 +1,29 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtoverlay=krnbt=on diff --git a/board/raspberrypi/config_4_64bit.txt b/board/raspberrypi/config_4_64bit.txt new file mode 100644 index 0000000000..41c7e97e99 --- /dev/null +++ b/board/raspberrypi/config_4_64bit.txt @@ -0,0 +1,36 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable autoprobing of Bluetooth driver without need of hciattach/btattach +dtoverlay=krnbt=on + +dtoverlay=vc4-kms-v3d-pi4 +dtoverlay=imx219 +#dtoverlay=ov5647 + +# enable 64bits support +arm_64bit=1 diff --git a/board/raspberrypi/config_cm4io.txt b/board/raspberrypi/config_cm4io.txt new file mode 100644 index 0000000000..01f60395b3 --- /dev/null +++ b/board/raspberrypi/config_cm4io.txt @@ -0,0 +1,26 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=zImage + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt diff --git a/board/raspberrypi/config_cm4io_64bit.txt b/board/raspberrypi/config_cm4io_64bit.txt new file mode 100644 index 0000000000..6cd8a729cd --- /dev/null +++ b/board/raspberrypi/config_cm4io_64bit.txt @@ -0,0 +1,30 @@ +# Please note that this is only a sample, we recommend you to change it to fit +# your needs. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. +# See http://buildroot.org/manual.html#rootfs-custom +# and http://elinux.org/RPiconfig for a description of config.txt syntax + +start_file=start4.elf +fixup_file=fixup4.dat + +kernel=Image + +# To use an external initramfs file +#initramfs rootfs.cpio.gz + +# Disable overscan assuming the display supports displaying the full resolution +# If the text shown on the screen disappears off the edge, comment this out +disable_overscan=1 + +# How much memory in MB to assign to the GPU on Pi models having +# 256, 512 or 1024 MB total memory +gpu_mem_256=100 +gpu_mem_512=100 +gpu_mem_1024=100 + +# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console +dtoverlay=miniuart-bt + +# enable 64bits support +arm_64bit=1 + diff --git a/package/rpi-firmware/config.txt b/board/raspberrypi/config_default.txt similarity index 79% rename from package/rpi-firmware/config.txt rename to board/raspberrypi/config_default.txt index 4a92a4dd95..c09ecca1a9 100644 --- a/package/rpi-firmware/config.txt +++ b/board/raspberrypi/config_default.txt @@ -1,11 +1,9 @@ # Please note that this is only a sample, we recommend you to change it to fit # your needs. -# You should override this file using a post-build script. +# You should override this file using BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE. # See http://buildroot.org/manual.html#rootfs-custom # and http://elinux.org/RPiconfig for a description of config.txt syntax -# We always use the same names, the real used variant is selected by -# BR2_PACKAGE_RPI_FIRMWARE_{DEFAULT,X,CD} choice start_file=start.elf fixup_file=fixup.dat diff --git a/board/raspberrypi/genimage-raspberrypi4-64.cfg b/board/raspberrypi/genimage-raspberrypi4-64.cfg index 854e0c7e31..3c480e98f0 100644 --- a/board/raspberrypi/genimage-raspberrypi4-64.cfg +++ b/board/raspberrypi/genimage-raspberrypi4-64.cfg @@ -4,8 +4,8 @@ image boot.vfat { "bcm2711-rpi-4-b.dtb", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", - "rpi-firmware/fixup.dat", - "rpi-firmware/start.elf", + "rpi-firmware/fixup4.dat", + "rpi-firmware/start4.elf", "rpi-firmware/overlays", "Image" } diff --git a/board/raspberrypi/genimage-raspberrypi4.cfg b/board/raspberrypi/genimage-raspberrypi4.cfg index 60e1f23bcc..4e4742f3ef 100644 --- a/board/raspberrypi/genimage-raspberrypi4.cfg +++ b/board/raspberrypi/genimage-raspberrypi4.cfg @@ -4,8 +4,8 @@ image boot.vfat { "bcm2711-rpi-4-b.dtb", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", - "rpi-firmware/fixup.dat", - "rpi-firmware/start.elf", + "rpi-firmware/fixup4.dat", + "rpi-firmware/start4.elf", "rpi-firmware/overlays", "zImage" } diff --git a/board/raspberrypi/genimage-raspberrypicm4io-64.cfg b/board/raspberrypi/genimage-raspberrypicm4io-64.cfg index 32a7ca897d..63806d0c31 100644 --- a/board/raspberrypi/genimage-raspberrypicm4io-64.cfg +++ b/board/raspberrypi/genimage-raspberrypicm4io-64.cfg @@ -4,8 +4,8 @@ image boot.vfat { "bcm2711-rpi-cm4.dtb", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", - "rpi-firmware/fixup.dat", - "rpi-firmware/start.elf", + "rpi-firmware/fixup4.dat", + "rpi-firmware/start4.elf", "rpi-firmware/overlays", "Image" } diff --git a/board/raspberrypi/genimage-raspberrypicm4io.cfg b/board/raspberrypi/genimage-raspberrypicm4io.cfg index 5a42bcfbb4..3ee9bf551a 100644 --- a/board/raspberrypi/genimage-raspberrypicm4io.cfg +++ b/board/raspberrypi/genimage-raspberrypicm4io.cfg @@ -4,8 +4,8 @@ image boot.vfat { "bcm2711-rpi-cm4.dtb", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", - "rpi-firmware/fixup.dat", - "rpi-firmware/start.elf", + "rpi-firmware/fixup4.dat", + "rpi-firmware/start4.elf", "rpi-firmware/overlays", "zImage" } diff --git a/board/raspberrypi/post-image.sh b/board/raspberrypi/post-image.sh index a6728c686e..6cad20fb9e 100755 --- a/board/raspberrypi/post-image.sh +++ b/board/raspberrypi/post-image.sh @@ -7,39 +7,6 @@ BOARD_NAME="$(basename ${BOARD_DIR})" GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg" GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" -for arg in "$@" -do - case "${arg}" in - --add-miniuart-bt-overlay) - if ! grep -qE '^dtoverlay=' "${BINARIES_DIR}/rpi-firmware/config.txt"; then - echo "Adding 'dtoverlay=miniuart-bt' to config.txt (fixes ttyAMA0 serial console)." - cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" - -# fixes rpi (3B, 3B+, 3A+, 4B and Zero W) ttyAMA0 serial console -dtoverlay=miniuart-bt,krnbt=on -__EOF__ - fi - ;; - --aarch64) - # Run a 64bits kernel (armv8) - sed -e '/^kernel=/s,=.*,=Image,' -i "${BINARIES_DIR}/rpi-firmware/config.txt" - if ! grep -qE '^arm_64bit=1' "${BINARIES_DIR}/rpi-firmware/config.txt"; then - cat << __EOF__ >> "${BINARIES_DIR}/rpi-firmware/config.txt" - -# enable 64bits support -arm_64bit=1 -__EOF__ - fi - ;; - --gpu_mem_256=*|--gpu_mem_512=*|--gpu_mem_1024=*) - # Set GPU memory - gpu_mem="${arg:2}" - sed -e "/^${gpu_mem%=*}=/s,=.*,=${gpu_mem##*=}," -i "${BINARIES_DIR}/rpi-firmware/config.txt" - ;; - esac - -done - # Pass an empty rootpath. genimage makes a full copy of the given rootpath to # ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk # space. We don't rely on genimage to build the rootfs image, just to insert a diff --git a/board/raspberrypi/readme.txt b/board/raspberrypi/readme.txt index 62cb248633..98c44d80a1 100644 --- a/board/raspberrypi/readme.txt +++ b/board/raspberrypi/readme.txt @@ -87,11 +87,14 @@ After building, you should obtain this tree: | +-- bootcode.bin | +-- cmdline.txt | +-- config.txt - | +-- fixup.dat - | +-- start.elf + | +-- fixup.dat [1] + | +-- fixup4.dat [1] + | +-- start.elf [1] + | +-- start4.elf [1] | `-- overlays/ [2] +-- sdcard.img - `-- zImage + +-- Image [1] + `-- zImage [1] [1] Not all of them will be present, depending on the RaspberryPi model you are using. diff --git a/configs/raspberrypi0_defconfig b/configs/raspberrypi0_defconfig index ffe4037db0..d309ae75e8 100644 --- a/configs/raspberrypi0_defconfig +++ b/configs/raspberrypi0_defconfig @@ -20,6 +20,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi0/config_default.txt" # BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set # Required tools to create the SD image diff --git a/configs/raspberrypi0w_defconfig b/configs/raspberrypi0w_defconfig index 1413c275b1..caa663d233 100644 --- a/configs/raspberrypi0w_defconfig +++ b/configs/raspberrypi0w_defconfig @@ -16,6 +16,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-zero-w" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi0w/config_0w.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -29,4 +32,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0w/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0w/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay" diff --git a/configs/raspberrypi2_defconfig b/configs/raspberrypi2_defconfig index 180dc84c41..29ff2f793c 100644 --- a/configs/raspberrypi2_defconfig +++ b/configs/raspberrypi2_defconfig @@ -22,6 +22,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi/config_default.txt" # BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set # Required tools to create the SD image diff --git a/configs/raspberrypi3_64_defconfig b/configs/raspberrypi3_64_defconfig index da43f2416e..61cc2346cb 100644 --- a/configs/raspberrypi3_64_defconfig +++ b/configs/raspberrypi3_64_defconfig @@ -21,6 +21,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi- BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3-64/config_3_64bit.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -34,4 +37,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3-64/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--aarch64 --add-miniuart-bt-overlay" diff --git a/configs/raspberrypi3_defconfig b/configs/raspberrypi3_defconfig index 48db2e4941..e6fcc067d0 100644 --- a/configs/raspberrypi3_defconfig +++ b/configs/raspberrypi3_defconfig @@ -21,6 +21,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-r BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -34,4 +37,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay" diff --git a/configs/raspberrypi3_qt5we_defconfig b/configs/raspberrypi3_qt5we_defconfig index 051b384314..4858203e6a 100644 --- a/configs/raspberrypi3_qt5we_defconfig +++ b/configs/raspberrypi3_qt5we_defconfig @@ -31,6 +31,9 @@ BR2_PACKAGE_QT5BASE_PNG=y BR2_PACKAGE_QT5WEBENGINE=y BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi3/config_3_qt5we.txt" BR2_PACKAGE_RPI_USERLAND=y BR2_PACKAGE_CA_CERTIFICATES=y BR2_PACKAGE_NTP=y @@ -48,4 +51,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="400M" BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --gpu_mem_1024=200" diff --git a/configs/raspberrypi4_64_defconfig b/configs/raspberrypi4_64_defconfig index d8d330ac25..53ba3e6486 100644 --- a/configs/raspberrypi4_64_defconfig +++ b/configs/raspberrypi4_64_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4-64/config_4_64bit.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -35,4 +36,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" diff --git a/configs/raspberrypi4_defconfig b/configs/raspberrypi4_defconfig index 04d13ef7db..424e3193fb 100644 --- a/configs/raspberrypi4_defconfig +++ b/configs/raspberrypi4_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi4/config_4.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -35,4 +36,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay" diff --git a/configs/raspberrypi_defconfig b/configs/raspberrypi_defconfig index dd51758912..31543afa4f 100644 --- a/configs/raspberrypi_defconfig +++ b/configs/raspberrypi_defconfig @@ -21,6 +21,9 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b bcm2708-rpi-b-plus bcm2708-rpi-c BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y +BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypi/config_default.txt" # BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set # Required tools to create the SD image diff --git a/configs/raspberrypicm4io_64_defconfig b/configs/raspberrypicm4io_64_defconfig index 7b21bd1294..c098099ee2 100644 --- a/configs/raspberrypicm4io_64_defconfig +++ b/configs/raspberrypicm4io_64_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io_64bit.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -38,4 +39,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypicm4io-64/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypicm4io-64/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64" diff --git a/configs/raspberrypicm4io_defconfig b/configs/raspberrypicm4io_defconfig index 0480462f41..11dc4cdfdb 100644 --- a/configs/raspberrypicm4io_defconfig +++ b/configs/raspberrypicm4io_defconfig @@ -22,6 +22,7 @@ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_PACKAGE_RPI_FIRMWARE=y BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y +BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE="board/raspberrypicm4io-64/config_cm4io.txt" # Required tools to create the SD image BR2_PACKAGE_HOST_DOSFSTOOLS=y @@ -38,4 +39,3 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" # BR2_TARGET_ROOTFS_TAR is not set BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypicm4io/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypicm4io/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay" diff --git a/package/rpi-firmware/Config.in b/package/rpi-firmware/Config.in index f5a25c5680..9e401829c6 100644 --- a/package/rpi-firmware/Config.in +++ b/package/rpi-firmware/Config.in @@ -11,63 +11,53 @@ config BR2_PACKAGE_RPI_FIRMWARE if BR2_PACKAGE_RPI_FIRMWARE -choice - bool "rpi variant" +config BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN + bool "rpi 0/1/2/3 bootcode.bin" help - The Raspberry Pi 4 introduced a slightly different naming - convention and set of boot files. This option controls which - format to use. + The bootcode.bin for versions Zero/1/2/3 (not needed on rpi4, + because it has been replaced by boot code in the onboard + EEPROM). config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI - bool "rpi 0/1/2/3" + bool "rpi 0/1/2/3 (default)" help - The default set of files, for versions pre-4 + The default set of files for versions Zero/1/2/3. + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X + bool "rpi 0/1/2/3 (extended)" + help + The extended set of files for versions Zero/1/2/3 (additional + GPU features, eg. more audio/video codecs). + +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD + bool "rpi 0/1/2/3 (cut-down)" + help + The cut-down set of files for versions Zero/1/2/3 (only + features required to boot a Linux kernel). config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4 - bool "rpi 4" + bool "rpi 4 (default)" help - The Raspberry Pi 4 files -endchoice + The default set of files for versions 4 (standard GPU + features). -choice - bool "Firmware to boot" - default BR2_PACKAGE_RPI_FIRMWARE_DEFAULT +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X + bool "rpi 4 (extended)" help - There are three different firmware files: - - the default firmware, that enables standard GPU - features; - - the extended firmware, that enables additional GPU - features (eg. more audio/video codecs); - - the cut-down firmware, for emergency situations, with - only features required to boot a Linux kernel. + The extended set of files for versions 4 (additional GPU + features, eg. more audio/video codecs). -config BR2_PACKAGE_RPI_FIRMWARE_DEFAULT - bool "default" +config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD + bool "rpi 4 (cut-down)" help - The default firmware, that enables standard GPU features. + The cut-down set of files for versions 4 (only features + required to boot a Linux kernel). -config BR2_PACKAGE_RPI_FIRMWARE_X - bool "extended ('x', more codecs)" +config BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE + string "Path to a file stored as boot/config.txt" help - The extended firmware, that enables additional GPU features - (eg. more audio/video codecs). - -config BR2_PACKAGE_RPI_FIRMWARE_CD - bool "cut-down ('cd', emergency)" - help - The cut-down firmware, for emergency situations, with only - features required to boot a Linux kernel. - -endchoice - -config BR2_PACKAGE_RPI_FIRMWARE_BOOT - string - default "" if BR2_PACKAGE_RPI_FIRMWARE_DEFAULT && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI - default "4" if BR2_PACKAGE_RPI_FIRMWARE_DEFAULT && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4 - default "_x" if BR2_PACKAGE_RPI_FIRMWARE_X && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI - default "4x" if BR2_PACKAGE_RPI_FIRMWARE_X && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4 - default "_cd" if BR2_PACKAGE_RPI_FIRMWARE_CD && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI - default "4cd" if BR2_PACKAGE_RPI_FIRMWARE_CD && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4 + Path to a file stored as config.txt in the boot partiton + of the generated SD card image. config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS bool "Install Device Tree Blobs (DTBs)" diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk index d74f7155c7..84b8cd735a 100644 --- a/package/rpi-firmware/rpi-firmware.mk +++ b/package/rpi-firmware/rpi-firmware.mk @@ -10,6 +10,29 @@ RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom RPI_FIRMWARE_INSTALL_IMAGES = YES +RPI_FIRMWARE_FILES = \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN), bootcode.bin) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI), start.elf fixup.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X), startx.elf fixupx.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_CD), start_cd.elf fixup_cd.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4), start4.elf fixup4.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_X), start4x.elf fixup4x.dat) \ + $(if $(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4_CD), start4cd.elf fixup4cd.dat) + +define RPI_FIRMWARE_INSTALL_BIN + $(foreach f,$(RPI_FIRMWARE_FILES), \ + $(INSTALL) -D -m 0644 $(@D)/boot/$(f) $(BINARIES_DIR)/rpi-firmware/$(f) + ) +endef + +RPI_FIRMWARE_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_CONFIG_FILE)) +ifneq ($(PACKAGE_RPI_FIRMWARE_CONFIG_FILE),) +define RPI_FIRMWARE_INSTALL_CONFIG + $(INSTALL) -D -m 0644 $(PACKAGE_RPI_FIRMWARE_CONFIG_FILE) \ + $(BINARIES_DIR)/rpi-firmware/config.txt +endef +endif + ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y) define RPI_FIRMWARE_INSTALL_DTB $(foreach dtb,$(wildcard $(@D)/boot/*.dtb), \ @@ -41,19 +64,10 @@ define RPI_FIRMWARE_INSTALL_TARGET_CMDS endef endif # INSTALL_VCDBG -ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI),y) -# bootcode.bin is not used on rpi4, because it has been replaced by boot code in the onboard EEPROM -define RPI_FIRMWARE_INSTALL_BOOTCODE_BIN - $(INSTALL) -D -m 0644 $(@D)/boot/bootcode.bin $(BINARIES_DIR)/rpi-firmware/bootcode.bin -endef -endif - define RPI_FIRMWARE_INSTALL_IMAGES_CMDS - $(INSTALL) -D -m 0644 package/rpi-firmware/config.txt $(BINARIES_DIR)/rpi-firmware/config.txt $(INSTALL) -D -m 0644 package/rpi-firmware/cmdline.txt $(BINARIES_DIR)/rpi-firmware/cmdline.txt - $(INSTALL) -D -m 0644 $(@D)/boot/start$(BR2_PACKAGE_RPI_FIRMWARE_BOOT).elf $(BINARIES_DIR)/rpi-firmware/start.elf - $(INSTALL) -D -m 0644 $(@D)/boot/fixup$(BR2_PACKAGE_RPI_FIRMWARE_BOOT).dat $(BINARIES_DIR)/rpi-firmware/fixup.dat - $(RPI_FIRMWARE_INSTALL_BOOTCODE_BIN) + $(RPI_FIRMWARE_INSTALL_BIN) + $(RPI_FIRMWARE_INSTALL_CONFIG) $(RPI_FIRMWARE_INSTALL_DTB) $(RPI_FIRMWARE_INSTALL_DTB_OVERLAYS) endef