[PATCH v3] ASoC: Intel: kbl_rt5663_rt5514_max98927: Split be_hw_params_fixup function
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Wed Jul 1 18:48:16 CEST 2020
On 7/1/20 11:37 AM, N, Harshapriya wrote:
>>
>>>> For speakers and headsets its 48Khz, 2 ch and 24 bit and this
>>>> setting is done based on the front-end dai For speakers, however
>>>> support only
>>>> 16 bit, so we set it back to 16 bit If the front end dai is dmic,
>>>> then the channel
>>> is set to either 2 or 4 dmic_constraints. No other formats need to be set.
>>>>
>>>> All the SSP1 usages do not have the same parameters (as dmic is on
>>>> SSP1 and its different as given above) Most parameters are same for
>>> speakers and headset which are on different SSP. This is the reason we
>>> had a single fixup function.
>> On SSP1, for dmic we need to fix the channels which is derived from dmic_num
>> of the snd_soc_acpi_mach structure based on the number of dmic on the
>> board.
>> The channel is something that might be different from speakers.
>> We might not want to constraint the dmic capture to always be 48Khz as well.
>> Given this, there seems to me, 2 ways to set it:
>> 1. Derive if the fixup is being called for dmic or speaker 2. Having a new dailink
>>
>> If #2 is not preferred (going by Pierre's comments), can we use rtd-
>>> cpu_dai/codec_dai->name to figure out if its for dmic or speaker?
>> I can test this and get back to you.
> Tested and the following is something we can use without creating a new dailink.
> struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
> if (!strcmp(codec_dai->name, KBL_REALTEK_DMIC_CODEC_DAI)) {
> if (params_channels(params) == 2 || DMIC_CH(dmic_constraints) == 2)
> channels->min = channels->max = 2;
> else
> channels->min = channels->max = 4;
> } else {
> rate->min = rate->max = 48000;
> channels->min = channels->max = 2;
> snd_mask_none(fmt);
> snd_mask_set_format(fmt, pcm_fmt);
> }
>
> Pierre, thoughts?
thanks Harsha, that looks like what I had in mind, but my earlier
question was why we deal with the rates and formats only in the last case?
More information about the Alsa-devel
mailing list