Re: [PATCH v1] arm64: dts: ti: verdin-am62: dahlia: fix audio clock

From: Charles Keepax
Date: Fri Mar 15 2024 - 10:26:59 EST


On Fri, Mar 15, 2024 at 11:25:00AM +0100, Andrejs Cainikovs wrote:
> From: Andrejs Cainikovs <andrejs.cainikovs@xxxxxxxxxxx>
>
> In current configuration, wm8904 codec on Dahlia carrier board provides
> distorted audio output. This happens due to reference clock is fixed to
> 25MHz and no FLL is enabled. During playback following parameters are set:
>
> 44100Hz:
>
> [ 310.276924] wm8904 1-001a: Target BCLK is 1411200Hz
> [ 310.276990] wm8904 1-001a: Using 25000000Hz MCLK
> [ 310.277001] wm8904 1-001a: CLK_SYS is 12500000Hz
> [ 310.277018] wm8904 1-001a: Selected CLK_SYS_RATIO of 256
> [ 310.277026] wm8904 1-001a: Selected SAMPLE_RATE of 44100Hz
> [ 310.277034] wm8904 1-001a: Selected BCLK_DIV of 80 for 1562500Hz BCLK
> [ 310.277044] wm8904 1-001a: LRCLK_RATE is 35
>
> Deviation = 1411200 vs 1562500 = 10.721%
> Also, LRCLK_RATE is 35, should be 32.
>
> 48000Hz:
>
> [ 302.449970] wm8904 1-001a: Target BCLK is 1536000Hz
> [ 302.450037] wm8904 1-001a: Using 25000000Hz MCLK
> [ 302.450049] wm8904 1-001a: CLK_SYS is 12500000Hz
> [ 302.450065] wm8904 1-001a: Selected CLK_SYS_RATIO of 256
> [ 302.450074] wm8904 1-001a: Selected SAMPLE_RATE of 48000Hz
> [ 302.450083] wm8904 1-001a: Selected BCLK_DIV of 80 for 1562500Hz BCLK
> [ 302.450092] wm8904 1-001a: LRCLK_RATE is 32
>
> Deviation = 1536000 vs 1562500 = 1.725%
>
> Enabling wm8904 FLL via providing mclk-fs property to simple-audio-card
> configures clocks properly, but also adjusts audio reference clock
> (mclk), which in case of TI AM62 should be avoided, as it only
> supports 25MHz output [1][2].
>
> This change enables FLL on wm8904 by providing mclk-fs, and drops
> audio reference clock out of DAI configuration, which prevents
> simple-audio-card to adjust it before every playback [3].
>
> 41000Hz:
>
> [ 111.820533] wm8904 1-001a: FLL configured for 25000000Hz->11289600Hz
> [ 111.820597] wm8904 1-001a: Clock source is 0 at 11289600Hz
> [ 111.820651] wm8904 1-001a: Using 11289600Hz FLL clock
> [ 111.820703] wm8904 1-001a: CLK_SYS is 11289600Hz
> [ 111.820798] wm8904 1-001a: Target BCLK is 1411200Hz
> [ 111.820847] wm8904 1-001a: Using 11289600Hz FLL clock
> [ 111.820894] wm8904 1-001a: CLK_SYS is 11289600Hz
> [ 111.820933] wm8904 1-001a: Selected CLK_SYS_RATIO of 256
> [ 111.820971] wm8904 1-001a: Selected SAMPLE_RATE of 44100Hz
> [ 111.821009] wm8904 1-001a: Selected BCLK_DIV of 80 for 1411200Hz BCLK
> [ 111.821051] wm8904 1-001a: LRCLK_RATE is 32
>
> 48000Hz:
>
> [ 144.119254] wm8904 1-001a: FLL configured for 25000000Hz->12288000Hz
> [ 144.119309] wm8904 1-001a: Clock source is 0 at 12288000Hz
> [ 144.119364] wm8904 1-001a: Using 12288000Hz FLL clock
> [ 144.119413] wm8904 1-001a: CLK_SYS is 12288000Hz
> [ 144.119512] wm8904 1-001a: Target BCLK is 1536000Hz
> [ 144.119561] wm8904 1-001a: Using 12288000Hz FLL clock
> [ 144.119608] wm8904 1-001a: CLK_SYS is 12288000Hz
> [ 144.119646] wm8904 1-001a: Selected CLK_SYS_RATIO of 256
> [ 144.119685] wm8904 1-001a: Selected SAMPLE_RATE of 48000Hz
> [ 144.119723] wm8904 1-001a: Selected BCLK_DIV of 80 for 1536000Hz BCLK
> [ 144.119764] wm8904 1-001a: LRCLK_RATE is 32
>
> [1]: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1175479/processor-sdk-am62x-output-audio_ext_refclk0-as-mclk-for-codec-and-mcbsp/4444986#4444986
> [2]: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1188051/am625-audio_ext_refclk1-clock-output---dts-support/4476322#4476322
> [3]: sound/soc/generic/simple-card-utils.c#L441
>
> Fixes: f5bf894c865b ("arm64: dts: ti: verdin-am62: dahlia: add sound card")
> Suggested-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@xxxxxxxxxxx>
> ---

Reviewed-by: Charles Keepax <ckeepax@xxxxxxxxxxxxxxxxxxxxx>

Thanks,
Charles