aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/fsl/fsl_asrc.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/fsl/fsl_asrc.c')
-rw-r--r--sound/soc/fsl/fsl_asrc.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c
index c068494bae30..9f087d4f73ed 100644
--- a/sound/soc/fsl/fsl_asrc.c
+++ b/sound/soc/fsl/fsl_asrc.c
@@ -931,14 +931,29 @@ static int fsl_asrc_probe(struct platform_device *pdev)
931static int fsl_asrc_runtime_resume(struct device *dev) 931static int fsl_asrc_runtime_resume(struct device *dev)
932{ 932{
933 struct fsl_asrc *asrc_priv = dev_get_drvdata(dev); 933 struct fsl_asrc *asrc_priv = dev_get_drvdata(dev);
934 int i; 934 int i, ret;
935 935
936 clk_prepare_enable(asrc_priv->mem_clk); 936 ret = clk_prepare_enable(asrc_priv->mem_clk);
937 clk_prepare_enable(asrc_priv->ipg_clk); 937 if (ret)
938 for (i = 0; i < ASRC_CLK_MAX_NUM; i++) 938 return ret;
939 clk_prepare_enable(asrc_priv->asrck_clk[i]); 939 ret = clk_prepare_enable(asrc_priv->ipg_clk);
940 if (ret)
941 goto disable_mem_clk;
942 for (i = 0; i < ASRC_CLK_MAX_NUM; i++) {
943 ret = clk_prepare_enable(asrc_priv->asrck_clk[i]);
944 if (ret)
945 goto disable_asrck_clk;
946 }
940 947
941 return 0; 948 return 0;
949
950disable_asrck_clk:
951 for (i--; i >= 0; i--)
952 clk_disable_unprepare(asrc_priv->asrck_clk[i]);
953 clk_disable_unprepare(asrc_priv->ipg_clk);
954disable_mem_clk:
955 clk_disable_unprepare(asrc_priv->mem_clk);
956 return ret;
942} 957}
943 958
944static int fsl_asrc_runtime_suspend(struct device *dev) 959static int fsl_asrc_runtime_suspend(struct device *dev)