ASoC: io: New signature for snd_soc_codec_set_cache_io()
authorXiubo Li <Li.Xiubo@freescale.com>
Tue, 11 Mar 2014 04:43:21 +0000 (12:43 +0800)
committerMark Brown <broonie@linaro.org>
Tue, 11 Mar 2014 09:59:06 +0000 (09:59 +0000)
Now that all users have been converted to regmap and the config.reg_bits
and config.val_bits can be setted by each user through regmap core API.
So these two params are redundant here.

Since the only control type that left is SND_SOC_REGMAP, so remove it. Drop
the control params and add struct regmap *regmap to simplify the code.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
14 files changed:
include/sound/soc.h
sound/soc/codecs/88pm860x-codec.c
sound/soc/codecs/cq93vc.c
sound/soc/codecs/mc13783.c
sound/soc/codecs/si476x.c
sound/soc/codecs/tlv320dac33.c
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm5110.c
sound/soc/codecs/wm8350.c
sound/soc/codecs/wm8400.c
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm8997.c
sound/soc/soc-core.c
sound/soc/soc-io.c

index 2d8982db034457df4a0553d0ec96146bdb6b6943..85a5b7bbe39a10345bf36999d7abfafa8e7392b7 100644 (file)
@@ -354,10 +354,6 @@ typedef int (*hw_write_t)(void *,const char* ,int);
 
 extern struct snd_ac97_bus_ops *soc_ac97_ops;
 
-enum snd_soc_control_type {
-       SND_SOC_REGMAP,
-};
-
 enum snd_soc_pcm_subclass {
        SND_SOC_PCM_CLASS_PCM   = 0,
        SND_SOC_PCM_CLASS_BE    = 1,
@@ -404,8 +400,7 @@ int snd_soc_codec_readable_register(struct snd_soc_codec *codec,
 int snd_soc_codec_writable_register(struct snd_soc_codec *codec,
                                    unsigned int reg);
 int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
-                              int addr_bits, int data_bits,
-                              enum snd_soc_control_type control);
+                              struct regmap *regmap);
 int snd_soc_cache_sync(struct snd_soc_codec *codec);
 int snd_soc_cache_init(struct snd_soc_codec *codec);
 int snd_soc_cache_exit(struct snd_soc_codec *codec);
index 647a72cda005a5cc4f8b362fefe8aa1ad3f68a76..773b53366adaeb777442a3840c40c70f13a63952 100644 (file)
@@ -1327,8 +1327,7 @@ static int pm860x_probe(struct snd_soc_codec *codec)
 
        pm860x->codec = codec;
 
-       codec->control_data = pm860x->regmap;
-       ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
+       ret = snd_soc_codec_set_cache_io(codec, pm860x->regmap);
        if (ret)
                return ret;
 
index 43737a27d79caff3dda074565d0201493d4fb96e..1e25c7af853bcdb7c40b7c94d4cb2ca6e878b8be 100644 (file)
@@ -138,9 +138,8 @@ static int cq93vc_probe(struct snd_soc_codec *codec)
        struct davinci_vc *davinci_vc = codec->dev->platform_data;
 
        davinci_vc->cq93vc.codec = codec;
-       codec->control_data = davinci_vc->regmap;
 
-       snd_soc_codec_set_cache_io(codec, 32, 32, SND_SOC_REGMAP);
+       snd_soc_codec_set_cache_io(codec, davinci_vc->regmap);
 
        /* Off, with power on */
        cq93vc_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
index 582c2bbd42cb9eae83346b5fbcd4e497d6101493..fc28b20f6c69501a1a458f9304063de6d0138ac2 100644 (file)
@@ -614,8 +614,8 @@ static int mc13783_probe(struct snd_soc_codec *codec)
        struct mc13783_priv *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
 
-       codec->control_data = dev_get_regmap(codec->dev->parent, NULL);
-       ret = snd_soc_codec_set_cache_io(codec, 8, 24, SND_SOC_REGMAP);
+       ret = snd_soc_codec_set_cache_io(codec,
+                       dev_get_regmap(codec->dev->parent, NULL));
        if (ret != 0) {
                dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
                return ret;
index fa2b8e07f420dd9c14ac0dc944babfe66dfbe2b2..244c097cd9053948d43b13c77fee6d6a8b6c7342 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/slab.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
+#include <linux/regmap.h>
 #include <sound/soc.h>
 #include <sound/initval.h>
 
@@ -209,8 +210,9 @@ out:
 
 static int si476x_codec_probe(struct snd_soc_codec *codec)
 {
-       codec->control_data = dev_get_regmap(codec->dev->parent, NULL);
-       return snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
+       struct regmap *regmap = dev_get_regmap(codec->dev->parent, NULL);
+
+       return snd_soc_codec_set_cache_io(codec, regmap);
 }
 
 static struct snd_soc_dai_ops si476x_dai_ops = {
index 4f358393d6d63b721495ccc8330da431a9c38a20..64afda740c80881c055d2e93c8255f0a309b710a 100644 (file)
@@ -122,7 +122,6 @@ struct tlv320dac33_priv {
        unsigned int uthr;
 
        enum dac33_state state;
-       enum snd_soc_control_type control_type;
        void *control_data;
 };
 
index ce9c8e14d4bd105cfc33991604a06440e67ca1f0..5613d0efe19b720de98a428c669d1cea40bf3e4e 100644 (file)
@@ -1758,9 +1758,7 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
        struct wm5102_priv *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
 
-       codec->control_data = priv->core.arizona->regmap;
-
-       ret = snd_soc_codec_set_cache_io(codec, 32, 16, SND_SOC_REGMAP);
+       ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap);
        if (ret != 0)
                return ret;
 
index 2c3c962d9a856fe12e391b4292cdf7dbd715cd6d..66d3ad4176c31866744696725d19ce1cccd2bbb7 100644 (file)
@@ -1588,10 +1588,9 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)
        struct wm5110_priv *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
 
-       codec->control_data = priv->core.arizona->regmap;
        priv->core.arizona->dapm = &codec->dapm;
 
-       ret = snd_soc_codec_set_cache_io(codec, 32, 16, SND_SOC_REGMAP);
+       ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap);
        if (ret != 0)
                return ret;
 
index a183dcf3d5c12343884be365e0f50c90248135b8..757256bf7672ef9a44d156d895ca0537018ab852 100644 (file)
@@ -1505,9 +1505,7 @@ static  int wm8350_codec_probe(struct snd_soc_codec *codec)
        if (ret != 0)
                return ret;
 
-       codec->control_data = wm8350->regmap;
-
-       snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_REGMAP);
+       snd_soc_codec_set_cache_io(codec, wm8350->regmap);
 
        /* Put the codec into reset if it wasn't already */
        wm8350_clear_bits(wm8350, WM8350_POWER_MGMT_5, WM8350_CODEC_ENA);
index 48dc7d2fee36fc07c236f6e9a09ea74cdb38d824..939baf83bb5928494d0a199d9eec471ff646a618 100644 (file)
@@ -1310,10 +1310,9 @@ static int wm8400_codec_probe(struct snd_soc_codec *codec)
 
        snd_soc_codec_set_drvdata(codec, priv);
        priv->wm8400 = wm8400;
-       codec->control_data = wm8400->regmap;
        priv->codec = codec;
 
-       snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_REGMAP);
+       snd_soc_codec_set_cache_io(codec, wm8400->regmap);
 
        ret = devm_regulator_bulk_get(wm8400->dev,
                                 ARRAY_SIZE(power), &power[0]);
index b9be9cbc460391d4530e970e3c77a0521109c2a2..32cc83e3f1ff200660850965d865aa18e1bd6933 100644 (file)
@@ -3985,9 +3985,8 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
        int ret, i;
 
        wm8994->hubs.codec = codec;
-       codec->control_data = control->regmap;
 
-       snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP);
+       snd_soc_codec_set_cache_io(codec, control->regmap);
 
        mutex_init(&wm8994->accdet_lock);
        INIT_DELAYED_WORK(&wm8994->jackdet_bootstrap,
index 555115ee2159eadd3083f522d8cd682000216a48..e3d1522daf64dadbade6afea93114d1dd6e6890b 100644 (file)
@@ -1052,9 +1052,7 @@ static int wm8997_codec_probe(struct snd_soc_codec *codec)
        struct wm8997_priv *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
 
-       codec->control_data = priv->core.arizona->regmap;
-
-       ret = snd_soc_codec_set_cache_io(codec, 32, 16, SND_SOC_REGMAP);
+       ret = snd_soc_codec_set_cache_io(codec, priv->core.arizona->regmap);
        if (ret != 0)
                return ret;
 
index ad2dd14f0e3ec5221aadbbc0a1cc168547f95cdd..6510a8e4a5af817dec2fcc8c91a0b19002728501 100644 (file)
@@ -1139,7 +1139,7 @@ static int soc_probe_codec(struct snd_soc_card *card,
 
        /* Set the default I/O up try regmap */
        if (dev_get_regmap(codec->dev, NULL))
-               snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
+               snd_soc_codec_set_cache_io(codec, NULL);
 
        if (driver->probe) {
                ret = driver->probe(codec);
index 18353f111b6a552aec3bb522cc3efa40cbbdbb89..8aa08699686676f86a5732a25e3af467c874378d 100644 (file)
@@ -69,9 +69,7 @@ static unsigned int hw_read(struct snd_soc_codec *codec, unsigned int reg)
  * snd_soc_codec_set_cache_io: Set up standard I/O functions.
  *
  * @codec: CODEC to configure.
- * @addr_bits: Number of bits of register address data.
- * @data_bits: Number of bits of data per register.
- * @control: Control bus used.
+ * @map: Register map to write to
  *
  * Register formats are frequently shared between many I2C and SPI
  * devices.  In order to promote code reuse the ASoC core provides
@@ -85,41 +83,36 @@ static unsigned int hw_read(struct snd_soc_codec *codec, unsigned int reg)
  * volatile registers.
  */
 int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
-                              int addr_bits, int data_bits,
-                              enum snd_soc_control_type control)
+                              struct regmap *regmap)
 {
        int ret;
 
+       /* Device has made its own regmap arrangements */
+       if (!regmap)
+               codec->control_data = dev_get_regmap(codec->dev, NULL);
+       else
+               codec->control_data = regmap;
+
+       if (IS_ERR(codec->control_data))
+               return PTR_ERR(codec->control_data);
+
        codec->write = hw_write;
        codec->read = hw_read;
 
-       switch (control) {
-       case SND_SOC_REGMAP:
-               /* Device has made its own regmap arrangements */
-               codec->using_regmap = true;
-               if (!codec->control_data)
-                       codec->control_data = dev_get_regmap(codec->dev, NULL);
-
-               if (codec->control_data) {
-                       ret = regmap_get_val_bytes(codec->control_data);
-                       /* Errors are legitimate for non-integer byte
-                        * multiples */
-                       if (ret > 0)
-                               codec->val_bytes = ret;
-               }
-               break;
-
-       default:
-               return -EINVAL;
-       }
+       ret = regmap_get_val_bytes(codec->control_data);
+       /* Errors are legitimate for non-integer byte
+        * multiples */
+       if (ret > 0)
+               codec->val_bytes = ret;
+
+       codec->using_regmap = true;
 
-       return PTR_ERR_OR_ZERO(codec->control_data);
+       return 0;
 }
 EXPORT_SYMBOL_GPL(snd_soc_codec_set_cache_io);
 #else
 int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
-                              int addr_bits, int data_bits,
-                              enum snd_soc_control_type control)
+                              struct regmap *regmap)
 {
        return -ENOTSUPP;
 }