Skip to content
Snippets Groups Projects
Commit 70fab190 authored by Stefan Roese's avatar Stefan Roese
Browse files

ppc4xx: Add 405EX(r) revision C PVR definitions and detection code


Signed-off-by: default avatarStefan Roese <sr@denx.de>
parent 65dcfa79
No related branches found
No related tags found
No related merge requests found
...@@ -230,14 +230,22 @@ int misc_init_r(void) ...@@ -230,14 +230,22 @@ int misc_init_r(void)
return 0; return 0;
} }
int board_emac_count(void) static int is_405exr(void)
{ {
u32 pvr = get_pvr(); 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 * 405EXr only has one EMAC interface, 405EX has two
*/ */
if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA)) if (is_405exr())
return 1; return 1;
else else
return 2; return 2;
...@@ -245,12 +253,10 @@ int board_emac_count(void) ...@@ -245,12 +253,10 @@ int board_emac_count(void)
static int board_pcie_count(void) static int board_pcie_count(void)
{ {
u32 pvr = get_pvr();
/* /*
* 405EXr only has one EMAC interface, 405EX has two * 405EXr only has one EMAC interface, 405EX has two
*/ */
if ((pvr == PVR_405EXR1_RA) || (pvr == PVR_405EXR2_RA)) if (is_405exr())
return 1; return 1;
else else
return 2; return 2;
...@@ -259,9 +265,8 @@ static int board_pcie_count(void) ...@@ -259,9 +265,8 @@ static int board_pcie_count(void)
int checkboard (void) int checkboard (void)
{ {
char *s = getenv("serial#"); 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"); printf("Board: Haleakala - AMCC PPC405EXr Evaluation Board");
else else
printf("Board: Kilauea - AMCC PPC405EX Evaluation Board"); printf("Board: Kilauea - AMCC PPC405EX Evaluation Board");
......
...@@ -346,6 +346,26 @@ int checkcpu (void) ...@@ -346,6 +346,26 @@ int checkcpu (void)
strcpy(addstr, "No Security support"); strcpy(addstr, "No Security support");
break; 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) #if defined(CONFIG_440)
case PVR_440GP_RB: case PVR_440GP_RB:
puts("GP Rev. B"); puts("GP Rev. B");
......
...@@ -772,10 +772,14 @@ ...@@ -772,10 +772,14 @@
#define PVR_405EP_RA 0x51210950 #define PVR_405EP_RA 0x51210950
#define PVR_405GPR_RB 0x50910951 #define PVR_405GPR_RB 0x50910951
#define PVR_405EZ_RA 0x41511460 #define PVR_405EZ_RA 0x41511460
#define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A with Security */ #define PVR_405EXR1_RA 0x12911473 /* 405EXr rev A/B with Security */
#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A without Security */ #define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */
#define PVR_405EX1_RA 0x12911477 /* 405EX rev A with Security */ #define PVR_405EX1_RA 0x12911477 /* 405EX rev A/B with Security */
#define PVR_405EX2_RA 0x12911475 /* 405EX rev A without 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_RB 0x40120440
#define PVR_440GP_RC 0x40120481 #define PVR_440GP_RC 0x40120481
#define PVR_440EP_RA 0x42221850 #define PVR_440EP_RA 0x42221850
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment