Commit 248fd3b9 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (ina238) Add support for INA780



INA780 is similar to the other chips in the series, but does not
support the shunt voltage register. Shunt voltage limit registers
have been renamed to current limit registers, but are otherwise
identical.

While the chip does not directly report the shunt voltage, report
it anyway by calculating its value from the current register.

Cc: Chris Packham <chris.packham@alliedtelesis.co.nz>
Reviewed-by: default avatarChris Packham <chris.packham@alliedtelesis.co.nz>
Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz> # INA780
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent d153106b
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -32,6 +32,11 @@ Supported chips:
    Datasheet:
	https://www.ti.com/lit/gpn/ina238

  * Texas Instruments INA780

    Datasheet:
	https://www.ti.com/product/ina780a

  * Silergy SQ52206

    Prefix: 'SQ52206'
@@ -56,6 +61,9 @@ INA237 is a functionally equivalent variant of INA238 with slightly
different accuracy. INA228 is another variant of INA238 with higher ADC
resolution. This chip also reports the energy.

INA780 is a variant of the chip series with built-in shunt resistor.
It also reports the energy.

SQ52206 is a mostly compatible chip from Sylergy. It reports the energy
as well as the peak power consumption.

@@ -88,7 +96,7 @@ curr1_max Maximum current threshold (mA)
curr1_max_alarm		Maximum current alarm

energy1_input		Energy measurement (uJ)
				(SQ52206 and INA237 only)
				(SQ52206, INA237, and INA780 only)

temp1_input		Die temperature measurement (mC)
temp1_max		Maximum die temperature threshold (mC)
+3 −3
Original line number Diff line number Diff line
@@ -2256,9 +2256,9 @@ config SENSORS_INA238
	depends on I2C
	select REGMAP_I2C
	help
	  If you say yes here you get support for INA228, INA237, INA238, and
	  SQ52206 power monitor chips. This driver supports voltage, current,
	  power, energy, and temperature measurements as well as alarm
	  If you say yes here you get support for INA228, INA237, INA238,
	  INA780, and SQ52206 power monitor chips. This driver supports voltage,
	  current, power, energy, and temperature measurements as well as alarm
	  configuration.

	  This driver can also be built as a module. If so, the module
+16 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ static const struct regmap_config ina238_regmap_config = {
	.val_bits = 16,
};

enum ina238_ids { ina228, ina237, ina238, sq52206 };
enum ina238_ids { ina228, ina237, ina238, ina780, sq52206 };

struct ina238_config {
	bool has_20bit_voltage_current; /* vshunt, vbus and current are 20-bit fields */
@@ -155,6 +155,16 @@ static const struct ina238_config ina238_config[] = {
		.bus_voltage_lsb = INA238_BUS_VOLTAGE_LSB,
		.temp_resolution = 12,
	},
	[ina780] = {
		.has_20bit_voltage_current = false,
		.has_energy = true,
		.has_power_highest = false,
		.power_calculate_factor = 20,
		.config_default = INA238_CONFIG_DEFAULT,
		.bus_voltage_lsb = INA238_BUS_VOLTAGE_LSB,
		.temp_resolution = 12,
		.current_lsb = 2400,
	},
	[sq52206] = {
		.has_20bit_voltage_current = false,
		.has_energy = true,
@@ -836,6 +846,7 @@ static const struct i2c_device_id ina238_id[] = {
	{ "ina228", ina228 },
	{ "ina237", ina237 },
	{ "ina238", ina238 },
	{ "ina780", ina780 },
	{ "sq52206", sq52206 },
	{ }
};
@@ -854,6 +865,10 @@ static const struct of_device_id __maybe_unused ina238_of_match[] = {
		.compatible = "ti,ina238",
		.data = (void *)ina238
	},
	{
		.compatible = "ti,ina780",
		.data = (void *)ina780
	},
	{
		.compatible = "silergy,sq52206",
		.data = (void *)sq52206