From: Mark A. Greer <[EMAIL PROTECTED]>

The prpmc2800 bootwrapper code currently overwrites the DTS' user FLASH
size with a predetermined value.  Intead make it use whatever is specified
in the DTS unless the prpmc2800 variant the bootwrapper is running on has
no user FLASH.  In that case, set the user FLASH size to 0.

Signed-off-by: Mark A. Greer <[EMAIL PROTECTED]>
---
 arch/powerpc/boot/prpmc2800.c |   54 ++++++++++++++++----------------
 1 file changed, 28 insertions(+), 26 deletions(-)

diff --git a/arch/powerpc/boot/prpmc2800.c b/arch/powerpc/boot/prpmc2800.c
index 9614e1d..a8b3213 100644
--- a/arch/powerpc/boot/prpmc2800.c
+++ b/arch/powerpc/boot/prpmc2800.c
@@ -58,7 +58,7 @@ struct prpmc2800_board_info {
        u32 core_speed;
        u32 mem_size;
        u32 boot_flash;
-       u32 user_flash;
+       u8 has_user_flash;
 };
 
 static struct prpmc2800_board_info prpmc2800_board_info[] = {
@@ -73,7 +73,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = {
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 1*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -86,7 +86,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = {
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 0,
-               .user_flash     = 0,
+               .has_user_flash = 0,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -99,7 +99,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = {
                .core_speed     = 733*MHz,
                .mem_size       = 512*MB,
                .boot_flash     = 1*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -112,7 +112,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 1*GB,
                .boot_flash     = 1*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -125,7 +125,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 1*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -138,7 +138,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 733*MHz,
                .mem_size       = 128*MB,
                .boot_flash     = 1*MB,
-               .user_flash     = 0,
+               .has_user_flash = 0,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -151,7 +151,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 256*MB,
                .boot_flash     = 1*MB,
-               .user_flash     = 0,
+               .has_user_flash = 0,
        },
        {
                .model          = BOARD_MODEL_PRPMC280,
@@ -164,7 +164,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 1*GB,
                .boot_flash     = 1*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -177,7 +177,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -190,7 +190,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 0,
-               .user_flash     = 0,
+               .has_user_flash = 0,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -203,7 +203,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 733*MHz,
                .mem_size       = 512*MB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -216,7 +216,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 1*GB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -229,7 +229,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 512*MB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -242,7 +242,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 733*MHz,
                .mem_size       = 128*MB,
                .boot_flash     = 2*MB,
-               .user_flash     = 0,
+               .has_user_flash = 0,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -255,7 +255,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 1*GHz,
                .mem_size       = 2*GB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
        {
                .model          = BOARD_MODEL_PRPMC2800,
@@ -268,7 +268,7 @@ static struct prpmc2800_board_info prpmc2800_board_info[] = 
{
                .core_speed     = 733*MHz,
                .mem_size       = 1*GB,
                .boot_flash     = 2*MB,
-               .user_flash     = 64*MB,
+               .has_user_flash = 1,
        },
 };
 
@@ -451,15 +451,17 @@ static void prpmc2800_fixups(void)
                setprop(devp, "model", "mv64362", strlen("mv64362") + 1);
        }
 
-       /* Set User FLASH size */
-       devp = finddevice("/mv64x60/[EMAIL PROTECTED]");
-       if (devp == NULL)
-               fatal("Error: Missing User FLASH device tree node\n\r");
-       rc = getprop(devp, "reg", v, sizeof(v));
-       if (rc != sizeof(v))
-               fatal("Error: Can't find User FLASH reg property\n\r");
-       v[1] = bip->user_flash;
-       setprop(devp, "reg", v, sizeof(v));
+       /* Some PrPMC2800 variants have no User FLASH */
+       if (!bip->has_user_flash) {
+               devp = finddevice("/mv64x60/[EMAIL PROTECTED]");
+               if (devp != NULL) {
+                       rc = getprop(devp, "reg", v, sizeof(v));
+                       if (rc == sizeof(v)) {
+                               v[1] = 0;
+                               setprop(devp, "reg", v, sizeof(v));
+                       }
+               }
+       }
 }
 
 #define MV64x60_MPP_CNTL_0     0xf000
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to