summaryrefslogtreecommitdiff
path: root/drivers/hwmon
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2025-09-01 03:54:16 +0300
committerGuenter Roeck <linux@roeck-us.net>2025-09-08 02:35:12 +0300
commit273bfedc003c40bb0fb471841c62f4fc7063be83 (patch)
tree81450a3c5261f68f5f348a2b7ef21d15621d6319 /drivers/hwmon
parent7942ca9a475115b9668e53c2d9cfb57a51d62e04 (diff)
downloadlinux-273bfedc003c40bb0fb471841c62f4fc7063be83.tar.xz
hwmon: (ina238) Add support for INA700
INA700 is register compatible to INA780 but has different current, power, and energy LSB values. While the chip does not directly report the shunt voltage, report it anyway by calculating its value from the current register. Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz> Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz> # INA780 Cc: Christian Kahr <christian.kahr@sie.at> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r--drivers/hwmon/Kconfig6
-rw-r--r--drivers/hwmon/ina238.c17
2 files changed, 19 insertions, 4 deletions
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index c044c26fbd11..8a41275ca518 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -2257,9 +2257,9 @@ config SENSORS_INA238
select REGMAP_I2C
help
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.
+ INA700, 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
will be called ina238.
diff --git a/drivers/hwmon/ina238.c b/drivers/hwmon/ina238.c
index 98255619adeb..356d19b7675c 100644
--- a/drivers/hwmon/ina238.c
+++ b/drivers/hwmon/ina238.c
@@ -101,7 +101,7 @@ static const struct regmap_config ina238_regmap_config = {
.val_bits = 16,
};
-enum ina238_ids { ina228, ina237, ina238, ina780, sq52206 };
+enum ina238_ids { ina228, ina237, ina238, ina700, 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,
},
+ [ina700] = {
+ .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 = 480,
+ },
[ina780] = {
.has_20bit_voltage_current = false,
.has_energy = true,
@@ -846,6 +856,7 @@ static const struct i2c_device_id ina238_id[] = {
{ "ina228", ina228 },
{ "ina237", ina237 },
{ "ina238", ina238 },
+ { "ina700", ina700 },
{ "ina780", ina780 },
{ "sq52206", sq52206 },
{ }
@@ -866,6 +877,10 @@ static const struct of_device_id __maybe_unused ina238_of_match[] = {
.data = (void *)ina238
},
{
+ .compatible = "ti,ina700",
+ .data = (void *)ina700
+ },
+ {
.compatible = "ti,ina780",
.data = (void *)ina780
},