]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/ibl.git/blobdiff - src/util/i2cConfig/i2cConfig.gel
C64x: Updates to gel file for NAND boot
[keystone-rtos/ibl.git] / src / util / i2cConfig / i2cConfig.gel
index bba41bcab8661375b320cdd958794800eec84b5a..ab9acb8851fa2f681545f5423884ad93e75108d3 100755 (executable)
 #define ibl_EVM_C6457L  0x20   /**< C6457 Low Cost EVM */
 #define ibl_EVM_C6472L  0x30   /**< C6472 Low Cost EVM */
 #define ibl_EVM_C6474L  0x40   /**< C6474 Low Cost EVM */
+#define ibl_EVM_C6474M  0x41   /**< C6474 Mez EVM */
 #define ibl_EVM_C6670L  0x50   /**< C6670 Low Cost EVM */
 #define ibl_EVM_C6678L  0x60   /**< C6678 Low Cost EVM */
     
 /* @} */  
 
+menuitem "EVM c6472 IBL NAND";
+
+hotmenu setConfig_c6472_nand()
+{
+    ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6472L;
+
+    ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
+    ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].mult          = 28;
+    ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 700;
+
+    /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
+    ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
+
+    /* The network PLL. The multipliers/dividers are fixed */
+    ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
+
+    /* EMIF configuration. The values are for DDR at 533 MHz  */
+    ibl.ddrConfig.configDdr = TRUE;
+
+    ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538832; /* timing, 32bit wide */
+    ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x0000073B; /* Refresh 533Mhz */ 
+    ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x47245BD2; /* Timing 1 */
+    ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0125DC44; /* Timing 2 */
+    ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
+
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
+
+    ibl.bootModes[0].u.nandBoot.bootFormat             = ibl_BOOT_FORMAT_BBLOB;
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][0]        = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][0]        = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
+    ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
+
+    ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0xe0000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0xe0000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0xe0000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0xe0000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0xe0000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0xe0000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0xe0000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0xe0000000;       /* Image 1 branch address after loading in BE mode */
+
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
+    ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
+    ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
+    ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
+
+    /* Alternative bootMode not configured for now */
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+
+    ibl.chkSum = 0;
+}
+
 menuitem "EVM c6472 IBL";
 
 hotmenu setConfig_c6472()
 {
     ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6472L;
 
     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
@@ -106,8 +198,8 @@ hotmenu setConfig_c6472()
     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
 
     /* SGMII not present */
-       ibl.sgmiiConfig[0].configure = FALSE;
-       ibl.sgmiiConfig[1].configure = FALSE;
+    ibl.sgmiiConfig[0].configure = FALSE;
+    ibl.sgmiiConfig[1].configure = FALSE;
 
     /* MDIO configuration */
     ibl.mdioConfig.nMdioOps = 8;
@@ -127,14 +219,14 @@ hotmenu setConfig_c6472()
     /* spiConfig and emifConfig not needed */
 
     /* Ethernet configuration for Boot mode 0 */
-       ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
-       ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
-       ibl.bootModes[0].port     = 0;
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
 
     /* Bootp is disabled. The server and file name are provided here */
     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpServerIp = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpFileName = FALSE;
+    ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
+    ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
     /* Even though the entire range of DDR2 is chosen, the load will
@@ -173,8 +265,8 @@ hotmenu setConfig_c6472()
     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
 
     /* Alternative bootMode not configured for now */
-       ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
-
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+    
     ibl.chkSum = 0;
 }
 
@@ -184,6 +276,7 @@ menuitem "EVM c6474 Mez IBL";
 hotmenu setConfig_c6474()
 {
     ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6474M;
 
     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
@@ -207,7 +300,7 @@ hotmenu setConfig_c6474()
     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
 
     /* SGMII 0 is present */
-       ibl.sgmiiConfig[0].configure = TRUE;
+    ibl.sgmiiConfig[0].configure = TRUE;
     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
     ibl.sgmiiConfig[0].control       = 0x20;
     ibl.sgmiiConfig[0].txConfig      = 0x00000ea3;
@@ -215,7 +308,7 @@ hotmenu setConfig_c6474()
     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
 
     /* There is no port 1 on the 6474 */
-       ibl.sgmiiConfig[1].configure = FALSE;
+    ibl.sgmiiConfig[1].configure = FALSE;
 
     /* MDIO configuration */
     ibl.mdioConfig.nMdioOps = 8;
@@ -235,14 +328,14 @@ hotmenu setConfig_c6474()
     /* spiConfig and emifConfig not needed */
 
     /* Ethernet configuration for Boot mode 0 */
-       ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
-       ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
-       ibl.bootModes[0].port     = 0;
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
 
     /* Bootp is disabled. The server and file name are provided here */
     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpServerIp = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpFileName = FALSE;
+    ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
+    ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    10,218,109,35);
@@ -281,7 +374,97 @@ hotmenu setConfig_c6474()
     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
 
     /* Alternative bootMode not configured for now */
-       ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+
+    ibl.chkSum = 0;
+}
+
+menuitem "EVM c6474 Lite EVM IBL NAND";
+
+hotmenu setConfig_c6474lite_nand()
+{
+    ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6474L;
+
+    ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
+    ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
+    ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
+
+    /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
+    ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
+
+    /* The network PLL. The multipliers/dividers are fixed */
+    ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
+
+    /* EMIF configuration. The values are for DDR at 533 MHz  */
+    ibl.ddrConfig.configDdr = TRUE;
+
+    ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
+    ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
+    ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
+    ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
+    ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
+
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
+
+    ibl.bootModes[0].u.nandBoot.bootFormat             = ibl_BOOT_FORMAT_BBLOB;
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][0]        = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][0]        = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
+    ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
+
+    ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
+
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
+    ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
+    ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
+    ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
+
+    /* Alternative bootMode not configured for now */
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
 
     ibl.chkSum = 0;
 }
@@ -291,6 +474,7 @@ menuitem "EVM c6474 Lite EVM IBL";
 hotmenu setConfig_c6474lite()
 {
     ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6474L;
 
     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
@@ -314,7 +498,7 @@ hotmenu setConfig_c6474lite()
     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
 
     /* SGMII 0 is present */
-       ibl.sgmiiConfig[0].configure = TRUE;
+    ibl.sgmiiConfig[0].configure = TRUE;
     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
     ibl.sgmiiConfig[0].control       = 0x20;
     ibl.sgmiiConfig[0].txConfig      = 0x00000e23;
@@ -322,7 +506,7 @@ hotmenu setConfig_c6474lite()
     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
 
     /* There is no port 1 on the 6474 */
-       ibl.sgmiiConfig[1].configure = FALSE;
+    ibl.sgmiiConfig[1].configure = FALSE;
 
     /* MDIO configuration */
     ibl.mdioConfig.nMdioOps = 5;
@@ -334,19 +518,19 @@ hotmenu setConfig_c6474lite()
     ibl.mdioConfig.mdio[2] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
 
     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
-    ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x9140;
+    ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x8140;
 
     /* spiConfig and emifConfig not needed */
 
     /* Ethernet configuration for Boot mode 0 */
-       ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
-       ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
-       ibl.bootModes[0].port     = 0;
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
 
     /* Bootp is disabled. The server and file name are provided here */
     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpServerIp = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpFileName = FALSE;
+    ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
+    ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,114);
@@ -387,7 +571,98 @@ hotmenu setConfig_c6474lite()
     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
 
     /* Alternative bootMode not configured for now */
-       ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+
+    ibl.chkSum = 0;
+}
+
+
+menuitem "EVM c6457 EVM IBL NAND";
+
+hotmenu setConfig_c6457_nand()
+{
+    ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6457L;
+
+    ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
+    ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
+    ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
+    ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
+
+    /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
+    ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
+
+    /* The network PLL. The multipliers/dividers are fixed */
+    ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
+
+    /* EMIF configuration */
+    ibl.ddrConfig.configDdr = TRUE;
+
+    ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
+    ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a0e; /* Refresh 333Mhz */ 
+    ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x832474da; /* Timing 1 */
+    ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0144c742; /* Timing 2 */
+    ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x001800C6;
+
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
+
+    ibl.bootModes[0].u.nandBoot.bootFormat             = ibl_BOOT_FORMAT_BBLOB;
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][0]        = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[0][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][0]        = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
+    ibl.bootModes[0].u.nandBoot.bootAddress[1][1]        = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
+    ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
+
+    ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
+
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
+    ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
+    ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
+    ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
+    ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
+    ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
+    ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
+
+    ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
+    ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
+
+    /* Alternative bootMode not configured for now */
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
 
     ibl.chkSum = 0;
 }
@@ -397,6 +672,7 @@ menuitem "EVM c6457 EVM IBL";
 hotmenu setConfig_c6457()
 {
     ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6457L;
 
     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
@@ -420,7 +696,7 @@ hotmenu setConfig_c6457()
     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x001800C6;
 
     /* SGMII 0 is present */
-       ibl.sgmiiConfig[0].configure = TRUE;
+    ibl.sgmiiConfig[0].configure = TRUE;
     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
     ibl.sgmiiConfig[0].control       = 0x20;
     ibl.sgmiiConfig[0].txConfig      = 0x00000e21;
@@ -428,7 +704,7 @@ hotmenu setConfig_c6457()
     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
 
     /* There is no port 1 on the 6457 */
-       ibl.sgmiiConfig[1].configure = FALSE;
+    ibl.sgmiiConfig[1].configure = FALSE;
 
     /* MDIO configuration */
     ibl.mdioConfig.nMdioOps = 5;
@@ -444,14 +720,14 @@ hotmenu setConfig_c6457()
     /* spiConfig and emifConfig not needed */
 
     /* Ethernet configuration for Boot mode 0 */
-       ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
-       ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
-       ibl.bootModes[0].port = 0;
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port = 0;
 
     /* Bootp is disabled. The server and file name are provided here */
     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpServerIp = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpFileName = FALSE;
+    ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
+    ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,115);
@@ -491,7 +767,7 @@ hotmenu setConfig_c6457()
     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
 
     /* Alternative bootMode not configured for now */
-       ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
 
     ibl.chkSum = 0;
 }
@@ -501,6 +777,7 @@ menuitem "EVM c6455 IBL";
 hotmenu setConfig_c6455()
 {
     ibl.iblMagic = ibl_MAGIC_VALUE;
+    ibl.iblEvmType = ibl_EVM_C6455L;
 
     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
@@ -524,8 +801,8 @@ hotmenu setConfig_c6455()
     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x00000005; /* PHY read latency for CAS 4 is 4 + 2 - 1 */
 
     /* SGMII not present */
-       ibl.sgmiiConfig[0].configure = FALSE;
-       ibl.sgmiiConfig[1].configure = FALSE;
+    ibl.sgmiiConfig[0].configure = FALSE;
+    ibl.sgmiiConfig[1].configure = FALSE;
 
     /* MDIO configuration */
     ibl.mdioConfig.nMdioOps = 0;
@@ -537,14 +814,14 @@ hotmenu setConfig_c6455()
     /* spiConfig and emifConfig not needed */
 
     /* Ethernet configuration for Boot mode 0 */
-       ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
-       ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
-       ibl.bootModes[0].port     = 0;
+    ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
+    ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
+    ibl.bootModes[0].port     = 0;
 
     /* Bootp is disabled. The server and file name are provided here */
     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpServerIp = FALSE;
-    ibl.bootModes[0].u.ethBoot.useBootpFileName = FALSE;
+    ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
+    ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,118);
@@ -584,7 +861,7 @@ hotmenu setConfig_c6455()
     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
 
     /* Alternative bootMode not configured for now */
-       ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
+    ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
 
     ibl.chkSum = 0;
 }
@@ -684,31 +961,48 @@ hotmenu setConfig_c6678_main()
        ibl.bootModes[0].port     = 0;
 
        ibl.bootModes[0].u.norBoot.bootFormat   = ibl_BOOT_FORMAT_ELF;
-       ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;
-       ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;
+       ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;            /* Image 0 NOR offset byte address in LE mode */ 
+       ibl.bootModes[0].u.norBoot.bootAddress[0][1]    = 0xA00000;     /* Image 1 NOR offset byte address in LE mode  */
+       ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;            /* Image 0 NOR offset byte address in BE mode */ 
+       ibl.bootModes[0].u.norBoot.bootAddress[1][1]    = 0xA00000;     /* Image 1 NOR offset byte address in BE mode  */
        ibl.bootModes[0].u.norBoot.interface    = ibl_PMEM_IF_SPI;
-    ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
+    ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
 
     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NAND;
     ibl.bootModes[1].priority = ibl_HIGHEST_PRIORITY;
     ibl.bootModes[1].port     = 0;
 
     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_BBLOB;
-    ibl.bootModes[1].u.nandBoot.bootAddress[0][0]        = 0x4000;
-    ibl.bootModes[1].u.nandBoot.bootAddress[1][0]        = 0x4000;
+    ibl.bootModes[1].u.nandBoot.bootAddress[0][0]        = 0x4000;         /* Image 0 NAND offset address (block 1) in LE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[0][1]        = 0x2000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[1][0]        = 0x4000;         /* Image 0 NAND offset address (block 1) in BE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[1][1]        = 0x2000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
     ibl.bootModes[1].u.nandBoot.interface         = ibl_PMEM_IF_CHIPSEL_2;
 
-    ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xFFC000;         /* Image 0 size in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].sizeBytes     = 0xFFC000;         /* Image 1 size in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xFFC000;         /* Image 0 size in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].sizeBytes     = 0xFFC000;         /* Image 1 size in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
+
 
     ibl.bootModes[1].u.nandBoot.nandInfo.busWidthBits  = 8;
     ibl.bootModes[1].u.nandBoot.nandInfo.pageSizeBytes = 512;
@@ -746,8 +1040,8 @@ hotmenu setConfig_c6678_main()
        ibl.bootModes[2].port     = ibl_PORT_SWITCH_ALL;
 
        ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
-       ibl.bootModes[2].u.ethBoot.useBootpServerIp = FALSE;
-       ibl.bootModes[2].u.ethBoot.useBootpFileName = FALSE;
+       ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE;
+       ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE;
        ibl.bootModes[2].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
 
@@ -781,11 +1075,11 @@ hotmenu setConfig_c6678_main()
     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
 
-    ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
+    ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Load start address */
+    ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0x20000000;
+    ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Branch address after loading */
 
-       ibl.chkSum = 0;
+    ibl.chkSum = 0;
 }
 
 menuitem "EVM c6670 IBL";
@@ -882,31 +1176,48 @@ hotmenu setConfig_c6670_main()
        ibl.bootModes[0].port     = 0;
 
        ibl.bootModes[0].u.norBoot.bootFormat   = ibl_BOOT_FORMAT_ELF;
-       ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;
-       ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;
+       ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;            /* Image 0 NOR offset byte address in LE mode */ 
+       ibl.bootModes[0].u.norBoot.bootAddress[0][1]    = 0xA00000;     /* Image 1 NOR offset byte address in LE mode  */
+       ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;            /* Image 0 NOR offset byte address in BE mode */ 
+       ibl.bootModes[0].u.norBoot.bootAddress[1][1]    = 0xA00000;     /* Image 1 NOR offset byte address in BE mode  */
        ibl.bootModes[0].u.norBoot.interface    = ibl_PMEM_IF_SPI;
-    ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
+    ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
+    ibl.bootModes[0].u.norBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
 
     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NAND;
     ibl.bootModes[1].priority = ibl_HIGHEST_PRIORITY;
     ibl.bootModes[1].port     = 0;
 
     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_BBLOB;
-    ibl.bootModes[1].u.nandBoot.bootAddress[0][0]        = 0x4000;
-    ibl.bootModes[1].u.nandBoot.bootAddress[1][0]        = 0x4000;
+    ibl.bootModes[1].u.nandBoot.bootAddress[0][0]        = 0x4000;         /* Image 0 NAND offset address (block 1) in LE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[0][1]        = 0x2000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[1][0]        = 0x4000;         /* Image 0 NAND offset address (block 1) in BE mode */
+    ibl.bootModes[1].u.nandBoot.bootAddress[1][1]        = 0x2000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
     ibl.bootModes[1].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
 
-    ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Base address of DDR2 */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xFFC000;         /* Image 0 size in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].sizeBytes     = 0xFFC000;         /* Image 1 size in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xFFC000;         /* Image 0 size mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].sizeBytes     = 0xFFC000;         /* Image 1 size in BE mode */
+    ibl.bootModes[1].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
+
 
     ibl.bootModes[1].u.nandBoot.nandInfo.busWidthBits  = 8;
     ibl.bootModes[1].u.nandBoot.nandInfo.pageSizeBytes = 512;
@@ -944,8 +1255,8 @@ hotmenu setConfig_c6670_main()
        ibl.bootModes[2].port     = ibl_PORT_SWITCH_ALL;
 
        ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
-       ibl.bootModes[2].u.ethBoot.useBootpServerIp = FALSE;
-       ibl.bootModes[2].u.ethBoot.useBootpFileName = FALSE;
+       ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE;
+       ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE;
        ibl.bootModes[2].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
 
 
@@ -979,10 +1290,10 @@ hotmenu setConfig_c6670_main()
     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
 
-    ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
-    ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0xA00000;         /* 10 MB */
-    ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
+    ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Load start address */
+    ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0x20000000;
+    ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Branch address after loading */
 
-       ibl.chkSum = 0;
+    ibl.chkSum = 0;
 }