linux (RPi): update to 6.12.38-9c09b75

Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
Matthias Reichl 2025-07-20 11:19:16 +02:00
parent 92c221ad0b
commit 014e83d91f
5 changed files with 2 additions and 253 deletions

View File

@ -23,8 +23,8 @@ case "${LINUX}" in
PKG_PATCH_DIRS="default"
;;
raspberrypi)
PKG_VERSION="bba53a117a4a5c29da892962332ff1605990e17a" # 6.6.78
PKG_SHA256="901dbc05b56e519d1f0beaefa83dac4a8d915e5b5f85190fd1adda640c345287"
PKG_VERSION="9c09b75242960117155712f41ce540df2e3cd63c" # 6.12.38
PKG_SHA256="efe2f6b14f4348c4930fdc1b2168fcdc7700034ba66393e860deb0f172a8083c"
PKG_URL="https://github.com/raspberrypi/linux/archive/${PKG_VERSION}.tar.gz"
PKG_SOURCE_NAME="linux-${LINUX}-${PKG_VERSION}.tar.gz"
;;

View File

@ -1,130 +0,0 @@
From 7ac0b48fa963cbc7e8b1f3702a4ae8d1947e65a2 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Tue, 25 Mar 2025 16:02:24 +0000
Subject: [PATCH 1/2] drm/vc4: plane: Correct SAND30 word sizing for cropping
on BCM2712
BCM2712/vc6 uses 256bit words when reading in P030/SAND128,
increased from 128bit on BCM2711/vc5.
Update the code for cropping the read area to handle the correct
word length.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/gpu/drm/vc4/vc4_plane.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
index fdd6ba310324..f1333d89cd92 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -1934,18 +1934,18 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
if (fb->format->format == DRM_FORMAT_P030) {
/*
- * Spec says: bits [31:4] of the given address
- * should point to the 128-bit word containing
- * the desired starting pixel, and bits[3:0]
- * should be between 0 and 11, indicating which
- * of the 12-pixels in that 128-bit word is the
+ * Spec says: bits [31:5] of the given address
+ * should point to the 256-bit word containing
+ * the desired starting pixel, and bits[4:0]
+ * should be between 0 and 23, indicating which
+ * of the 24-pixels in that 256-bit word is the
* first pixel to be used
*/
u32 remaining_pixels = src_x % 96;
- u32 aligned = remaining_pixels / 12;
- u32 last_bits = remaining_pixels % 12;
+ u32 aligned = remaining_pixels / 24;
+ u32 last_bits = remaining_pixels % 24;
- x_off = aligned * 16 + last_bits;
+ x_off = aligned * 32 + last_bits;
tile_w = 128;
pix_per_tile = 96;
} else {
--
2.39.5
From 3064adb25c5af41920f62d80dabf47a252b233a0 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Mon, 31 Mar 2025 17:03:40 +0100
Subject: [PATCH 2/2] drm/vc4: plane: Ensure fetch_count is sufficient for hw
in SAND mode
The number of words to fetch for SAND formats on vc6 needs to account
for all pixels requested by width.
If cropping fractional pixels, then the width was being increased, but
fetch_count had already been computed. That led to insufficient words
being fetched, and the HVS locked up solid.
Apply the fixup for fractional pixel source cropping before computing
fetch_count.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/gpu/drm/vc4/vc4_plane.c | 36 ++++++++++++++++-----------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
index f1333d89cd92..7a203a702c22 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -1874,6 +1874,24 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
src_x = vc4_state->src_x >> 16;
+ /* fetch an extra pixel if we don't actually line up with the left edge. */
+ if ((vc4_state->src_x & 0xffff) && vc4_state->src_x < (state->fb->width << 16))
+ width++;
+
+ /* same for the right side */
+ if (((vc4_state->src_x + vc4_state->src_w[0]) & 0xffff) &&
+ vc4_state->src_x + vc4_state->src_w[0] < (state->fb->width << 16))
+ width++;
+
+ /* now for the top */
+ if ((vc4_state->src_y & 0xffff) && vc4_state->src_y < (state->fb->height << 16))
+ height++;
+
+ /* and the bottom */
+ if (((vc4_state->src_y + vc4_state->src_h[0]) & 0xffff) &&
+ vc4_state->src_y + vc4_state->src_h[0] < (state->fb->height << 16))
+ height++;
+
switch (base_format_mod) {
case DRM_FORMAT_MOD_LINEAR:
tiling = SCALER6_CTL0_ADDR_MODE_LINEAR;
@@ -1988,24 +2006,6 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
return -EINVAL;
}
- /* fetch an extra pixel if we don't actually line up with the left edge. */
- if ((vc4_state->src_x & 0xffff) && vc4_state->src_x < (state->fb->width << 16))
- width++;
-
- /* same for the right side */
- if (((vc4_state->src_x + vc4_state->src_w[0]) & 0xffff) &&
- vc4_state->src_x + vc4_state->src_w[0] < (state->fb->width << 16))
- width++;
-
- /* now for the top */
- if ((vc4_state->src_y & 0xffff) && vc4_state->src_y < (state->fb->height << 16))
- height++;
-
- /* and the bottom */
- if (((vc4_state->src_y + vc4_state->src_h[0]) & 0xffff) &&
- vc4_state->src_y + vc4_state->src_h[0] < (state->fb->height << 16))
- height++;
-
/* for YUV444 hardware wants double the width, otherwise it doesn't
* fetch full width of chroma
*/
--
2.39.5

View File

@ -1,43 +0,0 @@
From 2d02a2c7531d2b7573237e0e7604b8d51c26583b Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Wed, 13 Nov 2024 00:16:47 +0100
Subject: [PATCH 2/3] dts: bcm2711: drop numa_policy from bootargs
We don't compile the kernel with NUMA so drop the numa parameter
from bootargs.
Signed-off-by: Matthias Reichl <hias@horus.com>
---
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts | 2 +-
arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
index 71d228414b76..c48a0880539d 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
@@ -148,7 +148,7 @@ soc {
/ {
chosen {
- bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave";
+ bootargs = "coherent_pool=1M snd_bcm2835.enable_headphones=0 cgroup_disable=memory";
};
aliases {
diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
index eb3abcdbae6b..32453b394ded 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
@@ -3,7 +3,7 @@
/ {
chosen {
- bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave";
+ bootargs = "coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory";
};
__overrides__ {
--
2.39.5

View File

@ -1,29 +0,0 @@
From 0d692f7a53559259b1532b0503788f557e5ff182 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Wed, 13 Nov 2024 00:16:47 +0100
Subject: [PATCH 3/3] dts: bcm2712: drop numa_policy from bootargs
We don't compile the kernel with NUMA so drop the numa parameter
from bootargs.
Signed-off-by: Matthias Reichl <hias@horus.com>
---
arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
index 65abbb450daf..6bb6e81313b5 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
@@ -99,7 +99,7 @@ vdd_5v0_reg: fixedregulator_5v0 {
/ {
chosen: chosen {
- bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave";
+ bootargs = "reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory";
stdout-path = "serial10:115200n8";
};
--
2.39.5

View File

@ -1,49 +0,0 @@
From 826beca0ce76876507372349da860a986078eacd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Istv=C3=A1n=20V=C3=A1radi?= <ivaradi@varadiistvan.hu>
Date: Tue, 13 Feb 2024 21:20:32 +0100
Subject: [PATCH] media: anysee: accept read buffers of length 1 in
anysee_master_xfer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
anysee_master_xfer currently accepts read messages of length 2 only.
However, several frontends, e.g. tda10023 send buffers of length 1,
containing an 8-bit register number (see tda10023_readreg).
These buffers are rejected currently, making many Anysee variants
to not work. In these cases the "Unsupported Anysee version"
message is logged.
This patch alters the function to accept buffers of a length of 1 too.
Signed-off-by: István Váradi <ivaradi@varadiistvan.hu>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[hverkuil: add spaces around '<', fix typo in 'sevaral']
---
drivers/media/usb/dvb-usb-v2/anysee.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/dvb-usb-v2/anysee.c b/drivers/media/usb/dvb-usb-v2/anysee.c
index a1235d0cce92..8699846eb416 100644
--- a/drivers/media/usb/dvb-usb-v2/anysee.c
+++ b/drivers/media/usb/dvb-usb-v2/anysee.c
@@ -202,14 +202,14 @@ static int anysee_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
while (i < num) {
if (num > i + 1 && (msg[i+1].flags & I2C_M_RD)) {
- if (msg[i].len != 2 || msg[i + 1].len > 60) {
+ if (msg[i].len < 1 || msg[i].len > 2 || msg[i + 1].len > 60) {
ret = -EOPNOTSUPP;
break;
}
buf[0] = CMD_I2C_READ;
buf[1] = (msg[i].addr << 1) | 0x01;
buf[2] = msg[i].buf[0];
- buf[3] = msg[i].buf[1];
+ buf[3] = (msg[i].len < 2) ? 0 : msg[i].buf[1];
buf[4] = msg[i].len-1;
buf[5] = msg[i+1].len;
ret = anysee_ctrl_msg(d, buf, 6, msg[i+1].buf,
--
2.34.1