ASoC: codecs: rk_dsm: support master & slave mode

Change-Id: I33d506d0b5fc73d0f8f0974907f3b86f5ff6c8f2
Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
This commit is contained in:
Jason Zhu
2025-03-23 18:58:13 +08:00
committed by Tao Huang
parent 00b779e9e9
commit 43c4c4f014
2 changed files with 14 additions and 6 deletions

View File

@@ -331,13 +331,9 @@ static int rk_dsm_set_dai_fmt(struct snd_soc_dai *dai,
snd_soc_component_get_drvdata(dai->component);
unsigned int mask = 0, val = 0;
/* master mode only */
regmap_update_bits(rd->regmap, I2S_CKR1,
DSM_I2S_CKR1_MSS_MASK,
DSM_I2S_CKR1_MSS_MASTER);
mask = DSM_I2S_CKR1_CKP_MASK |
DSM_I2S_CKR1_RLP_MASK;
DSM_I2S_CKR1_RLP_MASK |
DSM_I2S_CKR1_MSS_MASK;
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
case SND_SOC_DAIFMT_NB_NF:
@@ -360,6 +356,17 @@ static int rk_dsm_set_dai_fmt(struct snd_soc_dai *dai,
return -EINVAL;
}
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
case SND_SOC_DAIFMT_CBS_CFS:
val |= DSM_I2S_CKR1_MSS_SLAVE;
break;
case SND_SOC_DAIFMT_CBM_CFM:
val |= DSM_I2S_CKR1_MSS_MASTER;
break;
default:
return -EINVAL;
}
regmap_update_bits(rd->regmap, I2S_CKR1, mask, val);
return 0;

View File

@@ -156,6 +156,7 @@
#define DSM_I2S_CKR1_CKP_INVERTED BIT(2)
#define DSM_I2S_CKR1_CKP_NORMAL 0
#define DSM_I2S_CKR1_MSS_MASK BIT(3)
#define DSM_I2S_CKR1_MSS_SLAVE BIT(3)
#define DSM_I2S_CKR1_MSS_MASTER 0
/* I2S_XFER */
#define DSM_I2S_XFER_RXS_MASK BIT(1)