Skip to content

Commit

Permalink
ASoC: tas2770: Set regcache when shutting down and waking device
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dan Murphy authored and Mark Brown committed Sep 23, 2020
1 parent 5d0b9df commit c0a30e2
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions sound/soc/codecs/tas2770.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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
Expand Down

0 comments on commit c0a30e2

Please sign in to comment.