Commit df16dd53 authored by Ira W. Snyder's avatar Ira W. Snyder Committed by Jean Delvare

hwmon: (ltc4245) Read only one GPIO pin

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: default avatarIra W. Snyder <iws@ovro.caltech.edu>
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Cc: stable@kernel.org
parent ea694431
...@@ -72,9 +72,7 @@ in6_min_alarm 5v output undervoltage alarm ...@@ -72,9 +72,7 @@ in6_min_alarm 5v output undervoltage alarm
in7_min_alarm 3v output undervoltage alarm in7_min_alarm 3v output undervoltage alarm
in8_min_alarm Vee (-12v) output undervoltage alarm in8_min_alarm Vee (-12v) output undervoltage alarm
in9_input GPIO #1 voltage data in9_input GPIO voltage data
in10_input GPIO #2 voltage data
in11_input GPIO #3 voltage data
power1_input 12v power usage (mW) power1_input 12v power usage (mW)
power2_input 5v power usage (mW) power2_input 5v power usage (mW)
......
...@@ -45,9 +45,7 @@ enum ltc4245_cmd { ...@@ -45,9 +45,7 @@ enum ltc4245_cmd {
LTC4245_VEEIN = 0x19, LTC4245_VEEIN = 0x19,
LTC4245_VEESENSE = 0x1a, LTC4245_VEESENSE = 0x1a,
LTC4245_VEEOUT = 0x1b, LTC4245_VEEOUT = 0x1b,
LTC4245_GPIOADC1 = 0x1c, LTC4245_GPIOADC = 0x1c,
LTC4245_GPIOADC2 = 0x1d,
LTC4245_GPIOADC3 = 0x1e,
}; };
struct ltc4245_data { struct ltc4245_data {
...@@ -61,7 +59,7 @@ struct ltc4245_data { ...@@ -61,7 +59,7 @@ struct ltc4245_data {
u8 cregs[0x08]; u8 cregs[0x08];
/* Voltage registers */ /* Voltage registers */
u8 vregs[0x0f]; u8 vregs[0x0d];
}; };
static struct ltc4245_data *ltc4245_update_device(struct device *dev) static struct ltc4245_data *ltc4245_update_device(struct device *dev)
...@@ -86,7 +84,7 @@ static struct ltc4245_data *ltc4245_update_device(struct device *dev) ...@@ -86,7 +84,7 @@ static struct ltc4245_data *ltc4245_update_device(struct device *dev)
data->cregs[i] = val; 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++) { for (i = 0; i < ARRAY_SIZE(data->vregs); i++) {
val = i2c_smbus_read_byte_data(client, i+0x10); val = i2c_smbus_read_byte_data(client, i+0x10);
if (unlikely(val < 0)) if (unlikely(val < 0))
...@@ -128,9 +126,7 @@ static int ltc4245_get_voltage(struct device *dev, u8 reg) ...@@ -128,9 +126,7 @@ static int ltc4245_get_voltage(struct device *dev, u8 reg)
case LTC4245_VEEOUT: case LTC4245_VEEOUT:
voltage = regval * -55; voltage = regval * -55;
break; break;
case LTC4245_GPIOADC1: case LTC4245_GPIOADC:
case LTC4245_GPIOADC2:
case LTC4245_GPIOADC3:
voltage = regval * 10; voltage = regval * 10;
break; break;
default: default:
...@@ -297,9 +293,7 @@ LTC4245_ALARM(in7_min_alarm, (1 << 2), LTC4245_FAULT2); ...@@ -297,9 +293,7 @@ LTC4245_ALARM(in7_min_alarm, (1 << 2), LTC4245_FAULT2);
LTC4245_ALARM(in8_min_alarm, (1 << 3), LTC4245_FAULT2); LTC4245_ALARM(in8_min_alarm, (1 << 3), LTC4245_FAULT2);
/* GPIO voltages */ /* GPIO voltages */
LTC4245_VOLTAGE(in9_input, LTC4245_GPIOADC1); LTC4245_VOLTAGE(in9_input, LTC4245_GPIOADC);
LTC4245_VOLTAGE(in10_input, LTC4245_GPIOADC2);
LTC4245_VOLTAGE(in11_input, LTC4245_GPIOADC3);
/* Power Consumption (virtual) */ /* Power Consumption (virtual) */
LTC4245_POWER(power1_input, LTC4245_12VSENSE); LTC4245_POWER(power1_input, LTC4245_12VSENSE);
...@@ -342,8 +336,6 @@ static struct attribute *ltc4245_attributes[] = { ...@@ -342,8 +336,6 @@ static struct attribute *ltc4245_attributes[] = {
&sensor_dev_attr_in8_min_alarm.dev_attr.attr, &sensor_dev_attr_in8_min_alarm.dev_attr.attr,
&sensor_dev_attr_in9_input.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_power1_input.dev_attr.attr,
&sensor_dev_attr_power2_input.dev_attr.attr, &sensor_dev_attr_power2_input.dev_attr.attr,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment