
28 Sep
2022
28 Sep
'22
11:38 a.m.
On 9/27/22 15:16, Lu, Brent wrote:
case SND_SOC_DAIFMT_DSP_A:
case SND_SOC_DAIFMT_DSP_B:
/* 4-slot TDM */
ret = snd_soc_dai_set_tdm_slot(codec_dai,
rt1015_tdm_mask[i].tx,
rt1015_tdm_mask[i].rx,
4,
params_width(params));
The changes look ok, just wondering if we can avoid hard-coding those 4 values. Can we not get the number of TDM slots from topology and/or dailink configuration?
I think TDM slot number is possible but not TX/RX mask. What we have in topology is union of tx/rx mask of all channels. We don't know the mask of specific channel in DAI_CONFIG.
DAI_CONFIG(SSP, 0, BOARD_HP_BE_ID, SSP0-Codec, SSP_CONFIG(I2S, SSP_CLOCK(mclk, 19200000, codec_mclk_in), SSP_CLOCK(bclk, 2400000, codec_slave), SSP_CLOCK(fsync, 48000, codec_slave), SSP_TDM(2, 25, 3, 3),
the 3 3 is precisely the channel mask!
SSP_CONFIG_DATA(SSP, 0, 24, 0, 0, 0, SSP_CC_BCLK_ES)))')
Regards, Brent