|
@@ -74,8 +74,9 @@ static const unsigned short normal_i2c[] = {
|
|
#define TT_OFF 0
|
|
#define TT_OFF 0
|
|
#define TT_ON 1
|
|
#define TT_ON 1
|
|
#define TT_MASK 7
|
|
#define TT_MASK 7
|
|
-#define MANUFACTURER_ID 0x01
|
|
|
|
-#define DEFAULT_REVISION 0xA4
|
|
|
|
|
|
+#define NATSEMI_MAN_ID 0x01
|
|
|
|
+#define LM95231_CHIP_ID 0xA1
|
|
|
|
+#define LM95241_CHIP_ID 0xA4
|
|
|
|
|
|
static const u8 lm95241_reg_address[] = {
|
|
static const u8 lm95241_reg_address[] = {
|
|
LM95241_REG_R_LOCAL_TEMPH,
|
|
LM95241_REG_R_LOCAL_TEMPH,
|
|
@@ -338,20 +339,25 @@ static int lm95241_detect(struct i2c_client *new_client,
|
|
struct i2c_board_info *info)
|
|
struct i2c_board_info *info)
|
|
{
|
|
{
|
|
struct i2c_adapter *adapter = new_client->adapter;
|
|
struct i2c_adapter *adapter = new_client->adapter;
|
|
- int address = new_client->addr;
|
|
|
|
const char *name;
|
|
const char *name;
|
|
|
|
+ int mfg_id, chip_id;
|
|
|
|
|
|
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
|
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
- if ((i2c_smbus_read_byte_data(new_client, LM95241_REG_R_MAN_ID)
|
|
|
|
- == MANUFACTURER_ID)
|
|
|
|
- && (i2c_smbus_read_byte_data(new_client, LM95241_REG_R_CHIP_ID)
|
|
|
|
- == DEFAULT_REVISION)) {
|
|
|
|
- name = DEVNAME;
|
|
|
|
- } else {
|
|
|
|
- dev_dbg(&adapter->dev, "LM95241 detection failed at 0x%02x\n",
|
|
|
|
- address);
|
|
|
|
|
|
+ mfg_id = i2c_smbus_read_byte_data(new_client, LM95241_REG_R_MAN_ID);
|
|
|
|
+ if (mfg_id != NATSEMI_MAN_ID)
|
|
|
|
+ return -ENODEV;
|
|
|
|
+
|
|
|
|
+ chip_id = i2c_smbus_read_byte_data(new_client, LM95241_REG_R_CHIP_ID);
|
|
|
|
+ switch (chip_id) {
|
|
|
|
+ case LM95231_CHIP_ID:
|
|
|
|
+ name = "lm95231";
|
|
|
|
+ break;
|
|
|
|
+ case LM95241_CHIP_ID:
|
|
|
|
+ name = "lm95241";
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -431,7 +437,8 @@ static int lm95241_remove(struct i2c_client *client)
|
|
|
|
|
|
/* Driver data (common to all clients) */
|
|
/* Driver data (common to all clients) */
|
|
static const struct i2c_device_id lm95241_id[] = {
|
|
static const struct i2c_device_id lm95241_id[] = {
|
|
- { DEVNAME, 0 },
|
|
|
|
|
|
+ { "lm95231", 0 },
|
|
|
|
+ { "lm95241", 0 },
|
|
{ }
|
|
{ }
|
|
};
|
|
};
|
|
MODULE_DEVICE_TABLE(i2c, lm95241_id);
|
|
MODULE_DEVICE_TABLE(i2c, lm95241_id);
|