Skip to contentSkip to conversation

mxs: fixed battery boot on imx233-olinuxino-micro

PATCH New Peter Schumann 3 participants 14 messages May 21, 2014 – Aug 20, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

---
 arch/arm/cpu/arm926ejs/mxs/spl_power_init.c |    6 ------
 1 file changed, 6 deletions(-)
arch/arm/cpu/arm926ejs/mxs/spl_power_init.c +0 -6
index d25019a..0cbb6c4 100644
@@ -237,9 +237,6 @@ static void mxs_src_power_init(void)
 			POWER_LOOPCTRL_RCSCALE_THRESH |
 			POWER_LOOPCTRL_EN_RCSCALE_8X);
 
-	clrsetbits_le32(&power_regs->hw_power_minpwr,
-			POWER_MINPWR_HALFFETS, POWER_MINPWR_DOUBLE_FETS);
-
 	/* 5V to battery handoff ... FIXME */
 	setbits_le32(&power_regs->hw_power_5vctrl, POWER_5VCTRL_DCDC_XFER);
 	early_delay(30);
@@ -631,8 +628,6 @@ static void mxs_batt_boot(void)
 
 	writel(POWER_CTRL_ENIRQ_DCDC4P2_BO, &power_regs->hw_power_ctrl_clr);
 
-	clrsetbits_le32(&power_regs->hw_power_minpwr,
-			POWER_MINPWR_HALFFETS, POWER_MINPWR_DOUBLE_FETS);
 
 	mxs_power_set_linreg();
 
@@ -655,7 +650,6 @@ static void mxs_batt_boot(void)
 		POWER_5VCTRL_CHARGE_4P2_ILIMIT_MASK,
 		0x8 << POWER_5VCTRL_CHARGE_4P2_ILIMIT_OFFSET);
 
-	mxs_power_enable_4p2();
 }
 
 /**
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 4 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR

Please explain how you arrived to this conclusion.

Quoted 6 lines

, it makes my system
reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets.

This has been tested on i.MX28 , can you please check what the differences are between these two chips and why it works only on one of them ?

Quoted 5 lines

If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

The BootROM never hands over to U-Boot, so this really makes no sense. Can you please explain ? The BootROM handles over to U-Boot SPL, which configures the power block.

Also, I find it a very bad idea to depend on the BootROM to actually start the DCDC converter. I don't think we can universally say the DCDC converter is running when entering U-Boot SPL. I also don't think we can even depend on the power block configuration when exiting the BootROM -- for example in JTAG Boot Mode, the BootROM halts early in the boot process and will likely not configure anything with regards to the power block.

[...]

THanks!

Best regards,
Marek Vasut

#2 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Am 24.05.2014 12:44, schrieb Marek Vasut:

Quoted 3 lines

Please explain how you arrived to this conclusion.

Hello Marek,

I started writing an powerblock driver for the i.MX233 to use the imx233 olimex board with a battery.
Short time (instant up to 90 seconds) after the 5v to battery handoff the system reseted.
The system was running on DCDC prior to the handoff. I suspected that some of the power rails where droping and trigger
hardware brownouts. But this was not the case. The DCDC got shutdown and some ms after that the rails begun to drop.
I have some scope pic of this happening i it is of interest.

I than tried out some random bits in the MINPWR register and the reset problem was gone. Than I track down it to this 1 bit causing the instability.

Quoted 4 lines

This has been tested on i.MX28 , can you please check what the differences are between these two chips and why it works only on one of them ?

#3 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

In reply to Peter Schumann
Quoted 6 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Quoted 8 lines

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

Sorry for the late reply, I'm somewhat congested recently. In the meantime, I was not able to test this yet. But you're missing Signed-off-by: line, can you please re-send this with a proper SoB line [1] ?

[1] http://www.denx.de/wiki/U-Boot/Patches#General_Patch_Submission_Rules

Thanks

Best regards,
Marek Vasut

#4 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 16 lines · Marek Vasut
Quoted 6 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Quoted 8 lines

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

Quoted 5 lines

Sorry for the late reply, I'm somewhat congested recently. In the meantime, I was not able to test this yet. But you're missing Signed-off-by: line, can you please re-send this with a proper SoB line [1] ?

[1] http://www.denx.de/wiki/U-Boot/Patches#General_Patch_Submission_Rules

Bump?

Best regards,
Marek Vasut

#5 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 7 lines

Bump?

Best regards,
Marek Vasut

Hi Marek,

I am occupied with work at the moment. I will get it done at the weekend.

Best regards,
Peter Schumann

#6 lore raw

PATCH 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 8 lines · Peter Schumann
Quoted 4 lines

Bump?

Best regards,
Marek Vasut

Hi Marek,

I am occupied with work at the moment. I will get it done at the weekend.

Thanks!

Best regards,
Marek Vasut

#7 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

In reply to Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

---
 arch/arm/cpu/arm926ejs/mxs/spl_power_init.c |    6 ------
 1 file changed, 6 deletions(-)
arch/arm/cpu/arm926ejs/mxs/spl_power_init.c +0 -6
index d25019a..0cbb6c4 100644
@@ -237,9 +237,6 @@ static void mxs_src_power_init(void)
 			POWER_LOOPCTRL_RCSCALE_THRESH |
 			POWER_LOOPCTRL_EN_RCSCALE_8X);
 
-	clrsetbits_le32(&power_regs->hw_power_minpwr,
-			POWER_MINPWR_HALFFETS, POWER_MINPWR_DOUBLE_FETS);
-
 	/* 5V to battery handoff ... FIXME */
 	setbits_le32(&power_regs->hw_power_5vctrl, POWER_5VCTRL_DCDC_XFER);
 	early_delay(30);
@@ -631,8 +628,6 @@ static void mxs_batt_boot(void)
 
 	writel(POWER_CTRL_ENIRQ_DCDC4P2_BO, &power_regs->hw_power_ctrl_clr);
 
-	clrsetbits_le32(&power_regs->hw_power_minpwr,
-			POWER_MINPWR_HALFFETS, POWER_MINPWR_DOUBLE_FETS);
 
 	mxs_power_set_linreg();
 
@@ -655,7 +650,6 @@ static void mxs_batt_boot(void)
 		POWER_5VCTRL_CHARGE_4P2_ILIMIT_MASK,
 		0x8 << POWER_5VCTRL_CHARGE_4P2_ILIMIT_OFFSET);
 
-	mxs_power_enable_4p2();
 }
 
 /**
Signature · 1 line
1.7.10.4
#8 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 15 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

Quoted 1 line

+CC Fabio, I'd like to see his take on this too.

Best regards,
Marek Vasut

#9 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 16 lines · Marek Vasut
Quoted 15 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

Quoted 3 lines
Quoted 1 line

+CC Fabio, I'd like to see his take on this too.

I'd like to get this merged after 2014.07 though, so it can get some proper testing. We're too late in the -rc cycle anyway ...

Best regards,
Marek Vasut

#10 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Hi peter,

Quoted 17 lines · Marek Vasut
Quoted 16 lines · Marek Vasut
Quoted 15 lines · Peter Schumann

This patch makes it possible to boot from battery on olinuxino Boards from Olimex.

We should not set DOUBLE_FETS in HW_POWER_MINPWR, it makes my system reset with in seconds while running on battery power.

Also mxs_power_enable_4p2() should not be called if running from battery. It switches VDDD and VDDA to LinReg mode and than turns off the VDDIO DCDC supply. At this point the system resets. If we run on battery this is no good idea because the LinRegs are chained behind VDDIO and battery voltage seems not enough to power the system from LinRegs.
Also is the power system already running on DCDC after BootROM hands over to u-boot, so no sense in switching back to LinRegs.

Quoted 9 lines
Quoted 3 lines
Quoted 1 line

+CC Fabio, I'd like to see his take on this too.

I'd like to get this merged after 2014.07 though, so it can get some proper testing. We're too late in the -rc cycle anyway ...

Agree. Reason is that this change is for all boards, and without a proper testing I will avoid to merge it in the release.

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#11 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Am 17.06.2014 18:00, schrieb Stefano Babic:

Quoted 11 lines

Hi peter,
...
On 17/06/2014 00:19, Marek Vasut wrote:
Agree. Reason is that this change is for all boards, and without a proper testing I will avoid to merge it in the release.

Best regards,
Stefano Babic

Hi Stefano,

I've only the imx233 olimex board for testing. The DOUBLE_FETS switch in HW_POWER_MINPWR is some thing were maybe problems emerge.

I have very little load on the powerrails (imx233 + DRAM), so maybe with more current demand DOUBLE_FETS is working OK and even more may require it to be set.

The DOUBLE_FETS and HALF_FETS switches control the switching MOSFET size in the DCDC Converter. My assumption is that if we have a to big FET setting and to low current demand we trigger some failsafe mechanism. Because the required "on time" of the FET is smaller than the minimum possible "on time" of then DCDC FET control logic.

I don't have an easy way to test this assumption without an adjustable load.

The other change regarding mxs_power_enable_4p2() should be relatively safe to apply.

If I can help with some testing let me know.

Best regards,
Peter Schumann

#12 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Quoted 10 lines · Peter Schumann

Am 17.06.2014 18:00, schrieb Stefano Babic:

Quoted 8 lines

Hi peter,
...
On 17/06/2014 00:19, Marek Vasut wrote:
Agree. Reason is that this change is for all boards, and without a proper testing I will avoid to merge it in the release.

Best regards,
Stefano Babic

Quoted 8 lines

Hi Stefano,

I've only the imx233 olimex board for testing. The DOUBLE_FETS switch in HW_POWER_MINPWR is some thing were maybe problems emerge.

I have very little load on the powerrails (imx233 + DRAM), so maybe with more current demand DOUBLE_FETS is working OK and even more may require it to be set.

If that was the case, the problem would manifest even when _not_ booting from battery-only supply, correct?

Quoted 11 lines

The DOUBLE_FETS and HALF_FETS switches control the switching MOSFET size in the DCDC Converter. My assumption is that if we have a to big FET setting and to low current demand we trigger some failsafe mechanism. Because the required "on time" of the FET is smaller than the minimum possible "on time" of then DCDC FET control logic.

I don't have an easy way to test this assumption without an adjustable load.

The other change regarding mxs_power_enable_4p2() should be relatively safe to apply.

This breaks booting from battery on MX28 for some reason. The DC converter is not enabled at that point.

Best regards,
Marek Vasut

#13 lore raw

PATCH v2 1/1 mxs: fixed battery boot on imx233-olinuxino-micro

Hi Peter, hi Marek,

Quoted 29 lines · Marek Vasut
Quoted 10 lines · Peter Schumann

Am 17.06.2014 18:00, schrieb Stefano Babic:

Quoted 8 lines

Hi peter,
...
On 17/06/2014 00:19, Marek Vasut wrote:
Agree. Reason is that this change is for all boards, and without a proper testing I will avoid to merge it in the release.

Best regards,
Stefano Babic

Quoted 8 lines

Hi Stefano,

I've only the imx233 olimex board for testing. The DOUBLE_FETS switch in HW_POWER_MINPWR is some thing were maybe problems emerge.

I have very little load on the powerrails (imx233 + DRAM), so maybe with more current demand DOUBLE_FETS is working OK and even more may require it to be set.

If that was the case, the problem would manifest even when _not_ booting from battery-only supply, correct?

Quoted 6 lines

The DOUBLE_FETS and HALF_FETS switches control the switching MOSFET size in the DCDC Converter. My assumption is that if we have a to big FET setting and to low current demand we trigger some failsafe mechanism. Because the required "on time" of the FET is smaller than the minimum possible "on time" of then DCDC FET control logic.

Quoted 8 lines
Quoted 5 lines

I don't have an easy way to test this assumption without an adjustable load.

The other change regarding mxs_power_enable_4p2() should be relatively safe to apply.

This breaks booting from battery on MX28 for some reason. The DC converter is not enabled at that point.

As I have not (yet) forgotten this patch: current status is that mx28 is broken after applying this patch. I set the status as "Changes requested" and it will be not applied.

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================