mx35: Fix boot ROM hang in internal boot mode
Subsystems (3)
PATCH v3 1/1 mx35: Fix boot ROM hang in internal boot mode
If a watchdog reset occurs after booting in internal boot mode, the i.MX35 won't boot anymore. The boot ROM code seems to assume that some clocks are turned on (they are after a power-on reset). This patch turns on the necessary clocks.
--- arch/arm/mach-mx3/clock-imx35.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-)
arch/arm/mach-mx3/clock-imx35.c +16 -4
@@ -485,10 +485,10 @@ static struct clk_lookup lookups[] = {int __init mx35_clocks_init () { -unsigned int ll =0 ; +unsigned int cgr2 =3 <<26 , cgr3 =0 ;#if defined(CONFIG_DEBUG_LL ) && !defined(CONFIG_DEBUG_ICEDCC ) - ll = (3 <<16 ); + cgr2 |=3 <<16 ;#endif clkdev_add_table (lookups,ARRAY_SIZE (lookups));
@@ -499,8 +499,20 @@ int __init mx35_clocks_init()__raw_writel ((3 <<18 ),CCM_BASE +CCM_CGR0 );__raw_writel ((3 <<2 ) | (3 <<4 ) | (3 <<6 ) | (3 <<8 ) | (3 <<16 ),CCM_BASE +CCM_CGR1 ); -__raw_writel ((3 <<26 ) | ll,CCM_BASE +CCM_CGR2 ); -__raw_writel (0 ,CCM_BASE +CCM_CGR3 ); + +/* +* Check if we came up in internal boot mode. If yes, we need some +* extra clocks turned on, otherwise the MX35 boot ROM code will +* hang after a watchdog reset. +*/ +if (!(__raw_readl (CCM_BASE +CCM_RCSR ) & (3 <<10 ))) { +/* Additionally turn on UART1, SCC, and IIM clocks */ + cgr2 |=3 <<16 |3 <<4 ; + cgr3 |=3 <<2 ; + } + +__raw_writel (cgr2,CCM_BASE +CCM_CGR2 ); +__raw_writel (cgr3,CCM_BASE +CCM_CGR3 );mxc_timer_init (&gpt_clk,MX35_IO_ADDRESS (MX35_GPT1_BASE_ADDR ),MX35_INT_GPT );
Signature · 1 line
1.7.1
PATCH v3 1/1 mx35: Fix boot ROM hang in internal boot mode
Quoted 6 lines · Hans J. Koch
If a watchdog reset occurs after booting in internal boot mode, the i.MX35 won't boot anymore. The boot ROM code seems to assume that some clocks are turned on (they are after a power-on reset). This patch turns on the necessary clocks.
Signed-off-by Hans J. Koch <[email protected]>
Even if it should be a bootloader issue and not a ROM problem this fix is sensible.
Thanks
Uwe
Signature · 2 lines
Pengutronix e.K. | Uwe Kleine-K?nig | Industrial Linux Solutions | http://www.pengutronix.de/ |
PATCH v3 1/1 mx35: Fix boot ROM hang in internal boot mode
Quoted 11 lines · Uwe Kleine-K?nig
Quoted 6 lines · Hans J. Koch
If a watchdog reset occurs after booting in internal boot mode, the i.MX35 won't boot anymore. The boot ROM code seems to assume that some clocks are turned on (they are after a power-on reset). This patch turns on the necessary clocks.
Signed-off-by Hans J. Koch <[email protected]>Even if it should be a bootloader issue and not a ROM problem this fix is sensible.
Acked-by Uwe Kleine-K?nig <[email protected]>
We should also add:
I forgot that.
Thanks,
Hans
Quoted 7 lines
Thanks
UweSignature · 2 lines
Pengutronix e.K. | Uwe Kleine-K?nig | Industrial Linux Solutions | http://www.pengutronix.de/ |