[alsa-devel] [PATCH] [PATCH v4] ASoC: Intel: kbl: Move codec sysclk config to codec_init function
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Thu May 31 23:16:47 CEST 2018
On 05/31/2018 12:18 PM, mac.chiang at intel.com wrote:
> From: Mac Chiang <mac.chiang at intel.com>
>
> On APL, commit fd0f237572ad
> ("ASoC: Intel: bxt: Move codec sysclk config to codec_init function")
> fixed an issue related to jack detection.
>
> The MCLK for DA7219 does not change in this platform, but is
> currently being configured everytime as part of the platform_clock
> event handler for DAPM. The upshot of this is that we have
> unnecessary calls to this function, and it also means that if
> a stream hasn't yet been started, DA7219 driver does not have the
> correct MCLK rates programmed and so the HP detection feature does
> not operate as expected.
>
> The same fix is needed on KBL.
>
> This patch rectifies this issue by moving the sysclk call to
> codec_init function so it's only called once at initialisation.
>
> Signed-off-by: Mac Chiang <mac.chiang at intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
>
> ---
> Notes(changelog):
> v2:
> - correct the MCLK to 24.576M
> v3:
> - described the comments clearly
> v4:
> - move the notes at the end
>
> sound/soc/intel/boards/kbl_da7219_max98357a.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/sound/soc/intel/boards/kbl_da7219_max98357a.c b/sound/soc/intel/boards/kbl_da7219_max98357a.c
> index c332a32..ad3029d 100644
> --- a/sound/soc/intel/boards/kbl_da7219_max98357a.c
> +++ b/sound/soc/intel/boards/kbl_da7219_max98357a.c
> @@ -66,14 +66,6 @@ static int platform_clock_control(struct snd_soc_dapm_widget *w,
> return -EIO;
> }
>
> - /* Configure sysclk for codec */
> - ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, 24576000,
> - SND_SOC_CLOCK_IN);
> - if (ret) {
> - dev_err(card->dev, "can't set codec sysclk configuration\n");
> - return ret;
> - }
> -
> if (SND_SOC_DAPM_EVENT_OFF(event)) {
> ret = snd_soc_dai_set_pll(codec_dai, 0,
> DA7219_SYSCLK_MCLK, 0, 0);
> @@ -170,9 +162,18 @@ static int kabylake_da7219_codec_init(struct snd_soc_pcm_runtime *rtd)
> {
> struct kbl_codec_private *ctx = snd_soc_card_get_drvdata(rtd->card);
> struct snd_soc_component *component = rtd->codec_dai->component;
> + struct snd_soc_dai *codec_dai = rtd->codec_dai;
> struct snd_soc_jack *jack;
> int ret;
>
> + /* Configure sysclk for codec */
> + ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, 24576000,
> + SND_SOC_CLOCK_IN);
> + if (ret) {
> + dev_err(rtd->dev, "can't set codec sysclk configuration\n");
> + return ret;
> + }
> +
> /*
> * Headset buttons map to the google Reference headset.
> * These can be configured by userspace.
More information about the Alsa-devel
mailing list