]> www.infradead.org Git - users/hch/misc.git/commitdiff
hwmon: (ina238) Support active-high alert polarity
authorGuenter Roeck <linux@roeck-us.net>
Mon, 1 Sep 2025 15:37:15 +0000 (08:37 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 7 Sep 2025 23:34:55 +0000 (16:34 -0700)
All chips supported by this driver support configurable active-high
alert priority. This is already documented in the devicetree description.
Add support for it to the driver.

Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
Tested-by: Chris Packham <chris.packham@alliedtelesis.co.nz> # INA780
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/ina238.c

index 4d5b383b25215fa8f55ff9b3471f41e7074cc520..24e396c69ae250ff233e47284c8b259ed5e99e66 100644 (file)
@@ -60,6 +60,7 @@
 #define INA238_ADC_CONFIG_DEFAULT      0xfb6a
 /* Configure alerts to be based on averaged value (SLOWALERT) */
 #define INA238_DIAG_ALERT_DEFAULT      0x2000
+#define INA238_DIAG_ALERT_APOL         BIT(12)
 /*
  * This driver uses a fixed calibration value in order to scale current/power
  * based on a fixed shunt resistor value. This allows for conversion within the
@@ -793,8 +794,11 @@ static int ina238_probe(struct i2c_client *client)
        }
 
        /* Setup alert/alarm configuration */
-       ret = regmap_write(data->regmap, INA238_DIAG_ALERT,
-                          INA238_DIAG_ALERT_DEFAULT);
+       config = INA238_DIAG_ALERT_DEFAULT;
+       if (device_property_read_bool(dev, "ti,alert-polarity-active-high"))
+               config |= INA238_DIAG_ALERT_APOL;
+
+       ret = regmap_write(data->regmap, INA238_DIAG_ALERT, config);
        if (ret < 0) {
                dev_err(dev, "error configuring the device: %d\n", ret);
                return -ENODEV;