aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/lm87.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hwmon/lm87.c')
-rw-r--r--drivers/hwmon/lm87.c17
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)) {