aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/atmel-ssc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/atmel-ssc.c')
-rw-r--r--drivers/misc/atmel-ssc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c
index 551ddde63c57..5be808406edc 100644
--- a/drivers/misc/atmel-ssc.c
+++ b/drivers/misc/atmel-ssc.c
@@ -65,14 +65,19 @@ EXPORT_SYMBOL(ssc_request);
65 65
66void ssc_free(struct ssc_device *ssc) 66void ssc_free(struct ssc_device *ssc)
67{ 67{
68 bool disable_clk = true;
69
68 spin_lock(&user_lock); 70 spin_lock(&user_lock);
69 if (ssc->user) { 71 if (ssc->user)
70 ssc->user--; 72 ssc->user--;
71 clk_disable_unprepare(ssc->clk); 73 else {
72 } else { 74 disable_clk = false;
73 dev_dbg(&ssc->pdev->dev, "device already free\n"); 75 dev_dbg(&ssc->pdev->dev, "device already free\n");
74 } 76 }
75 spin_unlock(&user_lock); 77 spin_unlock(&user_lock);
78
79 if (disable_clk)
80 clk_disable_unprepare(ssc->clk);
76} 81}
77EXPORT_SYMBOL(ssc_free); 82EXPORT_SYMBOL(ssc_free);
78 83