- patches.suse/slab-handle-memoryless-nodes-v2a.patch: Refresh.
[linux-flexiantxendom0-3.2.10.git] / drivers / hwmon / lm75.c
index 55bd87c..8ae2cfe 100644 (file)
 
 /*
  * This driver handles the LM75 and compatible digital temperature sensors.
- * Only types which are _not_ listed in I2C_CLIENT_INSMOD_*() need to be
- * listed here.  We start at 9 since I2C_CLIENT_INSMOD_*() currently allow
- * definition of up to 8 chip types (plus zero).
  */
 
 enum lm75_type {               /* keep sorted in alphabetical order */
-       ds1775 = 9,
+       ds1775,
        ds75,
-       /* lm75 -- in I2C_CLIENT_INSMOD_1() */
+       lm75,
        lm75a,
        max6625,
        max6626,
@@ -58,9 +55,6 @@ enum lm75_type {              /* keep sorted in alphabetical order */
 static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
                                        0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
 
-/* Insmod parameters */
-I2C_CLIENT_INSMOD_1(lm75);
-
 
 /* The LM75 registers */
 #define LM75_REG_CONF          0x01
@@ -234,11 +228,12 @@ static const struct i2c_device_id lm75_ids[] = {
 MODULE_DEVICE_TABLE(i2c, lm75_ids);
 
 /* Return 0 if detection is successful, -ENODEV otherwise */
-static int lm75_detect(struct i2c_client *new_client, int kind,
+static int lm75_detect(struct i2c_client *new_client,
                       struct i2c_board_info *info)
 {
        struct i2c_adapter *adapter = new_client->adapter;
        int i;
+       int cur, conf, hyst, os;
 
        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
                                     I2C_FUNC_SMBUS_WORD_DATA))
@@ -251,40 +246,35 @@ static int lm75_detect(struct i2c_client *new_client, int kind,
           The cycling+unused addresses combination is not tested,
           since it would significantly slow the detection down and would
           hardly add any value. */
-       if (kind < 0) {
-               int cur, conf, hyst, os;
-
-               /* Unused addresses */
-               cur = i2c_smbus_read_word_data(new_client, 0);
-               conf = i2c_smbus_read_byte_data(new_client, 1);
-               hyst = i2c_smbus_read_word_data(new_client, 2);
-               if (i2c_smbus_read_word_data(new_client, 4) != hyst
-                || i2c_smbus_read_word_data(new_client, 5) != hyst
-                || i2c_smbus_read_word_data(new_client, 6) != hyst
-                || i2c_smbus_read_word_data(new_client, 7) != hyst)
-                       return -ENODEV;
-               os = i2c_smbus_read_word_data(new_client, 3);
-               if (i2c_smbus_read_word_data(new_client, 4) != os
-                || i2c_smbus_read_word_data(new_client, 5) != os
-                || i2c_smbus_read_word_data(new_client, 6) != os
-                || i2c_smbus_read_word_data(new_client, 7) != os)
-                       return -ENODEV;
 
-               /* Unused bits */
-               if (conf & 0xe0)
-                       return -ENODEV;
+       /* Unused addresses */
+       cur = i2c_smbus_read_word_data(new_client, 0);
+       conf = i2c_smbus_read_byte_data(new_client, 1);
+       hyst = i2c_smbus_read_word_data(new_client, 2);
+       if (i2c_smbus_read_word_data(new_client, 4) != hyst
+        || i2c_smbus_read_word_data(new_client, 5) != hyst
+        || i2c_smbus_read_word_data(new_client, 6) != hyst
+        || i2c_smbus_read_word_data(new_client, 7) != hyst)
+               return -ENODEV;
+       os = i2c_smbus_read_word_data(new_client, 3);
+       if (i2c_smbus_read_word_data(new_client, 4) != os
+        || i2c_smbus_read_word_data(new_client, 5) != os
+        || i2c_smbus_read_word_data(new_client, 6) != os
+        || i2c_smbus_read_word_data(new_client, 7) != os)
+               return -ENODEV;
+
+       /* Unused bits */
+       if (conf & 0xe0)
+               return -ENODEV;
 
-               /* Addresses cycling */
-               for (i = 8; i < 0xff; i += 8)
-                       if (i2c_smbus_read_byte_data(new_client, i + 1) != conf
-                        || i2c_smbus_read_word_data(new_client, i + 2) != hyst
-                        || i2c_smbus_read_word_data(new_client, i + 3) != os)
-                               return -ENODEV;
+       /* Addresses cycling */
+       for (i = 8; i < 0xff; i += 8) {
+               if (i2c_smbus_read_byte_data(new_client, i + 1) != conf
+                || i2c_smbus_read_word_data(new_client, i + 2) != hyst
+                || i2c_smbus_read_word_data(new_client, i + 3) != os)
+                       return -ENODEV;
        }
 
-       /* NOTE: we treat "force=..." and "force_lm75=..." the same.
-        * Only new-style driver binding distinguishes chip types.
-        */
        strlcpy(info->type, "lm75", I2C_NAME_SIZE);
 
        return 0;
@@ -299,7 +289,7 @@ static struct i2c_driver lm75_driver = {
        .remove         = lm75_remove,
        .id_table       = lm75_ids,
        .detect         = lm75_detect,
-       .address_data   = &addr_data,
+       .address_list   = normal_i2c,
 };
 
 /*-----------------------------------------------------------------------*/