mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
ASoC: rt5682s: Fix the TDM Tx settings
Complete the missing and correct the TDM Tx settings. Signed-off-by: Derek Fang <derek.fang@realtek.com> Link: https://lore.kernel.org/r/20221012031320.6980-1-derek.fang@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
25e06831eb
commit
d94bf16e92
@ -1981,7 +1981,7 @@ static int rt5682s_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
||||
unsigned int rx_mask, int slots, int slot_width)
|
||||
{
|
||||
struct snd_soc_component *component = dai->component;
|
||||
unsigned int cl, val = 0;
|
||||
unsigned int cl, val = 0, tx_slotnum;
|
||||
|
||||
if (tx_mask || rx_mask)
|
||||
snd_soc_component_update_bits(component,
|
||||
@ -1990,6 +1990,16 @@ static int rt5682s_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
||||
snd_soc_component_update_bits(component,
|
||||
RT5682S_TDM_ADDA_CTRL_2, RT5682S_TDM_EN, 0);
|
||||
|
||||
/* Tx slot configuration */
|
||||
tx_slotnum = hweight_long(tx_mask);
|
||||
if (tx_slotnum) {
|
||||
if (tx_slotnum > slots) {
|
||||
dev_err(component->dev, "Invalid or oversized Tx slots.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
val |= (tx_slotnum - 1) << RT5682S_TDM_ADC_DL_SFT;
|
||||
}
|
||||
|
||||
switch (slots) {
|
||||
case 4:
|
||||
val |= RT5682S_TDM_TX_CH_4;
|
||||
@ -2010,7 +2020,8 @@ static int rt5682s_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
||||
}
|
||||
|
||||
snd_soc_component_update_bits(component, RT5682S_TDM_CTRL,
|
||||
RT5682S_TDM_TX_CH_MASK | RT5682S_TDM_RX_CH_MASK, val);
|
||||
RT5682S_TDM_TX_CH_MASK | RT5682S_TDM_RX_CH_MASK |
|
||||
RT5682S_TDM_ADC_DL_MASK, val);
|
||||
|
||||
switch (slot_width) {
|
||||
case 8:
|
||||
|
@ -899,6 +899,7 @@
|
||||
#define RT5682S_TDM_RX_CH_8 (0x3 << 8)
|
||||
#define RT5682S_TDM_ADC_LCA_MASK (0x7 << 4)
|
||||
#define RT5682S_TDM_ADC_LCA_SFT 4
|
||||
#define RT5682S_TDM_ADC_DL_MASK (0x3 << 0)
|
||||
#define RT5682S_TDM_ADC_DL_SFT 0
|
||||
|
||||
/* TDM control 2 (0x007a) */
|
||||
|
Loading…
Reference in New Issue
Block a user