diff options
author | Mark Brown <broonie@kernel.org> | 2021-05-11 10:06:04 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2021-05-11 10:06:04 +0200 |
commit | 8c94df1e6fe4a0bb31fd94e96256e49032940b1f (patch) | |
tree | 555a707a0570c37d037542d8ca40da640aee89fa /drivers | |
parent | regulator: hi6421v600: Remove unneeded *pmic from struct hi6421_spmi_reg_info (diff) | |
parent | regulator: Add a routine to set the current limit for QCOM PMIC VBUS (diff) | |
download | linux-8c94df1e6fe4a0bb31fd94e96256e49032940b1f.tar.xz linux-8c94df1e6fe4a0bb31fd94e96256e49032940b1f.zip |
Merge series "Enable VBUS current boost on pm8150b platforms" from Bryan O'Donoghue <bryan.odonoghue@linaro.org>:
V3:
- Drop the SoC regulator constraints for
regulator-min-microamp
regulator-max-microamp
These will be applied on a per-board basis - Mark Brown
V2:
The first version of this patch set the current limit to 3 amps as was done
in downstream. Mark indicated a preference to set this on a per-system
basis instead of blitzing it, as in downstream.
Looking at what was upstream versus what was in my working tree I saw that
in fact the VBUS boost driver had been upstreamed minus accompanying DTS in
pm8150b.
So there's no need for a fixes as this driver doesn't appear to be in use.
A subsequent patchset will enable the VBUS boost for the two relevant
upstream platforms.
First thing though, is the driver + dts change.
- Use regulator_set_current_limit_regmap/regulator_get_current_limit_regmap
with a relevant current-to-bitmap lookup.
- Add a parallel DTS entry to the pm8150b
It looks like this was submitted upstream but not followed up on
I've add regulator-min-microamp/regulator-max-microamp to Wesley's
original work.
I've made sure to test that its possible to set the current to anything in
the range of 500 mA to 3 A and confirmed the output on a scope.
Once these two patches are in, I'll send out board enablement for the
sm8150-mtp and qrb5165-rb5.
https://lore.kernel.org/linux-arm-msm/8687acdb-75e9-5fc5-dd3e-9a19615676b5@linaro.org/T/#t
Bryan O'Donoghue (1):
regulator: Add a routine to set the current limit for QCOM PMIC VBUS
Wesley Cheng (1):
arm64: boot: dts: qcom: pm8150b: Add DTS node for PMIC VBUS booster
arch/arm64/boot/dts/qcom/pm8150b.dtsi | 6 ++++++
drivers/regulator/qcom_usb_vbus-regulator.c | 12 ++++++++++++
2 files changed, 18 insertions(+)
--
2.30.1
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/regulator/qcom_usb_vbus-regulator.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/regulator/qcom_usb_vbus-regulator.c b/drivers/regulator/qcom_usb_vbus-regulator.c index 457788b50572..2e627c2b6c51 100644 --- a/drivers/regulator/qcom_usb_vbus-regulator.c +++ b/drivers/regulator/qcom_usb_vbus-regulator.c @@ -16,13 +16,21 @@ #define CMD_OTG 0x40 #define OTG_EN BIT(0) +#define OTG_CURRENT_LIMIT_CFG 0x52 +#define OTG_CURRENT_LIMIT_MASK GENMASK(2, 0) #define OTG_CFG 0x53 #define OTG_EN_SRC_CFG BIT(1) +static const unsigned int curr_table[] = { + 500000, 1000000, 1500000, 2000000, 2500000, 3000000, +}; + static const struct regulator_ops qcom_usb_vbus_reg_ops = { .enable = regulator_enable_regmap, .disable = regulator_disable_regmap, .is_enabled = regulator_is_enabled_regmap, + .get_current_limit = regulator_get_current_limit_regmap, + .set_current_limit = regulator_set_current_limit_regmap, }; static struct regulator_desc qcom_usb_vbus_rdesc = { @@ -30,6 +38,8 @@ static struct regulator_desc qcom_usb_vbus_rdesc = { .ops = &qcom_usb_vbus_reg_ops, .owner = THIS_MODULE, .type = REGULATOR_VOLTAGE, + .curr_table = curr_table, + .n_current_limits = ARRAY_SIZE(curr_table), }; static int qcom_usb_vbus_regulator_probe(struct platform_device *pdev) @@ -61,6 +71,8 @@ static int qcom_usb_vbus_regulator_probe(struct platform_device *pdev) qcom_usb_vbus_rdesc.enable_reg = base + CMD_OTG; qcom_usb_vbus_rdesc.enable_mask = OTG_EN; + qcom_usb_vbus_rdesc.csel_reg = base + OTG_CURRENT_LIMIT_CFG; + qcom_usb_vbus_rdesc.csel_mask = OTG_CURRENT_LIMIT_MASK; config.dev = dev; config.init_data = init_data; config.of_node = dev->of_node; |