diff options
Diffstat (limited to 'drivers/hwmon/lm87.c')
-rw-r--r-- | drivers/hwmon/lm87.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c index fa0e3794d9a4..2e4a3cea95f7 100644 --- a/drivers/hwmon/lm87.c +++ b/drivers/hwmon/lm87.c | |||
@@ -21,11 +21,10 @@ | |||
21 | * http://www.national.com/pf/LM/LM87.html | 21 | * http://www.national.com/pf/LM/LM87.html |
22 | * | 22 | * |
23 | * Some functions share pins, so not all functions are available at the same | 23 | * Some functions share pins, so not all functions are available at the same |
24 | * time. Which are depends on the hardware setup. This driver assumes that | 24 | * time. Which are depends on the hardware setup. This driver normally |
25 | * the BIOS configured the chip correctly. In that respect, it differs from | 25 | * assumes that firmware configured the chip correctly. Where this is not |
26 | * the original driver (from lm_sensors for Linux 2.4), which would force the | 26 | * the case, platform code must set the I2C client's platform_data to point |
27 | * LM87 to an arbitrary, compile-time chosen mode, regardless of the actual | 27 | * to a u8 value to be written to the channel register. |
28 | * chipset wiring. | ||
29 | * For reference, here is the list of exclusive functions: | 28 | * For reference, here is the list of exclusive functions: |
30 | * - in0+in5 (default) or temp3 | 29 | * - in0+in5 (default) or temp3 |
31 | * - fan1 (default) or in6 | 30 | * - fan1 (default) or in6 |
@@ -843,7 +842,13 @@ static void lm87_init_client(struct i2c_client *client) | |||
843 | { | 842 | { |
844 | struct lm87_data *data = i2c_get_clientdata(client); | 843 | struct lm87_data *data = i2c_get_clientdata(client); |
845 | 844 | ||
846 | data->channel = lm87_read_value(client, LM87_REG_CHANNEL_MODE); | 845 | if (client->dev.platform_data) { |
846 | data->channel = *(u8 *)client->dev.platform_data; | ||
847 | lm87_write_value(client, | ||
848 | LM87_REG_CHANNEL_MODE, data->channel); | ||
849 | } else { | ||
850 | data->channel = lm87_read_value(client, LM87_REG_CHANNEL_MODE); | ||
851 | } | ||
847 | data->config = lm87_read_value(client, LM87_REG_CONFIG) & 0x6F; | 852 | data->config = lm87_read_value(client, LM87_REG_CONFIG) & 0x6F; |
848 | 853 | ||
849 | if (!(data->config & 0x01)) { | 854 | if (!(data->config & 0x01)) { |