diff --git a/.gitlab-ci/farm-rules.yml b/.gitlab-ci/farm-rules.yml index 2241198c82d..44535645a9b 100644 --- a/.gitlab-ci/farm-rules.yml +++ b/.gitlab-ci/farm-rules.yml @@ -35,7 +35,7 @@ # austriancoder | ci-tron | @austriancoder # collabora | lava | @daniels, @sergi # google-freedreno | none (moving to LAVA) | @daniels, @sergi -# igalia | baremetal/poe-powered | @jasuarez, @chema +# igalia | baremetal/poe-powered, ci-tron | @jasuarez, @chema # lima | lava | @enunes # microsoft | custom | @jenatali, @alatiera # ondracka | ci-tron | @ondracka diff --git a/src/broadcom/ci/gitlab-ci-inc.yml b/src/broadcom/ci/gitlab-ci-inc.yml index c9656e853bc..c77c2281d09 100644 --- a/src/broadcom/ci/gitlab-ci-inc.yml +++ b/src/broadcom/ci/gitlab-ci-inc.yml @@ -152,6 +152,147 @@ tags: - igalia-rpi5 + +# 1 device (2025-05-12) +.igalia-bcm2835-vc4: + variables: + RPI_MODEL: bcm2835-vc4 + RPI_CONFIG_TXT_EXTRAS: | + [pi3] + # Disable bluetooth so that we can have serial, as they use the same GPIO lines. + dtoverlay=disable-bt + # Enable the KMS driver + dtoverlay=vc4-kms-v3d + GPU_VERSION: "broadcom-rpi3" + + +# 1 device (2025-05-12) +.igalia-bcm2711-vc5: + variables: + RPI_MODEL: bcm2711-vc5 + RPI_CONFIG_TXT_EXTRAS: | + [pi4] + # Disable bluetooth so that we can have serial, as they use the same GPIO lines. + dtoverlay=disable-bt + # Enable the KMS driver + dtoverlay=vc4-kms-v3d-pi4 + GPU_VERSION: "broadcom-rpi4" + + +# 1 device (2025-05-12) +.igalia-bcm2712-vc6: + variables: + RPI_MODEL: bcm2712-vc6 + RPI_CONFIG_TXT_EXTRAS: | + [pi5] + # Disable bluetooth so that we can have serial, as they use the same GPIO lines. + dtoverlay=disable-bt,uart0_console + # Enable the KMS driver + dtoverlay=vc4-kms-v3d-pi5 + GPU_VERSION: "broadcom-rpi5" + + +.ci-tron-broadcom: + extends: + - .ci-tron-b2c-diskless-v1 + variables: + RPI_DOWNSTREAM_PACKAGE_VERSION: '1.20250430' + RPI_DOWNSTREAM_KERNEL_VERSION: '6.12.25' + # An uprev should only change the two variables above, and technically the + # kernel version could instead be set to `.*` in the regex below, but + # having it here documents this information well. + RPI_DOWNSTREAM_PACKAGE_URL: 'https://github.com/raspberrypi/firmware/archive/refs/tags/$RPI_DOWNSTREAM_PACKAGE_VERSION.zip' + CI_TRON_DUT_SETUP_TAGS: dt_gpu:model:$RPI_MODEL,cpu:arch:$RPI_ARCH + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_BOOTLOADER__0__PATH: '/config.txt' + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_BOOTLOADER__0__DATA: | + [all] + $RPI_CONFIG_TXT_64BIT + enable_uart=1 + kernel={{ job.tftp.path_to("kernel") }} + initramfs {{ job.tftp.path_to("initramfs") }} followkernel + $RPI_CONFIG_TXT_EXTRAS + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_BOOTLOADER__1__PATH: '/cmdline.txt' + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_BOOTLOADER__1__DATA: >- + modules_load=overlay,vc4,v3d,snd_soc_hdmi_codec,i2c-brcmstb,i2c-bcm2835,nbd + {{ job.deployment.kernel.cmdline }} + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_PLATFORM__0__URL: $RPI_DOWNSTREAM_PACKAGE_URL + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_PLATFORM__0__PATH: '/(.*)' + CI_TRON_TFTP_ARTIFACT_CATEGORY__50_PLATFORM__0__FORMAT__0__ARCHIVE__MATCH: 'firmware-$RPI_DOWNSTREAM_PACKAGE_VERSION/boot/\1' + CI_TRON_KERNEL__URL: $RPI_DOWNSTREAM_PACKAGE_URL + CI_TRON_KERNEL__FORMAT__0__ARCHIVE__MATCH: 'firmware-$RPI_DOWNSTREAM_PACKAGE_VERSION/boot/$RPI_KERNEL.img' + CI_TRON_INITRAMFS_CATEGORY__50_KERNEL_MODULES__0__URL: $RPI_DOWNSTREAM_PACKAGE_URL + CI_TRON_INITRAMFS_CATEGORY__50_KERNEL_MODULES__0__FORMAT__0__ARCHIVE__EXTENSION: 'cpio' + CI_TRON_INITRAMFS_CATEGORY__50_KERNEL_MODULES__0__FORMAT__0__ARCHIVE__KEEP__0__PATH: 'firmware-$RPI_DOWNSTREAM_PACKAGE_VERSION/(modules/$RPI_DOWNSTREAM_KERNEL_VERSION-$RPI_MODULES\+?/(modules|kernel/(fs/overlayfs|sound|drivers/(block/nbd|gpu|i2c/busses/i2c-br?cm|media/cec|video))).*)' + CI_TRON_INITRAMFS_CATEGORY__50_KERNEL_MODULES__0__FORMAT__0__ARCHIVE__KEEP__0__REWRITE: 'usr/lib/\1' + VK_DRIVER: broadcom + FLAKES_CHANNEL: "#videocore-ci" + tags: + - farm:igalia + - dt_gpu:model:$RPI_MODEL + + +# For RPI_KERNEL, see KERNEL in +# https://www.raspberrypi.com/documentation/computers/linux_kernel.html#native-build-configuration +# For RPI_MODULES, it's not really documented anywhere, but the options +# (in the current version) are v7, v7l, v8, v8-16k, with the last one +# corresponding to kernel_2712, for the rpi5, and the other ones +# corresponding to their s/v/kernel/ counterpart. +.ci-tron-broadcom-rpi3:arm32: + extends: + - .igalia-bcm2835-vc4 + - .ci-tron-broadcom + variables: + CI_TRON__B2C_DISKLESS_IMAGESTORE_PLATFORM: linux/arm/v7 + RPI_ARCH: armv7l + RPI_CONFIG_TXT_64BIT: 'arm_64bit=0' + RPI_KERNEL: 'kernel7' + RPI_MODULES: 'v7' + +.ci-tron-broadcom-rpi3:arm64: + extends: + - .igalia-bcm2835-vc4 + - .ci-tron-broadcom + variables: + CI_TRON__B2C_DISKLESS_IMAGESTORE_PLATFORM: linux/arm64/v8 + RPI_ARCH: aarch64 + RPI_CONFIG_TXT_64BIT: 'arm_64bit=1' + RPI_KERNEL: 'kernel8' + RPI_MODULES: 'v8' + +.ci-tron-broadcom-rpi4:arm32: + extends: + - .igalia-bcm2711-vc5 + - .ci-tron-broadcom + variables: + CI_TRON__B2C_DISKLESS_IMAGESTORE_PLATFORM: linux/arm/v7 + RPI_ARCH: armv7l + RPI_CONFIG_TXT_64BIT: 'arm_64bit=0' + RPI_KERNEL: 'kernel7l' + RPI_MODULES: 'v7l' + +.ci-tron-broadcom-rpi4:arm64: + extends: + - .igalia-bcm2711-vc5 + - .ci-tron-broadcom + variables: + CI_TRON__B2C_DISKLESS_IMAGESTORE_PLATFORM: linux/arm64/v8 + RPI_ARCH: aarch64 + RPI_CONFIG_TXT_64BIT: 'arm_64bit=1' + RPI_KERNEL: 'kernel8' + RPI_MODULES: 'v8' + +.ci-tron-broadcom-rpi5:arm64: + extends: + - .igalia-bcm2712-vc6 + - .ci-tron-broadcom + variables: + CI_TRON__B2C_DISKLESS_IMAGESTORE_PLATFORM: linux/arm64/v8 + RPI_ARCH: aarch64 + RPI_CONFIG_TXT_64BIT: 'arm_64bit=1' + RPI_KERNEL: 'kernel_2712' + RPI_MODULES: 'v8-16k' + + .broadcom-test: script: - ./install/bare-metal/poe-powered.sh