|
@@ -1108,6 +1108,7 @@ static int twl6040_probe(struct snd_soc_codec *codec)
|
|
|
struct twl6040_data *priv;
|
|
|
int audpwron, naudint;
|
|
|
int ret = 0;
|
|
|
+ u8 icrev;
|
|
|
|
|
|
priv = kzalloc(sizeof(struct twl6040_data), GFP_KERNEL);
|
|
|
if (priv == NULL)
|
|
@@ -1116,13 +1117,17 @@ static int twl6040_probe(struct snd_soc_codec *codec)
|
|
|
|
|
|
priv->codec = codec;
|
|
|
|
|
|
- if (twl_codec) {
|
|
|
+ twl_i2c_read_u8(TWL_MODULE_AUDIO_VOICE, &icrev, TWL6040_REG_ASICREV);
|
|
|
+
|
|
|
+ if (twl_codec && (icrev > 0))
|
|
|
audpwron = twl_codec->audpwron_gpio;
|
|
|
- naudint = twl_codec->naudint_irq;
|
|
|
- } else {
|
|
|
+ else
|
|
|
audpwron = -EINVAL;
|
|
|
+
|
|
|
+ if (twl_codec)
|
|
|
+ naudint = twl_codec->naudint_irq;
|
|
|
+ else
|
|
|
naudint = 0;
|
|
|
- }
|
|
|
|
|
|
priv->audpwron = audpwron;
|
|
|
priv->naudint = naudint;
|