summaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2022-10-14 19:24:26 +0200
committerSebastian Reichel <sebastian.reichel@collabora.com>2022-10-29 01:40:31 +0200
commit85052e90007bd9e11123bd691a8131089178a4f8 (patch)
tree3b186c2129f36c1f411814661b51853b2cde5575 /drivers/power
parentpower: supply: bq25890: Factor out regulator registration code (diff)
downloadlinux-85052e90007bd9e11123bd691a8131089178a4f8.tar.xz
linux-85052e90007bd9e11123bd691a8131089178a4f8.zip
power: supply: bq25890: Add get_voltage support to Vbus regulator
The chip is capable of reporting Vbus voltage, add .get_voltage implementation to Vbus regulator to report current Vbus voltage. This requires for the Vbus regulator to be registered always instead of the current state where the regulator is registered only in case USB PHY is not found. Do not provide Vbus regulator enable/disable ops in case USB PHY is present, as they would race with USB PHY notifier which is also used to toggle OTG boost mode. Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/supply/bq25890_charger.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/power/supply/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c
index dad98b782a2f..ad5811304f88 100644
--- a/drivers/power/supply/bq25890_charger.c
+++ b/drivers/power/supply/bq25890_charger.c
@@ -1095,10 +1095,18 @@ static int bq25890_vbus_is_enabled(struct regulator_dev *rdev)
return bq25890_field_read(bq, F_OTG_CFG);
}
+static int bq25890_vbus_get_voltage(struct regulator_dev *rdev)
+{
+ struct bq25890_device *bq = rdev_get_drvdata(rdev);
+
+ return bq25890_get_vbus_voltage(bq);
+}
+
static const struct regulator_ops bq25890_vbus_ops = {
.enable = bq25890_vbus_enable,
.disable = bq25890_vbus_disable,
.is_enabled = bq25890_vbus_is_enabled,
+ .get_voltage = bq25890_vbus_get_voltage,
};
static const struct regulator_desc bq25890_vbus_desc = {
@@ -1107,8 +1115,6 @@ static const struct regulator_desc bq25890_vbus_desc = {
.type = REGULATOR_VOLTAGE,
.owner = THIS_MODULE,
.ops = &bq25890_vbus_ops,
- .fixed_uV = 5000000,
- .n_voltages = 1,
};
static int bq25890_register_regulator(struct bq25890_device *bq)
@@ -1120,9 +1126,6 @@ static int bq25890_register_regulator(struct bq25890_device *bq)
};
struct regulator_dev *reg;
- if (!IS_ERR_OR_NULL(bq->usb_phy))
- return 0;
-
if (pdata)
cfg.init_data = pdata->regulator_init_data;