Re: [PATCH v2 1/2] arm64: dts: rockchip: use codec as clock master on px30-ringneck-haikou

From: quentin . schulz
Date: Fri Sep 01 2023 - 04:07:09 EST


Hi Jakob,

On 8/23/23 3:16 PM, Jakob Unterwurzacher <jakobunt@xxxxxxxxx> wrote:
From: Ermin Sunj <ermin.sunj@xxxxxxxxxxxxxxxxxxxxx>

If the codec is not the clock master, the MCLK needs to be
synchronous to both I2S_SCL ans I2S_LRCLK. We do not have that
on Haikou, causing distorted audio.

Before:

Running an audio test script on Ringneck, 1kHz
output sine wave is not stable and shows distortion.

After:

10h audio test script loop failed only one time.
That is 0.00014% failure rate.

Signed-off-by: Ermin Sunj <ermin.sunj@xxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@xxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts b/arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts
index 3a447d03e2a8..dafeef0c2dab 100644
--- a/arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts
+++ b/arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts
@@ -68,8 +68,10 @@ i2s0-sound {
simple-audio-card,format = "i2s";
simple-audio-card,name = "Haikou,I2S-codec";
simple-audio-card,mclk-fs = <512>;
+ simple-audio-card,frame-master = <&sgtl5000_codec>;
+ simple-audio-card,bitclock-master = <&sgtl5000_codec>;
- simple-audio-card,codec {
+ sgtl5000_codec: simple-audio-card,codec {
clocks = <&sgtl5000_clk>;
sound-dai = <&sgtl5000>;
};


It isn't actually shown in the diff here but we now have two different bitclock and frame masters, specified differently, c.f.:

https://gitlab.com/linux-kernel/linux/-/blob/master/arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts?ref_type=heads#L78-L79

So I very much assume we should also delete those two lines in the simple-audio-card,cpu node?

Cheers,
Quentin