Skip to content

Commit

Permalink
ASoC: rockchip: spdif: restore register during runtime_suspend/resume…
Browse files Browse the repository at this point in the history
… cycle

when step into runtime_suspend, spdif pd will be disabled and loss state.
so need to restore register when runtime_resume.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Sugar Zhang authored and Mark Brown committed Sep 12, 2016
1 parent f0447f6 commit 3628c69
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion sound/soc/rockchip/rockchip_spdif.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ static int __maybe_unused rk_spdif_runtime_suspend(struct device *dev)
{
struct rk_spdif_dev *spdif = dev_get_drvdata(dev);

regcache_cache_only(spdif->regmap, true);
clk_disable_unprepare(spdif->mclk);
clk_disable_unprepare(spdif->hclk);

Expand All @@ -88,7 +89,16 @@ static int __maybe_unused rk_spdif_runtime_resume(struct device *dev)
return ret;
}

return 0;
regcache_cache_only(spdif->regmap, false);
regcache_mark_dirty(spdif->regmap);

ret = regcache_sync(spdif->regmap);
if (ret) {
clk_disable_unprepare(spdif->mclk);
clk_disable_unprepare(spdif->hclk);
}

return ret;
}

static int rk_spdif_hw_params(struct snd_pcm_substream *substream,
Expand Down

0 comments on commit 3628c69

Please sign in to comment.