* [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges @ 2016-03-11 20:12 Hans de Goede [not found] ` <1457727151-16392-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Hans de Goede @ 2016-03-11 20:12 UTC (permalink / raw) To: Maxime Ripard, Chen-Yu Tsai, Mark Brown, Liam Girdwood Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Hans de Goede The minium voltage of 1800mV is a copy and paste error from the axp20x regulator info. The correct minimum voltage for the ldo_io regulators on the axp22x is 700mV. Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- drivers/regulator/axp20x-regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c index 40cd894..0c0e7a3 100644 --- a/drivers/regulator/axp20x-regulator.c +++ b/drivers/regulator/axp20x-regulator.c @@ -215,10 +215,10 @@ static const struct regulator_desc axp22x_regulators[] = { AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)), AXP_DESC(AXP22X, ELDO3, "eldo3", "eldoin", 700, 3300, 100, AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)), - AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 1800, 3300, 100, + AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100, AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07, AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), - AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 1800, 3300, 100, + AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100, AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07, AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000), -- 2.7.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <1457727151-16392-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>]
* [PATCH 2/2] regulator: axp20x: Fix axp22x ldo_io registration error on cold boot [not found] ` <1457727151-16392-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> @ 2016-03-11 20:12 ` Hans de Goede 2016-03-14 6:59 ` [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges Chen-Yu Tsai 1 sibling, 0 replies; 4+ messages in thread From: Hans de Goede @ 2016-03-11 20:12 UTC (permalink / raw) To: Maxime Ripard, Chen-Yu Tsai, Mark Brown, Liam Girdwood Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, devicetree, linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Hans de Goede The maximum supported voltage for ldo_io# is 3.3V, but on cold boot the selector comes up at 0x1f, which maps to 3.8V. This causes _regulator_get_voltage() to fail with -EINVAL which causes regulator registration to fail when constrains are used: [ 1.467788] vcc-touchscreen: failed to get the current voltage(-22) [ 1.474209] axp20x-regulator axp20x-regulator: Failed to register ldo_io1 [ 1.483363] axp20x-regulator: probe of axp20x-regulator failed with error -22 This commits makes axp20x_probe fix-up the selector values in the chip before registering regulators avoiding the above errors. Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- drivers/regulator/axp20x-regulator.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c index 0c0e7a3..679018c 100644 --- a/drivers/regulator/axp20x-regulator.c +++ b/drivers/regulator/axp20x-regulator.c @@ -345,6 +345,7 @@ static int axp20x_regulator_probe(struct platform_device *pdev) .driver_data = axp20x, }; int ret, i, nregulators; + unsigned int reg, sel; u32 workmode; const char *axp22x_dc1_name = axp22x_regulators[AXP22X_DCDC1].name; const char *axp22x_dc5_name = axp22x_regulators[AXP22X_DCDC5].name; @@ -359,6 +360,24 @@ static int axp20x_regulator_probe(struct platform_device *pdev) case AXP223_ID: regulators = axp22x_regulators; nregulators = AXP22X_REG_ID_MAX; + /* + * On cold boot ldo_io# sel is 0x1f which is out of spec, + * fix this up here to avoid _regulator_get_voltage returning + * -EINVAL when applying constraints. + */ + for (reg = AXP22X_LDO_IO0_V_OUT; + reg <= AXP22X_LDO_IO1_V_OUT; reg += 2) { + ret = regmap_read(axp20x->regmap, reg, &sel); + if (ret) + return ret; + sel &= 0x1f; + if (sel > 0x1a) { + ret = regmap_update_bits(axp20x->regmap, reg, + 0x1f, 0x1a); + if (ret) + return ret; + } + } break; default: dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n", -- 2.7.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges [not found] ` <1457727151-16392-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2016-03-11 20:12 ` [PATCH 2/2] regulator: axp20x: Fix axp22x ldo_io registration error on cold boot Hans de Goede @ 2016-03-14 6:59 ` Chen-Yu Tsai [not found] ` <CAGb2v67vsbH1-Vq_G_C=t3CCBFBaS1RCZc4ggqhoyjj7F_Hgaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 1 sibling, 1 reply; 4+ messages in thread From: Chen-Yu Tsai @ 2016-03-14 6:59 UTC (permalink / raw) To: Hans de Goede Cc: Maxime Ripard, Chen-Yu Tsai, Mark Brown, Liam Girdwood, linux-arm-kernel, devicetree, linux-sunxi On Sat, Mar 12, 2016 at 4:12 AM, Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> wrote: > The minium voltage of 1800mV is a copy and paste error from the axp20x > regulator info. The correct minimum voltage for the ldo_io regulators > on the axp22x is 700mV. > > Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> Fixes: 1b82b4e4f954 ("regulator: axp20x: Add support for AXP22X regulators") then Acked-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> Also, this bug has been in since v4.2. Should we mark it for stable? Regards ChenYu > --- > drivers/regulator/axp20x-regulator.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c > index 40cd894..0c0e7a3 100644 > --- a/drivers/regulator/axp20x-regulator.c > +++ b/drivers/regulator/axp20x-regulator.c > @@ -215,10 +215,10 @@ static const struct regulator_desc axp22x_regulators[] = { > AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)), > AXP_DESC(AXP22X, ELDO3, "eldo3", "eldoin", 700, 3300, 100, > AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)), > - AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 1800, 3300, 100, > + AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100, > AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07, > AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), > - AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 1800, 3300, 100, > + AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100, > AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07, > AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), > AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000), > -- > 2.7.2 > ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <CAGb2v67vsbH1-Vq_G_C=t3CCBFBaS1RCZc4ggqhoyjj7F_Hgaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [linux-sunxi] Re: [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges [not found] ` <CAGb2v67vsbH1-Vq_G_C=t3CCBFBaS1RCZc4ggqhoyjj7F_Hgaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2016-03-17 18:51 ` Hans de Goede 0 siblings, 0 replies; 4+ messages in thread From: Hans de Goede @ 2016-03-17 18:51 UTC (permalink / raw) To: Chen-Yu Tsai Cc: Maxime Ripard, Mark Brown, Liam Girdwood, linux-arm-kernel, devicetree, linux-sunxi Hi, On 14-03-16 07:59, Chen-Yu Tsai wrote: > On Sat, Mar 12, 2016 at 4:12 AM, Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> wrote: >> The minium voltage of 1800mV is a copy and paste error from the axp20x >> regulator info. The correct minimum voltage for the ldo_io regulators >> on the axp22x is 700mV. >> >> Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> > > Fixes: 1b82b4e4f954 ("regulator: axp20x: Add support for AXP22X regulators") > > then > > Acked-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> Thanks, I'll send a v2 with the fixes tags and your acked-by. > Also, this bug has been in since v4.2. Should we mark it for stable? Nothing is using it, I found out because I've a group of students from my local university working on a gsl1680 driver, and one of the a23 q8 tablets I've used ldoio1 to power the touchscreen controller. But that is not upstream yet, so nothing uses it, and thus I see no reason for a Cc: stable. Regards, Hans > > Regards > ChenYu > > >> --- >> drivers/regulator/axp20x-regulator.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c >> index 40cd894..0c0e7a3 100644 >> --- a/drivers/regulator/axp20x-regulator.c >> +++ b/drivers/regulator/axp20x-regulator.c >> @@ -215,10 +215,10 @@ static const struct regulator_desc axp22x_regulators[] = { >> AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)), >> AXP_DESC(AXP22X, ELDO3, "eldo3", "eldoin", 700, 3300, 100, >> AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)), >> - AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 1800, 3300, 100, >> + AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100, >> AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07, >> AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), >> - AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 1800, 3300, 100, >> + AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100, >> AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07, >> AXP22X_IO_ENABLED, AXP22X_IO_DISABLED), >> AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000), >> -- >> 2.7.2 >> -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-03-17 18:51 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-11 20:12 [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges Hans de Goede [not found] ` <1457727151-16392-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2016-03-11 20:12 ` [PATCH 2/2] regulator: axp20x: Fix axp22x ldo_io registration error on cold boot Hans de Goede 2016-03-14 6:59 ` [PATCH 1/2] regulator: axp20x: Fix axp22x ldo_io voltage ranges Chen-Yu Tsai [not found] ` <CAGb2v67vsbH1-Vq_G_C=t3CCBFBaS1RCZc4ggqhoyjj7F_Hgaw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2016-03-17 18:51 ` [linux-sunxi] " Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).