[U-Boot] [PATCH][RFT] sunxi: power: axp809.c: Fix aldo1-2 being disabled for mvolt != 0

The execution flow is currently like this for aldo_num == 1 or 2:
int axp_set_aldo(int aldo_num, unsigned int mvolt) { ... if (mvolt == 0) return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); ... return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); }
I.e. aldo1 and aldo2 will always be disabled. This patch fixes it by setting (rather than clearing) the enable bit when mvolt != 0.
Signed-off-by: Rask Ingemann Lambertsen rask@formelder.dk Fixes: 795857df413a ("sunxi: power: add AXP809 support") ---
This patch needs someone to test it. I can't do so myself because I don't have any hardware with an AXP809 PMIC. I just happened to spot the bug when looking at the code.
drivers/power/axp809.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c index c5b608d..5b5cb36 100644 --- a/drivers/power/axp809.c +++ b/drivers/power/axp809.c @@ -143,7 +143,7 @@ int axp_set_aldo(int aldo_num, unsigned int mvolt) if (aldo_num == 3) return pmic_bus_setbits(AXP809_OUTPUT_CTRL2, AXP809_OUTPUT_CTRL2_ALDO3_EN); - return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, + return pmic_bus_setbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); }

Hi,
On 01/19/2017 05:53 AM, Rask Ingemann Lambertsen wrote:
The execution flow is currently like this for aldo_num == 1 or 2:
int axp_set_aldo(int aldo_num, unsigned int mvolt) { ... if (mvolt == 0) return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); ... return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); }
I.e. aldo1 and aldo2 will always be disabled. This patch fixes it by setting (rather than clearing) the enable bit when mvolt != 0.
Signed-off-by: Rask Ingemann Lambertsen rask@formelder.dk Fixes: 795857df413a ("sunxi: power: add AXP809 support")
It makes sense. if someone can test it, it's more better. :) I can't access u-boot-pmic git repository yet. So if possible, i will make the "pmic" branch on u-boot-mmc.
And i will apply the patches relevant to Power.
Best Regards, Jaehoon Chung
This patch needs someone to test it. I can't do so myself because I don't have any hardware with an AXP809 PMIC. I just happened to spot the bug when looking at the code.
drivers/power/axp809.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c index c5b608d..5b5cb36 100644 --- a/drivers/power/axp809.c +++ b/drivers/power/axp809.c @@ -143,7 +143,7 @@ int axp_set_aldo(int aldo_num, unsigned int mvolt) if (aldo_num == 3) return pmic_bus_setbits(AXP809_OUTPUT_CTRL2, AXP809_OUTPUT_CTRL2_ALDO3_EN);
- return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1,
- return pmic_bus_setbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1));
}

Hi,
On Thu, Jan 19, 2017 at 7:46 PM, Jaehoon Chung jh80.chung@samsung.com wrote:
Hi,
On 01/19/2017 05:53 AM, Rask Ingemann Lambertsen wrote:
The execution flow is currently like this for aldo_num == 1 or 2:
int axp_set_aldo(int aldo_num, unsigned int mvolt) { ... if (mvolt == 0) return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); ... return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); }
I.e. aldo1 and aldo2 will always be disabled. This patch fixes it by setting (rather than clearing) the enable bit when mvolt != 0.
Signed-off-by: Rask Ingemann Lambertsen rask@formelder.dk Fixes: 795857df413a ("sunxi: power: add AXP809 support")
It makes sense. if someone can test it, it's more better. :) I can't access u-boot-pmic git repository yet. So if possible, i will make the "pmic" branch on u-boot-mmc.
Looks good to me. Looks like the original was a copy-paste error by yours truly.
Nothing really uses aldo 1 or 2 in U-boot though. One of them powers the pins used for cameras. The other powers 3.3V for the USB hosts. Neither feature is supported in U-boot at the moment.
ChenYu
And i will apply the patches relevant to Power.
Best Regards, Jaehoon Chung
This patch needs someone to test it. I can't do so myself because I don't have any hardware with an AXP809 PMIC. I just happened to spot the bug when looking at the code.
drivers/power/axp809.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c index c5b608d..5b5cb36 100644 --- a/drivers/power/axp809.c +++ b/drivers/power/axp809.c @@ -143,7 +143,7 @@ int axp_set_aldo(int aldo_num, unsigned int mvolt) if (aldo_num == 3) return pmic_bus_setbits(AXP809_OUTPUT_CTRL2, AXP809_OUTPUT_CTRL2_ALDO3_EN);
return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1,
return pmic_bus_setbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1));
}

On 01/19/2017 05:53 AM, Rask Ingemann Lambertsen wrote:
The execution flow is currently like this for aldo_num == 1 or 2:
int axp_set_aldo(int aldo_num, unsigned int mvolt) { ... if (mvolt == 0) return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); ... return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1)); }
I.e. aldo1 and aldo2 will always be disabled. This patch fixes it by setting (rather than clearing) the enable bit when mvolt != 0.
Signed-off-by: Rask Ingemann Lambertsen rask@formelder.dk Fixes: 795857df413a ("sunxi: power: add AXP809 support")
Applied on u-boot-mmc(pmic branch). Thanks!
Best Regards, Jaehoon Chung
This patch needs someone to test it. I can't do so myself because I don't have any hardware with an AXP809 PMIC. I just happened to spot the bug when looking at the code.
drivers/power/axp809.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/axp809.c b/drivers/power/axp809.c index c5b608d..5b5cb36 100644 --- a/drivers/power/axp809.c +++ b/drivers/power/axp809.c @@ -143,7 +143,7 @@ int axp_set_aldo(int aldo_num, unsigned int mvolt) if (aldo_num == 3) return pmic_bus_setbits(AXP809_OUTPUT_CTRL2, AXP809_OUTPUT_CTRL2_ALDO3_EN);
- return pmic_bus_clrbits(AXP809_OUTPUT_CTRL1,
- return pmic_bus_setbits(AXP809_OUTPUT_CTRL1, AXP809_OUTPUT_CTRL1_ALDO1_EN << (aldo_num - 1));
}
participants (3)
-
Chen-Yu Tsai
-
Jaehoon Chung
-
Rask Ingemann Lambertsen