From 4bd9f09e34e09b594843958326e10c4047b33b3c Mon Sep 17 00:00:00 2001 From: Magnus Templing Date: Mon, 14 Nov 2011 16:34:53 +0100 Subject: Ux500 ASoC: power_lock was not properly released ST-Ericsson ID: 373275 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: Trivial Signed-off-by: Magnus Templing Change-Id: I13837da43f8083ce4e0fb361f21a8e7fa8a14970 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/37689 Reviewed-by: QATOOLS Reviewed-by: QABUILD Reviewed-by: Jonas ABERG Reviewed-by: Ola LILJA2 --- sound/soc/ux500/ux500_ab8500.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'sound') diff --git a/sound/soc/ux500/ux500_ab8500.c b/sound/soc/ux500/ux500_ab8500.c index 34c6aa0eef4..f9234c6c721 100644 --- a/sound/soc/ux500/ux500_ab8500.c +++ b/sound/soc/ux500/ux500_ab8500.c @@ -178,7 +178,7 @@ err_get: static int ux500_ab8500_power_control_inc(void) { - int ret; + int ret = 0; mutex_lock(&power_lock); @@ -192,6 +192,9 @@ static int ux500_ab8500_power_control_inc(void) /* Turn on audio-regulator */ ret = enable_regulator(REGULATOR_AUDIO); + if (ret) + goto out; + /* Enable audio-clock */ ret = clk_set_parent(clk_ptr_intclk, (master_clock_sel == 0) ? clk_ptr_sysclk : clk_ptr_ulpclk); @@ -200,7 +203,7 @@ static int ux500_ab8500_power_control_inc(void) __func__, (master_clock_sel == 0) ? "SYSCLK" : "ULPCLK", ret); - return ret; + goto clk_err; } pr_debug("%s: Enabling master-clock (%s).", __func__, @@ -209,16 +212,20 @@ static int ux500_ab8500_power_control_inc(void) if (ret) { pr_err("%s: ERROR: clk_enable failed (ret = %d)!", __func__, ret); ab8500_power_count = 0; - return ret; + goto clk_err; } /* Power on audio-parts of AB8500 */ ab8500_audio_power_control(true); } +clk_err: + disable_regulator(REGULATOR_AUDIO); + +out: mutex_unlock(&power_lock); - return 0; + return ret; } static void ux500_ab8500_power_control_dec(void) -- cgit v1.2.3