Message ID | 20230524074156.147387-4-cristian.ciocaltea@collabora.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ES8316 audio codec fixes on Rock5B | expand |
On Wed, May 24, 2023 at 10:41:56AM +0300, Cristian Ciocaltea wrote: > The I2S0_8CH_MCLKOUT clock rate on Rock 5B board defaults to 12 MHz and > it is used to provide the master clock (MCLK) for the ES8316 audio > codec. > > On sound card initialization, this limits the allowed sample rates > according to the MCLK/LRCK ratios supported by the codec, which results > in the following non-standard rates: 15625, 30000, 31250, 46875. > > Hence, the very first access of the sound card fails: > > Broken configuration for playback: no configurations available: Invalid argument > Setting of hwparams failed: Invalid argument > > However, all subsequent attempts will succeed, as the audio graph card > will request a correct clock frequency, based on the stream sample rate > and the multiplication factor. > > Assign MCLK to 12.288 MHz, which allows the codec to advertise most of > the standard sample rates. Surely this is irrelevant with your previous change, and if the clock is freely reprogrammable as it sounds even harmful given that it'll restrict rates that are not available with the selected MCLK?
On 5/24/23 13:39, Mark Brown wrote: > On Wed, May 24, 2023 at 10:41:56AM +0300, Cristian Ciocaltea wrote: >> The I2S0_8CH_MCLKOUT clock rate on Rock 5B board defaults to 12 MHz and >> it is used to provide the master clock (MCLK) for the ES8316 audio >> codec. >> >> On sound card initialization, this limits the allowed sample rates >> according to the MCLK/LRCK ratios supported by the codec, which results >> in the following non-standard rates: 15625, 30000, 31250, 46875. >> >> Hence, the very first access of the sound card fails: >> >> Broken configuration for playback: no configurations available: Invalid argument >> Setting of hwparams failed: Invalid argument >> >> However, all subsequent attempts will succeed, as the audio graph card >> will request a correct clock frequency, based on the stream sample rate >> and the multiplication factor. >> >> Assign MCLK to 12.288 MHz, which allows the codec to advertise most of >> the standard sample rates. > > Surely this is irrelevant with your previous change, and if the clock is > freely reprogrammable as it sounds even harmful given that it'll > restrict rates that are not available with the selected MCLK? As mentioned in the previous patch description, there's a bad timing with es8316_pcm_startup() being executed before the 2nd call to es8316_set_dai_sysclk(), with the effect that the new/updated rate constraints won't be used until the next playback attempt. Hence the approach here was to ensure the initial list of restricted rates is sane, by (pre)assigning a proper MCLK. Alternatively, we could have used an unsupported MCLK and, with the help of the previous patch, we would have ended up with no restrictions applied on es8316_pcm_startup().
diff --git a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts index 3e4aee8f70c1..30cdd366813f 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts @@ -133,6 +133,8 @@ es8316: audio-codec@11 { reg = <0x11>; clocks = <&cru I2S0_8CH_MCLKOUT>; clock-names = "mclk"; + assigned-clocks = <&cru I2S0_8CH_MCLKOUT>; + assigned-clock-rates = <12288000>; #sound-dai-cells = <0>; port {
The I2S0_8CH_MCLKOUT clock rate on Rock 5B board defaults to 12 MHz and it is used to provide the master clock (MCLK) for the ES8316 audio codec. On sound card initialization, this limits the allowed sample rates according to the MCLK/LRCK ratios supported by the codec, which results in the following non-standard rates: 15625, 30000, 31250, 46875. Hence, the very first access of the sound card fails: Broken configuration for playback: no configurations available: Invalid argument Setting of hwparams failed: Invalid argument However, all subsequent attempts will succeed, as the audio graph card will request a correct clock frequency, based on the stream sample rate and the multiplication factor. Assign MCLK to 12.288 MHz, which allows the codec to advertise most of the standard sample rates. Fixes: 55529fe3f32d ("arm64: dts: rockchip: Add rk3588-rock-5b analog audio") Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> --- arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 2 ++ 1 file changed, 2 insertions(+)