提交 7e885d21 编写于 作者: J John Keeping 提交者: Mark Brown

ASoC: rockchip: Revert "ASoC: rockchip: i2s: separate capture and playback"

This reverts commit eba65d17.

This broke audio on Veyron Jerry Chromebooks and I now cannot reproduce
the problem I was trying to fix even with this commit reverted, so it
seems that this was completely the wrong thing to do.
Reported-by: NEnric Balletbo Serra <eballetbo@gmail.com>
Signed-off-by: NJohn Keeping <john@metanate.com>
Signed-off-by: NMark Brown <broonie@kernel.org>
上级 a6e806c4
...@@ -82,8 +82,8 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on) ...@@ -82,8 +82,8 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
I2S_DMACR_TDE_ENABLE, I2S_DMACR_TDE_ENABLE); I2S_DMACR_TDE_ENABLE, I2S_DMACR_TDE_ENABLE);
regmap_update_bits(i2s->regmap, I2S_XFER, regmap_update_bits(i2s->regmap, I2S_XFER,
I2S_XFER_TXS_START, I2S_XFER_TXS_START | I2S_XFER_RXS_START,
I2S_XFER_TXS_START); I2S_XFER_TXS_START | I2S_XFER_RXS_START);
i2s->tx_start = true; i2s->tx_start = true;
} else { } else {
...@@ -92,23 +92,27 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on) ...@@ -92,23 +92,27 @@ static void rockchip_snd_txctrl(struct rk_i2s_dev *i2s, int on)
regmap_update_bits(i2s->regmap, I2S_DMACR, regmap_update_bits(i2s->regmap, I2S_DMACR,
I2S_DMACR_TDE_ENABLE, I2S_DMACR_TDE_DISABLE); I2S_DMACR_TDE_ENABLE, I2S_DMACR_TDE_DISABLE);
regmap_update_bits(i2s->regmap, I2S_XFER, if (!i2s->rx_start) {
I2S_XFER_TXS_START, regmap_update_bits(i2s->regmap, I2S_XFER,
I2S_XFER_TXS_STOP); I2S_XFER_TXS_START |
I2S_XFER_RXS_START,
regmap_update_bits(i2s->regmap, I2S_CLR, I2S_XFER_TXS_STOP |
I2S_CLR_TXC, I2S_XFER_RXS_STOP);
I2S_CLR_TXC);
regmap_read(i2s->regmap, I2S_CLR, &val); regmap_update_bits(i2s->regmap, I2S_CLR,
I2S_CLR_TXC | I2S_CLR_RXC,
I2S_CLR_TXC | I2S_CLR_RXC);
/* Should wait for clear operation to finish */
while (val & I2S_CLR_TXC) {
regmap_read(i2s->regmap, I2S_CLR, &val); regmap_read(i2s->regmap, I2S_CLR, &val);
retry--;
if (!retry) { /* Should wait for clear operation to finish */
dev_warn(i2s->dev, "fail to clear\n"); while (val) {
break; regmap_read(i2s->regmap, I2S_CLR, &val);
retry--;
if (!retry) {
dev_warn(i2s->dev, "fail to clear\n");
break;
}
} }
} }
} }
...@@ -124,8 +128,8 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on) ...@@ -124,8 +128,8 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
I2S_DMACR_RDE_ENABLE, I2S_DMACR_RDE_ENABLE); I2S_DMACR_RDE_ENABLE, I2S_DMACR_RDE_ENABLE);
regmap_update_bits(i2s->regmap, I2S_XFER, regmap_update_bits(i2s->regmap, I2S_XFER,
I2S_XFER_RXS_START, I2S_XFER_TXS_START | I2S_XFER_RXS_START,
I2S_XFER_RXS_START); I2S_XFER_TXS_START | I2S_XFER_RXS_START);
i2s->rx_start = true; i2s->rx_start = true;
} else { } else {
...@@ -134,23 +138,27 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on) ...@@ -134,23 +138,27 @@ static void rockchip_snd_rxctrl(struct rk_i2s_dev *i2s, int on)
regmap_update_bits(i2s->regmap, I2S_DMACR, regmap_update_bits(i2s->regmap, I2S_DMACR,
I2S_DMACR_RDE_ENABLE, I2S_DMACR_RDE_DISABLE); I2S_DMACR_RDE_ENABLE, I2S_DMACR_RDE_DISABLE);
regmap_update_bits(i2s->regmap, I2S_XFER, if (!i2s->tx_start) {
I2S_XFER_RXS_START, regmap_update_bits(i2s->regmap, I2S_XFER,
I2S_XFER_RXS_STOP); I2S_XFER_TXS_START |
I2S_XFER_RXS_START,
regmap_update_bits(i2s->regmap, I2S_CLR, I2S_XFER_TXS_STOP |
I2S_CLR_RXC, I2S_XFER_RXS_STOP);
I2S_CLR_RXC);
regmap_read(i2s->regmap, I2S_CLR, &val); regmap_update_bits(i2s->regmap, I2S_CLR,
I2S_CLR_TXC | I2S_CLR_RXC,
I2S_CLR_TXC | I2S_CLR_RXC);
/* Should wait for clear operation to finish */
while (val & I2S_CLR_RXC) {
regmap_read(i2s->regmap, I2S_CLR, &val); regmap_read(i2s->regmap, I2S_CLR, &val);
retry--;
if (!retry) { /* Should wait for clear operation to finish */
dev_warn(i2s->dev, "fail to clear\n"); while (val) {
break; regmap_read(i2s->regmap, I2S_CLR, &val);
retry--;
if (!retry) {
dev_warn(i2s->dev, "fail to clear\n");
break;
}
} }
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册