Add checks to see if wmXXXX_reset() failed and notify the user of the problem. This is generally due to a problem on the i2c bus such as an un-powered or non-connected codec.
Signed-off-by: Ben Dooks ben@simtec.co.uk
Index: linux-2.6.29-rc6-quilt1/sound/soc/codecs/wm8731.c =================================================================== --- linux-2.6.29-rc6-quilt1.orig/sound/soc/codecs/wm8731.c 2009-02-25 11:14:15.000000000 +0000 +++ linux-2.6.29-rc6-quilt1/sound/soc/codecs/wm8731.c 2009-02-25 11:14:37.000000000 +0000 @@ -521,7 +521,11 @@ static int wm8731_init(struct snd_soc_de if (codec->reg_cache == NULL) return -ENOMEM;
- wm8731_reset(codec); + ret = wm8731_reset(codec); + if (ret < 0) { + printk(KERN_ERR "wm8731: failed to send reset\n"); + return -EIO; + }
/* register pcms */ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1); Index: linux-2.6.29-rc6-quilt1/sound/soc/codecs/wm8753.c =================================================================== --- linux-2.6.29-rc6-quilt1.orig/sound/soc/codecs/wm8753.c 2009-02-25 11:14:15.000000000 +0000 +++ linux-2.6.29-rc6-quilt1/sound/soc/codecs/wm8753.c 2009-02-25 11:14:37.000000000 +0000 @@ -1573,7 +1573,11 @@ static int wm8753_init(struct snd_soc_de
wm8753_set_dai_mode(codec, 0);
- wm8753_reset(codec); + ret = wm8753_reset(codec); + if (ret < 0) { + printk(KERN_ERR "wm8753: failed reset, not present?\n"); + return -EIO; + }
/* register pcms */ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);