From 70fab1908fc1734a403711eaabbef546bc4b77dc Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Tue, 13 May 2008 20:22:01 +0200 Subject: [PATCH 1/3] ppc4xx: Add 405EX(r) revision C PVR definitions and detection code Signed-off-by: Stefan Roese --- board/amcc/kilauea/kilauea.c | 19 ++++++++++++------- cpu/ppc4xx/cpu.c | 20 ++++++++++++++++++++ include/asm-ppc/processor.h | 12 ++++++++---- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/board/amcc/kilauea/kilauea.c b/board/amcc/kilauea/kilauea.c index 37ef06ef2..d806a412e 100644 --- a/board/amcc/kilauea/kilauea.c +++ b/board/amcc/kilauea/kilauea.c @@ -230,14 +230,22 @@ int misc_init_r(void) return 0; } -int board_emac_count(void) +static int is_405exr(void) { u32 pvr = get_pvr(); + if (pvr & 0x00000004) + return 0; /* bit 2 set -> 405EX */ + + return 1; /* bit 2 cleared -> 405EXr */ +} + +int board_emac_count(void) +{ /* * 405EXr only has one EMAC interface, 405EX has two */ - if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA)) + if (is_405exr()) return 1; else return 2; @@ -245,12 +253,10 @@ int board_emac_count(void) static int board_pcie_count(void) { - u32 pvr = get_pvr(); - /* * 405EXr only has one EMAC interface, 405EX has two */ - if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA)) + if (is_405exr()) return 1; else return 2; @@ -259,9 +265,8 @@ static int board_pcie_count(void) int checkboard (void) { char *s = getenv("serial#"); - u32 pvr = get_pvr(); - if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA)) + if (is_405exr()) printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board"); else printf("Board: Kilauea - AMCC PPC405EX Evaluation Board"); diff --git a/cpu/ppc4xx/cpu.c b/cpu/ppc4xx/cpu.c index 54cc25679..39f439df9 100644 --- a/cpu/ppc4xx/cpu.c +++ b/cpu/ppc4xx/cpu.c @@ -346,6 +346,26 @@ int checkcpu (void) strcpy(addstr, "No Security support"); break; + case PVR_405EX1_RC: + puts("EX Rev. C"); + strcpy(addstr, "Security support"); + break; + + case PVR_405EX2_RC: + puts("EX Rev. C"); + strcpy(addstr, "No Security support"); + break; + + case PVR_405EXR1_RC: + puts("EXr Rev. C"); + strcpy(addstr, "Security support"); + break; + + case PVR_405EXR2_RC: + puts("EXr Rev. C"); + strcpy(addstr, "No Security support"); + break; + #if defined(CONFIG_440) case PVR_440GP_RB: puts("GP Rev. B"); diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h index 4c049a5e9..8bdfb9ddf 100644 --- a/include/asm-ppc/processor.h +++ b/include/asm-ppc/processor.h @@ -772,10 +772,14 @@ #define PVR_405EP_RA 0x51210950 #define PVR_405GPR_RB 0x50910951 #define PVR_405EZ_RA 0x41511460 -#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A with Security */ -#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A without Security */ -#define PVR_405EX1_RA 0x12911477 /* 405EX rev A with Security */ -#define PVR_405EX2_RA 0x12911475 /* 405EX rev A without Security */ +#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A/B with Security */ +#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */ +#define PVR_405EX1_RA 0x12911477 /* 405EX rev A/B with Security */ +#define PVR_405EX2_RA 0x12911475 /* 405EX rev A/B without Security */ +#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */ +#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */ +#define PVR_405EX1_RC 0x1291147F /* 405EX rev C with Security */ +#define PVR_405EX2_RC 0x1291147D /* 405EX rev C without Security */ #define PVR_440GP_RB 0x40120440 #define PVR_440GP_RC 0x40120481 #define PVR_440EP_RA 0x42221850 From 085551c05ca09e6c491ea11a1c6727a36776a545 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 14 May 2008 10:32:32 +0200 Subject: [PATCH 2/3] ppc4xx: Individual handling of ddr2_fixed.c for canyonlands_nand build Canyonlands has a file ddr2_fixed.c which needs special treatment when building in separate directory. It has to be linked to build directory otherwise it is not seen. Signed-off-by: Stefan Roese --- nand_spl/board/amcc/canyonlands/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/nand_spl/board/amcc/canyonlands/Makefile b/nand_spl/board/amcc/canyonlands/Makefile index 1ec111230..47c7d02c3 100644 --- a/nand_spl/board/amcc/canyonlands/Makefile +++ b/nand_spl/board/amcc/canyonlands/Makefile @@ -30,7 +30,7 @@ AFLAGS += -DCONFIG_NAND_SPL CFLAGS += -DCONFIG_NAND_SPL SOBJS := start.o -SOBJS += init.o resetvec.o +SOBJS += init.o SOBJS += resetvec.o COBJS := ddr2_fixed.o COBJS += nand_boot.o @@ -89,6 +89,12 @@ $(obj)nand_ecc.c: @rm -f $(obj)nand_ecc.c ln -s $(SRCTREE)/drivers/mtd/nand/nand_ecc.c $(obj)nand_ecc.c +ifneq ($(OBJTREE), $(SRCTREE)) +$(obj)ddr2_fixed.c: + @rm -f $(obj)ddr2_fixed.c + ln -s $(SRCTREE)/nand_spl/board/$(BOARDDIR)/ddr2_fixed.c $(obj)ddr2_fixed.c +endif + ######################################################################### $(obj)%.o: $(obj)%.S From 2dd7082e06d580404010b06fe4e0e8b7038a00c8 Mon Sep 17 00:00:00 2001 From: Stefan Roese Date: Wed, 14 May 2008 13:40:03 +0200 Subject: [PATCH 3/3] ppc4xx: Fix bogus Canyonlands config.mk This patch fixes the canyonlands config.mk file to enable correct out-of-tree builds. Thanks to Wolfgang Denk for spotting this. Signed-off-by: Stefan Roese --- board/amcc/canyonlands/config.mk | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/board/amcc/canyonlands/config.mk b/board/amcc/canyonlands/config.mk index 1e4bbc47e..2330cae92 100644 --- a/board/amcc/canyonlands/config.mk +++ b/board/amcc/canyonlands/config.mk @@ -24,20 +24,12 @@ # AMCC 460EX/460GT Evaluation Board (Canyonlands) board # -sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp +sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp ifndef TEXT_BASE TEXT_BASE = 0xFFFA0000 endif -ifeq ($(CONFIG_NAND_U_BOOT),y) -LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds -endif - -ifeq ($(CONFIG_PCIBOOT_U_BOOT),y) -LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds -endif - PLATFORM_CPPFLAGS += -DCONFIG_440=1 ifeq ($(debug),1)