asoc: codecs: max98088: check for revision id
[linux-2.6.git] / sound / soc / codecs / max98088.c
index cee6354..e2ad10d 100644 (file)
@@ -2073,6 +2073,15 @@ static int max98088_probe(struct snd_soc_codec *codec)
        max98088->mic1pre = 0;
        max98088->mic2pre = 0;
 
+       ret = snd_soc_read(codec, M98088_REG_FF_REV_ID);
+       if (ret != 0x40) {
+               dev_err(codec->dev, "Failed to read device revision: %d\n",
+                       ret);
+               ret = -ENODEV;
+               goto err_access;
+       }
+       dev_info(codec->dev, "revision %c\n", ret + 'A');
+
        if (max98088->irq) {
                /* register an audio interrupt */
                ret = request_threaded_irq(max98088->irq, NULL,
@@ -2085,14 +2094,6 @@ static int max98088_probe(struct snd_soc_codec *codec)
                }
        }
 
-       ret = snd_soc_read(codec, M98088_REG_FF_REV_ID);
-       if (ret < 0) {
-               dev_err(codec->dev, "Failed to read device revision: %d\n",
-                       ret);
-               goto err_access;
-       }
-       dev_info(codec->dev, "revision %c\n", ret + 'A');
-
        snd_soc_write(codec, M98088_REG_51_PWR_SYS, M98088_PWRSV);
 
        /* initialize registers cache to hardware default */