Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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)
+5 −13
Original line number Diff line number Diff line
@@ -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 {
@@ -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)
@@ -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))
@@ -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:
@@ -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);
@@ -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,