mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
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:
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user