summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-agl-bsp/conf/machine/include/rpi4-base.inc121
-rw-r--r--meta-agl-bsp/conf/machine/raspberrypi4.conf36
2 files changed, 144 insertions, 13 deletions
diff --git a/meta-agl-bsp/conf/machine/include/rpi4-base.inc b/meta-agl-bsp/conf/machine/include/rpi4-base.inc
new file mode 100644
index 000000000..36a8daf1a
--- /dev/null
+++ b/meta-agl-bsp/conf/machine/include/rpi4-base.inc
@@ -0,0 +1,121 @@
+include conf/machine/include/rpi-default-settings.inc
+include conf/machine/include/rpi-default-versions.inc
+include conf/machine/include/rpi-default-providers.inc
+
+SOC_FAMILY = "rpi"
+include conf/machine/include/soc-family.inc
+
+IMAGE_FSTYPES ?= "tar.bz2 ext3 rpi-sdimg"
+WKS_FILE ?= "sdimage-raspberrypi.wks"
+
+XSERVER = " \
+ xserver-xorg \
+ ${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "xserver-xorg-extension-glx", "", d)} \
+ ${@bb.utils.contains("MACHINE_FEATURES", "vc4graphics", "xf86-video-modesetting", "xf86-video-fbdev", d)} \
+ "
+
+RPI_KERNEL_DEVICETREE_OVERLAYS ?= " \
+ overlays/at86rf233.dtbo \
+ overlays/dwc2.dtbo \
+ overlays/gpio-key.dtbo \
+ overlays/hifiberry-amp.dtbo \
+ overlays/hifiberry-dac.dtbo \
+ overlays/hifiberry-dacplus.dtbo \
+ overlays/hifiberry-digi.dtbo \
+ overlays/i2c-rtc.dtbo \
+ overlays/iqaudio-dac.dtbo \
+ overlays/iqaudio-dacplus.dtbo \
+ overlays/mcp2515-can0.dtbo \
+ overlays/pi3-disable-bt.dtbo \
+ overlays/pi3-miniuart-bt.dtbo \
+ overlays/pitft22.dtbo \
+ overlays/pitft28-resistive.dtbo \
+ overlays/pitft35-resistive.dtbo \
+ overlays/pps-gpio.dtbo \
+ overlays/rpi-ft5406.dtbo \
+ overlays/rpi-poe.dtbo \
+ overlays/vc4-kms-v3d.dtbo \
+ overlays/vc4-fkms-v3d.dtbo \
+ overlays/w1-gpio-pullup.dtbo \
+ overlays/w1-gpio.dtbo \
+ "
+
+RPI_KERNEL_DEVICETREE ?= " \
+ bcm2708-rpi-zero-w.dtb \
+ bcm2708-rpi-b.dtb \
+ bcm2708-rpi-b-plus.dtb \
+ bcm2709-rpi-2-b.dtb \
+ bcm2710-rpi-3-b.dtb \
+ bcm2710-rpi-3-b-plus.dtb \
+ bcm2711-rpi-4-b.dtb \
+ bcm2708-rpi-cm.dtb \
+ bcm2710-rpi-cm3.dtb \
+ "
+
+KERNEL_DEVICETREE ?= " \
+ ${RPI_KERNEL_DEVICETREE} \
+ ${RPI_KERNEL_DEVICETREE_OVERLAYS} \
+ "
+
+# By default:
+#
+# * When u-boot is disabled use the "Image" format which can be directly loaded
+# by the rpi firmware.
+#
+# * When u-boot is enabled use the "uImage" format and the "bootm" command
+# within u-boot to load the kernel.
+KERNEL_BOOTCMD ??= "bootm"
+KERNEL_IMAGETYPE_UBOOT ??= "uImage"
+KERNEL_IMAGETYPE_DIRECT ??= "zImage"
+KERNEL_IMAGETYPE ?= "${@bb.utils.contains('RPI_USE_U_BOOT', '1', \
+ '${KERNEL_IMAGETYPE_UBOOT}', '${KERNEL_IMAGETYPE_DIRECT}', d)}"
+
+MACHINE_FEATURES += "apm usbhost keyboard vfat ext2 screen touchscreen alsa bluetooth wifi sdio ${@bb.utils.contains('DISABLE_VC4GRAPHICS', '1', '', 'vc4graphics', d)}"
+
+# Raspberry Pi has no hardware clock
+MACHINE_FEATURES_BACKFILL_CONSIDERED = "rtc"
+
+MACHINE_EXTRA_RRECOMMENDS += " kernel-modules udev-rules-rpi"
+
+# Set Raspberrypi splash image
+SPLASH = "psplash-raspberrypi"
+
+def make_dtb_boot_files(d):
+ # Generate IMAGE_BOOT_FILES entries for device tree files listed in
+ # KERNEL_DEVICETREE.
+ alldtbs = d.getVar('KERNEL_DEVICETREE')
+ imgtyp = d.getVar('KERNEL_IMAGETYPE')
+
+ def transform(dtb):
+ base = os.path.basename(dtb)
+ if dtb.endswith('dtb'):
+ # eg: whatever/bcm2708-rpi-b.dtb has:
+ # DEPLOYDIR file: bcm2708-rpi-b.dtb
+ # destination: bcm2708-rpi-b.dtb
+ return base
+ elif dtb.endswith('dtbo'):
+ # overlay dtb:
+ # eg: overlays/hifiberry-amp.dtbo has:
+ # DEPLOYDIR file: hifiberry-amp.dtbo
+ # destination: overlays/hifiberry-amp.dtbo
+ return '{};{}'.format(base, dtb)
+
+ return ' '.join([transform(dtb) for dtb in alldtbs.split(' ') if dtb])
+
+
+IMAGE_BOOT_FILES ?= "bcm2835-bootfiles/* \
+ ${@make_dtb_boot_files(d)} \
+ ${@bb.utils.contains('RPI_USE_U_BOOT', '1', \
+ '${KERNEL_IMAGETYPE} u-boot.bin;${SDIMG_KERNELIMAGE} boot.scr', \
+ '${KERNEL_IMAGETYPE};${SDIMG_KERNELIMAGE}', d)} \
+ "
+do_image_wic[depends] += " \
+ bcm2835-bootfiles:do_deploy \
+ ${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot:do_deploy', '',d)} \
+ "
+
+do_image_wic[recrdeps] = "do_build"
+
+# The kernel image is installed into the FAT32 boot partition and does not need
+# to also be installed into the rootfs.
+RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""
diff --git a/meta-agl-bsp/conf/machine/raspberrypi4.conf b/meta-agl-bsp/conf/machine/raspberrypi4.conf
index 2f759286f..1679fb500 100644
--- a/meta-agl-bsp/conf/machine/raspberrypi4.conf
+++ b/meta-agl-bsp/conf/machine/raspberrypi4.conf
@@ -1,26 +1,36 @@
#@TYPE: Machine
-#@NAME: RaspberryPi 4 Development Board (32bit)
-#@DESCRIPTION: Machine configuration for the RaspberryPi 4 in 32 bit mode
+#@NAME: RaspberryPi 4 Development Board (64bit)
+#@DESCRIPTION: Machine configuration for the RaspberryPi 4 in 64 bits mode
-DEFAULTTUNE ?= "cortexa7thf-neon-vfpv4"
-require conf/machine/include/tune-cortexa7.inc
-include conf/machine/include/rpi-base.inc
+MACHINEOVERRIDES = "raspberrypi4:${MACHINE}"
MACHINE_EXTRA_RRECOMMENDS += "\
linux-firmware-rpidistro-bcm43455 \
bluez-firmware-rpidistro-bcm4345c0-hcd \
- pi-bluetooth \
"
-# 'l' stands for LPAE
-SDIMG_KERNELIMAGE ?= "kernel7l.img"
-UBOOT_MACHINE = "rpi_4_32b_config"
+require conf/machine/include/arm/arch-arm64.inc
+include conf/machine/include/rpi4-base.inc
+
+RPI_KERNEL_DEVICETREE = " \
+ broadcom/bcm2711-rpi-4-b.dtb \
+"
+
+SDIMG_KERNELIMAGE ?= "kernel8.img"
SERIAL_CONSOLES ?= "115200;ttyS0"
MACHINE_FEATURES_append = " vc4graphics"
+UBOOT_MACHINE = "rpi_4_config"
+
VC4DTBO ?= "vc4-fkms-v3d"
-RPI_KERNEL_DEVICETREE_OVERLAYS_remove_raspberrypi4 = "overlays/lirc-rpi.dtbo"
-RPI_KERNEL_DEVICETREE_OVERLAYS_append_raspberrypi4 = " overlays/mcp2515-can0.dtbo overlays/vc4-fkms-v3d.dtbo"
-RPI_KERNEL_DEVICETREE_remove_raspberrypi4 = "bcm2708-rpi-0-w.dtb"
-RPI_KERNEL_DEVICETREE_append_raspberrypi4 = " bcm2708-rpi-zero-w.dtb bcm2711-rpi-4-b.dtb"
+# When u-boot is enabled we need to use the "Image" format and the "booti"
+# command to load the kernel
+KERNEL_IMAGETYPE_UBOOT ?= "Image"
+# "zImage" not supported on arm64 and ".gz" images not supported by bootloader yet
+KERNEL_IMAGETYPE_DIRECT ?= "Image"
+KERNEL_BOOTCMD ?= "booti"
+
+RPI_EXTRA_CONFIG ?= "\n# Force arm in 64bit mode. See: https://github.com/raspberrypi/firmware/issues/1193.\narm_64bit=1"
+
+ARMSTUB ?= "armstub8-gic.bin"