ASoC: rockchip: i2s-tdm: Init Valid Width for TDM from DT

e.g.
simple-audio-card,cpu {
	sound-dai = <&i2s0_8ch>;
	dai-tdm-slot-num = <8>;
	dai-tdm-slot-width = <32>;
};

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Change-Id: I55c3849d87e17145db6b4ce4af202303b5563080
This commit is contained in:
Sugar Zhang
2024-03-29 21:46:15 +08:00
committed by Tao Huang
parent bcbbd20069
commit 15ec253f3c

View File

@@ -2229,10 +2229,35 @@ static int rockchip_dai_tdm_slot(struct snd_soc_dai *dai,
if (ret < 0 && ret != -EACCES)
return ret;
regmap_update_bits(i2s_tdm->regmap, I2S_TDM_TXCR,
mask, val);
regmap_update_bits(i2s_tdm->regmap, I2S_TDM_RXCR,
mask, val);
regmap_update_bits(i2s_tdm->regmap, I2S_TDM_TXCR, mask, val);
regmap_update_bits(i2s_tdm->regmap, I2S_TDM_RXCR, mask, val);
mask = I2S_TXCR_VDW_MASK | I2S_TXCR_CSR_MASK;
val = I2S_TXCR_VDW(slot_width);
if (!i2s_tdm->tdm_fsync_half_frame) {
switch (slots) {
case 16:
val |= I2S_CHN_8;
break;
case 12:
val |= I2S_CHN_6;
break;
case 8:
val |= I2S_CHN_4;
break;
case 4:
val |= I2S_CHN_2;
break;
default:
val |= I2S_CHN_2;
break;
}
}
regmap_update_bits(i2s_tdm->regmap, I2S_TXCR, mask, val);
regmap_update_bits(i2s_tdm->regmap, I2S_RXCR, mask, val);
pm_runtime_put(dai->dev);
return 0;