ASoC: rt1019: Fix the TDM settings
[ Upstream commit f2635d45a750182c6d5de15e2d6b059e0c302d7e ] Complete the missing and correct the TDM settings. Signed-off-by: Derek Fang <derek.fang@realtek.com> Link: https://lore.kernel.org/r/20221012030102.4042-1-derek.fang@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4160a515c7
commit
569085124d
@@ -391,18 +391,18 @@ static int rt1019_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
|||||||
unsigned int rx_mask, int slots, int slot_width)
|
unsigned int rx_mask, int slots, int slot_width)
|
||||||
{
|
{
|
||||||
struct snd_soc_component *component = dai->component;
|
struct snd_soc_component *component = dai->component;
|
||||||
unsigned int val = 0, rx_slotnum;
|
unsigned int cn = 0, cl = 0, rx_slotnum;
|
||||||
int ret = 0, first_bit;
|
int ret = 0, first_bit;
|
||||||
|
|
||||||
switch (slots) {
|
switch (slots) {
|
||||||
case 4:
|
case 4:
|
||||||
val |= RT1019_I2S_TX_4CH;
|
cn = RT1019_I2S_TX_4CH;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
val |= RT1019_I2S_TX_6CH;
|
cn = RT1019_I2S_TX_6CH;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
val |= RT1019_I2S_TX_8CH;
|
cn = RT1019_I2S_TX_8CH;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
break;
|
break;
|
||||||
@@ -412,16 +412,16 @@ static int rt1019_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
|||||||
|
|
||||||
switch (slot_width) {
|
switch (slot_width) {
|
||||||
case 20:
|
case 20:
|
||||||
val |= RT1019_I2S_DL_20;
|
cl = RT1019_TDM_CL_20;
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 24:
|
||||||
val |= RT1019_I2S_DL_24;
|
cl = RT1019_TDM_CL_24;
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
val |= RT1019_I2S_DL_32;
|
cl = RT1019_TDM_CL_32;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
val |= RT1019_I2S_DL_8;
|
cl = RT1019_TDM_CL_8;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
break;
|
break;
|
||||||
@@ -470,8 +470,10 @@ static int rt1019_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
|||||||
goto _set_tdm_err_;
|
goto _set_tdm_err_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
snd_soc_component_update_bits(component, RT1019_TDM_1,
|
||||||
|
RT1019_TDM_CL_MASK, cl);
|
||||||
snd_soc_component_update_bits(component, RT1019_TDM_2,
|
snd_soc_component_update_bits(component, RT1019_TDM_2,
|
||||||
RT1019_I2S_CH_TX_MASK | RT1019_I2S_DF_MASK, val);
|
RT1019_I2S_CH_TX_MASK, cn);
|
||||||
|
|
||||||
_set_tdm_err_:
|
_set_tdm_err_:
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -95,6 +95,12 @@
|
|||||||
#define RT1019_TDM_BCLK_MASK (0x1 << 6)
|
#define RT1019_TDM_BCLK_MASK (0x1 << 6)
|
||||||
#define RT1019_TDM_BCLK_NORM (0x0 << 6)
|
#define RT1019_TDM_BCLK_NORM (0x0 << 6)
|
||||||
#define RT1019_TDM_BCLK_INV (0x1 << 6)
|
#define RT1019_TDM_BCLK_INV (0x1 << 6)
|
||||||
|
#define RT1019_TDM_CL_MASK (0x7)
|
||||||
|
#define RT1019_TDM_CL_8 (0x4)
|
||||||
|
#define RT1019_TDM_CL_32 (0x3)
|
||||||
|
#define RT1019_TDM_CL_24 (0x2)
|
||||||
|
#define RT1019_TDM_CL_20 (0x1)
|
||||||
|
#define RT1019_TDM_CL_16 (0x0)
|
||||||
|
|
||||||
/* 0x0401 TDM Control-2 */
|
/* 0x0401 TDM Control-2 */
|
||||||
#define RT1019_I2S_CH_TX_MASK (0x3 << 6)
|
#define RT1019_I2S_CH_TX_MASK (0x3 << 6)
|
||||||
|
|||||||
Reference in New Issue
Block a user