hwmon/pmbus: (ir38064) Expose a regulator
authorPatrick Rudolph <patrick.rudolph@9elements.com>
Mon, 13 Dec 2021 14:28:14 +0000 (15:28 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 26 Dec 2021 23:02:07 +0000 (15:02 -0800)
The chip series supported by this driver are voltage regulators, so expose
them to the regulator subsystem.

Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Link: https://lore.kernel.org/r/20211213142814.264802-4-arthur.heymans@9elements.com
[groeck: Added brief patch description]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/Kconfig
drivers/hwmon/pmbus/ir38064.c

index 793edf0..41f6cbf 100644 (file)
@@ -141,6 +141,12 @@ config SENSORS_IR38064
          This driver can also be built as a module. If so, the module will
          be called ir38064.
 
+config SENSORS_IR38064_REGULATOR
+       bool "Regulator support for IR38064 and compatibles"
+       depends on SENSORS_IR38064 && REGULATOR
+       help
+         Uses the IR38064 or compatible as regulator.
+
 config SENSORS_IRPS5401
        tristate "Infineon IRPS5401"
        help
index 4211de0..07bdbb1 100644 (file)
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of_device.h>
+#include <linux/regulator/driver.h>
 #include "pmbus.h"
 
+#if IS_ENABLED(CONFIG_SENSORS_IR38064_REGULATOR)
+static const struct regulator_desc ir38064_reg_desc[] = {
+       PMBUS_REGULATOR("vout", 0),
+};
+#endif /* CONFIG_SENSORS_IR38064_REGULATOR */
+
 static struct pmbus_driver_info ir38064_info = {
        .pages = 1,
        .format[PSC_VOLTAGE_IN] = linear,
@@ -34,6 +41,10 @@ static struct pmbus_driver_info ir38064_info = {
            | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT
            | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT
            | PMBUS_HAVE_POUT,
+#if IS_ENABLED(CONFIG_SENSORS_IR38064_REGULATOR)
+       .num_regulators = 1,
+       .reg_desc = ir38064_reg_desc,
+#endif
 };
 
 static int ir38064_probe(struct i2c_client *client)