forked from Minki/linux
ASoC: atmel-ssc: remove clk_disable_unprepare call from critical section
clk_prepare/unprepare (and indirectly clk_prepare_enable/disable_unprepare)
may sleep and thus cannot be called in critical section.
This patch fix a bug introduced by commit
6f0d94790e
where clk_disable_unprepare was
called with user_lock hold.
Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
ad81f0545e
commit
9a9b1c618d
@ -66,14 +66,19 @@ EXPORT_SYMBOL(ssc_request);
|
||||
|
||||
void ssc_free(struct ssc_device *ssc)
|
||||
{
|
||||
bool disable_clk = true;
|
||||
|
||||
spin_lock(&user_lock);
|
||||
if (ssc->user) {
|
||||
if (ssc->user)
|
||||
ssc->user--;
|
||||
clk_disable_unprepare(ssc->clk);
|
||||
} else {
|
||||
else {
|
||||
disable_clk = false;
|
||||
dev_dbg(&ssc->pdev->dev, "device already free\n");
|
||||
}
|
||||
spin_unlock(&user_lock);
|
||||
|
||||
if (disable_clk)
|
||||
clk_disable_unprepare(ssc->clk);
|
||||
}
|
||||
EXPORT_SYMBOL(ssc_free);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user