From a0a05916cf67a007f4ee0071fd0fa04e45137a38 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Fri, 22 Nov 2013 13:34:48 +0000 Subject: [PATCH] ASoC: wm8991: Verify device ID during probe() Just in case. Signed-off-by: Mark Brown Acked-by: Charles Keepax --- sound/soc/codecs/wm8991.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sound/soc/codecs/wm8991.c b/sound/soc/codecs/wm8991.c index 5fdcf78..dba0306 100644 --- a/sound/soc/codecs/wm8991.c +++ b/sound/soc/codecs/wm8991.c @@ -1335,6 +1335,7 @@ static int wm8991_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { struct wm8991_priv *wm8991; + unsigned int val; int ret; wm8991 = devm_kzalloc(&i2c->dev, sizeof(*wm8991), GFP_KERNEL); @@ -1347,6 +1348,16 @@ static int wm8991_i2c_probe(struct i2c_client *i2c, i2c_set_clientdata(i2c, wm8991); + ret = regmap_read(wm8991->regmap, WM8991_RESET, &val); + if (ret != 0) { + dev_err(&i2c->dev, "Failed to read device ID: %d\n", ret); + return ret; + } + if (val != 0x8991) { + dev_err(&i2c->dev, "Device with ID %x is not a WM8991\n", val); + return -EINVAL; + } + ret = regmap_write(wm8991->regmap, WM8991_RESET, 0); if (ret < 0) { dev_err(&i2c->dev, "Failed to issue reset: %d\n", ret); -- 2.7.4