Skip to content

Commit 917f077

Browse files
Sugar Zhangbroonie
authored andcommitted
ASoC: rockchip: i2s: Add support for frame inversion
This patch adds support for frame inversion. Signed-off-by: Sugar Zhang <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent d5ceed0 commit 917f077

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

sound/soc/rockchip/rockchip_i2s.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,13 +211,27 @@ static int rockchip_i2s_set_fmt(struct snd_soc_dai *cpu_dai,
211211

212212
regmap_update_bits(i2s->regmap, I2S_CKR, mask, val);
213213

214-
mask = I2S_CKR_CKP_MASK;
214+
mask = I2S_CKR_CKP_MASK | I2S_CKR_TLP_MASK | I2S_CKR_RLP_MASK;
215215
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
216216
case SND_SOC_DAIFMT_NB_NF:
217-
val = I2S_CKR_CKP_NEG;
217+
val = I2S_CKR_CKP_NORMAL |
218+
I2S_CKR_TLP_NORMAL |
219+
I2S_CKR_RLP_NORMAL;
220+
break;
221+
case SND_SOC_DAIFMT_NB_IF:
222+
val = I2S_CKR_CKP_NORMAL |
223+
I2S_CKR_TLP_INVERTED |
224+
I2S_CKR_RLP_INVERTED;
218225
break;
219226
case SND_SOC_DAIFMT_IB_NF:
220-
val = I2S_CKR_CKP_POS;
227+
val = I2S_CKR_CKP_INVERTED |
228+
I2S_CKR_TLP_NORMAL |
229+
I2S_CKR_RLP_NORMAL;
230+
break;
231+
case SND_SOC_DAIFMT_IB_IF:
232+
val = I2S_CKR_CKP_INVERTED |
233+
I2S_CKR_TLP_INVERTED |
234+
I2S_CKR_RLP_INVERTED;
221235
break;
222236
default:
223237
ret = -EINVAL;

sound/soc/rockchip/rockchip_i2s.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,15 +88,17 @@
8888
#define I2S_CKR_MSS_SLAVE (1 << I2S_CKR_MSS_SHIFT)
8989
#define I2S_CKR_MSS_MASK (1 << I2S_CKR_MSS_SHIFT)
9090
#define I2S_CKR_CKP_SHIFT 26
91-
#define I2S_CKR_CKP_NEG (0 << I2S_CKR_CKP_SHIFT)
92-
#define I2S_CKR_CKP_POS (1 << I2S_CKR_CKP_SHIFT)
91+
#define I2S_CKR_CKP_NORMAL (0 << I2S_CKR_CKP_SHIFT)
92+
#define I2S_CKR_CKP_INVERTED (1 << I2S_CKR_CKP_SHIFT)
9393
#define I2S_CKR_CKP_MASK (1 << I2S_CKR_CKP_SHIFT)
9494
#define I2S_CKR_RLP_SHIFT 25
9595
#define I2S_CKR_RLP_NORMAL (0 << I2S_CKR_RLP_SHIFT)
96-
#define I2S_CKR_RLP_OPPSITE (1 << I2S_CKR_RLP_SHIFT)
96+
#define I2S_CKR_RLP_INVERTED (1 << I2S_CKR_RLP_SHIFT)
97+
#define I2S_CKR_RLP_MASK (1 << I2S_CKR_RLP_SHIFT)
9798
#define I2S_CKR_TLP_SHIFT 24
9899
#define I2S_CKR_TLP_NORMAL (0 << I2S_CKR_TLP_SHIFT)
99-
#define I2S_CKR_TLP_OPPSITE (1 << I2S_CKR_TLP_SHIFT)
100+
#define I2S_CKR_TLP_INVERTED (1 << I2S_CKR_TLP_SHIFT)
101+
#define I2S_CKR_TLP_MASK (1 << I2S_CKR_TLP_SHIFT)
100102
#define I2S_CKR_MDIV_SHIFT 16
101103
#define I2S_CKR_MDIV(x) ((x - 1) << I2S_CKR_MDIV_SHIFT)
102104
#define I2S_CKR_MDIV_MASK (0xff << I2S_CKR_MDIV_SHIFT)

0 commit comments

Comments
 (0)