public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
@ 2009-02-11 18:26 Heiko Schocher
  2009-02-17  1:37 ` Kim Phillips
  0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2009-02-11 18:26 UTC (permalink / raw)
  To: u-boot

old code implemented the QE_ENET10 errata only for Silicon
Revision 2.0. New code reads now the Silicon Revision
register and sets dependend on the Silicon Revision the
values as advised in the QE_ENET10 errata.

Also added missing get_svr() in cpu/mpc83xx/start.S to
read the Silicon Revision register.

Signed-off-by: Heiko Schocher <hs@denx.de>
---
 board/keymile/kmeter1/kmeter1.c |   20 ++++++++++++--------
 cpu/mpc83xx/start.S             |    5 +++++
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/board/keymile/kmeter1/kmeter1.c b/board/keymile/kmeter1/kmeter1.c
index 0b0c2a3..0f4217a 100644
--- a/board/keymile/kmeter1/kmeter1.c
+++ b/board/keymile/kmeter1/kmeter1.c
@@ -80,19 +80,23 @@ static int board_init_i2c_busses (void)

 int board_early_init_r (void)
 {
-	void *reg = (void *)(CONFIG_SYS_IMMR + 0x14a8);
-	u32 val;
+	unsigned short	svid;

+	svid = (unsigned short) get_svr ();
 	/*
 	 * Because of errata in the UCCs, we have to write to the reserved
 	 * registers to slow the clocks down.
 	 */
-	val = in_be32 (reg);
-	/* UCC1 */
-	val |= 0x00003000;
-	/* UCC2 */
-	val |= 0x0c000000;
-	out_be32 (reg, val);
+	switch (svid) {
+		case 0x0020:
+			setbits_be32((void *)(CONFIG_SYS_IMMR + 0x14a8),
+					0x0c003000);
+			break;
+		case 0x0021:
+			clrsetbits_be32((void *)(CONFIG_SYS_IMMR + 0x14ac),
+					0x00000050, 0x000000a0);
+			break;
+	}
 	/* enable the PHY on the PIGGY */
 	setbits (8, (void *)(CONFIG_SYS_PIGGY_BASE + 0x10003), 0x01);

diff --git a/cpu/mpc83xx/start.S b/cpu/mpc83xx/start.S
index 26e3106..8ef5368 100644
--- a/cpu/mpc83xx/start.S
+++ b/cpu/mpc83xx/start.S
@@ -137,6 +137,11 @@ get_pvr:
 	mfspr	r3, PVR
 	blr

+	.globl get_svr
+get_svr:
+	mfspr	r3, SVR
+	blr
+
 	.globl	ppcDWstore
 ppcDWstore:
 	lfd	1, 0(r4)
-- 
1.6.0.6

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-11 18:26 [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1 Heiko Schocher
@ 2009-02-17  1:37 ` Kim Phillips
  2009-02-17  7:07   ` Heiko Schocher
  2009-02-17 17:51   ` Scott Wood
  0 siblings, 2 replies; 10+ messages in thread
From: Kim Phillips @ 2009-02-17  1:37 UTC (permalink / raw)
  To: u-boot

On Wed, 11 Feb 2009 19:26:22 +0100
Heiko Schocher <hs@denx.de> wrote:

> +	switch (svid) {
> +		case 0x0020:

'case' should be aligned directly under 'switch'.

> +++ b/cpu/mpc83xx/start.S
> @@ -137,6 +137,11 @@ get_pvr:
>  	mfspr	r3, PVR
>  	blr
> 
> +	.globl get_svr
> +get_svr:
> +	mfspr	r3, SVR
> +	blr
> +

on a ./MAKEALL SIMPC8313_LP, I'm getting:

powerpc-linux-gnu-ld: NAND bootstrap too big
powerpc-linux-gnu-ld: NAND bootstrap too big
make[1]: *** [/home/r1aaha/git/u-boot/nand_spl/u-boot-spl] Error 1
make: *** [nand_spl] Error 2
make: *** Waiting for unfinished jobs....
powerpc-linux-gnu-size: './u-boot': No such file

and I think (because I haven't verified it), it's because of the above
addition to start.S;  Can you please look into moving this fn elsewhere
- see commit 455a4691 and test rebuilding the SIMPC board?

Thank you,

Kim

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-17  1:37 ` Kim Phillips
@ 2009-02-17  7:07   ` Heiko Schocher
  2009-02-17  8:54     ` Heiko Schocher
  2009-02-17 17:51   ` Scott Wood
  1 sibling, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2009-02-17  7:07 UTC (permalink / raw)
  To: u-boot

Hello Kim,

Kim Phillips wrote:
> On Wed, 11 Feb 2009 19:26:22 +0100
> Heiko Schocher <hs@denx.de> wrote:
> 
>> +	switch (svid) {
>> +		case 0x0020:
> 
> 'case' should be aligned directly under 'switch'.
> 
>> +++ b/cpu/mpc83xx/start.S
>> @@ -137,6 +137,11 @@ get_pvr:
>>  	mfspr	r3, PVR
>>  	blr
>>
>> +	.globl get_svr
>> +get_svr:
>> +	mfspr	r3, SVR
>> +	blr
>> +
> 
> on a ./MAKEALL SIMPC8313_LP, I'm getting:
> 
> powerpc-linux-gnu-ld: NAND bootstrap too big
> powerpc-linux-gnu-ld: NAND bootstrap too big
> make[1]: *** [/home/r1aaha/git/u-boot/nand_spl/u-boot-spl] Error 1
> make: *** [nand_spl] Error 2
> make: *** Waiting for unfinished jobs....
> powerpc-linux-gnu-size: './u-boot': No such file

Hmm.. with actual u-boot I get for this board (without my patches):

[hs at pollux u-boot]$ ./MAKEALL SIMPC8313_LP
...Large Page NAND...Configuring for SIMPC8313 board...
In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:5,
                 from include/common.h:35:
/home/hs/U-Boot-Patches/u-boot/include/configs/SIMPC8313.h:81:1: warning: "CONFIG_MAX_MEM_MAPPED" redefined
In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:4,
                 from include/common.h:35:
/home/hs/U-Boot-Patches/u-boot/include/asm/config.h:28:1: warning: this is the location of the previous definition
In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:5,
                 from start.S:30:
[...]

also with actual u-boot-mpc83xx.git:

[hs at pollux u-boot-mpc83xx]$ ./MAKEALL SIMPC8313_LP
...Large Page NAND...Configuring for SIMPC8313 board...
In file included from /home/hs/U-Boot-Patches/u-boot-mpc83xx/include/config.h:5,
                 from include/common.h:35:
/home/hs/U-Boot-Patches/u-boot-mpc83xx/include/configs/SIMPC8313.h:81:1: warning: "CONFIG_MAX_MEM_MAPPED" redefined
In file included from /home/hs/U-Boot-Patches/u-boot-mpc83xx/include/config.h:4,
                 from include/common.h:35:
[...]

> and I think (because I haven't verified it), it's because of the above
> addition to start.S;  Can you please look into moving this fn elsewhere

Yes, that seems plausible, but see above, I didn;t get this error
with actual u-boot-mpc83xx.git nor with actual u-boot.

> - see commit 455a4691 and test rebuilding the SIMPC board?

Yes, I try to move get_svr to cpu.c?

thanks
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-17  7:07   ` Heiko Schocher
@ 2009-02-17  8:54     ` Heiko Schocher
  2009-02-18  1:25       ` Kim Phillips
  0 siblings, 1 reply; 10+ messages in thread
From: Heiko Schocher @ 2009-02-17  8:54 UTC (permalink / raw)
  To: u-boot

Hello Kim,

Heiko Schocher wrote:
> Kim Phillips wrote:
>> On Wed, 11 Feb 2009 19:26:22 +0100
>> Heiko Schocher <hs@denx.de> wrote:
>>
>>> +	switch (svid) {
>>> +		case 0x0020:
>> 'case' should be aligned directly under 'switch'.
>>
>>> +++ b/cpu/mpc83xx/start.S
>>> @@ -137,6 +137,11 @@ get_pvr:
>>>  	mfspr	r3, PVR
>>>  	blr
>>>
>>> +	.globl get_svr
>>> +get_svr:
>>> +	mfspr	r3, SVR
>>> +	blr
>>> +
>> on a ./MAKEALL SIMPC8313_LP, I'm getting:
>>
>> powerpc-linux-gnu-ld: NAND bootstrap too big
>> powerpc-linux-gnu-ld: NAND bootstrap too big
>> make[1]: *** [/home/r1aaha/git/u-boot/nand_spl/u-boot-spl] Error 1
>> make: *** [nand_spl] Error 2
>> make: *** Waiting for unfinished jobs....
>> powerpc-linux-gnu-size: './u-boot': No such file
> 
> Hmm.. with actual u-boot I get for this board (without my patches):
> 
> [hs at pollux u-boot]$ ./MAKEALL SIMPC8313_LP
> ...Large Page NAND...Configuring for SIMPC8313 board...
> In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:5,
>                  from include/common.h:35:
> /home/hs/U-Boot-Patches/u-boot/include/configs/SIMPC8313.h:81:1: warning: "CONFIG_MAX_MEM_MAPPED" redefined
> In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:4,
>                  from include/common.h:35:
> /home/hs/U-Boot-Patches/u-boot/include/asm/config.h:28:1: warning: this is the location of the previous definition
> In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:5,
>                  from start.S:30:
> [...]

I was to fast, i get the error (I just have to wait for the end of
the above warnings):

[hs at pollux u-boot]$ ./MAKEALL SIMPC8313_LP
...Large Page NAND...Configuring for SIMPC8313 board...
In file included from /home/hs/U-Boot-Patches/u-boot/include/config.h:5,
                 from include/common.h:35:
[..]
/home/hs/U-Boot-Patches/u-boot/include/asm/config.h:28:1: warning: this is the location of the previous definition
ppc_82xx-ld: NAND bootstrap too big
ppc_82xx-ld: NAND bootstrap too big
make[1]: *** [/home/hs/U-Boot-Patches/u-boot/nand_spl/u-boot-spl] Fehler 1
make: *** [nand_spl] Fehler 2
make: *** Warte auf noch nicht beendete Prozesse...
ppc_82xx-size: './u-boot': No such file
[hs at pollux u-boot]$

I get this error just with actual u-boot.

bye
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-17  1:37 ` Kim Phillips
  2009-02-17  7:07   ` Heiko Schocher
@ 2009-02-17 17:51   ` Scott Wood
  1 sibling, 0 replies; 10+ messages in thread
From: Scott Wood @ 2009-02-17 17:51 UTC (permalink / raw)
  To: u-boot

On Mon, Feb 16, 2009 at 07:37:20PM -0600, Kim Phillips wrote:
> On Wed, 11 Feb 2009 19:26:22 +0100
> Heiko Schocher <hs@denx.de> wrote:
> 
> > +	switch (svid) {
> > +		case 0x0020:
> 
> 'case' should be aligned directly under 'switch'.
> 
> > +++ b/cpu/mpc83xx/start.S
> > @@ -137,6 +137,11 @@ get_pvr:
> >  	mfspr	r3, PVR
> >  	blr
> > 
> > +	.globl get_svr
> > +get_svr:
> > +	mfspr	r3, SVR
> > +	blr
> > +
> 
> on a ./MAKEALL SIMPC8313_LP, I'm getting:
> 
> powerpc-linux-gnu-ld: NAND bootstrap too big
> powerpc-linux-gnu-ld: NAND bootstrap too big
> make[1]: *** [/home/r1aaha/git/u-boot/nand_spl/u-boot-spl] Error 1
> make: *** [nand_spl] Error 2
> make: *** Waiting for unfinished jobs....
> powerpc-linux-gnu-size: './u-boot': No such file
> 
> and I think (because I haven't verified it), it's because of the above
> addition to start.S;  Can you please look into moving this fn elsewhere
> - see commit 455a4691 and test rebuilding the SIMPC board?

Seems like both get_pvr and get_svr should really be inline functions.

-Scott

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-17  8:54     ` Heiko Schocher
@ 2009-02-18  1:25       ` Kim Phillips
  2009-02-18  2:29         ` Kumar Gala
  2009-02-18 17:20         ` Scott Wood
  0 siblings, 2 replies; 10+ messages in thread
From: Kim Phillips @ 2009-02-18  1:25 UTC (permalink / raw)
  To: u-boot

On Tue, 17 Feb 2009 09:54:51 +0100
Heiko Schocher <hs@denx.de> wrote:

> ppc_82xx-ld: NAND bootstrap too big
> ppc_82xx-ld: NAND bootstrap too big
> make[1]: *** [/home/hs/U-Boot-Patches/u-boot/nand_spl/u-boot-spl] Fehler 1
> make: *** [nand_spl] Fehler 2
> make: *** Warte auf noch nicht beendete Prozesse...
> ppc_82xx-size: './u-boot': No such file
> [hs at pollux u-boot]$
> 
> I get this error just with actual u-boot.

now that I've verified it, I see it too.  I bisected it:

bced7ccefa08512c54a6d146658ff7dbc33d5dfe is first bad commit
commit bced7ccefa08512c54a6d146658ff7dbc33d5dfe
Author: Kumar Gala <galak@kernel.crashing.org>
Date:   Fri Feb 6 08:08:06 2009 -0600

    ppc: Fix roll over bug in flush_cache()
    
    If we call flush_cache(0xfffff000, 0x1000) it would never
    terminate the loop since end = 0xffffffff and we'd roll over
    our counter from 0xfffffe0 to 0 (assuming a 32-byte cache line)
    
    Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

the extra checks this patch makes makes flush_cache() consume a mere 16
more bytes, which makes the SIMPC8313 build fail.

I don't see an easy way out of this that satisfies everyone.  Ideas?

Kim

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-18  1:25       ` Kim Phillips
@ 2009-02-18  2:29         ` Kumar Gala
  2009-02-18  3:30           ` Kumar Gala
  2009-02-18 17:20         ` Scott Wood
  1 sibling, 1 reply; 10+ messages in thread
From: Kumar Gala @ 2009-02-18  2:29 UTC (permalink / raw)
  To: u-boot


On Feb 17, 2009, at 7:25 PM, Kim Phillips wrote:

> On Tue, 17 Feb 2009 09:54:51 +0100
> Heiko Schocher <hs@denx.de> wrote:
>
>> ppc_82xx-ld: NAND bootstrap too big
>> ppc_82xx-ld: NAND bootstrap too big
>> make[1]: *** [/home/hs/U-Boot-Patches/u-boot/nand_spl/u-boot-spl]  
>> Fehler 1
>> make: *** [nand_spl] Fehler 2
>> make: *** Warte auf noch nicht beendete Prozesse...
>> ppc_82xx-size: './u-boot': No such file
>> [hs at pollux u-boot]$
>>
>> I get this error just with actual u-boot.
>
> now that I've verified it, I see it too.  I bisected it:
>
> bced7ccefa08512c54a6d146658ff7dbc33d5dfe is first bad commit
> commit bced7ccefa08512c54a6d146658ff7dbc33d5dfe
> Author: Kumar Gala <galak@kernel.crashing.org>
> Date:   Fri Feb 6 08:08:06 2009 -0600
>
>    ppc: Fix roll over bug in flush_cache()
>
>    If we call flush_cache(0xfffff000, 0x1000) it would never
>    terminate the loop since end = 0xffffffff and we'd roll over
>    our counter from 0xfffffe0 to 0 (assuming a 32-byte cache line)
>
>    Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
>
> the extra checks this patch makes makes flush_cache() consume a mere  
> 16
> more bytes, which makes the SIMPC8313 build fail.
>
> I don't see an easy way out of this that satisfies everyone.  Ideas?
>
> Kim

what params is flush_cache() being called width on SIMC8313?

- k

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-18  2:29         ` Kumar Gala
@ 2009-02-18  3:30           ` Kumar Gala
  0 siblings, 0 replies; 10+ messages in thread
From: Kumar Gala @ 2009-02-18  3:30 UTC (permalink / raw)
  To: u-boot


On Feb 17, 2009, at 8:29 PM, Kumar Gala wrote:

>
> On Feb 17, 2009, at 7:25 PM, Kim Phillips wrote:
>
>> On Tue, 17 Feb 2009 09:54:51 +0100
>> Heiko Schocher <hs@denx.de> wrote:
>>
>>> ppc_82xx-ld: NAND bootstrap too big
>>> ppc_82xx-ld: NAND bootstrap too big
>>> make[1]: *** [/home/hs/U-Boot-Patches/u-boot/nand_spl/u-boot-spl]
>>> Fehler 1
>>> make: *** [nand_spl] Fehler 2
>>> make: *** Warte auf noch nicht beendete Prozesse...
>>> ppc_82xx-size: './u-boot': No such file
>>> [hs at pollux u-boot]$
>>>
>>> I get this error just with actual u-boot.
>>
>> now that I've verified it, I see it too.  I bisected it:
>>
>> bced7ccefa08512c54a6d146658ff7dbc33d5dfe is first bad commit
>> commit bced7ccefa08512c54a6d146658ff7dbc33d5dfe
>> Author: Kumar Gala <galak@kernel.crashing.org>
>> Date:   Fri Feb 6 08:08:06 2009 -0600
>>
>>   ppc: Fix roll over bug in flush_cache()
>>
>>   If we call flush_cache(0xfffff000, 0x1000) it would never
>>   terminate the loop since end = 0xffffffff and we'd roll over
>>   our counter from 0xfffffe0 to 0 (assuming a 32-byte cache line)
>>
>>   Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
>>
>> the extra checks this patch makes makes flush_cache() consume a mere
>> 16
>> more bytes, which makes the SIMPC8313 build fail.
>>
>> I don't see an easy way out of this that satisfies everyone.  Ideas?
>>
>> Kim
>
> what params is flush_cache() being called width on SIMC8313?

As I read back through the thread I see its not the change in runtime  
its the fact that the code is bigger that is causing issues.  I can't  
really help on that front.

- k

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-18  1:25       ` Kim Phillips
  2009-02-18  2:29         ` Kumar Gala
@ 2009-02-18 17:20         ` Scott Wood
  2009-02-18 18:25           ` Kim Phillips
  1 sibling, 1 reply; 10+ messages in thread
From: Scott Wood @ 2009-02-18 17:20 UTC (permalink / raw)
  To: u-boot

On Tue, Feb 17, 2009 at 07:25:50PM -0600, Kim Phillips wrote:
> the extra checks this patch makes makes flush_cache() consume a mere 16
> more bytes, which makes the SIMPC8313 build fail.
> 
> I don't see an easy way out of this that satisfies everyone.  Ideas?

Trim some bytes from elsewhere.  Statically determine large v. small
page, for example.

-Scott

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1
  2009-02-18 17:20         ` Scott Wood
@ 2009-02-18 18:25           ` Kim Phillips
  0 siblings, 0 replies; 10+ messages in thread
From: Kim Phillips @ 2009-02-18 18:25 UTC (permalink / raw)
  To: u-boot

On Wed, 18 Feb 2009 11:20:18 -0600
Scott Wood <scottwood@freescale.com> wrote:

> On Tue, Feb 17, 2009 at 07:25:50PM -0600, Kim Phillips wrote:
> > the extra checks this patch makes makes flush_cache() consume a mere 16
> > more bytes, which makes the SIMPC8313 build fail.
> > 
> > I don't see an easy way out of this that satisfies everyone.  Ideas?
> 
> Trim some bytes from elsewhere.  Statically determine large v. small
> page, for example.

thanks, turns out a pending patch from Ron already fixes it:

http://lists.denx.de/pipermail/u-boot/2009-February/047793.html

Kim

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-02-18 18:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-11 18:26 [U-Boot] [PATCH 08/12] 83xx, kmeter: QE_ENET10 errata for Silicon Revision 2.1 Heiko Schocher
2009-02-17  1:37 ` Kim Phillips
2009-02-17  7:07   ` Heiko Schocher
2009-02-17  8:54     ` Heiko Schocher
2009-02-18  1:25       ` Kim Phillips
2009-02-18  2:29         ` Kumar Gala
2009-02-18  3:30           ` Kumar Gala
2009-02-18 17:20         ` Scott Wood
2009-02-18 18:25           ` Kim Phillips
2009-02-17 17:51   ` Scott Wood

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox