aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2020-09-23 08:25:57 -0500
committerMark Brown <broonie@kernel.org>2020-09-23 18:48:01 +0100
commitc0a30e2e07e35f219666788c8549156eb8d74105 (patch)
treebf318907468a38b9d1af4a01b071a87d321c831e /sound
parent5d0b9dfe0de26b8c4242145cbf7de3a5a2e98293 (diff)
downloadlinux-media-c0a30e2e07e35f219666788c8549156eb8d74105.tar.gz
ASoC: tas2770: Set regcache when shutting down and waking device
Set the regcache to cache data and mark cache as dirty when the device is shutdown when suspend is called. When the device is woken up then sync the cache and set to not caching the data. Signed-off-by: Dan Murphy <dmurphy@ti.com> Link: https://lore.kernel.org/r/20200923132600.10652-3-dmurphy@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/tas2770.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/sound/soc/codecs/tas2770.c b/sound/soc/codecs/tas2770.c
index 9f7363927c50c8..c42e653cd653cf 100644
--- a/sound/soc/codecs/tas2770.c
+++ b/sound/soc/codecs/tas2770.c
@@ -82,14 +82,20 @@ static int tas2770_codec_suspend(struct snd_soc_component *component)
struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component);
int ret = 0;
+ regcache_cache_only(tas2770->regmap, true);
+ regcache_mark_dirty(tas2770->regmap);
+
if (tas2770->sdz_gpio) {
gpiod_set_value_cansleep(tas2770->sdz_gpio, 0);
} else {
ret = snd_soc_component_update_bits(component, TAS2770_PWR_CTRL,
TAS2770_PWR_CTRL_MASK,
TAS2770_PWR_CTRL_SHUTDOWN);
- if (ret < 0)
+ if (ret < 0) {
+ regcache_cache_only(tas2770->regmap, false);
+ regcache_sync(tas2770->regmap);
return ret;
+ }
ret = 0;
}
@@ -110,11 +116,11 @@ static int tas2770_codec_resume(struct snd_soc_component *component)
TAS2770_PWR_CTRL_ACTIVE);
if (ret < 0)
return ret;
-
- ret = 0;
}
- return ret;
+ regcache_cache_only(tas2770->regmap, false);
+
+ return regcache_sync(tas2770->regmap);
}
#else
#define tas2770_codec_suspend NULL