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 f7b90661e321..e068a76a5f6f 100644 --- a/drivers/misc/atmel-ssc.c +++ b/drivers/misc/atmel-ssc.c @@ -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);  | 
