vserver 1.9.5.x5
[linux-2.6.git] / drivers / i2c / chips / pc87360.c
index 3b1c020..6979341 100644 (file)
@@ -756,7 +756,8 @@ int pc87360_detect(struct i2c_adapter *adapter, int address, int kind)
 
        for (i = 0; i < 3; i++) {
                if (((data->address[i] = extra_isa[i]))
-                && !request_region(extra_isa[i], PC87360_EXTENT, "pc87360")) {
+                && !request_region(extra_isa[i], PC87360_EXTENT,
+                                   pc87360_driver.name)) {
                        dev_err(&new_client->dev, "Region 0x%x-0x%x already "
                                "in use!\n", extra_isa[i],
                                extra_isa[i]+PC87360_EXTENT-1);
@@ -794,8 +795,10 @@ int pc87360_detect(struct i2c_adapter *adapter, int address, int kind)
 
        /* Fan clock dividers may be needed before any data is read */
        for (i = 0; i < data->fannr; i++) {
-               data->fan_status[i] = pc87360_read_value(data, LD_FAN,
-                                     NO_BANK, PC87360_REG_FAN_STATUS(i));
+               if (FAN_CONFIG_MONITOR(data->fan_conf, i))
+                       data->fan_status[i] = pc87360_read_value(data,
+                                             LD_FAN, NO_BANK,
+                                             PC87360_REG_FAN_STATUS(i));
        }
 
        if (init > 0) {
@@ -897,14 +900,27 @@ int pc87360_detect(struct i2c_adapter *adapter, int address, int kind)
        }
 
        if (data->fannr) {
-               device_create_file(&new_client->dev, &dev_attr_fan1_input);
-               device_create_file(&new_client->dev, &dev_attr_fan2_input);
-               device_create_file(&new_client->dev, &dev_attr_fan1_min);
-               device_create_file(&new_client->dev, &dev_attr_fan2_min);
-               device_create_file(&new_client->dev, &dev_attr_fan1_div);
-               device_create_file(&new_client->dev, &dev_attr_fan2_div);
-               device_create_file(&new_client->dev, &dev_attr_fan1_status);
-               device_create_file(&new_client->dev, &dev_attr_fan2_status);
+               if (FAN_CONFIG_MONITOR(data->fan_conf, 0)) {
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan1_input);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan1_min);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan1_div);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan1_status);
+               }
+
+               if (FAN_CONFIG_MONITOR(data->fan_conf, 1)) {
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan2_input);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan2_min);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan2_div);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan2_status);
+               }
 
                if (FAN_CONFIG_CONTROL(data->fan_conf, 0))
                        device_create_file(&new_client->dev, &dev_attr_pwm1);
@@ -912,10 +928,16 @@ int pc87360_detect(struct i2c_adapter *adapter, int address, int kind)
                        device_create_file(&new_client->dev, &dev_attr_pwm2);
        }
        if (data->fannr == 3) {
-               device_create_file(&new_client->dev, &dev_attr_fan3_input);
-               device_create_file(&new_client->dev, &dev_attr_fan3_min);
-               device_create_file(&new_client->dev, &dev_attr_fan3_div);
-               device_create_file(&new_client->dev, &dev_attr_fan3_status);
+               if (FAN_CONFIG_MONITOR(data->fan_conf, 2)) {
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan3_input);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan3_min);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan3_div);
+                       device_create_file(&new_client->dev,
+                                          &dev_attr_fan3_status);
+               }
 
                if (FAN_CONFIG_CONTROL(data->fan_conf, 2))
                        device_create_file(&new_client->dev, &dev_attr_pwm3);