@@ -365,7 +365,7 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
365
365
{
366
366
struct snd_soc_component * component = dai -> component ;
367
367
struct tas2764_priv * tas2764 = snd_soc_component_get_drvdata (component );
368
- u8 tdm_rx_start_slot = 0 , asi_cfg_0 = 0 , asi_cfg_1 = 0 ;
368
+ u8 tdm_rx_start_slot = 0 , asi_cfg_0 = 0 , asi_cfg_1 = 0 , asi_cfg_4 = 0 ;
369
369
int ret ;
370
370
371
371
switch (fmt & SND_SOC_DAIFMT_INV_MASK ) {
@@ -374,12 +374,14 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
374
374
fallthrough ;
375
375
case SND_SOC_DAIFMT_NB_NF :
376
376
asi_cfg_1 = TAS2764_TDM_CFG1_RX_RISING ;
377
+ asi_cfg_4 = TAS2764_TDM_CFG4_TX_FALLING ;
377
378
break ;
378
379
case SND_SOC_DAIFMT_IB_IF :
379
380
asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START ;
380
381
fallthrough ;
381
382
case SND_SOC_DAIFMT_IB_NF :
382
383
asi_cfg_1 = TAS2764_TDM_CFG1_RX_FALLING ;
384
+ asi_cfg_4 = TAS2764_TDM_CFG4_TX_RISING ;
383
385
break ;
384
386
}
385
387
@@ -389,6 +391,12 @@ static int tas2764_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
389
391
if (ret < 0 )
390
392
return ret ;
391
393
394
+ ret = snd_soc_component_update_bits (component , TAS2764_TDM_CFG4 ,
395
+ TAS2764_TDM_CFG4_TX_MASK ,
396
+ asi_cfg_4 );
397
+ if (ret < 0 )
398
+ return ret ;
399
+
392
400
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK ) {
393
401
case SND_SOC_DAIFMT_I2S :
394
402
asi_cfg_0 ^= TAS2764_TDM_CFG0_FRAME_START ;
0 commit comments