From: Sugar Zhang Date: Fri, 10 Jul 2015 08:27:25 +0000 (+0800) Subject: ASoC: rockchip: i2s: move pinctrl_pm_* to suspend/resume. X-Git-Tag: firefly_0821_release~3916 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=fbe8dc221ae4ed469ec5b6c9ce86eccff2b48d1d;p=firefly-linux-kernel-4.4.55.git ASoC: rockchip: i2s: move pinctrl_pm_* to suspend/resume. some codec initializtion depends on i2s's mclk/lrck, when codec enter deep sleep, codec power loss, then codec resume and reinit codec logic which need mclk/lrck, if these clk is not ready, codec will work abnormally. Signed-off-by: Sugar Zhang --- diff --git a/sound/soc/rockchip/rk_i2s.c b/sound/soc/rockchip/rk_i2s.c index aa144cd49ed6..f241e082d58d 100755 --- a/sound/soc/rockchip/rk_i2s.c +++ b/sound/soc/rockchip/rk_i2s.c @@ -483,7 +483,7 @@ static int rockchip_i2s_runtime_suspend(struct device *dev) struct rk_i2s_dev *i2s = dev_get_drvdata(dev); dev_dbg(i2s->dev, "%s\n", __func__); - return pinctrl_pm_select_sleep_state(dev); + return 0; } static int rockchip_i2s_runtime_resume(struct device *dev) @@ -491,7 +491,7 @@ static int rockchip_i2s_runtime_resume(struct device *dev) struct rk_i2s_dev *i2s = dev_get_drvdata(dev); dev_dbg(i2s->dev, "%s\n", __func__); - return pinctrl_pm_select_default_state(dev); + return 0; } #else #define i2s_runtime_suspend NULL @@ -758,7 +758,7 @@ static int rockchip_i2s_suspend(struct device *dev) struct rk_i2s_dev *i2s = dev_get_drvdata(dev); dev_dbg(i2s->dev, "%s\n", __func__); - return 0; + return pinctrl_pm_select_sleep_state(dev); } static int rockchip_i2s_resume(struct device *dev) @@ -767,6 +767,9 @@ static int rockchip_i2s_resume(struct device *dev) int ret; ret = pm_runtime_get_sync(dev); + if (ret < 0) + return ret; + ret = pinctrl_pm_select_default_state(dev); if (ret < 0) return ret; ret = regmap_reinit_cache(i2s->regmap, &rockchip_i2s_regmap_config);