* [PATCH v2] riscv: dts: spacemit: k3: add i2s0-i2s5 nodes
@ 2026-09-09 17:17 Troy Mitchell
[not found] ` <20260909172639.BCDE91F000FF@smtp.kernel.org>
0 siblings, 1 reply; 2+ messages in thread
From: Troy Mitchell @ 2026-09-09 17:17 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
Yixun Lan, Jinmei Wei, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Paul Walmsley, Palmer Dabbelt, Albert Ou,
Alexandre Ghiti
Cc: linux-sound, linux-riscv, spacemit, linux-kernel, devicetree,
Arnd Bergmann, Troy Mitchell
Add the six SSPA-based I2S controller nodes for the K3 SoC.
i2s0 and i2s2-i2s5 each have a dedicated per-controller sysclk
divider, so they use the published 7-clock layout (sysclk, bclk, bus,
func, sysclk_div, c_sysclk, c_bclk).
i2s1 uses 6 clocks (sysclk, bclk, bus, func, c_sysclk, c_bclk) because
its sysclk is driven directly by a DDN (ISCCR0) and has no separate
divider stage.
Signed-off-by: Troy Mitchell <troy.mitchell@linux.spacemit.com>
Reviewed-by: Yixun Lan <dlan@kernel.org>
---
The DTS patch was applied as cd01c677869a and reverted by
1f5d8228ca2c because the SoC DT branch lacked CLK_MPMU_I2S_SYSCLK.
The clock binding, clock driver and ASoC dependencies are now all
included in v7.3-rc1, so this submission has no cross-tree dependencies.
Arnd requested resubmission after -rc1:
https://lore.kernel.org/all/cec87950-f0e1-49f8-9a2c-f8b87b460da2@app.fastmail.com/
---
Changes in v2:
- Rebase onto v7.3-rc1, which includes all prerequisite clock changes.
- Drop the already merged ASoC clock-name fix (4c69d04958ec) and
six-clock binding update (ec926b3bcb49); retain only the DTS patch.
- Resolve the insertion conflict with the new SPI nodes by placing
I2S0-I2S3 before SPI0/SPI1 and I2S4-I2S5 after them, in address order.
The I2S node contents are unchanged from v1.
- Carry Yixun Lan's Reviewed-by from v1.
- Link to v1: https://lore.kernel.org/all/20260721-kx-i2s-dts-v1-0-d22cb6cfaab5@linux.spacemit.com/
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Yixun Lan <dlan@kernel.org>
To: Paul Walmsley <pjw@kernel.org>
To: Palmer Dabbelt <palmer@dabbelt.com>
To: Albert Ou <aou@eecs.berkeley.edu>
To: Alexandre Ghiti <alex@ghiti.fr>
Cc: devicetree@vger.kernel.org
Cc: linux-riscv@lists.infradead.org
Cc: spacemit@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
---
arch/riscv/boot/dts/spacemit/k3.dtsi | 119 +++++++++++++++++++++++++++++++++++
1 file changed, 119 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spacemit/k3.dtsi
index c3f2dce0969c0..f2ff9f02249c3 100644
--- a/arch/riscv/boot/dts/spacemit/k3.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
@@ -1140,6 +1140,85 @@ uart10: serial@d401f000 {
status = "disabled";
};
+ i2s0: i2s@d4026000 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4026000 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S0_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S0_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S0_BUS>,
+ <&syscon_apbc CLK_APBC_I2S0>,
+ <&syscon_mpmu CLK_MPMU_I2S0_SYSCLK_DIV>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "sysclk_div", "c_sysclk", "c_bclk";
+ dmas = <&pdma 21>, <&pdma 22>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S0>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
+ i2s1: i2s@d4026800 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4026800 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S1_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S1_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S1_BUS>,
+ <&syscon_apbc CLK_APBC_I2S1>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "c_sysclk", "c_bclk";
+ dmas = <&pdma 23>, <&pdma 24>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S1>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
+ i2s2: i2s@d4027000 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4027000 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S2_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S2_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S2_BUS>,
+ <&syscon_apbc CLK_APBC_I2S2>,
+ <&syscon_mpmu CLK_MPMU_I2S2_SYSCLK_DIV>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "sysclk_div", "c_sysclk", "c_bclk";
+ dmas = <&pdma 56>, <&pdma 57>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S2>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
+ i2s3: i2s@d4027800 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4027800 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S3_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S3_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S3_BUS>,
+ <&syscon_apbc CLK_APBC_I2S3>,
+ <&syscon_mpmu CLK_MPMU_I2S3_SYSCLK_DIV>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "sysclk_div", "c_sysclk", "c_bclk";
+ dmas = <&pdma 58>, <&pdma 59>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S3>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
spi0: spi@d4040000 {
compatible = "spacemit,k3-spi", "spacemit,k1-spi";
reg = <0x0 0xd4040000 0x0 0x30>;
@@ -1170,6 +1249,46 @@ spi1: spi@d4040800 {
status = "disabled";
};
+ i2s4: i2s@d4041000 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4041000 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S4_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S4_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S4_BUS>,
+ <&syscon_apbc CLK_APBC_I2S4>,
+ <&syscon_mpmu CLK_MPMU_I2S4_SYSCLK_DIV>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "sysclk_div", "c_sysclk", "c_bclk";
+ dmas = <&pdma 60>, <&pdma 61>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S4>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
+ i2s5: i2s@d4041800 {
+ compatible = "spacemit,k3-i2s";
+ reg = <0x0 0xd4041800 0x0 0x30>;
+ clocks = <&syscon_mpmu CLK_MPMU_I2S5_SYSCLK>,
+ <&syscon_apbc CLK_APBC_I2S5_BCLK>,
+ <&syscon_apbc CLK_APBC_I2S5_BUS>,
+ <&syscon_apbc CLK_APBC_I2S5>,
+ <&syscon_mpmu CLK_MPMU_I2S5_SYSCLK_DIV>,
+ <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
+ <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
+ clock-names = "sysclk", "bclk", "bus", "func",
+ "sysclk_div", "c_sysclk", "c_bclk";
+ dmas = <&pdma 62>, <&pdma 63>;
+ dma-names = "tx", "rx";
+ resets = <&syscon_apbc RESET_APBC_I2S5>;
+ #sound-dai-cells = <0>;
+
+ status = "disabled";
+ };
+
syscon_mpmu: system-controller@d4050000 {
compatible = "spacemit,k3-syscon-mpmu";
reg = <0x0 0xd4050000 0x0 0x10000>;
---
base-commit: cee9395acd8043be0644b25c34bfa86623f2b935
change-id: 20260615-kx-i2s-dts-123764c9b2b2
Best regards,
--
Troy Mitchell <troy.mitchell@linux.spacemit.com>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] riscv: dts: spacemit: k3: add i2s0-i2s5 nodes
[not found] ` <20260909172639.BCDE91F000FF@smtp.kernel.org>
@ 2026-09-10 1:32 ` Troy Mitchell
0 siblings, 0 replies; 2+ messages in thread
From: Troy Mitchell @ 2026-09-10 1:32 UTC (permalink / raw)
To: Troy Mitchell, Liam Girdwood, Mark Brown, Jaroslav Kysela,
Takashi Iwai, Yixun Lan, Jinmei Wei, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti
Cc: linux-sound, linux-riscv, spacemit, linux-kernel, devicetree,
Arnd Bergmann
[-- Attachment #1.1: Type: text/plain, Size: 1939 bytes --]
On Thu Sep 10, 2026 at 1:26 AM +08, sashiko-bot wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Low] The newly added I2S device tree nodes use hardcoded magic numbers for DMA channels instead of the available hardware macros from `k3-pdma.h`.
> --
>
> commit 8163a94c4a6b08c0fea00752b0853d3f434a12d1
> Author: Troy Mitchell <troy.mitchell@linux.spacemit.com>
>
> riscv: dts: spacemit: k3: add i2s0-i2s5 nodes
>
> Add the six SSPA-based I2S controller nodes for the K3 SoC.
> i2s0 and i2s2-i2s5 each have a dedicated per-controller sysclk
> divider, so they use the published 7-clock layout.
>
> Link: https://lore.kernel.org/all/20260721-kx-i2s-dts-v1-0-d22cb6cfaab5@linux.spacemit.com/
>
>> diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spacemit/k3.dtsi
>> index c3f2dce0969c0..f2ff9f02249c3 100644
>> --- a/arch/riscv/boot/dts/spacemit/k3.dtsi
>> +++ b/arch/riscv/boot/dts/spacemit/k3.dtsi
>
> [ ... ]
>
>> @@ -1140,6 +1140,85 @@ uart10: serial@d401f000 {
>> status = "disabled";
>> };
>>
>> + i2s0: i2s@d4026000 {
>> + compatible = "spacemit,k3-i2s";
>> + reg = <0x0 0xd4026000 0x0 0x30>;
>> + clocks = <&syscon_mpmu CLK_MPMU_I2S0_SYSCLK>,
>> + <&syscon_apbc CLK_APBC_I2S0_BCLK>,
>> + <&syscon_apbc CLK_APBC_I2S0_BUS>,
>> + <&syscon_apbc CLK_APBC_I2S0>,
>> + <&syscon_mpmu CLK_MPMU_I2S0_SYSCLK_DIV>,
>> + <&syscon_mpmu CLK_MPMU_I2S_SYSCLK>,
>> + <&syscon_mpmu CLK_MPMU_I2S_BCLK>;
>> + clock-names = "sysclk", "bclk", "bus", "func",
>> + "sysclk_div", "c_sysclk", "c_bclk";
>> + dmas = <&pdma 21>, <&pdma 22>;
>
> [Severity: Low]
> Could this use the available hardware macros from k3-pdma.h instead of
> hardcoded magic numbers, such as <&pdma K3_PDMA_SSPA0_TX>,
> <&pdma K3_PDMA_SSPA0_RX>?
Yes, will fix in the next version.
--
Troy Mitchell
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 248 bytes --]
[-- Attachment #2: Type: text/plain, Size: 161 bytes --]
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-10 1:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-09 17:17 [PATCH v2] riscv: dts: spacemit: k3: add i2s0-i2s5 nodes Troy Mitchell
[not found] ` <20260909172639.BCDE91F000FF@smtp.kernel.org>
2026-09-10 1:32 ` Troy Mitchell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox