]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/hwmon/it87.c
MIPS: R2: Fix local_irq_save()
[linux-2.6-omap-h63xx.git] / drivers / hwmon / it87.c
index 6c41e25e670be0235c34a9fb0fce027da6df6d72..0da7c9c508c31e2e6de57ae89c0a86eb7d730d72 100644 (file)
@@ -213,7 +213,7 @@ struct it87_data {
        u8 sensor;              /* Register value */
        u8 fan_div[3];          /* Register encoding, shifted right */
        u8 vid;                 /* Register encoding, combined */
-       int vrm;
+       u8 vrm;
        u32 alarms;             /* Register encoding, combined */
        u8 fan_main_ctrl;       /* Register value */
        u8 manual_pwm_ctl[3];   /* manual PWM value set by user */
@@ -234,17 +234,18 @@ static void it87_init_client(struct i2c_client *client, struct it87_data *data);
 
 
 static struct i2c_driver it87_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "it87",
+       .driver = {
+               .name   = "it87",
+       },
        .id             = I2C_DRIVERID_IT87,
-       .flags          = I2C_DF_NOTIFY,
        .attach_adapter = it87_attach_adapter,
        .detach_client  = it87_detach_client,
 };
 
 static struct i2c_driver it87_isa_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "it87-isa",
+       .driver = {
+               .name   = "it87-isa",
+       },
        .attach_adapter = it87_isa_attach_adapter,
        .detach_client  = it87_detach_client,
 };
@@ -522,8 +523,15 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
        struct i2c_client *client = to_i2c_client(dev);
        struct it87_data *data = i2c_get_clientdata(client);
        int val = simple_strtol(buf, NULL, 10);
+       u8 reg = it87_read_value(client, IT87_REG_FAN_DIV);
 
        down(&data->update_lock);
+       switch (nr) {
+       case 0: data->fan_div[nr] = reg & 0x07; break;
+       case 1: data->fan_div[nr] = (reg >> 3) & 0x07; break;
+       case 2: data->fan_div[nr] = (reg & 0x40) ? 3 : 1; break;
+       }
+
        data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
        it87_write_value(client, IT87_REG_FAN_MIN(nr), data->fan_min[nr]);
        up(&data->update_lock);
@@ -661,7 +669,7 @@ static ssize_t
 show_vrm_reg(struct device *dev, struct device_attribute *attr, char *buf)
 {
        struct it87_data *data = it87_update_device(dev);
-       return sprintf(buf, "%ld\n", (long) data->vrm);
+       return sprintf(buf, "%u\n", data->vrm);
 }
 static ssize_t
 store_vrm_reg(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
@@ -754,7 +762,8 @@ static int it87_detect(struct i2c_adapter *adapter, int address, int kind)
 
        /* Reserve the ISA region */
        if (is_isa)
-               if (!request_region(address, IT87_EXTENT, it87_isa_driver.name))
+               if (!request_region(address, IT87_EXTENT,
+                                   it87_isa_driver.driver.name))
                        goto ERROR0;
 
        /* For now, we presume we have a valid client. We create the