diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c index 7ae188c88eab..46ec9416b44b 100644 --- a/sound/soc/rockchip/rockchip_i2s_tdm.c +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -217,6 +217,8 @@ static void rockchip_snd_xfer_reset_assert(struct rk_i2s_tdm_dev *i2s_tdm, local_irq_restore(flags); break; } + /* delay for reset assert done */ + udelay(10); } static void rockchip_snd_xfer_reset_deassert(struct rk_i2s_tdm_dev *i2s_tdm, @@ -261,6 +263,8 @@ static void rockchip_snd_xfer_reset_deassert(struct rk_i2s_tdm_dev *i2s_tdm, local_irq_restore(flags); break; } + /* delay for reset deassert done */ + udelay(10); } /* @@ -290,9 +294,6 @@ static void rockchip_snd_xfer_sync_reset(struct rk_i2s_tdm_dev *i2s_tdm) rockchip_snd_xfer_reset_assert(i2s_tdm, tx_bank, tx_offset, rx_bank, rx_offset); - - udelay(150); - rockchip_snd_xfer_reset_deassert(i2s_tdm, tx_bank, tx_offset, rx_bank, rx_offset); } @@ -370,8 +371,11 @@ static void rockchip_snd_reset(struct reset_control *rc) return; reset_control_assert(rc); - udelay(1); + /* delay for reset assert done */ + udelay(10); reset_control_deassert(rc); + /* delay for reset deassert done */ + udelay(10); } static void rockchip_snd_txctrl(struct rk_i2s_tdm_dev *i2s_tdm, int on)