hwmon: w83627ehf updates
[pandora-kernel.git] / drivers / hwmon / lm95241.c
index e34f9e4..8fc8eb8 100644 (file)
@@ -39,9 +39,6 @@
 static const unsigned short normal_i2c[] = {
        0x19, 0x2a, 0x2b, I2C_CLIENT_END};
 
-/* Insmod parameters */
-I2C_CLIENT_INSMOD_1(lm95241);
-
 /* LM95241 registers */
 #define LM95241_REG_R_MAN_ID           0xFE
 #define LM95241_REG_R_CHIP_ID          0xFF
@@ -310,56 +307,28 @@ static const struct attribute_group lm95241_group = {
 };
 
 /* Return 0 if detection is successful, -ENODEV otherwise */
-static int lm95241_detect(struct i2c_client *new_client, int kind,
+static int lm95241_detect(struct i2c_client *new_client,
                          struct i2c_board_info *info)
 {
        struct i2c_adapter *adapter = new_client->adapter;
        int address = new_client->addr;
-       const char *name = "";
+       const char *name;
 
        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
                return -ENODEV;
 
-       /*
-        * Now we do the remaining detection. A negative kind means that
-        * the driver was loaded with no force parameter (default), so we
-        * must both detect and identify the chip. A zero kind means that
-        * the driver was loaded with the force parameter, the detection
-        * step shall be skipped. A positive kind means that the driver
-        * was loaded with the force parameter and a given kind of chip is
-        * requested, so both the detection and the identification steps
-        * are skipped.
-        */
-       if (kind < 0) { /* detection */
-               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)) {
-                       dev_dbg(&adapter->dev,
-                               "LM95241 detection failed at 0x%02x.\n",
-                               address);
-                       return -ENODEV;
-               }
-       }
-
-       if (kind <= 0) { /* identification */
-               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)) {
-
-                       kind = lm95241;
-
-                       if (kind <= 0) { /* identification failed */
-                               dev_info(&adapter->dev, "Unsupported chip\n");
-                               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 = "lm95241";
+       } else {
+               dev_dbg(&adapter->dev, "LM95241 detection failed at 0x%02x\n",
+                       address);
+               return -ENODEV;
        }
 
        /* Fill the i2c board info */
-       if (kind == lm95241)
-               name = "lm95241";
        strlcpy(info->type, name, I2C_NAME_SIZE);
        return 0;
 }
@@ -474,7 +443,7 @@ static struct lm95241_data *lm95241_update_device(struct device *dev)
 
 /* Driver data (common to all clients) */
 static const struct i2c_device_id lm95241_id[] = {
-       { "lm95241", lm95241 },
+       { "lm95241", 0 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, lm95241_id);
@@ -488,7 +457,7 @@ static struct i2c_driver lm95241_driver = {
        .remove         = lm95241_remove,
        .id_table       = lm95241_id,
        .detect         = lm95241_detect,
-       .address_data   = &addr_data,
+       .address_list   = normal_i2c,
 };
 
 static int __init sensors_lm95241_init(void)