summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorAnkit Gupta <ankitgupta@nvidia.com>2012-05-23 11:55:13 +0530
committerSimone Willett <swillett@nvidia.com>2012-05-24 12:03:30 -0700
commit8e9dc6ce7d8cafba0e65123b2f76320309e8388c (patch)
tree5f394a6188021043b3661293cbf913af7693e809 /sound/soc
parent64bcd65388b34c8832125b44c0f9b95b0ca755a0 (diff)
asoc: tegra: utils: fix for multiple instances of extern1 clock.
The extern1 codec clock was not getting switched off whenever codec goes below BIAS_OFF level. Moreover, there were two instances of extern1 clock whenever codec was on. Reason behind this was that, those codecs for which probe function was called and were not present on board, turned on their extern1 clock, but clean up routine (for switch device register failure) was not able to turn off the clock. With this change, a conditional check is put to turn off the clock. (Bug 984678) Signed-off-by: Ankit Gupta <ankitgupta@nvidia.com> Change-Id: I585ecf73c0cabca856592dcd84e67588dfe13beb Reviewed-on: http://git-master/r/104073 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Ankit Gupta (Engrg-SW) <ankitgupta@nvidia.com> Reviewed-by: Prashant Gaikwad <pgaikwad@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/tegra/tegra_asoc_utils.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/soc/tegra/tegra_asoc_utils.c b/sound/soc/tegra/tegra_asoc_utils.c
index b134f0808afa..dfbafa061993 100644
--- a/sound/soc/tegra/tegra_asoc_utils.c
+++ b/sound/soc/tegra/tegra_asoc_utils.c
@@ -276,6 +276,10 @@ void tegra_asoc_utils_fini(struct tegra_asoc_utils_data *data)
clk_put(data->clk_out1);
clk_put(data->clk_cdev1);
+ /* Just to make sure that clk_cdev1 should turn off in case if it is
+ * switched on by some codec whose hw switch is not registered.*/
+ if (tegra_is_clk_enabled(data->clk_cdev1))
+ clk_disable(data->clk_cdev1);
if (!IS_ERR(data->clk_pll_a_out0))
clk_put(data->clk_pll_a_out0);