ASoC: 88pm860x: Remove the set_cache_io() entirely from ASoC probe.
authorXiubo Li <Li.Xiubo@freescale.com>
Wed, 26 Mar 2014 05:40:24 +0000 (13:40 +0800)
committerMark Brown <broonie@linaro.org>
Mon, 14 Apr 2014 16:22:19 +0000 (17:22 +0100)
As we can set the CODEC I/O while snd_soc_register_codec(), so the
calling of set_cache_io() from CODEC ASoC probe could be removed
entirely.

And then we can set the CODEC I/O in the device probe instead of
CODEC ASoC probe as earily as possible.

Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/88pm860x-codec.c

index b07e17160f94a0453cf080cc487da4874f930673..dc9e6b94e64581f8e0093d92ac63ba8f1badb602 100644 (file)
@@ -1327,10 +1327,6 @@ static int pm860x_probe(struct snd_soc_codec *codec)
 
        pm860x->codec = codec;
 
-       ret = snd_soc_codec_set_cache_io(codec, pm860x->regmap);
-       if (ret)
-               return ret;
-
        for (i = 0; i < 4; i++) {
                ret = request_threaded_irq(pm860x->irq[i], NULL,
                                           pm860x_codec_handler, IRQF_ONESHOT,
@@ -1362,10 +1358,18 @@ static int pm860x_remove(struct snd_soc_codec *codec)
        return 0;
 }
 
+struct regmap *pm860x_get_regmap(struct device *dev)
+{
+       struct pm860x_priv *pm860x = dev_get_drvdata(dev);
+
+       return pm860x->regmap;
+}
+
 static struct snd_soc_codec_driver soc_codec_dev_pm860x = {
        .probe          = pm860x_probe,
        .remove         = pm860x_remove,
        .set_bias_level = pm860x_set_bias_level,
+       .get_regmap     = pm860x_get_regmap,
 
        .controls = pm860x_snd_controls,
        .num_controls = ARRAY_SIZE(pm860x_snd_controls),