diff mbox series

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

Message ID 20230823131651.586934-1-jakob.unterwurzacher@theobroma-systems.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/2] arm64: dts: rockchip: use codec as clock master on px30-ringneck-haikou | expand

Commit Message

Jakob Unterwurzacher Aug. 23, 2023, 1:16 p.m. UTC
From: Ermin Sunj <ermin.sunj@theobroma-systems.com>

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@theobroma-systems.com>
Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
---
 arch/arm64/boot/dts/rockchip/px30-ringneck-haikou.dts | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Quentin Schulz Sept. 1, 2023, 8:06 a.m. UTC | #1
Hi Jakob,

On 8/23/23 3:16 PM, Jakob Unterwurzacher <jakobunt@gmail.com> wrote:
> From: Ermin Sunj <ermin.sunj@theobroma-systems.com>
> 
> 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@theobroma-systems.com>
> Signed-off-by: Jakob Unterwurzacher <jakob.unterwurzacher@theobroma-systems.com>
> ---
>   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
Jakob Unterwurzacher Sept. 6, 2023, 1:05 p.m. UTC | #2
On 01.09.23 10:06, quentin.schulz@theobroma-systems.com wrote:
> 
> So I very much assume we should also delete those two lines in the 
> simple-audio-card,cpu node?

Ack, I will send v3.


Thanks, Jakob
diff mbox series

Patch

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>;
 		};