From: Fabio Estevam fabio.estevam@freescale.com
clk_prepare_enable() may fail, so we should better check its return value and propagate it in the case of error.
Signed-off-by: Fabio Estevam fabio.estevam@freescale.com --- sound/soc/fsl/fsl_asrc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/sound/soc/fsl/fsl_asrc.c b/sound/soc/fsl/fsl_asrc.c index c068494..37dde26 100644 --- a/sound/soc/fsl/fsl_asrc.c +++ b/sound/soc/fsl/fsl_asrc.c @@ -931,14 +931,22 @@ static int fsl_asrc_probe(struct platform_device *pdev) static int fsl_asrc_runtime_resume(struct device *dev) { struct fsl_asrc *asrc_priv = dev_get_drvdata(dev); - int i; + int i, ret;
- clk_prepare_enable(asrc_priv->mem_clk); - clk_prepare_enable(asrc_priv->ipg_clk); + ret = clk_prepare_enable(asrc_priv->mem_clk); + if (ret) + return ret; + ret = clk_prepare_enable(asrc_priv->ipg_clk); + if (ret) + goto disable_mem_clk; for (i = 0; i < ASRC_CLK_MAX_NUM; i++) clk_prepare_enable(asrc_priv->asrck_clk[i]);
return 0; + +disable_mem_clk: + clk_disable_unprepare(asrc_priv->mem_clk); + return ret; }
static int fsl_asrc_runtime_suspend(struct device *dev)