bnx2: Update version to 2.0.9.
[safe/jmp/linux-2.6] / drivers / hwmon / ads7828.c
index 5c39b4a..aac85f3 100644 (file)
 static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b,
        I2C_CLIENT_END };
 
-/* Insmod parameters */
-I2C_CLIENT_INSMOD_1(ads7828);
-
-/* Other module parameters */
+/* Module parameters */
 static int se_input = 1; /* Default is SE, 0 == diff */
 static int int_vref = 1; /* Default is internal ref ON */
 static int vref_mv = ADS7828_INT_VREF_MV; /* set if vref != 2.5V */
@@ -72,7 +69,7 @@ struct ads7828_data {
 };
 
 /* Function declaration - necessary due to function dependencies */
-static int ads7828_detect(struct i2c_client *client, int kind,
+static int ads7828_detect(struct i2c_client *client,
                          struct i2c_board_info *info);
 static int ads7828_probe(struct i2c_client *client,
                         const struct i2c_device_id *id);
@@ -168,7 +165,7 @@ static int ads7828_remove(struct i2c_client *client)
 }
 
 static const struct i2c_device_id ads7828_id[] = {
-       { "ads7828", ads7828 },
+       { "ads7828", 0 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, ads7828_id);
@@ -183,14 +180,15 @@ static struct i2c_driver ads7828_driver = {
        .remove = ads7828_remove,
        .id_table = ads7828_id,
        .detect = ads7828_detect,
-       .address_data = &addr_data,
+       .address_list = normal_i2c,
 };
 
 /* Return 0 if detection is successful, -ENODEV otherwise */
-static int ads7828_detect(struct i2c_client *client, int kind,
+static int ads7828_detect(struct i2c_client *client,
                          struct i2c_board_info *info)
 {
        struct i2c_adapter *adapter = client->adapter;
+       int ch;
 
        /* Check we have a valid client */
        if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_READ_WORD_DATA))
@@ -202,20 +200,17 @@ static int ads7828_detect(struct i2c_client *client, int kind,
        - Read from the 8 channel addresses
        - Check the top 4 bits of each result are not set (12 data bits)
        */
-       if (kind < 0) {
-               int ch;
-               for (ch = 0; ch < ADS7828_NCH; ch++) {
-                       u16 in_data;
-                       u8 cmd = channel_cmd_byte(ch);
-                       in_data = ads7828_read_value(client, cmd);
-                       if (in_data & 0xF000) {
-                               printk(KERN_DEBUG
-                               "%s : Doesn't look like an ads7828 device\n",
-                               __func__);
-                               return -ENODEV;
-                       }
+       for (ch = 0; ch < ADS7828_NCH; ch++) {
+               u16 in_data;
+               u8 cmd = channel_cmd_byte(ch);
+               in_data = ads7828_read_value(client, cmd);
+               if (in_data & 0xF000) {
+                       pr_debug("%s : Doesn't look like an ads7828 device\n",
+                                __func__);
+                       return -ENODEV;
                }
        }
+
        strlcpy(info->type, "ads7828", I2C_NAME_SIZE);
 
        return 0;