summaryrefslogtreecommitdiff
path: root/meta-raspberrypi
diff options
context:
space:
mode:
Diffstat (limited to 'meta-raspberrypi')
-rw-r--r--meta-raspberrypi/.github/actions/docker-build/action.yml2
-rw-r--r--meta-raspberrypi/.github/workflows/compliance.yml4
-rw-r--r--meta-raspberrypi/.github/workflows/docker-images/README.md2
-rw-r--r--meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile18
-rw-r--r--meta-raspberrypi/.github/workflows/yocto-builds.yml4
-rw-r--r--meta-raspberrypi/.github/workflows/yocto-layer.yml3
-rw-r--r--meta-raspberrypi/.readthedocs.yaml2
-rw-r--r--meta-raspberrypi/conf/machine/include/rpi-base.inc16
-rw-r--r--meta-raspberrypi/conf/machine/raspberrypi-armv8.conf4
-rw-r--r--meta-raspberrypi/conf/machine/raspberrypi5.conf4
-rw-r--r--meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb8
-rw-r--r--meta-raspberrypi/recipes-bsp/rpi-eeprom/rpi-eeprom_git.bb8
-rw-r--r--meta-raspberrypi/recipes-bsp/u-boot/files/maxsize.cfg1
-rw-r--r--meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend1
-rw-r--r--meta-raspberrypi/recipes-devtools/raspi-utils/raspi-utils_git.bb53
-rw-r--r--meta-raspberrypi/recipes-graphics/mesa/mesa/0001-dont-build-clover-frontend.patch29
-rw-r--r--meta-raspberrypi/recipes-graphics/mesa/mesa/0001-fix-FTBFS-clc-switch-to-new-non-owned-TargetOptions-.patch39
-rw-r--r--meta-raspberrypi/recipes-graphics/mesa/mesa/0001-freedreno-don-t-encode-build-path-into-binaries.patch110
-rw-r--r--meta-raspberrypi/recipes-graphics/mesa/mesa/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch24
-rw-r--r--meta-raspberrypi/recipes-graphics/mesa/mesa_25.1.6.bb383
-rw-r--r--meta-raspberrypi/recipes-graphics/wayland/wayland-protocols_1.45.bb27
-rw-r--r--meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0001-Default-43455-firmware-to-standard-variant.patch28
-rw-r--r--meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0002-Default-all-RPi-43455-boards-to-standard-variant.patch79
-rw-r--r--meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb33
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/files/android-drivers.cfg5
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/files/vc4graphics.cfg1
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.12.bb6
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc2
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.12.bb31
-rw-r--r--meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb6
30 files changed, 864 insertions, 69 deletions
diff --git a/meta-raspberrypi/.github/actions/docker-build/action.yml b/meta-raspberrypi/.github/actions/docker-build/action.yml
index b91668e366..c1a37f602b 100644
--- a/meta-raspberrypi/.github/actions/docker-build/action.yml
+++ b/meta-raspberrypi/.github/actions/docker-build/action.yml
@@ -32,7 +32,7 @@ runs:
n=1
until [ "$n" -gt "$tries" ]; do
echo "Building the docker image ${{ inputs.docker_image }}-${{ inputs.id }}... try $n..."
- if docker build . -f "${{ inputs.docker_image }}/Dockerfile" -t "${{ inputs.docker_image }}-${{ inputs.id }}"; then
+ if docker build --no-cache . -f "${{ inputs.docker_image }}/Dockerfile" -t "${{ inputs.docker_image }}-${{ inputs.id }}"; then
# This can fail if a dangling images cleaning job runs in
# parallel. So we try this a couple of times to minimize
# conflict. This is because while building, docker creates a
diff --git a/meta-raspberrypi/.github/workflows/compliance.yml b/meta-raspberrypi/.github/workflows/compliance.yml
index ec489f0095..1207acbdd3 100644
--- a/meta-raspberrypi/.github/workflows/compliance.yml
+++ b/meta-raspberrypi/.github/workflows/compliance.yml
@@ -23,7 +23,9 @@ jobs:
id: ${{ github.event.number }}
- name: Do DCO check
run: |
- docker run --rm -v "$GITHUB_WORKSPACE:/work:ro" \
+ docker run --rm --security-opt apparmor=unconfined \
+ --security-opt seccomp=unconfined \
+ -v "$GITHUB_WORKSPACE:/work:ro" \
--env "BASE_REF=$GITHUB_BASE_REF" \
"dco-check-${{ github.event.number }}"
- name: Cleanup temporary docker image
diff --git a/meta-raspberrypi/.github/workflows/docker-images/README.md b/meta-raspberrypi/.github/workflows/docker-images/README.md
index 86cfddc191..7b8fce8b24 100644
--- a/meta-raspberrypi/.github/workflows/docker-images/README.md
+++ b/meta-raspberrypi/.github/workflows/docker-images/README.md
@@ -17,5 +17,5 @@ passing the appropriate `-f` argument.
Here is an example for building the `dco-check` image:
```
-docker build . -f dco-check/Dockerfile -t dco-check
+docker build --no-cache . -f dco-check/Dockerfile -t dco-check
```
diff --git a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile
index 87221b9e79..728b473d62 100644
--- a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile
+++ b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile
@@ -2,20 +2,21 @@
#
# SPDX-License-Identifier: MIT
-FROM ubuntu:20.04
+FROM ubuntu:22.04
ARG DEBIAN_FRONTEND="noninteractive"
-RUN apt-get update -qq
+RUN apt-get update -q -y
RUN apt-get install -y eatmydata
# Yocto/OE build host dependencies
# Keep this in sync with
-# https://git.yoctoproject.org/poky/tree/documentation/poky.yaml
+# https://git.yoctoproject.org/poky/tree/documentation/poky.yaml.in
+# https://git.yoctoproject.org/poky/tree/documentation/tools/host_packages_scripts/ubuntu_essential.sh
RUN eatmydata apt-get install -qq -y \
- gawk wget git diffstat unzip texinfo gcc build-essential chrpath \
- socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
- iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
- pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool
+ build-essential chrpath cpio debianutils diffstat file gawk gcc \
+ git iputils-ping libacl1 liblz4-tool locales python3 python3-git \
+ python3-jinja2 python3-pexpect python3-pip python3-subunit socat \
+ texinfo unzip wget xz-utils zstd
# en_US.UTF-8 is required by the build system
RUN eatmydata apt-get install -qq -y locales \
@@ -29,6 +30,9 @@ RUN eatmydata apt-get clean && rm -rf /var/lib/apt/lists/*
RUN echo "dash dash/sh boolean false" | debconf-set-selections \
&& dpkg-reconfigure dash
+# Fix the resource exhaustion problem on the build infrastructure
+RUN echo 'vm.max_map_count = 4048576' >> /etc/sysctl.conf
+
# Run under normal user called 'ci'
RUN useradd --create-home --uid 1000 --shell /usr/bin/bash ci
USER ci
diff --git a/meta-raspberrypi/.github/workflows/yocto-builds.yml b/meta-raspberrypi/.github/workflows/yocto-builds.yml
index 408d25ea29..87b009b0a8 100644
--- a/meta-raspberrypi/.github/workflows/yocto-builds.yml
+++ b/meta-raspberrypi/.github/workflows/yocto-builds.yml
@@ -66,7 +66,8 @@ jobs:
if: steps.changed-files-specific.outputs.any_changed == 'true'
- name: Build the image
run: |
- docker run --rm \
+ docker run --rm --security-opt apparmor=unconfined \
+ --security-opt seccomp=unconfined \
-v "$GITHUB_WORKSPACE:/work:ro" \
-v "$DL_DIR:$DL_DIR:rw" \
-v "$SSTATE_DIR:$SSTATE_DIR:rw" \
@@ -76,6 +77,7 @@ jobs:
--env "IMAGE=${{ matrix.image }}" \
--env "DL_DIR=$DL_DIR" \
--env "SSTATE_DIR=$SSTATE_DIR" \
+ --ulimit "nofile=1024:1048576" \
"yocto-builder-${{ github.event.number }}" \
/entrypoint-build.sh
if: steps.changed-files-specific.outputs.any_changed == 'true'
diff --git a/meta-raspberrypi/.github/workflows/yocto-layer.yml b/meta-raspberrypi/.github/workflows/yocto-layer.yml
index fa11815f1e..555241b105 100644
--- a/meta-raspberrypi/.github/workflows/yocto-layer.yml
+++ b/meta-raspberrypi/.github/workflows/yocto-layer.yml
@@ -42,7 +42,8 @@ jobs:
if: steps.changed-files-specific.outputs.any_changed == 'true'
- name: Run yocto-check-layer
run: |
- docker run --rm -v "$GITHUB_WORKSPACE:/work:ro" \
+ docker run --rm --security-opt apparmor=unconfined \
+ -v "$GITHUB_WORKSPACE:/work:ro" \
--env "BASE_REF=$GITHUB_BASE_REF" \
"yocto-builder-${{ github.event.number }}" \
/entrypoint-yocto-check-layer.sh
diff --git a/meta-raspberrypi/.readthedocs.yaml b/meta-raspberrypi/.readthedocs.yaml
index 5e8dc2074d..1438e1750d 100644
--- a/meta-raspberrypi/.readthedocs.yaml
+++ b/meta-raspberrypi/.readthedocs.yaml
@@ -1,5 +1,7 @@
version: 2
+sphinx:
+ configuration: docs/conf.py
build:
os: ubuntu-22.04
tools:
diff --git a/meta-raspberrypi/conf/machine/include/rpi-base.inc b/meta-raspberrypi/conf/machine/include/rpi-base.inc
index a5fd1a4578..9a8cadec92 100644
--- a/meta-raspberrypi/conf/machine/include/rpi-base.inc
+++ b/meta-raspberrypi/conf/machine/include/rpi-base.inc
@@ -58,15 +58,30 @@ RPI_KERNEL_DEVICETREE_OVERLAYS ?= " \
overlays/pps-gpio.dtbo \
overlays/rpi-ft5406.dtbo \
overlays/rpi-poe.dtbo \
+ overlays/uart0.dtbo \
+ overlays/uart0-pi5.dtbo \
+ overlays/uart1.dtbo \
+ overlays/uart1-pi5.dtbo \
+ overlays/uart2.dtbo \
+ overlays/uart2-pi5.dtbo \
+ overlays/uart3.dtbo \
+ overlays/uart3-pi5.dtbo \
+ overlays/uart4.dtbo \
+ overlays/uart4-pi5.dtbo \
+ overlays/uart5.dtbo \
overlays/vc4-fkms-v3d.dtbo \
overlays/vc4-fkms-v3d-pi4.dtbo \
overlays/vc4-kms-v3d.dtbo \
overlays/vc4-kms-v3d-pi4.dtbo \
overlays/vc4-kms-v3d-pi5.dtbo \
overlays/vc4-kms-dsi-7inch.dtbo \
+ overlays/vc4-kms-dsi-ili9881-7inch.dtbo \
+ overlays/rpi-backlight.dtbo \
overlays/w1-gpio.dtbo \
overlays/w1-gpio-pullup.dtbo \
+ overlays/w1-gpio-pi5.dtbo \
overlays/wm8960-soundcard.dtbo \
+ overlays/bcm2712d0.dtbo \
"
RPI_KERNEL_DEVICETREE ?= " \
@@ -86,7 +101,6 @@ RPI_KERNEL_DEVICETREE ?= " \
broadcom/bcm2710-rpi-cm3.dtb \
broadcom/bcm2711-rpi-cm4.dtb \
broadcom/bcm2711-rpi-cm4s.dtb \
- broadcom/bcm2712-rpi-5-b.dtb \
"
KERNEL_DEVICETREE ??= " \
diff --git a/meta-raspberrypi/conf/machine/raspberrypi-armv8.conf b/meta-raspberrypi/conf/machine/raspberrypi-armv8.conf
index 0128bdc712..0b42309245 100644
--- a/meta-raspberrypi/conf/machine/raspberrypi-armv8.conf
+++ b/meta-raspberrypi/conf/machine/raspberrypi-armv8.conf
@@ -33,6 +33,10 @@ RPI_KERNEL_DEVICETREE = " \
broadcom/bcm2711-rpi-cm4.dtb \
broadcom/bcm2711-rpi-cm4s.dtb \
broadcom/bcm2712-rpi-5-b.dtb \
+ broadcom/bcm2712-rpi-cm5-cm5io.dtb \
+ broadcom/bcm2712-rpi-cm5-cm4io.dtb \
+ broadcom/bcm2712-rpi-cm5l-cm5io.dtb \
+ broadcom/bcm2712-rpi-cm5l-cm4io.dtb \
"
SDIMG_KERNELIMAGE ?= "kernel8.img"
diff --git a/meta-raspberrypi/conf/machine/raspberrypi5.conf b/meta-raspberrypi/conf/machine/raspberrypi5.conf
index 03f15c35fb..636c965af5 100644
--- a/meta-raspberrypi/conf/machine/raspberrypi5.conf
+++ b/meta-raspberrypi/conf/machine/raspberrypi5.conf
@@ -15,6 +15,10 @@ MACHINE_EXTRA_RRECOMMENDS += "\
RPI_KERNEL_DEVICETREE = " \
broadcom/bcm2712-rpi-5-b.dtb \
+ broadcom/bcm2712-rpi-cm5-cm5io.dtb \
+ broadcom/bcm2712-rpi-cm5-cm4io.dtb \
+ broadcom/bcm2712-rpi-cm5l-cm5io.dtb \
+ broadcom/bcm2712-rpi-cm5l-cm4io.dtb \
"
SDIMG_KERNELIMAGE ?= "kernel_2712.img"
diff --git a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
index b04f24be22..eb31d54003 100644
--- a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
+++ b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-bootfiles.bb
@@ -5,14 +5,14 @@ LIC_FILES_CHKSUM = "file://LICENCE.broadcom;md5=c403841ff2837657b2ed8e5bb474ac8d
inherit deploy nopackages
-RPIFW_DATE ?= "20240319"
-SRCREV = "9f24f4bc2bdd07ffd158cfbb4bce88a2efc4c1f5"
+RPIFW_DATE ?= "20250430"
+SRCREV = "bc7f439c234e19371115e07b57c366df59cc1bc7"
SHORTREV = "${@d.getVar("SRCREV", False).__str__()[:7]}"
-RPIFW_SRC_URI ?= "https://api.github.com/repos/raspberrypi/firmware/tarball/9f24f4bc2bdd07ffd158cfbb4bce88a2efc4c1f5;downloadfilename=raspberrypi-firmware-${SHORTREV}.tar.gz"
+RPIFW_SRC_URI ?= "https://api.github.com/repos/raspberrypi/firmware/tarball/${SRCREV};downloadfilename=raspberrypi-firmware-${SHORTREV}.tar.gz"
RPIFW_S ?= "${WORKDIR}/raspberrypi-firmware-${SHORTREV}"
SRC_URI = "${RPIFW_SRC_URI}"
-SRC_URI[sha256sum] = "4b436f8946b139c6a1202375ef55d4848e3bcd8c1a9cb47000e06d7ecec828f7"
+SRC_URI[sha256sum] = "2c027debbef53c86c9ff9197d056d501b95f6ad214ad4db00a8a59b947574eb1"
PV = "${RPIFW_DATE}"
diff --git a/meta-raspberrypi/recipes-bsp/rpi-eeprom/rpi-eeprom_git.bb b/meta-raspberrypi/recipes-bsp/rpi-eeprom/rpi-eeprom_git.bb
index 2e10253e90..f3ca5e31a9 100644
--- a/meta-raspberrypi/recipes-bsp/rpi-eeprom/rpi-eeprom_git.bb
+++ b/meta-raspberrypi/recipes-bsp/rpi-eeprom/rpi-eeprom_git.bb
@@ -1,15 +1,15 @@
SUMMARY = "Installation scripts and binaries for the Raspberry Pi 4 EEPROM"
-DESCRIPTION = "This repository contains the rpi4 bootloader and scripts \
+DESCRIPTION = "This repository contains the rpi4/rpi5 bootloader and scripts \
for updating it in the spi eeprom"
LICENSE = "BSD-3-Clause & Broadcom-RPi"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f546ed4f47e9d4c1fe954ecc9d3ef4f3"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a6c5149578a16272119f3f9c13d6549b"
SRC_URI = " \
git://github.com/raspberrypi/rpi-eeprom.git;protocol=https;branch=master \
"
-SRCREV = "36e58db5c2a2656e553441f4f48f32227809105d"
-PV = "v.2024.02.16-2712"
+SRCREV = "1bd0a1052b2e74d7af04de18d30b5edb12d8a423"
+PV = "v2025.03.10-2712"
S = "${WORKDIR}/git"
diff --git a/meta-raspberrypi/recipes-bsp/u-boot/files/maxsize.cfg b/meta-raspberrypi/recipes-bsp/u-boot/files/maxsize.cfg
new file mode 100644
index 0000000000..1b09831dbf
--- /dev/null
+++ b/meta-raspberrypi/recipes-bsp/u-boot/files/maxsize.cfg
@@ -0,0 +1 @@
+CONFIG_SYS_BOOTM_LEN=0x1000000
diff --git a/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend b/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
index e50acf5fb3..e575569a57 100644
--- a/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
+++ b/meta-raspberrypi/recipes-bsp/u-boot/u-boot_%.bbappend
@@ -5,6 +5,7 @@ SRC_URI:append:rpi = " \
"
SRC_URI:append:rpi = " file://0001-rpi-always-set-fdt_addr-with-firmware-provided-FDT-address.patch"
+SRC_URI:append:raspberrypi4 = " file://maxsize.cfg"
DEPENDS:append:rpi = " u-boot-default-script"
diff --git a/meta-raspberrypi/recipes-devtools/raspi-utils/raspi-utils_git.bb b/meta-raspberrypi/recipes-devtools/raspi-utils/raspi-utils_git.bb
new file mode 100644
index 0000000000..7c31620426
--- /dev/null
+++ b/meta-raspberrypi/recipes-devtools/raspi-utils/raspi-utils_git.bb
@@ -0,0 +1,53 @@
+SUMMARY = "A collection of scripts and simple applications"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=4c01239e5c3a3d133858dedacdbca63c"
+
+RCONFLICTS:${PN} = "userland"
+DEPENDS:append = " dtc"
+PACKAGES =+ " ${PN}-raspinfo"
+PACKAGES =+ " ${PN}-ovmerge"
+RDEPENDS:${PN}-raspinfo += " bash"
+RDEPENDS:${PN}-ovmerge += " perl"
+
+PV = "1.0+git"
+
+SRC_URI = "git://github.com/raspberrypi/utils;protocol=https;branch=master"
+
+SRCREV = "b9c63214c535d7df2b0fa6743b7b3e508363c25a"
+
+FILES:${PN}:append = " \
+ ${datadir}/bash-completion/completions/pinctrl \
+ ${datadir}/bash-completion/completions/vcgencmd \
+"
+FILES:${PN}-raspinfo += "${bindir}/raspinfo"
+FILES:${PN}-ovmerge += "${bindir}/ovmerge"
+
+S = "${WORKDIR}/git"
+
+OECMAKE_TARGET_COMPILE = "\
+ dtmerge/all \
+ eeptools/all \
+ otpset/all \
+ overlaycheck/all \
+ ovmerge/all \
+ pinctrl/all \
+ raspinfo/all \
+ vcgencmd/all \
+ vclog/all \
+ vcmailbox/all \
+"
+
+OECMAKE_TARGET_INSTALL = "\
+ dtmerge/install \
+ eeptools/install \
+ otpset/install \
+ overlaycheck/install \
+ ovmerge/install \
+ pinctrl/install \
+ raspinfo/install \
+ vcgencmd/install \
+ vclog/install \
+ vcmailbox/install \
+"
+
+inherit cmake \ No newline at end of file
diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-dont-build-clover-frontend.patch b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-dont-build-clover-frontend.patch
new file mode 100644
index 0000000000..5f45f94fea
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-dont-build-clover-frontend.patch
@@ -0,0 +1,29 @@
+From: Markus Volk <f_l_k@t-online.de>
+Date: Sun, 19 Mai 2025 15:34:46 +0100
+Subject: [PATCH] dont build clover frontend
+
+The clover frontend is deprecated and is always built with opencl, even if
+using rusticl. Additionally it adds a reproducibility issue.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+
+--- a/src/gallium/meson.build 2025-05-07 18:35:10.000000000 +0200
++++ b/src/gallium/meson.build 2025-05-18 17:05:23.677694272 +0200
+@@ -195,15 +195,11 @@
+ else
+ driver_d3d12 = declare_dependency()
+ endif
+-if with_gallium_clover or with_tests
++if with_tests
+ # At the moment, clover and gallium/tests are the only two consumers
+ # for pipe-loader
+ subdir('targets/pipe-loader')
+ endif
+-if with_gallium_clover
+- subdir('frontends/clover')
+- subdir('targets/opencl')
+-endif
+ if with_gallium_rusticl
+ subdir('frontends/rusticl')
+ subdir('targets/rusticl')
diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-fix-FTBFS-clc-switch-to-new-non-owned-TargetOptions-.patch b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-fix-FTBFS-clc-switch-to-new-non-owned-TargetOptions-.patch
new file mode 100644
index 0000000000..2633869625
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-fix-FTBFS-clc-switch-to-new-non-owned-TargetOptions-.patch
@@ -0,0 +1,39 @@
+From 531c6696d42953cd642dea7bf70153285c7949ae Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Kai=20Wasserb=C3=A4ch?= <kai@dev.carbon-project.org>
+Date: Tue, 6 May 2025 14:36:57 +0200
+Subject: [PATCH] fix(FTBFS): clc: switch to new non-owned `TargetOptions` for
+ LLVM 21
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Upstream hid the `TargetOptions` in commit 985410f87f2d19910a8d327527fd30062b042b63
+
+Use the new `getTargetOpts()` to obtain the `TargetOptions` for
+`setTarget()`.
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34835]
+
+Signed-off-by: Kai Wasserbäch <kai@dev.carbon-project.org>
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13079
+Reference: https://github.com/llvm/llvm-project/commit/985410f87f2d19910a8d327527fd30062b042b63
+Reviewed-by: Karol Herbst <kherbst@redhat.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34835>
+---
+ src/compiler/clc/clc_helpers.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/src/compiler/clc/clc_helpers.cpp
++++ b/src/compiler/clc/clc_helpers.cpp
+@@ -874,7 +874,11 @@ clc_compile_to_llvm_module(LLVMContext &
+ diag_opts));
+
+ c->setTarget(clang::TargetInfo::CreateTargetInfo(
++#if LLVM_VERSION_MAJOR >= 21
++ c->getDiagnostics(), c->getInvocation().getTargetOpts()));
++#else
+ c->getDiagnostics(), c->getInvocation().TargetOpts));
++#endif
+
+ c->getFrontendOpts().ProgramAction = clang::frontend::EmitLLVMOnly;
+
diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-freedreno-don-t-encode-build-path-into-binaries.patch
new file mode 100644
index 0000000000..953a724dc0
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-freedreno-don-t-encode-build-path-into-binaries.patch
@@ -0,0 +1,110 @@
+From 027ac36756cc75eea9ed4fee135a351af30b35fd Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Date: Tue, 16 Jul 2024 12:32:47 +0300
+Subject: [PATCH] freedreno: don't encode build path into binaries
+
+Encoding build-specific path into installed binaries is generally
+frowned upon. It harms the reproducibility of the build and e.g.
+OpenEmbedded now considers that to be an error.
+
+Instead of hardcoding rnn_src_path into the RNN_DEF_PATH define specify
+it manually when running the tests.
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30206]
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+---
+ src/freedreno/afuc/meson.build | 4 ++++
+ src/freedreno/decode/meson.build | 4 +++-
+ src/freedreno/meson.build | 2 +-
+ 3 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build
+index bb7cebf5a748..351cc31ef2de 100644
+--- a/src/freedreno/afuc/meson.build
++++ b/src/freedreno/afuc/meson.build
+@@ -56,10 +56,12 @@ if with_tests
+ asm_fw = custom_target('afuc_test.fw',
+ output: 'afuc_test.fw',
+ command: [asm, files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'],
++ env: {'RNN_PATH': rnn_src_path},
+ )
+ asm_fw_a7xx = custom_target('afuc_test_a7xx.fw',
+ output: 'afuc_test_a7xx.fw',
+ command: [asm, files('../.gitlab-ci/traces/afuc_test_a7xx.asm'), '@OUTPUT@'],
++ env: {'RNN_PATH': rnn_src_path},
+ )
+ test('afuc-asm',
+ diff,
+@@ -120,11 +122,13 @@ if cc.sizeof('size_t') > 4
+ disasm_fw = custom_target('afuc_test.asm',
+ output: 'afuc_test.asm',
+ command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw')],
++ env: {'RNN_PATH': rnn_src_path},
+ capture: true
+ )
+ disasm_fw_a7xx = custom_target('afuc_test_a7xx.asm',
+ output: 'afuc_test_a7xx.asm',
+ command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw')],
++ env: {'RNN_PATH': rnn_src_path},
+ capture: true
+ )
+ test('afuc-disasm',
+diff --git a/src/freedreno/decode/meson.build b/src/freedreno/decode/meson.build
+index 469eeb4eb597..dfa1c12d0d9f 100644
+--- a/src/freedreno/decode/meson.build
++++ b/src/freedreno/decode/meson.build
+@@ -194,6 +194,7 @@ if dep_lua.found() and dep_libarchive.found()
+ log = custom_target(name + '.log',
+ output: name + '.log',
+ command: [cffdump, '--unit-test', args, files('../.gitlab-ci/traces/' + name + '.rd.gz')],
++ env: {'RNN_PATH': rnn_src_path},
+ capture: true,
+ )
+ test('cffdump-' + name,
+@@ -247,7 +248,8 @@ if with_tests
+ output: name + '.log',
+ command: [crashdec, args, files('../.gitlab-ci/traces/' + name + '.devcore')],
+ capture: true,
+- env: {'GALLIUM_DUMP_CPU': 'false'},
++ env: {'GALLIUM_DUMP_CPU': 'false',
++ 'RNN_PATH': rnn_src_path},
+ )
+
+ test('crashdec-' + name,
+diff --git a/src/freedreno/meson.build b/src/freedreno/meson.build
+index 98e49b8fcf0e..145e72597eb9 100644
+--- a/src/freedreno/meson.build
++++ b/src/freedreno/meson.build
+@@ -6,7 +6,7 @@ inc_freedreno_rnn = include_directories('rnn')
+
+ rnn_src_path = dir_source_root + '/src/freedreno/registers'
+ rnn_install_path = get_option('datadir') + '/freedreno/registers'
+-rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path
++rnn_path = get_option('prefix') + '/' + rnn_install_path
+
+ dep_libarchive = dependency('libarchive', allow_fallback: true, required: false)
+ dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false)
+diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
+--- a/src/freedreno/registers/gen_header.py
++++ b/src/freedreno/registers/gen_header.py
+@@ -885,13 +885,14 @@ The rules-ng-ng source files this header
+ """)
+ maxlen = 0
+ for filepath in p.xml_files:
+- maxlen = max(maxlen, len(filepath))
++ maxlen = max(maxlen, len(os.path.basename(filepath)))
+ for filepath in p.xml_files:
+- pad = " " * (maxlen - len(filepath))
++ filename = os.path.basename(filepath)
++ pad = " " * (maxlen - len(filename))
+ filesize = str(os.path.getsize(filepath))
+ filesize = " " * (7 - len(filesize)) + filesize
+ filetime = time.ctime(os.path.getmtime(filepath))
+- print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
++ print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")")
+ if p.copyright_year:
+ current_year = str(datetime.date.today().year)
+ print()
+---
+2.39.2
+
diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
new file mode 100644
index 0000000000..baa98a0d46
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/mesa/mesa/0001-meson-misdetects-64bit-atomics-on-mips-clang.patch
@@ -0,0 +1,24 @@
+From 02cc21800fe29f566add525e63f619c0536d6e7b Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 13 Jan 2020 15:23:47 -0800
+Subject: [PATCH] meson misdetects 64bit atomics on mips/clang
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/util/u_atomic.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/util/u_atomic.c b/src/util/u_atomic.c
+index 5a5eab4..e499516 100644
+--- a/src/util/u_atomic.c
++++ b/src/util/u_atomic.c
+@@ -21,7 +21,7 @@
+ * IN THE SOFTWARE.
+ */
+
+-#if defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
++#if !defined(__clang__) && defined(MISSING_64BIT_ATOMICS) && defined(HAVE_PTHREAD)
+
+ #include <stdint.h>
+ #include <pthread.h>
diff --git a/meta-raspberrypi/recipes-graphics/mesa/mesa_25.1.6.bb b/meta-raspberrypi/recipes-graphics/mesa/mesa_25.1.6.bb
new file mode 100644
index 0000000000..b09a5e172e
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/mesa/mesa_25.1.6.bb
@@ -0,0 +1,383 @@
+SUMMARY = "A free implementation of the OpenGL API"
+DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \
+a system for rendering interactive 3D graphics. \
+A variety of device drivers allows Mesa to be used in many different environments \
+ranging from software emulation to complete hardware acceleration for modern GPUs. \
+Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \
+environment."
+
+HOMEPAGE = "http://mesa3d.org"
+BUGTRACKER = "https://bugs.freedesktop.org"
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11"
+
+PE = "2"
+
+SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
+ file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
+ file://0001-freedreno-don-t-encode-build-path-into-binaries.patch \
+ file://0001-dont-build-clover-frontend.patch \
+ file://0001-fix-FTBFS-clc-switch-to-new-non-owned-TargetOptions-.patch \
+"
+
+SRC_URI[sha256sum] = "9f2b69eb39d2d8717d30a9868fdda3e0c0d3708ba32778bbac8ddb044538ce84"
+PV = "25.1.6"
+
+UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
+
+#because we cannot rely on the fact that all apps will use pkgconfig,
+#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
+do_install:append() {
+ # sed can't find EGL/eglplatform.h as it doesn't get installed when glvnd enabled.
+ # So, check if EGL/eglplatform.h exists before running sed.
+ if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)} && [ -f ${D}${includedir}/EGL/eglplatform.h ]; then
+ sed -i -e 's/^#elif defined(__unix__) && defined(EGL_NO_X11)$/#elif defined(__unix__) \&\& defined(EGL_NO_X11) || ${@bb.utils.contains('PACKAGECONFIG', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
+ fi
+ # These are ICDs, apps are not supposed to link against them
+ if ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', 'true', 'false', d)} ; then
+ rm -f ${D}${libdir}/libEGL_mesa.so ${D}${libdir}/libGLX_mesa.so
+ fi
+}
+
+DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native"
+EXTRANATIVEPATH += "chrpath-native"
+GLPROVIDES = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gles', 'virtual/libgles1 virtual/libgles2 virtual/libgles3', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'virtual/egl', '', d)} \
+"
+PROVIDES = " \
+ ${@bb.utils.contains('PACKAGECONFIG', 'glvnd', '', d.getVar('GLPROVIDES'), d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gbm', 'virtual/libgbm', '', d)} \
+ virtual/mesa \
+ "
+
+inherit meson pkgconfig python3native gettext features_check rust
+
+BBCLASSEXTEND = "native nativesdk"
+
+ANY_OF_DISTRO_FEATURES = "opengl vulkan"
+
+PLATFORMS ??= "${@bb.utils.filter('PACKAGECONFIG', 'x11 wayland', d)}"
+
+# set the MESA_BUILD_TYPE to either 'release' (default) or 'debug'
+# by default the upstream mesa sources build a debug release
+# here we assume the user will want a release build by default
+MESA_BUILD_TYPE ?= "release"
+def check_buildtype(d):
+ _buildtype = d.getVar('MESA_BUILD_TYPE')
+ if _buildtype not in ['release', 'debug']:
+ bb.fatal("unknown build type (%s), please set MESA_BUILD_TYPE to either 'release' or 'debug'" % _buildtype)
+ if _buildtype == 'debug':
+ return 'debugoptimized'
+ return 'plain'
+MESON_BUILDTYPE = "${@check_buildtype(d)}"
+
+EXTRA_OEMESON = " \
+ -Dglx-read-only-text=true \
+ -Dplatforms='${@",".join("${PLATFORMS}".split())}' \
+"
+
+def strip_comma(s):
+ return s.strip(',')
+
+PACKAGECONFIG = " \
+ gallium \
+ video-codecs \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland glvnd', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \
+"
+
+# skip all Rust dependencies if we are not building OpenCL"
+INHIBIT_DEFAULT_RUST_DEPS = "${@bb.utils.contains('PACKAGECONFIG', 'opencl', '', '1', d)}"
+
+PACKAGECONFIG:append:x86 = " libclc gallium-llvm intel amd nouveau svga"
+PACKAGECONFIG:append:x86-64 = " libclc gallium-llvm intel amd nouveau svga"
+PACKAGECONFIG:append:i686 = " libclc gallium-llvm intel amd nouveau svga"
+PACKAGECONFIG:append:class-native = " libclc gallium-llvm amd nouveau svga"
+
+# "gbm" requires "opengl"
+PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled"
+
+X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr xorgproto libxshmfence"
+# "x11" requires "opengl"
+PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}"
+PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
+
+VULKAN_DRIVERS_AMD = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',amd', '', d)}"
+VULKAN_DRIVERS_ASAHI = "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc opencl', ',asahi', '', d)}"
+VULKAN_DRIVERS_INTEL = "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc', ',intel', '', d)}"
+VULKAN_DRIVERS_SWRAST = ",swrast"
+# Crashes on x32
+VULKAN_DRIVERS_SWRAST:x86-x32 = ""
+VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_ASAHI}${VULKAN_DRIVERS_INTEL}"
+
+VULKAN_DRIVERS = ""
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_LLVM}', '', d)}"
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}"
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
+PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
+
+# mesa development and testing tools support, per driver
+TOOLS = ""
+TOOLS_DEPS = ""
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
+TOOLS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination', '', d)}"
+
+# dependencies for tools.
+TOOLS_DEPS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ' ncurses libxml2 ', '', d)}"
+
+# the fdperf tool requires libconfig (a part of meta-oe) so it needs special
+# treatment in addition to the usual 'freedreno tools'.
+PACKAGECONFIG[freedreno-fdperf] = ",,libconfig"
+
+PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}"
+
+PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
+PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd"
+
+# "gles" requires "opengl"
+PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled"
+
+# "egl" requires "opengl"
+PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled"
+
+# "opencl" also requires libclc and gallium-llvm to be present in PKGCONFIG!
+# Be sure to enable them both for the target and for the native build.
+PACKAGECONFIG[opencl] = "-Dgallium-rusticl=true, -Dgallium-rusticl=false, bindgen-cli-native"
+
+PACKAGECONFIG[broadcom] = ""
+PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native"
+PACKAGECONFIG[freedreno] = ""
+PACKAGECONFIG[vc4] = ""
+PACKAGECONFIG[v3d] = ""
+PACKAGECONFIG[zink] = ""
+
+GALLIUMDRIVERS = "softpipe"
+# gallium swrast was found to crash Xorg on startup in x32 qemu
+GALLIUMDRIVERS:x86-x32 = ""
+
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'vc4', ',vc4', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}"
+
+GALLIUMDRIVERS_ASAHI = "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc opencl', ',asahi', '', d)}"
+GALLIUMDRIVERS_AMD = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',r300', '', d)}"
+GALLIUMDRIVERS_IRIS = "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc', ',iris', '', d)}"
+GALLIUMDRIVERS_NOUVEAU = "${@bb.utils.contains('PACKAGECONFIG', 'nouveau', ',nouveau', '', d)}"
+GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',radeonsi', '', d)}"
+GALLIUMDRIVERS_LLVMPIPE = ",llvmpipe"
+# llvmpipe crashes on x32
+GALLIUMDRIVERS_LLVMPIPE:x86-x32 = ""
+GALLIUMDRIVERS_SVGA = "${@bb.utils.contains('PACKAGECONFIG', 'svga', ',svga', '', d)}"
+GALLIUMDRIVERS_LLVM = "${GALLIUMDRIVERS_LLVMPIPE}${GALLIUMDRIVERS_AMD}${GALLIUMDRIVERS_ASAHI}${GALLIUMDRIVERS_IRIS}${GALLIUMDRIVERS_NOUVEAU}${GALLIUMDRIVERS_RADEONSI}${GALLIUMDRIVERS_SVGA}"
+
+PACKAGECONFIG[amd] = ""
+PACKAGECONFIG[nouveau] = ""
+PACKAGECONFIG[svga] = ""
+PACKAGECONFIG[virgl] = ""
+
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${GALLIUMDRIVERS_LLVM}', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',r600', '', d)}"
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}"
+
+MESA_CLC = "system"
+MESA_CLC:class-native = "enabled"
+INSTALL_MESA_CLC = "false"
+INSTALL_MESA_CLC:class-native = "true"
+MESA_NATIVE = "mesa-native"
+MESA_NATIVE:class-native = ""
+
+PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm"
+PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils"
+PACKAGECONFIG[libclc] = "-Dmesa-clc=${MESA_CLC} -Dinstall-mesa-clc=${INSTALL_MESA_CLC} -Dmesa-clc-bundle-headers=enabled,,libclc spirv-tools spirv-llvm-translator ${MESA_NATIVE}"
+PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
+PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau"
+
+PACKAGECONFIG[imagination] = "-Dimagination-srv=true,-Dimagination-srv=false"
+
+PACKAGECONFIG[asahi] = ""
+
+PACKAGECONFIG[intel] = ""
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'intel', ',i915,crocus', '', d)}"
+
+PACKAGECONFIG[lima] = ""
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'lima', ',lima', '', d)}"
+
+PACKAGECONFIG[panfrost] = ""
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}"
+
+PACKAGECONFIG[tegra] = ""
+GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'tegra', ',tegra,nouveau', '', d)}"
+
+PACKAGECONFIG[vulkan-beta] = "-Dvulkan-beta=true,-Dvulkan-beta=false"
+
+PACKAGECONFIG[perfetto] = "-Dperfetto=true,-Dperfetto=false,libperfetto"
+
+PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind"
+
+PACKAGECONFIG[lmsensors] = "-Dlmsensors=enabled,-Dlmsensors=disabled,lmsensors"
+
+VIDEO_CODECS ?= "${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'all', 'all_free', d)}"
+PACKAGECONFIG[video-codecs] = "-Dvideo-codecs=${VIDEO_CODECS}, -Dvideo-codecs=''"
+
+PACKAGECONFIG[teflon] = "-Dteflon=true, -Dteflon=false"
+
+# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
+FULL_OPTIMIZATION:append = " -fno-omit-frame-pointer"
+
+CFLAGS:append:armv5 = " -DMISSING_64BIT_ATOMICS"
+CFLAGS:append:armv6 = " -DMISSING_64BIT_ATOMICS"
+
+# Remove the mesa dependency on mesa-dev, as mesa is empty
+DEV_PKG_DEPENDENCY = ""
+
+# GLES2 and GLES3 implementations are packaged in a single library in libgles2-mesa.
+# Add a dependency so the GLES3 dev package is associated with its implementation.
+RPROVIDES:libgles2-mesa += "libgles3-mesa"
+RPROVIDES:libgles2-mesa-dev += "libgles3-mesa-dev"
+
+RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc spirv-tools spirv-llvm-translator', '', d)}"
+
+PACKAGES =+ "libegl-mesa libegl-mesa-dev \
+ libgallium \
+ libgl-mesa libgl-mesa-dev \
+ libglx-mesa libglx-mesa-dev \
+ libglapi libglapi-dev \
+ libgbm libgbm-dev \
+ libgles1-mesa libgles1-mesa-dev \
+ libgles2-mesa libgles2-mesa-dev \
+ libopencl-mesa \
+ libteflon \
+ mesa-megadriver mesa-vulkan-drivers \
+ mesa-vdpau-drivers mesa-tools \
+ "
+
+do_install:append () {
+ # libwayland-egl has been moved to wayland 1.15+
+ rm -f ${D}${libdir}/libwayland-egl*
+ rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc
+}
+
+# For the packages that make up the OpenGL interfaces, inject variables so that
+# they don't get Debian-renamed (which would remove the -mesa suffix), and
+# RPROVIDEs/RCONFLICTs on the generic libgl name.
+python __anonymous() {
+ pkgconfig = (d.getVar('PACKAGECONFIG') or "").split()
+ mlprefix = d.getVar("MLPREFIX")
+ suffix = ""
+ if "-native" in d.getVar("PN"):
+ suffix = "-native"
+
+ for p in ("libegl", "libgl", "libglx", "libgles1", "libgles2", "libgles3", "libopencl"):
+ fullp = mlprefix + p + "-mesa" + suffix
+ d.appendVar("RRECOMMENDS:" + fullp, " ${MLPREFIX}mesa-megadriver" + suffix)
+
+ d.setVar("DEBIAN_NOAUTONAME:%slibopencl-mesa%s" % (mlprefix, suffix), "1")
+
+ if 'glvnd' in pkgconfig:
+ for p in ("libegl", "libglx"):
+ fullp = mlprefix + p + "-mesa" + suffix
+ d.appendVar("RPROVIDES:" + fullp, ' virtual-%s-icd' % p)
+ else:
+ for p in (("egl", "libegl", "libegl1"),
+ ("opengl", "libgl", "libgl1"),
+ ("gles", "libgles1", "libglesv1-cm1"),
+ ("gles", "libgles2", "libglesv2-2", "libgles3")):
+ if not p[0] in pkgconfig:
+ continue
+ fullp = mlprefix + p[1] + "-mesa" + suffix
+ pkgs = " " + " ".join(mlprefix + x + suffix for x in p[1:])
+ d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1")
+ d.appendVar("RREPLACES:" + fullp, pkgs)
+ d.appendVar("RPROVIDES:" + fullp, pkgs)
+ d.appendVar("RCONFLICTS:" + fullp, pkgs)
+
+ # For -dev, the first element is both the Debian and original name
+ fullp = mlprefix + p[1] + "-mesa-dev" + suffix
+ pkgs = " " + mlprefix + p[1] + "-dev" + suffix
+ d.setVar("DEBIAN_NOAUTONAME:" + fullp, "1")
+ d.appendVar("RREPLACES:" + fullp, pkgs)
+ d.appendVar("RPROVIDES:" + fullp, pkgs)
+ d.appendVar("RCONFLICTS:" + fullp, pkgs)
+}
+
+python mesa_populate_packages() {
+ pkgs = ['mesa', 'mesa-dev', 'mesa-dbg']
+ for pkg in pkgs:
+ d.setVar("RPROVIDES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+ d.setVar("RCONFLICTS:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+ d.setVar("RREPLACES:%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+
+ import re
+ dri_drivers_root = oe.path.join(d.getVar('PKGD'), d.getVar('libdir'), "dri")
+ if os.path.isdir(dri_drivers_root):
+ dri_pkgs = sorted(os.listdir(dri_drivers_root))
+ lib_name = d.expand("${MLPREFIX}mesa-megadriver")
+ for p in dri_pkgs:
+ m = re.match(r'^(.*)_dri\.so$', p)
+ if m:
+ pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1))
+ d.appendVar("RPROVIDES:%s" % lib_name, pkg_name)
+ d.appendVar("RCONFLICTS:%s" % lib_name, pkg_name)
+ d.appendVar("RREPLACES:%s" % lib_name, pkg_name)
+}
+
+PACKAGESPLITFUNCS =+ "mesa_populate_packages"
+
+PACKAGES_DYNAMIC += "^mesa-driver-.*"
+PACKAGES_DYNAMIC:class-native = "^mesa-driver-.*-native"
+
+FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d"
+FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan"
+FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
+FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d"
+FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so"
+FILES:libgallium = "${libdir}/libgallium-*.so"
+FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
+FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
+FILES:libgl-mesa = "${libdir}/libGL.so.*"
+FILES:libglx-mesa = "${libdir}/libGLX*.so.*"
+FILES:libopencl-mesa = "${libdir}/lib*OpenCL.so* ${sysconfdir}/OpenCL/vendors/*.icd"
+FILES:libglapi = "${libdir}/libglapi.so.*"
+
+FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/GL/internal/dri_interface.h ${includedir}/vulkan ${libdir}/vdpau/*.so"
+FILES:libegl-mesa-dev = "${libdir}/libEGL*.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${includedir}/gbm_backend_abi.h"
+FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL/*.h ${libdir}/pkgconfig/gl.pc"
+FILES:libglapi-dev = "${libdir}/libglapi.*"
+FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
+FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${includedir}/GLES3 ${libdir}/pkgconfig/glesv2.pc"
+FILES:libteflon = "${libdir}/libteflon.so"
+# catch all to get all the tools and data
+FILES:${PN}-tools = "${bindir} ${datadir}"
+ALLOW_EMPTY:${PN}-tools = "1"
+
+# All DRI drivers are symlinks to libdril_dri.so
+INSANE_SKIP:${PN}-megadriver += "dev-so"
+
+# OpenCL ICDs package also ship correspondig .so files, there is no -dev package
+INSANE_SKIP:libopencl-mesa += "dev-so"
+
+# Fix upgrade path from mesa to mesa-megadriver
+RREPLACES:mesa-megadriver = "mesa"
+RCONFLICTS:mesa-megadriver = "mesa"
+RPROVIDES:mesa-megadriver = "mesa"
+
+# Use this newer version only for rpi MACHINEs
+COMPATIBLE_MACHINE = "^rpi$"
+# This version doesn't have kmsro and dri3 added by
+# recipes-graphics/mesa/mesa_%.bbappend
+# already removed in master branch with:
+# https://github.com/agherzan/meta-raspberrypi/pull/1456
+# https://github.com/agherzan/meta-raspberrypi/pull/1472
+PACKAGECONFIG:remove:rpi = "kmsro dri3"
diff --git a/meta-raspberrypi/recipes-graphics/wayland/wayland-protocols_1.45.bb b/meta-raspberrypi/recipes-graphics/wayland/wayland-protocols_1.45.bb
new file mode 100644
index 0000000000..7ef86e11c0
--- /dev/null
+++ b/meta-raspberrypi/recipes-graphics/wayland/wayland-protocols_1.45.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Collection of additional Wayland protocols"
+DESCRIPTION = "Wayland protocols that add functionality not \
+available in the Wayland core protocol. Such protocols either add \
+completely new functionality, or extend the functionality of some other \
+protocol either in Wayland core, or some other protocol in \
+wayland-protocols."
+HOMEPAGE = "http://wayland.freedesktop.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=c7b12b6702da38ca028ace54aae3d484 \
+ file://stable/presentation-time/presentation-time.xml;endline=26;md5=4646cd7d9edc9fa55db941f2d3a7dc53"
+
+SRC_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PV}/downloads/wayland-protocols-${PV}.tar.xz"
+SRC_URI[sha256sum] = "4d2b2a9e3e099d017dc8107bf1c334d27bb87d9e4aff19a0c8d856d17cd41ef0"
+
+UPSTREAM_CHECK_URI = "https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tags"
+UPSTREAM_CHECK_REGEX = "releases/(?P<pver>.+)"
+
+DEPENDS += "wayland-native"
+
+inherit meson pkgconfig allarch
+
+EXTRA_OEMESON += "-Dtests=false"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Use this newer version only for rpi MACHINEs
+COMPATIBLE_MACHINE = "^rpi$"
diff --git a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0001-Default-43455-firmware-to-standard-variant.patch b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0001-Default-43455-firmware-to-standard-variant.patch
deleted file mode 100644
index f67d95b22c..0000000000
--- a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0001-Default-43455-firmware-to-standard-variant.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From b9db43e36ad0942d33cb4db5b394abd722862568 Mon Sep 17 00:00:00 2001
-From: Andrei Gherzan <andrei.gherzan@huawei.com>
-Date: Fri, 9 Sep 2022 20:28:06 +0200
-Subject: [PATCH] Default 43455 firmware to standard variant
-
-The firmware for 43455 is loaded as a symlink: brcmfmac43455-sdio.bin.
-This symlink is now broken as the debian package handles the right
-target of this symlink through a postinstall. We don't have that logic
-here so we default to the standard variant.
-
-Upstream-Status: Inappropriate [issue reported at https://github.com/RPi-Distro/firmware-nonfree/issues/26]
-Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
----
- debian/config/brcm80211/brcm/brcmfmac43455-sdio.bin | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.bin
-index 9c39208..b914838 120000
---- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.bin
-+++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.bin
-@@ -1 +1 @@
--../cypress/cyfmac43455-sdio.bin
-\ No newline at end of file
-+../cypress/cyfmac43455-sdio-standard.bin
-\ No newline at end of file
---
-2.25.1
-
diff --git a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0002-Default-all-RPi-43455-boards-to-standard-variant.patch b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0002-Default-all-RPi-43455-boards-to-standard-variant.patch
new file mode 100644
index 0000000000..745fdb629e
--- /dev/null
+++ b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro/0002-Default-all-RPi-43455-boards-to-standard-variant.patch
@@ -0,0 +1,79 @@
+From 20741d848c32e0fb2e4841cf8bbc9ec3d198bb6b Mon Sep 17 00:00:00 2001
+From: Omri Sarig <omri.sarig@prevas.dk>
+Date: Thu, 9 Jan 2025 19:00:10 +0100
+Subject: [PATCH 2/2] Default all RPi 43455 boards to standard variant
+
+As the patch above explains, the symlink that is being used by the
+brcmfmac43455-sdio.* files is one that is created by the Debian system,
+which we do not have in our implementation. Therefore, when the system
+tries to load these files, an error message is generated.
+
+By changing the symlinks to be to the standard variant, the problem is
+solved for the build.
+
+The code is also working without this patch - when the driver is unable
+to load the board-specific file (such as
+brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin), it reverts to using
+the base file (brcmfmac43455-sdio.bin), which is a correct link (as it
+is fixed in the patch above). However, the driver is still generating an
+error message in this case, which is being solved by linking the
+board-specific files to the standard variant as well.
+
+Upstream-Status: Inappropriate [issue reported at https://github.com/RPi-Distro/firmware-nonfree/issues/26]
+Signed-off-by: Omri Sarig <omri.sarig@prevas.dk>
+---
+ .../brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin | 2 +-
+ .../brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin | 2 +-
+ .../brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin | 2 +-
+ .../brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin | 2 +-
+ .../brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin
+index 9c39208..b914838 120000
+--- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin
++++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-a-plus.bin
+@@ -1 +1 @@
+-../cypress/cyfmac43455-sdio.bin
+\ No newline at end of file
++../cypress/cyfmac43455-sdio-standard.bin
+\ No newline at end of file
+diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin
+index 9c39208..b914838 120000
+--- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin
++++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.bin
+@@ -1 +1 @@
+-../cypress/cyfmac43455-sdio.bin
+\ No newline at end of file
++../cypress/cyfmac43455-sdio-standard.bin
+\ No newline at end of file
+diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin
+index 9c39208..b914838 120000
+--- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin
++++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-compute-module.bin
+@@ -1 +1 @@
+-../cypress/cyfmac43455-sdio.bin
+\ No newline at end of file
++../cypress/cyfmac43455-sdio-standard.bin
+\ No newline at end of file
+diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin
+index 9c39208..b914838 120000
+--- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin
++++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.bin
+@@ -1 +1 @@
+-../cypress/cyfmac43455-sdio.bin
+\ No newline at end of file
++../cypress/cyfmac43455-sdio-standard.bin
+\ No newline at end of file
+diff --git a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin
+index 9c39208..b914838 120000
+--- a/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin
++++ b/debian/config/brcm80211/brcm/brcmfmac43455-sdio.raspberrypi,5-model-b.bin
+@@ -1 +1 @@
+-../cypress/cyfmac43455-sdio.bin
+\ No newline at end of file
++../cypress/cyfmac43455-sdio-standard.bin
+\ No newline at end of file
+--
+2.34.1
+
diff --git a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
index 1b4305820e..df5dcd92d3 100644
--- a/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
+++ b/meta-raspberrypi/recipes-kernel/linux-firmware-rpidistro/linux-firmware-rpidistro_git.bb
@@ -7,7 +7,7 @@ SECTION = "kernel"
LICENSE = "GPL-2.0-only & binary-redist-Cypress-rpidistro & Synaptics-rpidistro"
LIC_FILES_CHKSUM = "\
- file://debian/copyright;md5=291ee5385b4cf74b10c5fb5a46a7bbc6 \
+ file://debian/copyright;md5=454e44c688dc909e16223e4aee63568c \
"
# Where these are no common licenses, set NO_GENERIC_LICENSE so that the
# license files will be copied from the fetched source.
@@ -16,10 +16,10 @@ NO_GENERIC_LICENSE[Synaptics-rpidistro] = "debian/copyright"
LICENSE_FLAGS = "synaptics-killswitch"
SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree;branch=bookworm;protocol=https \
- file://0001-Default-43455-firmware-to-standard-variant.patch \
+ file://0002-Default-all-RPi-43455-boards-to-standard-variant.patch \
"
-SRCREV = "223ccf3a3ddb11b3ea829749fbbba4d65b380897"
-PV = "20230625-2+rpt2"
+SRCREV = "c9d3ae6584ab79d19a4f94ccf701e888f9f87a53"
+PV = "20240709-2~bpo12+1+rpt3"
S = "${WORKDIR}/git"
inherit allarch
@@ -27,6 +27,11 @@ inherit allarch
do_configure[noexec] = "1"
do_compile[noexec] = "1"
+# The minimal firmware doesn't work with Raspberry Pi 5, so default to the
+# standard firmware
+CYFMAC43455_SDIO_FIRMWARE ??= "minimal"
+CYFMAC43455_SDIO_FIRMWARE:raspberrypi5 ??= "standard"
+
do_install() {
install -d ${D}${nonarch_base_libdir}/firmware/brcm ${D}${nonarch_base_libdir}/firmware/cypress
@@ -43,8 +48,12 @@ do_install() {
done
cp -R --no-dereference --preserve=mode,links -v debian/config/brcm80211/cypress/* ${D}${nonarch_base_libdir}/firmware/cypress/
+ ln -s cyfmac43455-sdio-${CYFMAC43455_SDIO_FIRMWARE}.bin ${D}${nonarch_base_libdir}/firmware/cypress/cyfmac43455-sdio.bin
rm ${D}${nonarch_base_libdir}/firmware/cypress/README.txt
+
+ install -d ${D}${sysconfdir}/modprobe.d
+ install -m 0644 debian/rpi-brcmfmac.conf ${D}${sysconfdir}/modprobe.d/
}
PACKAGES = "\
@@ -55,6 +64,7 @@ PACKAGES = "\
${PN}-bcm43455 \
${PN}-bcm43456 \
${PN}-license \
+ ${PN}-module-conf \
"
LICENSE:${PN}-bcm43430 = "binary-redist-Cypress-rpidistro"
@@ -85,13 +95,14 @@ FILES:${PN}-bcm43455 = " \
"
FILES:${PN}-bcm43456 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43456*"
FILES:${PN}-license = "${nonarch_base_libdir}/firmware/copyright.firmware-nonfree-rpidistro"
-
-RDEPENDS:${PN}-bcm43430 += "${PN}-license"
-RDEPENDS:${PN}-bcm43436 += "${PN}-license"
-RDEPENDS:${PN}-bcm43436s += "${PN}-license"
-RDEPENDS:${PN}-bcm43439 += "${PN}-license"
-RDEPENDS:${PN}-bcm43455 += "${PN}-license"
-RDEPENDS:${PN}-bcm43456 += "${PN}-license"
+FILES:${PN}-module-conf = "${sysconfdir}/modprobe.d"
+
+RDEPENDS:${PN}-bcm43430 += "${PN}-license ${PN}-module-conf"
+RDEPENDS:${PN}-bcm43436 += "${PN}-license ${PN}-module-conf"
+RDEPENDS:${PN}-bcm43436s += "${PN}-license ${PN}-module-conf"
+RDEPENDS:${PN}-bcm43439 += "${PN}-license ${PN}-module-conf"
+RDEPENDS:${PN}-bcm43455 += "${PN}-license ${PN}-module-conf"
+RDEPENDS:${PN}-bcm43456 += "${PN}-license ${PN}-module-conf"
RCONFLICTS:${PN}-bcm43430 = "linux-firmware-raspbian-bcm43430"
RCONFLICTS:${PN}-bcm43436 = "linux-firmware-bcm43436"
diff --git a/meta-raspberrypi/recipes-kernel/linux/files/android-drivers.cfg b/meta-raspberrypi/recipes-kernel/linux/files/android-drivers.cfg
index f74ac0e1c7..f1259a1653 100644
--- a/meta-raspberrypi/recipes-kernel/linux/files/android-drivers.cfg
+++ b/meta-raspberrypi/recipes-kernel/linux/files/android-drivers.cfg
@@ -1,8 +1,3 @@
-CONFIG_ANDROID=y
-
#CONFIG_ANDROID_BINDERFS is not set
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDER_DEVICES="binder"
-
-CONFIG_ASHMEM=y
-
diff --git a/meta-raspberrypi/recipes-kernel/linux/files/vc4graphics.cfg b/meta-raspberrypi/recipes-kernel/linux/files/vc4graphics.cfg
index 0b4ba48434..3e5c19b7b8 100644
--- a/meta-raspberrypi/recipes-kernel/linux/files/vc4graphics.cfg
+++ b/meta-raspberrypi/recipes-kernel/linux/files/vc4graphics.cfg
@@ -1,4 +1,5 @@
CONFIG_I2C_BCM2835=y
+CONFIG_I2C_BRCMSTB=y
CONFIG_DRM=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_VC4=y
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.12.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.12.bb
new file mode 100644
index 0000000000..f5677085c1
--- /dev/null
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi-v7_6.12.bb
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com>
+#
+# SPDX-License-Identifier: MIT
+
+require linux-raspberrypi-v7.inc
+require linux-raspberrypi_6.12.bb
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
index e62ff3ff7c..036ff220c1 100644
--- a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc
@@ -28,7 +28,7 @@ KBUILD_DEFCONFIG:raspberrypi ?= "bcmrpi_defconfig"
KBUILD_DEFCONFIG:raspberrypi-cm3 ?= "bcm2709_defconfig"
KBUILD_DEFCONFIG:raspberrypi2 ?= "bcm2709_defconfig"
KBUILD_DEFCONFIG:raspberrypi3 ?= "bcm2709_defconfig"
-KBUILD_DEFCONFIG:raspberrypi3-64 ?= "bcmrpi3_defconfig"
+KBUILD_DEFCONFIG:raspberrypi3-64 ?= "bcm2711_defconfig"
KBUILD_DEFCONFIG:raspberrypi4 ?= "bcm2711_defconfig"
KBUILD_DEFCONFIG:raspberrypi4-64 ?= "bcm2711_defconfig"
KBUILD_DEFCONFIG:raspberrypi-armv7 ?= "bcm2711_defconfig"
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.12.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.12.bb
new file mode 100644
index 0000000000..e9b7951684
--- /dev/null
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.12.bb
@@ -0,0 +1,31 @@
+LINUX_VERSION ?= "6.12.25"
+LINUX_RPI_BRANCH ?= "rpi-6.12.y"
+LINUX_RPI_KMETA_BRANCH ?= "yocto-6.12"
+
+SRCREV_machine = "3dd2c2c507c271d411fab2e82a2b3b7e0b6d3f16"
+SRCREV_meta = "1f6ab68a1d86836bf1b82b791df03da3cfeacb3f"
+
+KMETA = "kernel-meta"
+
+SRC_URI = " \
+ git://github.com/raspberrypi/linux.git;name=machine;branch=${LINUX_RPI_BRANCH};protocol=https \
+ git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${LINUX_RPI_KMETA_BRANCH};destsuffix=${KMETA} \
+ file://powersave.cfg \
+ file://android-drivers.cfg \
+ "
+
+require linux-raspberrypi.inc
+
+KERNEL_DTC_FLAGS += "-@ -H epapr"
+
+RDEPENDS:${KERNEL_PACKAGE_NAME}:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-base:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-base"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-image:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-image"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-dev:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-dev"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-vmlinux:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-vmlinux"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-modules:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-modules"
+RDEPENDS:${KERNEL_PACKAGE_NAME}-dbg:raspberrypi-armv7:append = " ${RASPBERRYPI_v7_KERNEL_PACKAGE_NAME}-dbg"
+
+DEPLOYDEP = ""
+DEPLOYDEP:raspberrypi-armv7 = "${RASPBERRYPI_v7_KERNEL}:do_deploy"
+do_deploy[depends] += "${DEPLOYDEP}"
diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb
index b4d9953e1e..3b67f16542 100644
--- a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb
+++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_6.6.bb
@@ -1,9 +1,9 @@
-LINUX_VERSION ?= "6.6.22"
+LINUX_VERSION ?= "6.6.63"
LINUX_RPI_BRANCH ?= "rpi-6.6.y"
LINUX_RPI_KMETA_BRANCH ?= "yocto-6.6"
-SRCREV_machine = "c04af98514c26014a4f29ec87b3ece95626059bd"
-SRCREV_meta = "6a24861d6504575a4a9f92366285332d47c7e111"
+SRCREV_machine = "e442e5c1ab6bff5b5460b4fc949beb72aaf77970"
+SRCREV_meta = "52ff0d75713ce61962b325a2090bd55e216f0cf3"
KMETA = "kernel-meta"