[PATCH v2 3/6] mfd: lm3533: Add support for VIN power supply
From: Svyatoslav Ryhel <hidden>
Date: 2026-05-28 13:51:56
Also in:
dri-devel, linux-devicetree, linux-iio, linux-leds, lkml
Subsystem:
multifunction devices (mfd), the rest · Maintainers:
Lee Jones, Linus Torvalds
Add support for 2.7V-5.5V VIN power supply. Signed-off-by: Svyatoslav Ryhel <redacted> --- drivers/mfd/lm3533-core.c | 23 +++++++++++++++++++++-- include/linux/mfd/lm3533.h | 2 ++ 2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/mfd/lm3533-core.c b/drivers/mfd/lm3533-core.c
index 8495e9119871..519f8c16a3f3 100644
--- a/drivers/mfd/lm3533-core.c
+++ b/drivers/mfd/lm3533-core.c@@ -17,6 +17,7 @@ #include <linux/mod_devicetable.h> #include <linux/property.h> #include <linux/regmap.h> +#include <linux/regulator/consumer.h> #include <linux/seq_file.h> #include <linux/slab.h> #include <linux/uaccess.h>
@@ -164,14 +165,25 @@ static int lm3533_set_lvled_config(struct lm3533 *lm3533, u8 lvled, u8 led) return ret; } -static void lm3533_enable(struct lm3533 *lm3533) +static int lm3533_enable(struct lm3533 *lm3533) { + int ret; + + ret = regulator_enable(lm3533->vin_supply); + if (ret) { + dev_err(lm3533->dev, "failed to enable vin power supply\n"); + return ret; + } + gpiod_set_value(lm3533->hwen, 1); + + return 0; } static void lm3533_disable(struct lm3533 *lm3533) { gpiod_set_value(lm3533->hwen, 0); + regulator_disable(lm3533->vin_supply); } enum lm3533_attribute_type {
@@ -324,7 +336,9 @@ static int lm3533_device_init(struct lm3533 *lm3533) u32 count = 0, reg; int ret; - lm3533_enable(lm3533); + ret = lm3533_enable(lm3533); + if (ret) + return ret; device_for_each_child_node_scoped(lm3533->dev, child) { if (!fwnode_device_is_available(child))
@@ -493,6 +507,11 @@ static int lm3533_i2c_probe(struct i2c_client *i2c) return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->hwen), "failed to get HWEN GPIO\n"); + lm3533->vin_supply = devm_regulator_get(lm3533->dev, "vin"); + if (IS_ERR(lm3533->vin_supply)) + return dev_err_probe(lm3533->dev, PTR_ERR(lm3533->vin_supply), + "failed to get vin-supply\n"); + device_property_read_u32(lm3533->dev, "ti,boost-ovp-microvolt", &lm3533->boost_ovp);
diff --git a/include/linux/mfd/lm3533.h b/include/linux/mfd/lm3533.h
index 3aa962d4c747..d751773fc92d 100644
--- a/include/linux/mfd/lm3533.h
+++ b/include/linux/mfd/lm3533.h@@ -21,6 +21,7 @@ struct device; struct gpio_desc; struct regmap; +struct regulator; struct lm3533 { struct device *dev;
@@ -28,6 +29,7 @@ struct lm3533 { struct regmap *regmap; struct gpio_desc *hwen; + struct regulator *vin_supply; u32 boost_ovp; u32 boost_freq;
--
2.51.0