Re: [PATCH v4 6/7] sound/soc/codecs: Convert SI476X codec to use regmap

2013-02-20 Thread Mark Brown
On Mon, Feb 18, 2013 at 07:59:34PM -0800, Andrey Smirnov wrote:
 From: Andrey Smirnov andreysm@charmander.(none)
 
 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

Applied, thanks.  Always use subject lines appropriate for the subsystem
you're submitting against.


signature.asc
Description: Digital signature


[PATCH v4 6/7] sound/soc/codecs: Convert SI476X codec to use regmap

2013-02-18 Thread Andrey Smirnov
From: Andrey Smirnov andreysm@charmander.(none)

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: Andrey Smirnov andrew.smir...@gmail.com
---
 sound/soc/codecs/si476x.c |   22 +++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/sound/soc/codecs/si476x.c b/sound/soc/codecs/si476x.c
index f2d61a1..30aebbe 100644
--- a/sound/soc/codecs/si476x.c
+++ b/sound/soc/codecs/si476x.c
@@ -45,13 +45,23 @@ static unsigned int si476x_codec_read(struct snd_soc_codec 
*codec,
  unsigned int reg)
 {
int err;
+   unsigned int val;
struct si476x_core *core = codec-control_data;
 
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);
 
-   return err;
+   if (err  0)
+   return err;
+
+   return val;
 }
 
 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;
 
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);
 
return err;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html