Commit d686500a authored by Andrey Smirnov's avatar Andrey Smirnov Committed by Mark Brown

ASoC: si476x: Convert SI476X codec to use regmap

The latest radio and MFD drivers for SI476X radio chips use regmap API
to provide access to the registers and allow for caching of their
values when the actual chip is powered off. Convert the codec driver
to do the same, so it would not loose the settings when the radio
driver powers the chip down.
Signed-off-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 6dbe51c2
...@@ -45,13 +45,23 @@ static unsigned int si476x_codec_read(struct snd_soc_codec *codec, ...@@ -45,13 +45,23 @@ static unsigned int si476x_codec_read(struct snd_soc_codec *codec,
unsigned int reg) unsigned int reg)
{ {
int err; int err;
unsigned int val;
struct si476x_core *core = codec->control_data; struct si476x_core *core = codec->control_data;
si476x_core_lock(core); si476x_core_lock(core);
err = si476x_core_cmd_get_property(core, reg); if (!si476x_core_is_powered_up(core))
regcache_cache_only(core->regmap, true);
err = regmap_read(core->regmap, reg, &val);
if (!si476x_core_is_powered_up(core))
regcache_cache_only(core->regmap, false);
si476x_core_unlock(core); si476x_core_unlock(core);
return err; if (err < 0)
return err;
return val;
} }
static int si476x_codec_write(struct snd_soc_codec *codec, static int si476x_codec_write(struct snd_soc_codec *codec,
...@@ -61,7 +71,13 @@ static int si476x_codec_write(struct snd_soc_codec *codec, ...@@ -61,7 +71,13 @@ static int si476x_codec_write(struct snd_soc_codec *codec,
struct si476x_core *core = codec->control_data; struct si476x_core *core = codec->control_data;
si476x_core_lock(core); si476x_core_lock(core);
err = si476x_core_cmd_set_property(core, reg, val); if (!si476x_core_is_powered_up(core))
regcache_cache_only(core->regmap, true);
err = regmap_write(core->regmap, reg, val);
if (!si476x_core_is_powered_up(core))
regcache_cache_only(core->regmap, false);
si476x_core_unlock(core); si476x_core_unlock(core);
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment