From 822d0049221039265c6b5480c024a885fbbce3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Dal=C3=A9n?= Date: Thu, 26 May 2011 09:08:53 -0400 Subject: [PATCH] --- yaml --- r: 253109 b: refs/heads/master c: 942c1a927bf296fd64fd49f04c5a8f66bb14446b h: refs/heads/master i: 253107: 767e78559774b1f7b2c1ef43b8161f29748e456b v: v3 --- [refs] | 2 +- trunk/drivers/hwmon/max6642.c | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9d88db0231a0..e780ee0463f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bb9973e4e73f43bd86698483d0c3f7a362ff94ce +refs/heads/master: 942c1a927bf296fd64fd49f04c5a8f66bb14446b diff --git a/trunk/drivers/hwmon/max6642.c b/trunk/drivers/hwmon/max6642.c index 0f30e1bb366f..e855d3b0bd1f 100644 --- a/trunk/drivers/hwmon/max6642.c +++ b/trunk/drivers/hwmon/max6642.c @@ -136,15 +136,29 @@ static int max6642_detect(struct i2c_client *client, if (man_id != 0x4D) return -ENODEV; + /* sanity check */ + if (i2c_smbus_read_byte_data(client, 0x04) != 0x4D + || i2c_smbus_read_byte_data(client, 0x06) != 0x4D + || i2c_smbus_read_byte_data(client, 0xff) != 0x4D) + return -ENODEV; + /* * We read the config and status register, the 4 lower bits in the * config register should be zero and bit 5, 3, 1 and 0 should be * zero in the status register. */ reg_config = i2c_smbus_read_byte_data(client, MAX6642_REG_R_CONFIG); + if ((reg_config & 0x0f) != 0x00) + return -ENODEV; + + /* in between, another round of sanity checks */ + if (i2c_smbus_read_byte_data(client, 0x04) != reg_config + || i2c_smbus_read_byte_data(client, 0x06) != reg_config + || i2c_smbus_read_byte_data(client, 0xff) != reg_config) + return -ENODEV; + reg_status = i2c_smbus_read_byte_data(client, MAX6642_REG_R_STATUS); - if (((reg_config & 0x0f) != 0x00) || - ((reg_status & 0x2b) != 0x00)) + if ((reg_status & 0x2b) != 0x00) return -ENODEV; strlcpy(info->type, "max6642", I2C_NAME_SIZE);