ASoC: max98090: Add check for CODEC type
authorTushar Behera <tushar.b@samsung.com>
Fri, 4 Jul 2014 09:12:16 +0000 (14:42 +0530)
committerMark Brown <broonie@linaro.org>
Fri, 4 Jul 2014 19:30:27 +0000 (20:30 +0100)
CODEC type (MAX98090/MAX98091) can be specified from device-tree file,
it can also be obtained from the CODEC during runtime.

Add an explicit check to figure out if both are matching, else print
a message warning about the same.

Signed-off-by: Tushar Behera <tushar.b@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/codecs/max98090.c

index c00b36872dfea424dc0c29f40af1861eac882a5c..2c2c5b22f60fc71d5350a5ded84c771b4bee0829 100644 (file)
@@ -2215,6 +2215,7 @@ static int max98090_probe(struct snd_soc_codec *codec)
 {
        struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec);
        struct max98090_cdata *cdata;
+       enum max98090_type devtype;
        int ret = 0;
 
        dev_dbg(codec->dev, "max98090_probe\n");
@@ -2250,16 +2251,21 @@ static int max98090_probe(struct snd_soc_codec *codec)
        }
 
        if ((ret >= M98090_REVA) && (ret <= M98090_REVA + 0x0f)) {
-               max98090->devtype = MAX98090;
+               devtype = MAX98090;
                dev_info(codec->dev, "MAX98090 REVID=0x%02x\n", ret);
        } else if ((ret >= M98091_REVA) && (ret <= M98091_REVA + 0x0f)) {
-               max98090->devtype = MAX98091;
+               devtype = MAX98091;
                dev_info(codec->dev, "MAX98091 REVID=0x%02x\n", ret);
        } else {
-               max98090->devtype = MAX98090;
+               devtype = MAX98090;
                dev_err(codec->dev, "Unrecognized revision 0x%02x\n", ret);
        }
 
+       if (max98090->devtype != devtype) {
+               dev_warn(codec->dev, "Mismatch in DT specified CODEC type.\n");
+               max98090->devtype = devtype;
+       }
+
        max98090->jack_state = M98090_JACK_STATE_NO_HEADSET;
 
        INIT_DELAYED_WORK(&max98090->jack_work, max98090_jack_work);