diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2019-02-27 11:47:39 +0100 |
---|---|---|
committer | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2019-03-04 18:05:33 +0100 |
commit | 132495eca68055477c61edc9a98bdbe526baa004 (patch) | |
tree | de18bfd3f7c79086e032b3807ca9a70ed8c5215c | |
parent | 509991a0d84159f4ff7cbe0d00188156243fa9f2 (diff) | |
download | linux-exynos-132495eca68055477c61edc9a98bdbe526baa004.tar.gz linux-exynos-132495eca68055477c61edc9a98bdbe526baa004.tar.bz2 linux-exynos-132495eca68055477c61edc9a98bdbe526baa004.zip |
LOCAL: ASoC: temporary workaround for i2s/prepare_lock deadlock
This reverts commit 00ffa8a3b1a60a89ab0ef5ae1d8e41269c30a3bd.
Change-Id: I396b1250a748fdb8219abf6d0bf71c5fab119658
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
-rw-r--r-- | sound/soc/samsung/i2s.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 4231001226f4..d3d250ea4f6b 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -618,11 +618,11 @@ static int i2s_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int rfs, writel(mod, priv->addr + I2SMOD); spin_unlock_irqrestore(&priv->lock, flags); done: - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); return 0; err: - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); return ret; } @@ -706,7 +706,7 @@ static int i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) if (any_active(i2s) && ((mod & (sdf_mask | lrp_rlow | mod_slave)) != tmp)) { spin_unlock_irqrestore(&priv->lock, flags); - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); dev_err(&i2s->pdev->dev, "%s:%d Other DAI busy\n", __func__, __LINE__); return -EAGAIN; @@ -716,7 +716,7 @@ static int i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) mod |= tmp; writel(mod, priv->addr + I2SMOD); spin_unlock_irqrestore(&priv->lock, flags); - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); return 0; } @@ -867,7 +867,7 @@ static void i2s_shutdown(struct snd_pcm_substream *substream, spin_unlock_irqrestore(&priv->pcm_lock, flags); - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); } static int config_setup(struct i2s_dai *i2s) @@ -973,7 +973,7 @@ static int i2s_trigger(struct snd_pcm_substream *substream, } spin_unlock_irqrestore(&priv->lock, flags); - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); break; } @@ -991,13 +991,13 @@ static int i2s_set_clkdiv(struct snd_soc_dai *dai, pm_runtime_get_sync(dai->dev); if ((any_active(i2s) && div && (get_bfs(i2s) != div)) || (other && other->bfs && (other->bfs != div))) { - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); dev_err(&i2s->pdev->dev, "%s:%d Other DAI busy\n", __func__, __LINE__); return -EAGAIN; } i2s->bfs = div; - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); break; default: dev_err(&i2s->pdev->dev, @@ -1083,7 +1083,7 @@ static int samsung_i2s_dai_probe(struct snd_soc_dai *dai) if (!is_opened(other)) i2s_set_sysclk(dai, SAMSUNG_I2S_CDCLK, 0, SND_SOC_CLOCK_IN); - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); return 0; } @@ -1104,7 +1104,7 @@ static int samsung_i2s_dai_remove(struct snd_soc_dai *dai) } } - pm_runtime_put(dai->dev); + pm_runtime_put_sync(dai->dev); return 0; } |