[PATCH] CHROMIUM: ASoC: amd: acp: Add tdm support for codecs in machine driver
Venkata Prasad Potturu
venkataprasad.potturu at amd.com
Wed Nov 2 06:29:07 CET 2022
Thanks,
On 11/1/22 20:01, Mark Brown wrote:
>
> On Tue, Nov 01, 2022 at 03:15:08PM +0530, Venkata Prasad Potturu wrote:
>
>> On 10/28/22 16:28, Mark Brown wrote:
>>>> +static int tdm_mode = 0;
>>>> +module_param_named(tdm_mode, tdm_mode, int, 0444);
>>>> +MODULE_PARM_DESC(tdm_mode, "Set 1 for tdm mode, set 0 for i2s mode");
>>> Why is this a module parameter - how would a user decide to set this?
>>> Is it something that someone might want to change at runtime?
>> While inserting this module we need to pass tdm_mode variable as 0 or 1 like
>> below.
>> sudo insmod/lib/modules/$(uname
>> -r)/kernel/sound/soc/amd/acp/snd-acp-mach.ko *tdm_mode=1*
> Right, that's what the code does but why is this something that should
> be controlled in this fashion?
This machine driver is common for TDM mode and I2S mode, user can select
TDM mode or I2S mode.
Based on tdm_mode parameter we are configuring tdm/i2s format and tdm
slot configuration like below.
if (tdm_mode)
fmt = SND_SOC_DAIFMT_DSP_A;
else
fmt = SND_SOC_DAIFMT_I2S;
ret = snd_soc_dai_set_fmt(cpu_dai, fmt | SND_SOC_DAIFMT_NB_NF
| SND_SOC_DAIFMT_CBP_CFP);
if (tdm_mode) {
/**
* As codec supports slot 4 and slot 5 for playback
* and slot 6 and slot 7 for capture.
*/
ret = snd_soc_dai_set_tdm_slot(cpu_dai, SLOT4 | SLOT5, SLOT6 |
SLOT7,
TDM_CHANNELS, BIT_WIDTH);
if (ret && ret != -ENOTSUPP) {
dev_err(rtd->dev, "set TDM slot err: %d\n", ret);
return ret;
}
}
if (tdm_mode) {
/**
* As codec supports slot 4 and slot 5 for playback and slot 6
for capture.
*/
ret = snd_soc_dai_set_tdm_slot(codec_dai, SLOT6, SLOT4 | SLOT5,
TDM_CHANNELS, BIT_WIDTH);
if (ret < 0) {
dev_warn(rtd->dev, "set TDM slot err:%d\n", ret);
return ret;
}
}
More information about the Alsa-devel
mailing list