[U-Boot,PATCHv2] mpc83xx: Make it boot again

Submitted by Joakim Tjernlund on Nov. 19, 2010, 1:15 p.m.

Details

Message ID 1290172533-28783-1-git-send-email-Joakim.Tjernlund@transmode.se
State Accepted
Commit e45c98ad35ca600e25e9264528e7b6be17969f8c
Delegated to: Kim Phillips
Headers show

Commit Message

Joakim Tjernlund Nov. 19, 2010, 1:15 p.m.
After the removal of COLD/WARM start flags my mpc8321
board didn't boot anymore.
Trial and error suggests that map/remap_flash_by_xxx needs
to wait after updating LBLAWAR1 to make sure the the change has
reached the HW before continuing with the code that depends on it.
Final fix suggested by Scott Wood.

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
---

 v2: Final adjustmenst based on inpt from Scott Wood.
 arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

Comments

Joakim Tjernlund Nov. 19, 2010, 5:27 p.m.
Joakim Tjernlund <Joakim.Tjernlund@transmode.se> wrote on 2010/11/19 14:15:33:
>
> After the removal of COLD/WARM start flags my mpc8321
> board didn't boot anymore.
> Trial and error suggests that map/remap_flash_by_xxx needs
> to wait after updating LBLAWAR1 to make sure the the change has
> reached the HW before continuing with the code that depends on it.
> Final fix suggested by Scott Wood.
>
> Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> ---
>
>  v2: Final adjustmenst based on inpt from Scott Wood.

Guys, I can still crash my board when a add new code in start.S
It is remap_flash_by_law0 that is giving me a hard time.
I noticed that I could bring it down by adding a few nops after
a CS0 is written but before LAW0. I also noticed that it
always crash at a new cacheline.

By swapping LAW0 with CS0 it became much better(crash yet).
I wonder if it is correct to configure CS0 then LAW0?
It seems like one must first adjust LAW0 then CS0 to
be sure it works as intended.
What do you think?

   Jocke

>  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S
> index e8b1ebc..5a9b790 100644
> --- a/arch/powerpc/cpu/mpc83xx/start.S
> +++ b/arch/powerpc/cpu/mpc83xx/start.S
> @@ -1191,6 +1191,10 @@ map_flash_by_law1:
>     bne 1b
>
>     stw r4, LBLAWAR1(r3) /* LBLAWAR1 <= 8MB Flash Size */
> +   /* Wait for HW to catch up */
> +   lwz r4, LBLAWAR1(r3)
> +   twi 0,r4,0
> +   isync
>     blr
>
>     /* Though all the LBIU Local Access Windows and LBC Banks will be
> @@ -1229,5 +1233,9 @@ remap_flash_by_law0:
>     xor r4, r4, r4
>     stw r4, LBLAWBAR1(r3)
>     stw r4, LBLAWAR1(r3) /* Off LBIU LAW1 */
> +   /* Wait for HW to catch up */
> +   lwz r4, LBLAWAR1(r3)
> +   twi 0,r4,0
> +   isync
>     blr
>  #endif /* CONFIG_SYS_FLASHBOOT */
> --
> 1.7.2.2
>
Joakim Tjernlund Nov. 22, 2010, 11:44 a.m.
>
> Joakim Tjernlund <Joakim.Tjernlund@transmode.se> wrote on 2010/11/19 14:15:33:
> >
> > After the removal of COLD/WARM start flags my mpc8321
> > board didn't boot anymore.
> > Trial and error suggests that map/remap_flash_by_xxx needs
> > to wait after updating LBLAWAR1 to make sure the the change has
> > reached the HW before continuing with the code that depends on it.
> > Final fix suggested by Scott Wood.
> >
> > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> > ---
> >
> >  v2: Final adjustmenst based on inpt from Scott Wood.
>
> Guys, I can still crash my board when a add new code in start.S
> It is remap_flash_by_law0 that is giving me a hard time.
> I noticed that I could bring it down by adding a few nops after
> a CS0 is written but before LAW0. I also noticed that it
> always crash at a new cacheline.
>
> By swapping LAW0 with CS0 it became much better(crash yet).
> I wonder if it is correct to configure CS0 then LAW0?
> It seems like one must first adjust LAW0 then CS0 to
> be sure it works as intended.
> What do you think?

OOPS, trashing r3 before calling remap_flash_by_law0 is BAD.
remap_flash_by_law0 should reload r3 with IMMR instead of relying
on r3 pointing to IMMR.
Joakim Tjernlund Nov. 23, 2010, 6:16 p.m.
Could we have an ACK before relese please?

> After the removal of COLD/WARM start flags my mpc8321
> board didn't boot anymore.
> Trial and error suggests that map/remap_flash_by_xxx needs
> to wait after updating LBLAWAR1 to make sure the the change has
> reached the HW before continuing with the code that depends on it.
> Final fix suggested by Scott Wood.
>
> Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> ---
>
>  v2: Final adjustmenst based on inpt from Scott Wood.
>  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S
> index e8b1ebc..5a9b790 100644
> --- a/arch/powerpc/cpu/mpc83xx/start.S
> +++ b/arch/powerpc/cpu/mpc83xx/start.S
> @@ -1191,6 +1191,10 @@ map_flash_by_law1:
>     bne 1b
>
>     stw r4, LBLAWAR1(r3) /* LBLAWAR1 <= 8MB Flash Size */
> +   /* Wait for HW to catch up */
> +   lwz r4, LBLAWAR1(r3)
> +   twi 0,r4,0
> +   isync
>     blr
>
>     /* Though all the LBIU Local Access Windows and LBC Banks will be
> @@ -1229,5 +1233,9 @@ remap_flash_by_law0:
>     xor r4, r4, r4
>     stw r4, LBLAWBAR1(r3)
>     stw r4, LBLAWAR1(r3) /* Off LBIU LAW1 */
> +   /* Wait for HW to catch up */
> +   lwz r4, LBLAWAR1(r3)
> +   twi 0,r4,0
> +   isync
>     blr
>  #endif /* CONFIG_SYS_FLASHBOOT */
> --
> 1.7.2.2
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Scott Wood Nov. 23, 2010, 6:38 p.m.
On Tue, 23 Nov 2010 19:16:01 +0100
Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:

> Could we have an ACK before relese please?
> 
> > After the removal of COLD/WARM start flags my mpc8321
> > board didn't boot anymore.
> > Trial and error suggests that map/remap_flash_by_xxx needs
> > to wait after updating LBLAWAR1 to make sure the the change has
> > reached the HW before continuing with the code that depends on it.
> > Final fix suggested by Scott Wood.
> >
> > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> > ---
> >
> >  v2: Final adjustmenst based on inpt from Scott Wood.
> >  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
> >  1 files changed, 8 insertions(+), 0 deletions(-)

ACK

-Scott
Kim Phillips Nov. 28, 2010, 4:31 p.m.
On Tue, 23 Nov 2010 12:38:57 -0600
Scott Wood <scottwood@freescale.com> wrote:

> On Tue, 23 Nov 2010 19:16:01 +0100
> Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> 
> > Could we have an ACK before relese please?
> > 
> > > After the removal of COLD/WARM start flags my mpc8321
> > > board didn't boot anymore.
> > > Trial and error suggests that map/remap_flash_by_xxx needs
> > > to wait after updating LBLAWAR1 to make sure the the change has
> > > reached the HW before continuing with the code that depends on it.
> > > Final fix suggested by Scott Wood.
> > >
> > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> > > ---
> > >
> > >  v2: Final adjustmenst based on inpt from Scott Wood.
> > >  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
> > >  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> ACK
> 
> -Scott

applied.

Thanks everyone.

Kim
Joakim Tjernlund Nov. 28, 2010, 4:33 p.m.
Kim Phillips <kim.phillips@freescale.com> wrote on 2010/11/28 17:31:25:
>
> On Tue, 23 Nov 2010 12:38:57 -0600
> Scott Wood <scottwood@freescale.com> wrote:
>
> > On Tue, 23 Nov 2010 19:16:01 +0100
> > Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> >
> > > Could we have an ACK before relese please?
> > >
> > > > After the removal of COLD/WARM start flags my mpc8321
> > > > board didn't boot anymore.
> > > > Trial and error suggests that map/remap_flash_by_xxx needs
> > > > to wait after updating LBLAWAR1 to make sure the the change has
> > > > reached the HW before continuing with the code that depends on it.
> > > > Final fix suggested by Scott Wood.
> > > >
> > > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> > > > ---
> > > >
> > > >  v2: Final adjustmenst based on inpt from Scott Wood.
> > > >  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
> > > >  1 files changed, 8 insertions(+), 0 deletions(-)
> >
> > ACK
> >
> > -Scott
>
> applied.
>
> Thanks everyone.

Finally, thanks.
Joakim Tjernlund Nov. 28, 2010, 4:38 p.m.
Kim Phillips <kim.phillips@freescale.com> wrote on 2010/11/28 17:31:25:
>
> On Tue, 23 Nov 2010 12:38:57 -0600
> Scott Wood <scottwood@freescale.com> wrote:
>
> > On Tue, 23 Nov 2010 19:16:01 +0100
> > Joakim Tjernlund <joakim.tjernlund@transmode.se> wrote:
> >
> > > Could we have an ACK before relese please?
> > >
> > > > After the removal of COLD/WARM start flags my mpc8321
> > > > board didn't boot anymore.
> > > > Trial and error suggests that map/remap_flash_by_xxx needs
> > > > to wait after updating LBLAWAR1 to make sure the the change has
> > > > reached the HW before continuing with the code that depends on it.
> > > > Final fix suggested by Scott Wood.
> > > >
> > > > Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
> > > > ---
> > > >
> > > >  v2: Final adjustmenst based on inpt from Scott Wood.
> > > >  arch/powerpc/cpu/mpc83xx/start.S |    8 ++++++++
> > > >  1 files changed, 8 insertions(+), 0 deletions(-)
> >
> > ACK
> >
> > -Scott
>
> applied.

BTW, there was one named
   powerpc: fix mpc8315erdb and mpc8313erdb NAND linker script
which I think you should consider. I don't really care as
I don't use these boards, I just noticed it by chance.

 Jocke

Patch hide | download patch | download mbox

diff --git a/arch/powerpc/cpu/mpc83xx/start.S b/arch/powerpc/cpu/mpc83xx/start.S
index e8b1ebc..5a9b790 100644
--- a/arch/powerpc/cpu/mpc83xx/start.S
+++ b/arch/powerpc/cpu/mpc83xx/start.S
@@ -1191,6 +1191,10 @@  map_flash_by_law1:
 	bne 1b
 
 	stw r4, LBLAWAR1(r3) /* LBLAWAR1 <= 8MB Flash Size */
+	/* Wait for HW to catch up */
+	lwz r4, LBLAWAR1(r3)
+	twi 0,r4,0
+	isync
 	blr
 
 	/* Though all the LBIU Local Access Windows and LBC Banks will be
@@ -1229,5 +1233,9 @@  remap_flash_by_law0:
 	xor r4, r4, r4
 	stw r4, LBLAWBAR1(r3)
 	stw r4, LBLAWAR1(r3) /* Off LBIU LAW1 */
+	/* Wait for HW to catch up */
+	lwz r4, LBLAWAR1(r3)
+	twi 0,r4,0
+	isync
 	blr
 #endif /* CONFIG_SYS_FLASHBOOT */