* [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
* [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
* 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).