ASoC: core: Fix check before defaulting to regmap
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 1 Aug 2012 19:05:47 +0000 (20:05 +0100)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 2 Aug 2012 10:43:45 +0000 (11:43 +0100)
Check if the chip has provided a write operation (which is mandatory for
I/O) rather than looking for control data as some of the MFDs use a global
for this. Also skip the attempt if there's no regmap available by device
in case things get confused by the attempt to default.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
sound/soc/soc-core.c

index f219b2f..f81c597 100644 (file)
@@ -1096,7 +1096,7 @@ static int soc_probe_codec(struct snd_soc_card *card,
        }
 
        /* If the driver didn't set I/O up try regmap */
-       if (!codec->control_data)
+       if (!codec->write && dev_get_regmap(codec->dev, NULL))
                snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
 
        if (driver->controls)