diff options
Diffstat (limited to 'drivers/misc/atmel-ssc.c')
-rw-r--r-- | drivers/misc/atmel-ssc.c | 11 |
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 | ||
66 | void ssc_free(struct ssc_device *ssc) | 66 | void 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 | } |
77 | EXPORT_SYMBOL(ssc_free); | 82 | EXPORT_SYMBOL(ssc_free); |
78 | 83 | ||