OpenCloudOS-Kernel/sound/soc/rockchip
Detlev Casanova 730071ea1e ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback
[ Upstream commit 5323186e2e8d33c073fad51e24f18e2d6dbae2da ]

In commit
9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates"),
the set_sysclk callback was removed as considered unused as the mclk rate
can be set in the hw_params callback.
The difference between hw_params and set_sysclk is that the former is
called with the audio sampling rate set in the params (e.g.: 48000 Hz)
while the latter is called with a clock rate already computed with
  sampling_rate * mclk-fs (e.g.: 48000 * 256)

For HDMI audio using the Rockchip I2S TDM driver, the mclk-fs value must
be set to 128 instead of the default 256, and that value is set in the
device tree at the machine driver level (like a simple-audio-card
compatible node).
Therefore, the i2s_tdm driver has no idea that another mclk-fs value can
be configured and simply computes the mclk rate in the hw_params callback
with DEFAULT_MCLK_FS * params_rate(params), which is wrong for HDMI
audio.

Re-add the set_sysclk callback so that the mclk rate is computed by the
machine driver which has the correct mclk-fs value set in its device tree
node.

Fixes: 9e2ab4b18ebd ("ASoC: rockchip: i2s-tdm: Fix inaccurate sampling rates")
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
Link: https://patch.msgid.link/20250117163102.65807-1-detlev.casanova@collabora.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-02-08 09:52:33 +01:00
..
Kconfig ASoC: Kconfig: fix spelling of "up to" 2023-01-25 14:24:03 +00:00
Makefile Merge branch 'asoc-5.15' into asoc-5.16 2021-10-21 14:41:32 +01:00
rk3288_hdmi_analog.c ASoC: rockchip: simplify error handling 2022-06-06 12:35:20 +01:00
rk3399_gru_sound.c ASoC: rk3399-gru-sound: Map missing Line Out jack kcontrol 2023-08-07 14:33:04 +01:00
rockchip_i2s.c ASoC: rockchip: merge DAI call back functions into ops 2023-08-14 13:10:26 +01:00
rockchip_i2s.h ASoC: rockchip: i2s: Add support for frame inversion 2021-08-26 13:59:40 +01:00
rockchip_i2s_tdm.c ASoC: rockchip: i2s_tdm: Re-add the set_sysclk callback 2025-02-08 09:52:33 +01:00
rockchip_i2s_tdm.h ASoC: rockchip: add support for i2s-tdm controller 2021-10-07 16:58:16 +01:00
rockchip_max98090.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
rockchip_pdm.c ASoC: rockchip: Fix Wvoid-pointer-to-enum-cast warning 2023-08-15 19:23:00 +01:00
rockchip_pdm.h ASoC: rockchip: pdm: Add support for path map 2021-09-13 01:44:10 +01:00
rockchip_rt5645.c ASoC: rockchip: rockchip_rt5645: Map missing jack kcontrols 2023-08-07 14:33:05 +01:00
rockchip_spdif.c ASoC: rockchip: merge DAI call back functions into ops 2023-08-14 13:10:26 +01:00
rockchip_spdif.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00