Hey everyone.
/dts-v1/;
/plugin/;
/ {
metadata {
title = "Enable I2S3 TDM4";
compatible = "radxa,zero3";
category = "audio";
exclusive = "GPIO3_A3", "GPIO3_A4", "GPIO3_A5", "GPIO3_A6";
description = "Enable I2S3 TDM4.";
};
};
&i2s3_2ch {
status = "okay";
rockchip,bclk-fs = <128>;
rockchip,clk-trcm = <1>;
rockchip,playback-only;
rockchip,playback-channels = <4>;
//rockchip,i2s-broken-burst-len;
//rockchip,grf = <0x16>;
pinctrl-names = "default";
pinctrl-0 = <&i2s3m0_sclk &i2s3m0_lrck &i2s3m0_sdi &i2s3m0_sdo>;
};
&{/} {
sound {
status = "okay";
compatible = "simple-audio-card";
simple-audio-card,name = "i2s3-tdm4";
simple-audio-card,format = "dsp_a";
simple-audio-card,mclk-fs = <256>;
simple-audio-card,bitclock-master = <&cpu_dai>;
simple-audio-card,frame-master = <&cpu_dai>;
cpu_dai: simple-audio-card,cpu {
sound-dai = <&i2s3_2ch>;
system-clock-frequency = <12288000>;
system-clock-direction = "out";
dai-tdm-slot-num = <4>;
dai-tdm-slot-width = <32>;
dai-tdm-slot-tx-mask = <0xf>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&tdm_dummy>;
};
};
tdm_dummy: dummy-codec {
#sound-dai-cells = <0>;
compatible = "rockchip,dummy-codec";
status = "okay";
};
};
Hey everyone.
Summary
When running TDM4 on I2S3, playback works in some cases, but the frame clock (FCLK/FSYNC) at 48 kHz is not continuous. Instead of a stable 48 kHz clock, it appears in bursts (“packetized”) with brief pauses between packets. For my use case, a continuous, gap-free 48 kHz FCLK is required.
Environment
DTS Configuration
Evidence


Questions