Skip to content

Commit

Permalink
hwmon: (ltc4245) Read only one GPIO pin
Browse files Browse the repository at this point in the history
Read only one of the GPIO pins as an analog voltage. The ADC can be
switched to a different GPIO pin at runtime, but this is not supported.

Previously, this driver would report the analog voltage of the currently
selected GPIO pin as all three GPIO voltages: in9_input, in10_input and
in11_input.

Signed-off-by: Ira W. Snyder <[email protected]>
Signed-off-by: Jean Delvare <[email protected]>
Cc: [email protected]
  • Loading branch information
Ira W. Snyder authored and Jean Delvare committed May 27, 2010
1 parent ea69443 commit df16dd5
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 16 deletions.
4 changes: 1 addition & 3 deletions Documentation/hwmon/ltc4245
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,7 @@ in6_min_alarm 5v output undervoltage alarm
in7_min_alarm 3v output undervoltage alarm
in8_min_alarm Vee (-12v) output undervoltage alarm

in9_input GPIO #1 voltage data
in10_input GPIO #2 voltage data
in11_input GPIO #3 voltage data
in9_input GPIO voltage data

power1_input 12v power usage (mW)
power2_input 5v power usage (mW)
Expand Down
18 changes: 5 additions & 13 deletions drivers/hwmon/ltc4245.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,7 @@ enum ltc4245_cmd {
LTC4245_VEEIN = 0x19,
LTC4245_VEESENSE = 0x1a,
LTC4245_VEEOUT = 0x1b,
LTC4245_GPIOADC1 = 0x1c,
LTC4245_GPIOADC2 = 0x1d,
LTC4245_GPIOADC3 = 0x1e,
LTC4245_GPIOADC = 0x1c,
};

struct ltc4245_data {
Expand All @@ -61,7 +59,7 @@ struct ltc4245_data {
u8 cregs[0x08];

/* Voltage registers */
u8 vregs[0x0f];
u8 vregs[0x0d];
};

static struct ltc4245_data *ltc4245_update_device(struct device *dev)
Expand All @@ -86,7 +84,7 @@ static struct ltc4245_data *ltc4245_update_device(struct device *dev)
data->cregs[i] = val;
}

/* Read voltage registers -- 0x10 to 0x1f */
/* Read voltage registers -- 0x10 to 0x1c */
for (i = 0; i < ARRAY_SIZE(data->vregs); i++) {
val = i2c_smbus_read_byte_data(client, i+0x10);
if (unlikely(val < 0))
Expand Down Expand Up @@ -128,9 +126,7 @@ static int ltc4245_get_voltage(struct device *dev, u8 reg)
case LTC4245_VEEOUT:
voltage = regval * -55;
break;
case LTC4245_GPIOADC1:
case LTC4245_GPIOADC2:
case LTC4245_GPIOADC3:
case LTC4245_GPIOADC:
voltage = regval * 10;
break;
default:
Expand Down Expand Up @@ -297,9 +293,7 @@ LTC4245_ALARM(in7_min_alarm, (1 << 2), LTC4245_FAULT2);
LTC4245_ALARM(in8_min_alarm, (1 << 3), LTC4245_FAULT2);

/* GPIO voltages */
LTC4245_VOLTAGE(in9_input, LTC4245_GPIOADC1);
LTC4245_VOLTAGE(in10_input, LTC4245_GPIOADC2);
LTC4245_VOLTAGE(in11_input, LTC4245_GPIOADC3);
LTC4245_VOLTAGE(in9_input, LTC4245_GPIOADC);

/* Power Consumption (virtual) */
LTC4245_POWER(power1_input, LTC4245_12VSENSE);
Expand Down Expand Up @@ -342,8 +336,6 @@ static struct attribute *ltc4245_attributes[] = {
&sensor_dev_attr_in8_min_alarm.dev_attr.attr,

&sensor_dev_attr_in9_input.dev_attr.attr,
&sensor_dev_attr_in10_input.dev_attr.attr,
&sensor_dev_attr_in11_input.dev_attr.attr,

&sensor_dev_attr_power1_input.dev_attr.attr,
&sensor_dev_attr_power2_input.dev_attr.attr,
Expand Down

0 comments on commit df16dd5

Please sign in to comment.