Skip to content

Commit 224b35a

Browse files
authored
Restore RockPI-S audio again (#8360)
* set clocks to the old default rate if the codec never calls set_sysclk After mainline kernel commit 21cfbeae7d7c54a6cdea4b00096150f438f4fbde rockchip i2s requires that soc codecs call set_sysclk to explicity select a rate. This patch simply reverts to the old behavior if the codec does call set_sysclk. (rather that failing in that case with a bogus rate of 0hz) Also adds rk3308 vendor ASoC support to 6.16 kernel * Require use of device tree overlay to enable pcm5102a CODEC
1 parent 0cc8ccf commit 224b35a

File tree

5 files changed

+7256
-74
lines changed

5 files changed

+7256
-74
lines changed

patch/kernel/archive/rockchip64-6.12/board-rockpis-dts-fixes.patch

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2-
From: Paolo Sabatino <[email protected]>
3-
Date: Wed, 27 Nov 2024 19:06:49 +0100
4-
Subject: rk3308: fixes for rock pi s dts
2+
From: Brent Roman <[email protected]>
3+
Date: Sat, 05 Jul 2025 11:48:31 -0800
4+
Subject: rk3308: fixes for rock pi s dts (sans pcm5102)
55

66
---
77
arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts | 73 ++++++++++
@@ -11,7 +11,7 @@ diff --git a/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts b/arch/arm64/boot
1111
index 111111111111..222222222222 100644
1212
--- a/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
1313
+++ b/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
14-
@@ -48,6 +48,54 @@ blue-led {
14+
@@ -48,6 +48,30 @@ blue-led {
1515
};
1616
};
1717

@@ -38,30 +38,6 @@ index 111111111111..222222222222 100644
3838
+ };
3939
+
4040
+ };
41-
+
42-
+ pcm5102_sound: pcm5102-sound {
43-
+ compatible = "simple-audio-card";
44-
+ simple-audio-card,format = "i2s";
45-
+ simple-audio-card,mclk-fs = <256>;
46-
+ simple-audio-card,name = "pcm5102a";
47-
+
48-
+ simple-audio-card,dai-link@1 {
49-
+ format = "i2s";
50-
+ cpu {
51-
+ sound-dai = <&i2s_8ch_0>;
52-
+ };
53-
+
54-
+ codec {
55-
+ sound-dai = <&pcm5102a>;
56-
+ };
57-
+ };
58-
+ };
59-
+
60-
+ pcm5102a: pcm5102a {
61-
+ #sound-dai-cells = <0>;
62-
+ compatible = "ti,pcm5102a";
63-
+ pcm510x,format = "i2s";
64-
+ };
6541
+
6642
sdio_pwrseq: sdio-pwrseq {
6743
compatible = "mmc-pwrseq-simple";
@@ -78,18 +54,10 @@ index 111111111111..222222222222 100644
7854
&cpu0 {
7955
cpu-supply = <&vdd_core>;
8056
};
81-
@@ -242,6 +295,19 @@ &io_domains {
57+
@@ -242,6 +295,11 @@ &io_domains {
8258
status = "okay";
8359
};
8460

85-
+&i2s_8ch_0 {
86-
+ #sound-dai-cells = <0>;
87-
+ assigned-clocks = <&cru SCLK_I2S0_8CH_RX>;
88-
+ assigned-clock-parents = <&cru SCLK_I2S0_8CH_TX_MUX>;
89-
+ rockchip,clk-trcm = <1>;
90-
+ status = "okay";
91-
+};
92-
+
9361
+&i2s_8ch_2 {
9462
+ #sound-dai-cells = <0>;
9563
+ status = "okay";
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: Brent Roman <[email protected]>
3+
Date: Fri, 4 Jul 2025 22:45:29 -0700
4+
Subject: Restore rockchip_i2s_tdm default clk rates
5+
sound/soc/rockchip/rockchip_i2s_tdm.c
6+
7+
Signed-off-by: Brent Roman <[email protected]>
8+
---
9+
sound/soc/rockchip/rockchip_i2s_tdm.c | 4 ++++
10+
1 file changed, 4 insertions(+)
11+
12+
diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c
13+
index 7feefeb6b..50737e647 100644
14+
--- a/sound/soc/rockchip/rockchip_i2s_tdm.c
15+
+++ b/sound/soc/rockchip/rockchip_i2s_tdm.c
16+
@@ -20,10 +20,11 @@
17+
18+
#include "rockchip_i2s_tdm.h"
19+
20+
#define DRV_NAME "rockchip-i2s-tdm"
21+
22+
+#define DEFAULT_MCLK_FS 256
23+
#define CH_GRP_MAX 4 /* The max channel 8 / 2 */
24+
#define MULTIPLEX_CH_MAX 10
25+
26+
#define TRCM_TXRX 0
27+
#define TRCM_TX 1
28+
@@ -691,10 +692,13 @@ static int rockchip_i2s_tdm_hw_params(struct snd_pcm_substream *substream,
29+
} else {
30+
mclk = i2s_tdm->mclk_rx;
31+
mclk_rate = i2s_tdm->mclk_rx_freq;
32+
}
33+
34+
+ /* set to default rate if set_sysclk was never called */
35+
+ if (!mclk_rate)
36+
+ mclk_rate = DEFAULT_MCLK_FS * params_rate(params);
37+
err = clk_set_rate(mclk, mclk_rate);
38+
if (err)
39+
return err;
40+
41+
mclk_rate = clk_get_rate(mclk);
42+
--
43+
Created with Armbian build tools https://github.com/armbian/build
44+

patch/kernel/archive/rockchip64-6.16/board-rockpis-dts-fixes.patch

Lines changed: 5 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2-
From: Paolo Sabatino <[email protected]>
3-
Date: Wed, 27 Nov 2024 19:06:49 +0100
4-
Subject: rk3308: fixes for rock pi s dts
2+
From: Brent Roman <[email protected]>
3+
Date: Sat, 05 Jul 2025 11:48:31 -0800
4+
Subject: rk3308: fixes for rock pi s dts (sans pcm5102)
55

66
---
77
arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts | 73 ++++++++++
@@ -11,7 +11,7 @@ diff --git a/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts b/arch/arm64/boot
1111
index 111111111111..222222222222 100644
1212
--- a/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
1313
+++ b/arch/arm64/boot/dts/rockchip/rk3308-rock-pi-s.dts
14-
@@ -48,6 +48,54 @@ blue-led {
14+
@@ -48,6 +48,30 @@ blue-led {
1515
};
1616
};
1717

@@ -38,30 +38,6 @@ index 111111111111..222222222222 100644
3838
+ };
3939
+
4040
+ };
41-
+
42-
+ pcm5102_sound: pcm5102-sound {
43-
+ compatible = "simple-audio-card";
44-
+ simple-audio-card,format = "i2s";
45-
+ simple-audio-card,mclk-fs = <256>;
46-
+ simple-audio-card,name = "pcm5102a";
47-
+
48-
+ simple-audio-card,dai-link@1 {
49-
+ format = "i2s";
50-
+ cpu {
51-
+ sound-dai = <&i2s_8ch_0>;
52-
+ };
53-
+
54-
+ codec {
55-
+ sound-dai = <&pcm5102a>;
56-
+ };
57-
+ };
58-
+ };
59-
+
60-
+ pcm5102a: pcm5102a {
61-
+ #sound-dai-cells = <0>;
62-
+ compatible = "ti,pcm5102a";
63-
+ pcm510x,format = "i2s";
64-
+ };
6541
+
6642
sdio_pwrseq: sdio-pwrseq {
6743
compatible = "mmc-pwrseq-simple";
@@ -78,18 +54,10 @@ index 111111111111..222222222222 100644
7854
&cpu0 {
7955
cpu-supply = <&vdd_core>;
8056
};
81-
@@ -242,6 +295,19 @@ &io_domains {
57+
@@ -242,6 +295,11 @@ &io_domains {
8258
status = "okay";
8359
};
8460

85-
+&i2s_8ch_0 {
86-
+ #sound-dai-cells = <0>;
87-
+ assigned-clocks = <&cru SCLK_I2S0_8CH_RX>;
88-
+ assigned-clock-parents = <&cru SCLK_I2S0_8CH_TX_MUX>;
89-
+ rockchip,clk-trcm = <1>;
90-
+ status = "okay";
91-
+};
92-
+
9361
+&i2s_8ch_2 {
9462
+ #sound-dai-cells = <0>;
9563
+ status = "okay";

0 commit comments

Comments
 (0)