From d11a687bd0ed445239ecdddef9ba4e037d157eba Mon Sep 17 00:00:00 2001 From: Sugar Zhang Date: Sun, 18 Oct 2020 16:10:21 +0800 Subject: [PATCH] ASoC: rockchip: i2s-tdm: Make reset property as optional Signed-off-by: Sugar Zhang Change-Id: I9707e8c763450f3a78f0fb419d90d9992cecfe59 --- sound/soc/rockchip/rockchip_i2s_tdm.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sound/soc/rockchip/rockchip_i2s_tdm.c b/sound/soc/rockchip/rockchip_i2s_tdm.c index 85f774697503..aaca037ce5c9 100644 --- a/sound/soc/rockchip/rockchip_i2s_tdm.c +++ b/sound/soc/rockchip/rockchip_i2s_tdm.c @@ -241,10 +241,8 @@ static void rockchip_snd_xfer_sync_reset(struct rk_i2s_tdm_dev *i2s_tdm) tx_id = i2s_tdm->soc_data->tx_reset_id; rx_id = i2s_tdm->soc_data->rx_reset_id; - if (tx_id < 0 || rx_id < 0) { - dev_err(i2s_tdm->dev, "invalid reset id\n"); + if (tx_id < 0 || rx_id < 0) return; - } tx_bank = tx_id / 16; tx_offset = tx_id % 16; @@ -329,6 +327,16 @@ static void rockchip_snd_txrxctrl(struct snd_pcm_substream *substream, spin_unlock(&i2s_tdm->lock); } +static void rockchip_snd_reset(struct reset_control *rc) +{ + if (IS_ERR(rc)) + return; + + reset_control_assert(rc); + udelay(1); + reset_control_deassert(rc); +} + static void rockchip_snd_txctrl(struct rk_i2s_tdm_dev *i2s_tdm, int on) { unsigned int val = 0; @@ -362,9 +370,7 @@ static void rockchip_snd_txctrl(struct rk_i2s_tdm_dev *i2s_tdm, int on) retry--; if (!retry) { dev_warn(i2s_tdm->dev, "reset tx\n"); - reset_control_assert(i2s_tdm->tx_reset); - udelay(1); - reset_control_deassert(i2s_tdm->tx_reset); + rockchip_snd_reset(i2s_tdm->tx_reset); break; } } @@ -404,9 +410,7 @@ static void rockchip_snd_rxctrl(struct rk_i2s_tdm_dev *i2s_tdm, int on) retry--; if (!retry) { dev_warn(i2s_tdm->dev, "reset rx\n"); - reset_control_assert(i2s_tdm->rx_reset); - udelay(1); - reset_control_deassert(i2s_tdm->rx_reset); + rockchip_snd_reset(i2s_tdm->rx_reset); break; } } @@ -1402,11 +1406,7 @@ static int rockchip_i2s_tdm_probe(struct platform_device *pdev) i2s_tdm->soc_data = (struct rk_i2s_soc_data *)of_id->data; i2s_tdm->soc_data->tx_reset_id = of_i2s_resetid_get(node, "tx-m"); - if (i2s_tdm->soc_data->tx_reset_id < 0) - return -EINVAL; i2s_tdm->soc_data->rx_reset_id = of_i2s_resetid_get(node, "rx-m"); - if (i2s_tdm->soc_data->rx_reset_id < 0) - return -EINVAL; } i2s_tdm->tx_reset = devm_reset_control_get(&pdev->dev, "tx-m");