[PATCH] ASoC: Intel: cht_bsw_nau8824: Move snd_soc_dai_set_tdm_slot call to cht_codec_fixup
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Mon Jan 11 19:09:54 CET 2021
On 1/7/21 5:53 AM, Hans de Goede wrote:
> Move the snd_soc_dai_set_tdm_slot() call from cht_codec_init() to
> cht_codec_fixup(). There are 2 reasons for doing this:
>
> 1. This aligns the cht_bsw_nau8824 with all the other BYT/CHT machine
> drivers which also do this from their codec_fixup function.
>
> 2. When using the SOF driver, things like the TDM info is set from the
> topology file. Moving the call to the codec_fixup function, which gets
> skipped when using the SOF driver avoids the call interfering with the
> settings when using the SOF driver.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
Yep, this is a required change.
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
> ---
> sound/soc/intel/boards/cht_bsw_nau8824.c | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/sound/soc/intel/boards/cht_bsw_nau8824.c b/sound/soc/intel/boards/cht_bsw_nau8824.c
> index fd5e25ca05f7..da5a5cbc8759 100644
> --- a/sound/soc/intel/boards/cht_bsw_nau8824.c
> +++ b/sound/soc/intel/boards/cht_bsw_nau8824.c
> @@ -100,13 +100,6 @@ static int cht_codec_init(struct snd_soc_pcm_runtime *runtime)
> struct snd_soc_component *component = codec_dai->component;
> int ret, jack_type;
>
> - /* TDM 4 slots 24 bit, set Rx & Tx bitmask to 4 active slots */
> - ret = snd_soc_dai_set_tdm_slot(codec_dai, 0xf, 0x1, 4, 24);
> - if (ret < 0) {
> - dev_err(runtime->dev, "can't set codec TDM slot %d\n", ret);
> - return ret;
> - }
> -
> /* NAU88L24 supports 4 butons headset detection
> * KEY_PLAYPAUSE
> * KEY_VOICECOMMAND
> @@ -141,6 +134,7 @@ static int cht_codec_fixup(struct snd_soc_pcm_runtime *rtd,
> SNDRV_PCM_HW_PARAM_CHANNELS);
> struct snd_mask *fmt =
> hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT);
> + int ret;
>
> /* The DSP will covert the FE rate to 48k, stereo, 24bits */
> rate->min = rate->max = 48000;
> @@ -150,6 +144,13 @@ static int cht_codec_fixup(struct snd_soc_pcm_runtime *rtd,
> snd_mask_none(fmt);
> params_set_format(params, SNDRV_PCM_FORMAT_S24_LE);
>
> + /* TDM 4 slots 24 bit, set Rx & Tx bitmask to 4 active slots */
> + ret = snd_soc_dai_set_tdm_slot(asoc_rtd_to_codec(rtd, 0), 0xf, 0x1, 4, 24);
> + if (ret < 0) {
> + dev_err(rtd->dev, "can't set codec TDM slot %d\n", ret);
> + return ret;
> + }
> +
> return 0;
> }
>
>
More information about the Alsa-devel
mailing list