check the return value of clk_prepare_enable(), and if clk_prepare_enable() gets an unexpected return value, imx_audmux_suspend() and imx_audmux_resume() should return the error value.
Signed-off-by: Yuanjun Gong <ruc_gongyuan...@163.com> --- sound/soc/fsl/imx-audmux.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sound/soc/fsl/imx-audmux.c b/sound/soc/fsl/imx-audmux.c index be003a117b39..096705ec2add 100644 --- a/sound/soc/fsl/imx-audmux.c +++ b/sound/soc/fsl/imx-audmux.c @@ -324,9 +324,11 @@ static void imx_audmux_remove(struct platform_device *pdev) #ifdef CONFIG_PM_SLEEP static int imx_audmux_suspend(struct device *dev) { - int i; + int i, ret; - clk_prepare_enable(audmux_clk); + ret = clk_prepare_enable(audmux_clk); + if (ret) + return ret; for (i = 0; i < reg_max; i++) regcache[i] = readl(audmux_base + i * 4); @@ -338,9 +340,11 @@ static int imx_audmux_suspend(struct device *dev) static int imx_audmux_resume(struct device *dev) { - int i; + int i, ret; - clk_prepare_enable(audmux_clk); + ret = clk_prepare_enable(audmux_clk); + if (ret) + return ret; for (i = 0; i < reg_max; i++) writel(regcache[i], audmux_base + i * 4); -- 2.17.1