C64x: Updates to gel file for NAND boot
[keystone-rtos/ibl.git] / src / util / i2cConfig / i2cConfig.gel
1 #define TRUE  1
2 #define FALSE 0
4 #define ibl_MAGIC_VALUE                  0xCEC11EBC
6 #define ibl_HIGHEST_PRIORITY     1  
7 #define ibl_LOWEST_PRIORITY     10
8 #define ibl_DEVICE_NOBOOT       20
10 #define ibl_PORT_SWITCH_ALL     -2
12 #define SETIP(array,i0,i1,i2,i3)      array[0]=(i0);  \
13                                       array[1]=(i1);  \
14                                       array[2]=(i2);  \
15                                       array[3]=(i3)
17 #define  ibl_BOOT_MODE_TFTP     10
18 #define  ibl_BOOT_MODE_NAND     11
19 #define  ibl_BOOT_MODE_NOR      12
20 #define  ibl_BOOT_MODE_NONE     13
23 #define ibl_BOOT_FORMAT_AUTO    0
24 #define ibl_BOOT_FORMAT_NAME    1
25 #define ibl_BOOT_FORMAT_BIS     2
26 #define ibl_BOOT_FORMAT_COFF    3
27 #define ibl_BOOT_FORMAT_ELF     4
28 #define ibl_BOOT_FORMAT_BBLOB    5
29 #define ibl_BOOT_FORMAT_BTBL    6
31 #define  ibl_PMEM_IF_GPIO         0
33 #define  ibl_PMEM_IF_CHIPSEL_2    2   /* EMIF interface using chip select 2, no wait enabled */
34 #define  ibl_PMEM_IF_CHIPSEL_3    3   /* EMIF interface using chip select 3, no wait enabled */
35 #define  ibl_PMEM_IF_CHIPSEL_4    4   /* EMIF interface using chip select 4 */
36 #define  ibl_PMEM_IF_CHIPSEL_5    5   /* EMIF interface using chip select 5 */
38 #define  ibl_PMEM_IF_SPI          100 /* Interface through SPI */
41 #define ibl_MAIN_PLL    0
42 #define ibl_DDR_PLL     1
43 #define ibl_NET_PLL     2
45 #define ibl_EMIF4_ENABLE_sdRamConfig                  (1 <<  0)
46 #define  ibl_EMIF4_ENABLE_sdRamConfig2                (1 <<  1)
47 #define  ibl_EMIF4_ENABLE_sdRamRefreshCtl             (1 <<  2)
48 #define  ibl_EMIF4_ENABLE_sdRamTiming1                (1 <<  3)
49 #define  ibl_EMIF4_ENABLE_sdRamTiming2                (1 <<  4)
50 #define  ibl_EMIF4_ENABLE_sdRamTiming3                (1 <<  5)
51 #define  ibl_EMIF4_ENABLE_lpDdrNvmTiming              (1 <<  6)
52 #define  ibl_EMIF4_ENABLE_powerManageCtl              (1 <<  7)
53 #define  ibl_EMIF4_ENABLE_iODFTTestLogic              (1 <<  8)
54 #define  ibl_EMIF4_ENABLE_performCountCfg             (1 <<  9)
55 #define  ibl_EMIF4_ENABLE_performCountMstRegSel       (1 << 10)
56 #define  ibl_EMIF4_ENABLE_readIdleCtl                 (1 << 11)
57 #define  ibl_EMIF4_ENABLE_sysVbusmIntEnSet            (1 << 12)
58 #define  ibl_EMIF4_ENABLE_sdRamOutImpdedCalCfg        (1 << 13)
59 #define  ibl_EMIF4_ENABLE_tempAlterCfg                (1 << 14)
60 #define  ibl_EMIF4_ENABLE_ddrPhyCtl1                  (1 << 15)
61 #define  ibl_EMIF4_ENABLE_ddrPhyCtl2                  (1 << 16)
62 #define  ibl_EMIF4_ENABLE_priClassSvceMap             (1 << 17)
63 #define  ibl_EMIF4_ENABLE_mstId2ClsSvce1Map           (1 << 18)
64 #define  ibl_EMIF4_ENABLE_mstId2ClsSvce2Map           (1 << 11)
65 #define  ibl_EMIF4_ENABLE_eccCtl                      (1 << 19)
66 #define  ibl_EMIF4_ENABLE_eccRange1                   (1 << 20)
67 #define  ibl_EMIF4_ENABLE_eccRange2                   (1 << 21)
68 #define  ibl_EMIF4_ENABLE_rdWrtExcThresh              (1 << 22)
69 #define  ibl_BOOT_EMIF4_ENABLE_ALL                    0x007fffff
72 #define ibl_EVM_C6455L  0x10    /**< C6455 Low Cost EVM */
73 #define ibl_EVM_C6457L  0x20    /**< C6457 Low Cost EVM */
74 #define ibl_EVM_C6472L  0x30    /**< C6472 Low Cost EVM */
75 #define ibl_EVM_C6474L  0x40    /**< C6474 Low Cost EVM */
76 #define ibl_EVM_C6474M  0x41    /**< C6474 Mez EVM */
77 #define ibl_EVM_C6670L  0x50    /**< C6670 Low Cost EVM */
78 #define ibl_EVM_C6678L  0x60    /**< C6678 Low Cost EVM */
79     
80 /* @} */  
82 menuitem "EVM c6472 IBL NAND";
84 hotmenu setConfig_c6472_nand()
85 {
86     ibl.iblMagic = ibl_MAGIC_VALUE;
87     ibl.iblEvmType = ibl_EVM_C6472L;
89     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
90     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
91     ibl.pllConfig[ibl_MAIN_PLL].mult          = 28;
92     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
93     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 700;
95     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
96     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
98     /* The network PLL. The multipliers/dividers are fixed */
99     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
101     /* EMIF configuration. The values are for DDR at 533 MHz  */
102     ibl.ddrConfig.configDdr = TRUE;
104     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538832; /* timing, 32bit wide */
105     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x0000073B; /* Refresh 533Mhz */ 
106     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x47245BD2; /* Timing 1 */
107     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0125DC44; /* Timing 2 */
108     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
110     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
111     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
112     ibl.bootModes[0].port     = 0;
114     ibl.bootModes[0].u.nandBoot.bootFormat              = ibl_BOOT_FORMAT_BBLOB;
115     ibl.bootModes[0].u.nandBoot.bootAddress[0][0]         = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
116     ibl.bootModes[0].u.nandBoot.bootAddress[0][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
117     ibl.bootModes[0].u.nandBoot.bootAddress[1][0]         = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
118     ibl.bootModes[0].u.nandBoot.bootAddress[1][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
119     ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
121     ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0xe0000000;       /* Image 0 load start address in LE mode */
122     ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
123     ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0xe0000000;       /* Image 0 branch address after loading in LE mode */
124     ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0xe0000000;       /* Image 1 load start address in LE mode */
125     ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
126     ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0xe0000000;       /* Image 1 branch address after loading in LE mode */
127     ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0xe0000000;       /* Image 0 load start address in BE mode */
128     ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
129     ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0xe0000000;       /* Image 0 branch address after loading in BE mode */
130     ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0xe0000000;       /* Image 1 load start address in BE mode */
131     ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
132     ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0xe0000000;       /* Image 1 branch address after loading in BE mode */
135     ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
136     ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
137     ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
138     ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
139     ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
141     ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
142     ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
143     ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
144     ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
145     ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
147     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
148     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
149     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
150     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
151     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
152     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
153     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
154     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
155     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
156     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
158     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
159     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
161     ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
162     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
163     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
164     ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
166     /* Alternative bootMode not configured for now */
167     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
169     ibl.chkSum = 0;
172 menuitem "EVM c6472 IBL";
174 hotmenu setConfig_c6472()
176     ibl.iblMagic = ibl_MAGIC_VALUE;
177     ibl.iblEvmType = ibl_EVM_C6472L;
179     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
180     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
181     ibl.pllConfig[ibl_MAIN_PLL].mult          = 28;
182     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
183     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 700;
185     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
186     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
188     /* The network PLL. The multipliers/dividers are fixed */
189     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
191     /* EMIF configuration. The values are for DDR at 533 MHz  */
192     ibl.ddrConfig.configDdr = TRUE;
194     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538832; /* timing, 32bit wide */
195     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x0000073B; /* Refresh 533Mhz */ 
196     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x47245BD2; /* Timing 1 */
197     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0125DC44; /* Timing 2 */
198     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
200     /* SGMII not present */
201     ibl.sgmiiConfig[0].configure = FALSE;
202     ibl.sgmiiConfig[1].configure = FALSE;
204     /* MDIO configuration */
205     ibl.mdioConfig.nMdioOps = 8;
206     ibl.mdioConfig.mdioClkDiv = 0x20;
207     ibl.mdioConfig.interDelay = 1400;   /* ~2ms at 700 MHz */
209     ibl.mdioConfig.mdio[0] =  (1 << 30) | (27 << 21) | (24 << 16) | 0x848b;
210     ibl.mdioConfig.mdio[1] =  (1 << 30) | (20 << 21) | (24 << 16) | 0x0ce0;
211     ibl.mdioConfig.mdio[2] =  (1 << 30) | (24 << 21) | (24 << 16) | 0x4101;
212     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (24 << 16) | 0x9140;
214     ibl.mdioConfig.mdio[4] =  (1 << 30) | (27 << 21) | (25 << 16) | 0x848b;
215     ibl.mdioConfig.mdio[5] =  (1 << 30) | (20 << 21) | (25 << 16) | 0x0ce0;
216     ibl.mdioConfig.mdio[6] =  (1 << 30) | (24 << 21) | (25 << 16) | 0x4101;
217     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | (25 << 16) | 0x9140;
219     /* spiConfig and emifConfig not needed */
221     /* Ethernet configuration for Boot mode 0 */
222     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
223     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
224     ibl.bootModes[0].port     = 0;
226     /* Bootp is disabled. The server and file name are provided here */
227     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
228     ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
229     ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
230     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
232     /* Even though the entire range of DDR2 is chosen, the load will
233      * stop when the ftp reaches the end of the file */
234     ibl.bootModes[0].u.ethBoot.blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
235     ibl.bootModes[0].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
236     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
238     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,103,200);
239     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.serverIp,  158,218,103,58);
240     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.gatewayIp, 158,218,103,1);
241     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.netmask,   255,255,255,0);
243     /* Leave the hardware address as 0 so the e-fuse value will be used */
244     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 0;
245     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 0;
246     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 0;
247     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 0;
248     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 0;
249     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 0;
251     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[0]  = 'c';
252     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[1]  = '6';
253     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[2]  = '4';
254     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[3]  = '7';
255     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[4]  = '2';
256     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[5]  = '-';
257     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[6]  = 'l';
258     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[7]  = 'e';
259     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[8]  = '.';
260     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[9]  = 'b';
261     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[10] = 'i';
262     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[11] = 'n';
263     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[12] = '\0';
264     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[13] = '\0';
265     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
267     /* Alternative bootMode not configured for now */
268     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
269     
270     ibl.chkSum = 0;
274 menuitem "EVM c6474 Mez IBL";
276 hotmenu setConfig_c6474()
278     ibl.iblMagic = ibl_MAGIC_VALUE;
279     ibl.iblEvmType = ibl_EVM_C6474M;
281     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
282     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
283     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
284     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
285     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
287     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
288     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
290     /* The network PLL. The multipliers/dividers are fixed */
291     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
293     /* EMIF configuration. The values are for DDR at 533 MHz  */
294     ibl.ddrConfig.configDdr = TRUE;
296     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
297     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
298     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
299     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
300     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
302     /* SGMII 0 is present */
303     ibl.sgmiiConfig[0].configure = TRUE;
304     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
305     ibl.sgmiiConfig[0].control       = 0x20;
306     ibl.sgmiiConfig[0].txConfig      = 0x00000ea3;
307     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;
308     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
310     /* There is no port 1 on the 6474 */
311     ibl.sgmiiConfig[1].configure = FALSE;
313     /* MDIO configuration */
314     ibl.mdioConfig.nMdioOps = 8;
315     ibl.mdioConfig.mdioClkDiv = 0x26;
316     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
318     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
319     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
320     ibl.mdioConfig.mdio[2] =  (1 << 30) | (26 << 21) | (13 << 16) | 0x0047;
321     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
323     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | (13 << 16) | 0x8140;
324     ibl.mdioConfig.mdio[5] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
325     ibl.mdioConfig.mdio[6] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
326     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x9140;
328     /* spiConfig and emifConfig not needed */
330     /* Ethernet configuration for Boot mode 0 */
331     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
332     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
333     ibl.bootModes[0].port     = 0;
335     /* Bootp is disabled. The server and file name are provided here */
336     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
337     ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
338     ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
339     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
341     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    10,218,109,35);
342     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.serverIp,  10,218,109,196);
343     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.gatewayIp, 10,218,109,1);
344     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.netmask,   255,255,255,0);
346     /* Set the hardware address as 0 so the e-fuse value will be used */
347     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 0;
348     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 0;
349     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 0;
350     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 0;
351     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 0;
352     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 0;
354     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[0]  = 'c';
355     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[1]  = '6';
356     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[2]  = '4';
357     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[3]  = '7';
358     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[4]  = '4';
359     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[5]  = '-';
360     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[6]  = 'l';
361     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[7]  = 'e';
362     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[8]  = '.';
363     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[9]  = 'b';
364     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[10] = 'i';
365     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[11] = 'n';
366     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[12] = '\0';
367     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[13] = '\0';
368     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
370     /* Even though the entire range of DDR2 is chosen, the load will
371      * stop when the ftp reaches the end of the file */
372     ibl.bootModes[0].u.ethBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
373     ibl.bootModes[0].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
374     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
376     /* Alternative bootMode not configured for now */
377     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
379     ibl.chkSum = 0;
382 menuitem "EVM c6474 Lite EVM IBL NAND";
384 hotmenu setConfig_c6474lite_nand()
386     ibl.iblMagic = ibl_MAGIC_VALUE;
387     ibl.iblEvmType = ibl_EVM_C6474L;
389     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
390     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
391     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
392     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
393     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
395     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
396     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
398     /* The network PLL. The multipliers/dividers are fixed */
399     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
401     /* EMIF configuration. The values are for DDR at 533 MHz  */
402     ibl.ddrConfig.configDdr = TRUE;
404     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
405     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
406     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
407     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
408     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
410     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
411     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
412     ibl.bootModes[0].port     = 0;
414     ibl.bootModes[0].u.nandBoot.bootFormat              = ibl_BOOT_FORMAT_BBLOB;
415     ibl.bootModes[0].u.nandBoot.bootAddress[0][0]         = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
416     ibl.bootModes[0].u.nandBoot.bootAddress[0][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
417     ibl.bootModes[0].u.nandBoot.bootAddress[1][0]         = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
418     ibl.bootModes[0].u.nandBoot.bootAddress[1][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
419     ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
421     ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
422     ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
423     ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
424     ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
425     ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
426     ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
427     ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
428     ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
429     ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
430     ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
431     ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
432     ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
435     ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
436     ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
437     ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
438     ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
439     ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
441     ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
442     ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
443     ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
444     ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
445     ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
447     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
448     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
449     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
450     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
451     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
452     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
453     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
454     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
455     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
456     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
458     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
459     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
461     ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
462     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
463     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
464     ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
466     /* Alternative bootMode not configured for now */
467     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
469     ibl.chkSum = 0;
472 menuitem "EVM c6474 Lite EVM IBL";
474 hotmenu setConfig_c6474lite()
476     ibl.iblMagic = ibl_MAGIC_VALUE;
477     ibl.iblEvmType = ibl_EVM_C6474L;
479     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
480     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
481     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
482     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
483     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
485     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
486     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
488     /* The network PLL. The multipliers/dividers are fixed */
489     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
491     /* EMIF configuration. The values are for DDR at 533 MHz  */
492     ibl.ddrConfig.configDdr = TRUE;
494     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
495     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
496     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
497     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
498     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
500     /* SGMII 0 is present */
501     ibl.sgmiiConfig[0].configure = TRUE;
502     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
503     ibl.sgmiiConfig[0].control       = 0x20;
504     ibl.sgmiiConfig[0].txConfig      = 0x00000e23;
505     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;
506     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
508     /* There is no port 1 on the 6474 */
509     ibl.sgmiiConfig[1].configure = FALSE;
511     /* MDIO configuration */
512     ibl.mdioConfig.nMdioOps = 5;
513     ibl.mdioConfig.mdioClkDiv = 0x20;
514     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
516     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
517     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
518     ibl.mdioConfig.mdio[2] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
520     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
521     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x8140;
523     /* spiConfig and emifConfig not needed */
525     /* Ethernet configuration for Boot mode 0 */
526     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
527     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
528     ibl.bootModes[0].port     = 0;
530     /* Bootp is disabled. The server and file name are provided here */
531     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
532     ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
533     ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
534     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
536     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,114);
537     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.serverIp,  158,218,100,25);
538     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.gatewayIp, 158,218,100,2);
539     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.netmask,   255,255,255,0);
541     /* Set the hardware address as 0 so the e-fuse value will be used */
542     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 0;
543     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 0;
544     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 0;
545     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 0;
546     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 0;
547     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 0;
550     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[0]  = 'c';
551     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[1]  = '6';
552     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[2]  = '4';
553     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[3]  = '7';
554     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[4]  = '4';
555     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[5]  = 'l';
556     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[6]  = '-';
557     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[7]  = 'l';
558     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[8]  = 'e';
559     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[9]  = '.';
560     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[10] = 'b';
561     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[11] = 'i';
562     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[12] = 'n';
563     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[13] = '\0';
564     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
567     /* Even though the entire range of DDR2 is chosen, the load will
568      * stop when the ftp reaches the end of the file */
569     ibl.bootModes[0].u.ethBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
570     ibl.bootModes[0].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
571     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
573     /* Alternative bootMode not configured for now */
574     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
576     ibl.chkSum = 0;
580 menuitem "EVM c6457 EVM IBL NAND";
582 hotmenu setConfig_c6457_nand()
584     ibl.iblMagic = ibl_MAGIC_VALUE;
585     ibl.iblEvmType = ibl_EVM_C6457L;
587     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
588     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
589     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
590     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
591     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
593     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
594     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
596     /* The network PLL. The multipliers/dividers are fixed */
597     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
599     /* EMIF configuration */
600     ibl.ddrConfig.configDdr = TRUE;
602     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
603     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a0e; /* Refresh 333Mhz */ 
604     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x832474da; /* Timing 1 */
605     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0144c742; /* Timing 2 */
606     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x001800C6;
608     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
609     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
610     ibl.bootModes[0].port     = 0;
612     ibl.bootModes[0].u.nandBoot.bootFormat              = ibl_BOOT_FORMAT_BBLOB;
613     ibl.bootModes[0].u.nandBoot.bootAddress[0][0]         = 0x200000;         /* Image 0 NAND offset address (block 1) in LE mode */
614     ibl.bootModes[0].u.nandBoot.bootAddress[0][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
615     ibl.bootModes[0].u.nandBoot.bootAddress[1][0]         = 0x200000;       /* Image 0 NAND offset address (block 1) in BE mode */
616     ibl.bootModes[0].u.nandBoot.bootAddress[1][1]         = 0x4000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
617     ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
619     ibl.bootModes[0].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
620     ibl.bootModes[0].u.nandBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
621     ibl.bootModes[0].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
622     ibl.bootModes[0].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
623     ibl.bootModes[0].u.nandBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
624     ibl.bootModes[0].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
625     ibl.bootModes[0].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
626     ibl.bootModes[0].u.nandBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
627     ibl.bootModes[0].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
628     ibl.bootModes[0].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
629     ibl.bootModes[0].u.nandBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
630     ibl.bootModes[0].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
633     ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
634     ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 2048;
635     ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 64;
636     ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 64;
637     ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 512;
639     ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
640     ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
641     ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 22;
642     ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 16;
643     ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
645     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
646     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
647     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
648     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
649     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
650     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
651     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
652     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
653     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
654     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
656     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 0;
657     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
659     ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
660     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
661     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
662     ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;
664     /* Alternative bootMode not configured for now */
665     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
667     ibl.chkSum = 0;
670 menuitem "EVM c6457 EVM IBL";
672 hotmenu setConfig_c6457()
674     ibl.iblMagic = ibl_MAGIC_VALUE;
675     ibl.iblEvmType = ibl_EVM_C6457L;
677     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
678     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
679     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
680     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
681     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
683     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
684     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
686     /* The network PLL. The multipliers/dividers are fixed */
687     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
689     /* EMIF configuration */
690     ibl.ddrConfig.configDdr = TRUE;
692     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
693     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a0e; /* Refresh 333Mhz */ 
694     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x832474da; /* Timing 1 */
695     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0144c742; /* Timing 2 */
696     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x001800C6;
698     /* SGMII 0 is present */
699     ibl.sgmiiConfig[0].configure = TRUE;
700     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
701     ibl.sgmiiConfig[0].control       = 0x20;
702     ibl.sgmiiConfig[0].txConfig      = 0x00000e21;
703     ibl.sgmiiConfig[0].rxConfig      = 0x00081021;
704     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
706     /* There is no port 1 on the 6457 */
707     ibl.sgmiiConfig[1].configure = FALSE;
709     /* MDIO configuration */
710     ibl.mdioConfig.nMdioOps = 5;
711     ibl.mdioConfig.mdioClkDiv = 0xa5;
712     ibl.mdioConfig.interDelay = 3000;   /* ~2ms at 1000 MHz */
714     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
715     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
716     ibl.mdioConfig.mdio[2] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
717     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
718     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x8140;
720     /* spiConfig and emifConfig not needed */
722     /* Ethernet configuration for Boot mode 0 */
723     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
724     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
725     ibl.bootModes[0].port = 0;
727     /* Bootp is disabled. The server and file name are provided here */
728     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
729     ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
730     ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
731     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
733     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,115);
734     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.serverIp,  158,218,100,25);
735     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.gatewayIp, 158,218,100,2);
736     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.netmask,   255,255,255,0);
738     /* Set the hardware address as 0 so the e-fuse value will be used */
739     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 0;
740     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 0;
741     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 0;
742     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 0;
743     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 0;
744     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 0;
746     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[0]  = 'c';
747     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[1]  = '6';
748     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[2]  = '4';
749     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[3]  = '5';
750     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[4]  = '7';
751     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[5]  = '-';
752     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[6]  = 'l';
753     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[7]  = 'e';
754     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[8]  = '.';
755     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[9]  = 'b';
756     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[10] = 'i';
757     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[11] = 'n';
758     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[12] = '\0';
759     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[13] = '\0';
760     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
763     /* Even though the entire range of DDR2 is chosen, the load will
764      * stop when the ftp reaches the end of the file */
765     ibl.bootModes[0].u.ethBoot.blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
766     ibl.bootModes[0].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
767     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
769     /* Alternative bootMode not configured for now */
770     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
772     ibl.chkSum = 0;
775 menuitem "EVM c6455 IBL";
777 hotmenu setConfig_c6455()
779     ibl.iblMagic = ibl_MAGIC_VALUE;
780     ibl.iblEvmType = ibl_EVM_C6455L;
782     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
783     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
784     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
785     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
786     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
788     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
789     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
791     /* The network PLL. The multipliers/dividers are fixed */
792     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
794     /* EMIF configuration. The values are for DDR at 500 MHz  */
795     ibl.ddrConfig.configDdr = TRUE;
797     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538822; /* timing, 32bit wide */
798     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x000007a2; /* Refresh 500Mhz */ 
799     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x3edb4b91; /* Timing 1 */
800     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00a2c722; /* Timing 2 */
801     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x00000005; /* PHY read latency for CAS 4 is 4 + 2 - 1 */
803     /* SGMII not present */
804     ibl.sgmiiConfig[0].configure = FALSE;
805     ibl.sgmiiConfig[1].configure = FALSE;
807     /* MDIO configuration */
808     ibl.mdioConfig.nMdioOps = 0;
809     ibl.mdioConfig.mdioClkDiv = 0x20;
810     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
812     ibl.mdioConfig.mdio[0] =  (1 << 30) | (14 << 21) | (0 << 16) | 0xd5d0;
814     /* spiConfig and emifConfig not needed */
816     /* Ethernet configuration for Boot mode 0 */
817     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_TFTP;
818     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
819     ibl.bootModes[0].port     = 0;
821     /* Bootp is disabled. The server and file name are provided here */
822     ibl.bootModes[0].u.ethBoot.doBootp          = FALSE;
823     ibl.bootModes[0].u.ethBoot.useBootpServerIp = TRUE;
824     ibl.bootModes[0].u.ethBoot.useBootpFileName = TRUE;
825     ibl.bootModes[0].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
827     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.ipAddr,    158,218,100,118);
828     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.serverIp,  158,218,100,25);
829     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.gatewayIp, 158,218,100,2);
830     SETIP(ibl.bootModes[0].u.ethBoot.ethInfo.netmask,   255,255,255,0);
832     /* There is no e-fuse mac address. A value must be assigned */
833     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[0] = 10;
834     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[1] = 224;
835     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[2] = 166;
836     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[3] = 102;
837     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[4] = 87;
838     ibl.bootModes[0].u.ethBoot.ethInfo.hwAddress[5] = 25;
841     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[0]  = 'c';
842     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[1]  = '6';
843     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[2]  = '4';
844     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[3]  = '5';
845     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[4]  = '5';
846     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[5]  = '-';
847     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[6]  = 'l';
848     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[7]  = 'e';
849     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[8]  = '.';
850     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[9]  = 'b';
851     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[10] = 'i';
852     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[11] = 'n';
853     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[12] = '\0';
854     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[13] = '\0';
855     ibl.bootModes[0].u.ethBoot.ethInfo.fileName[14] = '\0';
857     /* Even though the entire range of DDR2 is chosen, the load will
858      * stop when the ftp reaches the end of the file */
859     ibl.bootModes[0].u.ethBoot.blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
860     ibl.bootModes[0].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
861     ibl.bootModes[0].u.ethBoot.blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
863     /* Alternative bootMode not configured for now */
864     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NONE;
866     ibl.chkSum = 0;
870 menuitem "EVM c6678 IBL";
872 hotmenu setConfig_c6678_main()
874         ibl.iblMagic = ibl_MAGIC_VALUE;
875         ibl.iblEvmType = ibl_EVM_C6678L;
877         /* Main PLL: 100 MHz reference, 1GHz output */
878         ibl.pllConfig[ibl_MAIN_PLL].doEnable      = 1;
879         ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
880         ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
881         ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 2;
882         ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
884         /* DDR PLL: 66.66 MHz reference, 400 MHz output, for an 800MHz DDR rate */
885         ibl.pllConfig[ibl_DDR_PLL].doEnable       = 0; 
886         ibl.pllConfig[ibl_DDR_PLL].prediv         = 1;
887         ibl.pllConfig[ibl_DDR_PLL].mult           = 12;
888         ibl.pllConfig[ibl_DDR_PLL].postdiv        = 2;
889         ibl.pllConfig[ibl_DDR_PLL].pllOutFreqMhz  = 400;
891     /* Net PLL: 100 MHz reference, 1050 MHz output (followed by a built in divide by 3 to give 350 MHz to PA) */
892         ibl.pllConfig[ibl_NET_PLL].doEnable       = 1;
893         ibl.pllConfig[ibl_NET_PLL].prediv         = 1;
894         ibl.pllConfig[ibl_NET_PLL].mult                   = 21;
895         ibl.pllConfig[ibl_NET_PLL].postdiv        = 2;
896         ibl.pllConfig[ibl_NET_PLL].pllOutFreqMhz  = 1050;
899         ibl.ddrConfig.configDdr = 1;
900         ibl.ddrConfig.uEmif.emif4p0.registerMask = ibl_EMIF4_ENABLE_sdRamConfig | ibl_EMIF4_ENABLE_sdRamRefreshCtl | ibl_EMIF4_ENABLE_sdRamTiming1 | ibl_EMIF4_ENABLE_sdRamTiming2 | ibl_EMIF4_ENABLE_sdRamTiming3 | ibl_EMIF4_ENABLE_ddrPhyCtl1;
902         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig                         = 0x63C452B2;
903         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig2                        = 0;
904         ibl.ddrConfig.uEmif.emif4p0.sdRamRefreshCtl                     = 0x000030D4;
905         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming1                        = 0x0AAAE51B;
906         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming2                        = 0x2A2F7FDA;
907         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming3                        = 0x057F82B8;
908         ibl.ddrConfig.uEmif.emif4p0.lpDdrNvmTiming                      = 0;
909         ibl.ddrConfig.uEmif.emif4p0.powerManageCtl                      = 0;
910         ibl.ddrConfig.uEmif.emif4p0.iODFTTestLogic                      = 0;
911         ibl.ddrConfig.uEmif.emif4p0.performCountCfg                     = 0;
912         ibl.ddrConfig.uEmif.emif4p0.performCountMstRegSel       = 0;
913         ibl.ddrConfig.uEmif.emif4p0.readIdleCtl                         = 0;
914         ibl.ddrConfig.uEmif.emif4p0.sysVbusmIntEnSet            = 0;
915         ibl.ddrConfig.uEmif.emif4p0.sdRamOutImpdedCalCfg        = 0;
916         ibl.ddrConfig.uEmif.emif4p0.tempAlterCfg                        = 0;
917         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl1                          = 0x0010010d;
918         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl2                          = 0;
919         ibl.ddrConfig.uEmif.emif4p0.priClassSvceMap                     = 0;
920         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce1Map           = 0;
921         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce2Map           = 0;
922         ibl.ddrConfig.uEmif.emif4p0.eccCtl                                      = 0;
923         ibl.ddrConfig.uEmif.emif4p0.eccRange1                           = 0;
924         ibl.ddrConfig.uEmif.emif4p0.eccRange2                           = 0;
925         ibl.ddrConfig.uEmif.emif4p0.rdWrtExcThresh                      = 0;
928         ibl.sgmiiConfig[0].configure     = 1;
929         ibl.sgmiiConfig[0].adviseAbility = 1;
930         ibl.sgmiiConfig[0].control               = 1;
931         ibl.sgmiiConfig[0].txConfig      = 0x108a1;
932         ibl.sgmiiConfig[0].rxConfig      = 0x700621;
933         ibl.sgmiiConfig[0].auxConfig     = 0x41;
935         ibl.sgmiiConfig[1].configure     = 1;
936         ibl.sgmiiConfig[1].adviseAbility = 1;
937         ibl.sgmiiConfig[1].control               = 1;
938         ibl.sgmiiConfig[1].txConfig      = 0x108a1;
939         ibl.sgmiiConfig[1].rxConfig      = 0x700621;
940         ibl.sgmiiConfig[1].auxConfig     = 0x41;
942         ibl.mdioConfig.nMdioOps = 0;
944         ibl.spiConfig.addrWidth  = 24;
945         ibl.spiConfig.nPins      = 5;
946         ibl.spiConfig.mode       = 1;
947         ibl.spiConfig.csel       = 2;
948         ibl.spiConfig.c2tdelay   = 1;
949         ibl.spiConfig.busFreqMHz = 20;
951         ibl.emifConfig[0].csSpace    = 2;
952         ibl.emifConfig[0].busWidth   = 8;
953         ibl.emifConfig[0].waitEnable = 0;
955         ibl.emifConfig[1].csSpace    = 0;
956         ibl.emifConfig[1].busWidth   = 0;
957         ibl.emifConfig[1].waitEnable = 0;
959         ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NOR;
960         ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
961         ibl.bootModes[0].port     = 0;
963         ibl.bootModes[0].u.norBoot.bootFormat   = ibl_BOOT_FORMAT_ELF;
964         ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;            /* Image 0 NOR offset byte address in LE mode */ 
965         ibl.bootModes[0].u.norBoot.bootAddress[0][1]    = 0xA00000;     /* Image 1 NOR offset byte address in LE mode  */
966         ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;            /* Image 0 NOR offset byte address in BE mode */ 
967         ibl.bootModes[0].u.norBoot.bootAddress[1][1]    = 0xA00000;     /* Image 1 NOR offset byte address in BE mode  */
968         ibl.bootModes[0].u.norBoot.interface    = ibl_PMEM_IF_SPI;
969     ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
970     ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
971     ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
972     ibl.bootModes[0].u.norBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
973     ibl.bootModes[0].u.norBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
974     ibl.bootModes[0].u.norBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
975     ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
976     ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
977     ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
978     ibl.bootModes[0].u.norBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
979     ibl.bootModes[0].u.norBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
980     ibl.bootModes[0].u.norBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
982     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NAND;
983     ibl.bootModes[1].priority = ibl_HIGHEST_PRIORITY;
984     ibl.bootModes[1].port     = 0;
986     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_BBLOB;
987     ibl.bootModes[1].u.nandBoot.bootAddress[0][0]         = 0x4000;         /* Image 0 NAND offset address (block 1) in LE mode */
988     ibl.bootModes[1].u.nandBoot.bootAddress[0][1]         = 0x2000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
989     ibl.bootModes[1].u.nandBoot.bootAddress[1][0]         = 0x4000;         /* Image 0 NAND offset address (block 1) in BE mode */
990     ibl.bootModes[1].u.nandBoot.bootAddress[1][1]         = 0x2000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
991     ibl.bootModes[1].u.nandBoot.interface         = ibl_PMEM_IF_CHIPSEL_2;
993     ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
994     ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xFFC000;         /* Image 0 size in LE mode */
995     ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
996     ibl.bootModes[1].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
997     ibl.bootModes[1].u.nandBoot.blob[0][1].sizeBytes     = 0xFFC000;         /* Image 1 size in LE mode */
998     ibl.bootModes[1].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
999     ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
1000     ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xFFC000;         /* Image 0 size in BE mode */
1001     ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
1002     ibl.bootModes[1].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
1003     ibl.bootModes[1].u.nandBoot.blob[1][1].sizeBytes     = 0xFFC000;         /* Image 1 size in BE mode */
1004     ibl.bootModes[1].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
1007     ibl.bootModes[1].u.nandBoot.nandInfo.busWidthBits  = 8;
1008     ibl.bootModes[1].u.nandBoot.nandInfo.pageSizeBytes = 512;
1009     ibl.bootModes[1].u.nandBoot.nandInfo.pageEccBytes  = 16;
1010     ibl.bootModes[1].u.nandBoot.nandInfo.pagesPerBlock = 32;
1011     ibl.bootModes[1].u.nandBoot.nandInfo.totalBlocks   = 4096;
1013     ibl.bootModes[1].u.nandBoot.nandInfo.addressBytes  = 4;
1014     ibl.bootModes[1].u.nandBoot.nandInfo.lsbFirst      = TRUE;
1015     ibl.bootModes[1].u.nandBoot.nandInfo.blockOffset   = 14;
1016     ibl.bootModes[1].u.nandBoot.nandInfo.pageOffset    = 9;
1017     ibl.bootModes[1].u.nandBoot.nandInfo.columnOffset  = 0;
1019     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
1020     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
1021     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
1022     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
1023     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
1024     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
1025     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
1026     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
1027     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
1028     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
1029     
1030     ibl.bootModes[1].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 5;
1031     ibl.bootModes[1].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
1033     ibl.bootModes[1].u.nandBoot.nandInfo.resetCommand    = 0xff;
1034     ibl.bootModes[1].u.nandBoot.nandInfo.readCommandPre  = 0;
1035     ibl.bootModes[1].u.nandBoot.nandInfo.readCommandPost = 0;
1036     ibl.bootModes[1].u.nandBoot.nandInfo.postCommand     = FALSE;
1037     
1038         ibl.bootModes[2].bootMode = ibl_BOOT_MODE_TFTP;
1039         ibl.bootModes[2].priority = ibl_HIGHEST_PRIORITY+1;
1040         ibl.bootModes[2].port     = ibl_PORT_SWITCH_ALL;
1042         ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
1043         ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE;
1044         ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE;
1045         ibl.bootModes[2].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
1048     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.ipAddr,    192,168,2,100);
1049     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.serverIp,  192,168,2,101);
1050     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.gatewayIp, 192,168,2,1);
1051     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.netmask,   255,255,255,0);
1053     /* Use the e-fuse value */
1054     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[0] = 0;
1055     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[1] = 0;
1056     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[2] = 0;
1057     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[3] = 0;
1058     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[4] = 0;
1059     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[5] = 0;
1062     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[0]  = 'a';
1063     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[1]  = 'p';
1064     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[2]  = 'p';
1065     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[3]  = '.';
1066     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[4]  = 'o';
1067     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[5]  = 'u';
1068     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[6]  = 't';
1069     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[7]  = '\0';
1070     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[8]  = '\0';
1071     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[9]  = '\0';
1072     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[10] = '\0';
1073     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[11] = '\0';
1074     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[12] = '\0';
1075     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
1076     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
1078     ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Load start address */
1079     ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0x20000000;
1080     ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Branch address after loading */
1082     ibl.chkSum = 0;
1085 menuitem "EVM c6670 IBL";
1087 hotmenu setConfig_c6670_main()
1089         ibl.iblMagic = ibl_MAGIC_VALUE;
1090         ibl.iblEvmType = ibl_EVM_C6670L;
1092         /* Main PLL: 122.88 MHz reference, 983 MHz output */
1093         ibl.pllConfig[ibl_MAIN_PLL].doEnable      = 1;
1094         ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
1095         ibl.pllConfig[ibl_MAIN_PLL].mult          = 16;
1096         ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 2;
1097         ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 983;
1099         /* DDR PLL: 66.66 MHz reference, 400 MHz output, for an 800MHz DDR rate */
1100         ibl.pllConfig[ibl_DDR_PLL].doEnable       = 1; 
1101         ibl.pllConfig[ibl_DDR_PLL].prediv         = 1;
1102         ibl.pllConfig[ibl_DDR_PLL].mult           = 12;
1103         ibl.pllConfig[ibl_DDR_PLL].postdiv        = 2;
1104         ibl.pllConfig[ibl_DDR_PLL].pllOutFreqMhz  = 400;
1106     /* Net PLL: 122.88 MHz reference, 1044 MHz output (followed by a built in divide by 3 to give 348 MHz to PA) */
1107         ibl.pllConfig[ibl_NET_PLL].doEnable       = 1;
1108         ibl.pllConfig[ibl_NET_PLL].prediv         = 1;
1109         ibl.pllConfig[ibl_NET_PLL].mult           = 17;
1110         ibl.pllConfig[ibl_NET_PLL].postdiv        = 2;
1111         ibl.pllConfig[ibl_NET_PLL].pllOutFreqMhz  = 1044;
1114         ibl.ddrConfig.configDdr = 1;
1115         ibl.ddrConfig.uEmif.emif4p0.registerMask = ibl_EMIF4_ENABLE_sdRamConfig | ibl_EMIF4_ENABLE_sdRamRefreshCtl | ibl_EMIF4_ENABLE_sdRamTiming1 | ibl_EMIF4_ENABLE_sdRamTiming2 | ibl_EMIF4_ENABLE_sdRamTiming3 | ibl_EMIF4_ENABLE_ddrPhyCtl1;
1117         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig                         = 0x63C452B2;
1118         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig2                        = 0;
1119         ibl.ddrConfig.uEmif.emif4p0.sdRamRefreshCtl                     = 0x000030D4;
1120         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming1                        = 0x0AAAE51B;
1121         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming2                        = 0x2A2F7FDA;
1122         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming3                        = 0x057F82B8;
1123         ibl.ddrConfig.uEmif.emif4p0.lpDdrNvmTiming                      = 0;
1124         ibl.ddrConfig.uEmif.emif4p0.powerManageCtl                      = 0;
1125         ibl.ddrConfig.uEmif.emif4p0.iODFTTestLogic                      = 0;
1126         ibl.ddrConfig.uEmif.emif4p0.performCountCfg                     = 0;
1127         ibl.ddrConfig.uEmif.emif4p0.performCountMstRegSel       = 0;
1128         ibl.ddrConfig.uEmif.emif4p0.readIdleCtl                         = 0;
1129         ibl.ddrConfig.uEmif.emif4p0.sysVbusmIntEnSet            = 0;
1130         ibl.ddrConfig.uEmif.emif4p0.sdRamOutImpdedCalCfg        = 0;
1131         ibl.ddrConfig.uEmif.emif4p0.tempAlterCfg                        = 0;
1132         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl1                          = 0x0010010d;
1133         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl2                          = 0;
1134         ibl.ddrConfig.uEmif.emif4p0.priClassSvceMap                     = 0;
1135         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce1Map           = 0;
1136         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce2Map           = 0;
1137         ibl.ddrConfig.uEmif.emif4p0.eccCtl                                      = 0;
1138         ibl.ddrConfig.uEmif.emif4p0.eccRange1                           = 0;
1139         ibl.ddrConfig.uEmif.emif4p0.eccRange2                           = 0;
1140         ibl.ddrConfig.uEmif.emif4p0.rdWrtExcThresh                      = 0;
1143         ibl.sgmiiConfig[0].configure     = 1;
1144         ibl.sgmiiConfig[0].adviseAbility = 1;
1145         ibl.sgmiiConfig[0].control               = 1;
1146         ibl.sgmiiConfig[0].txConfig      = 0x108a1;
1147         ibl.sgmiiConfig[0].rxConfig      = 0x700621;
1148         ibl.sgmiiConfig[0].auxConfig     = 0x41;
1150         ibl.sgmiiConfig[1].configure     = 1;
1151         ibl.sgmiiConfig[1].adviseAbility = 1;
1152         ibl.sgmiiConfig[1].control               = 1;
1153         ibl.sgmiiConfig[1].txConfig      = 0x108a1;
1154         ibl.sgmiiConfig[1].rxConfig      = 0x700621;
1155         ibl.sgmiiConfig[1].auxConfig     = 0x51;
1157         ibl.mdioConfig.nMdioOps = 0;
1159         ibl.spiConfig.addrWidth  = 24;
1160         ibl.spiConfig.nPins      = 5;
1161         ibl.spiConfig.mode       = 1;
1162         ibl.spiConfig.csel       = 2;
1163         ibl.spiConfig.c2tdelay   = 1;
1164         ibl.spiConfig.busFreqMHz = 20;
1166         ibl.emifConfig[0].csSpace    = 2;
1167         ibl.emifConfig[0].busWidth   = 8;
1168         ibl.emifConfig[0].waitEnable = 0;
1170         ibl.emifConfig[1].csSpace    = 0;
1171         ibl.emifConfig[1].busWidth   = 0;
1172         ibl.emifConfig[1].waitEnable = 0;
1174         ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NOR;
1175         ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
1176         ibl.bootModes[0].port     = 0;
1178         ibl.bootModes[0].u.norBoot.bootFormat   = ibl_BOOT_FORMAT_ELF;
1179         ibl.bootModes[0].u.norBoot.bootAddress[0][0]    = 0;            /* Image 0 NOR offset byte address in LE mode */ 
1180         ibl.bootModes[0].u.norBoot.bootAddress[0][1]    = 0xA00000;     /* Image 1 NOR offset byte address in LE mode  */
1181         ibl.bootModes[0].u.norBoot.bootAddress[1][0]    = 0;            /* Image 0 NOR offset byte address in BE mode */ 
1182         ibl.bootModes[0].u.norBoot.bootAddress[1][1]    = 0xA00000;     /* Image 1 NOR offset byte address in BE mode  */
1183         ibl.bootModes[0].u.norBoot.interface    = ibl_PMEM_IF_SPI;
1184     ibl.bootModes[0].u.norBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
1185     ibl.bootModes[0].u.norBoot.blob[0][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in LE mode */
1186     ibl.bootModes[0].u.norBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
1187     ibl.bootModes[0].u.norBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
1188     ibl.bootModes[0].u.norBoot.blob[0][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in LE mode */
1189     ibl.bootModes[0].u.norBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
1190     ibl.bootModes[0].u.norBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
1191     ibl.bootModes[0].u.norBoot.blob[1][0].sizeBytes     = 0xA00000;         /* Image 0 size (10 MB) in BE mode */
1192     ibl.bootModes[0].u.norBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
1193     ibl.bootModes[0].u.norBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
1194     ibl.bootModes[0].u.norBoot.blob[1][1].sizeBytes     = 0xA00000;         /* Image 1 size (10 MB) in BE mode */
1195     ibl.bootModes[0].u.norBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
1197     ibl.bootModes[1].bootMode = ibl_BOOT_MODE_NAND;
1198     ibl.bootModes[1].priority = ibl_HIGHEST_PRIORITY;
1199     ibl.bootModes[1].port     = 0;
1201     ibl.bootModes[1].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_BBLOB;
1202     ibl.bootModes[1].u.nandBoot.bootAddress[0][0]         = 0x4000;         /* Image 0 NAND offset address (block 1) in LE mode */
1203     ibl.bootModes[1].u.nandBoot.bootAddress[0][1]         = 0x2000000;      /* Image 1 NAND offset address (block 2048) in LE mode */
1204     ibl.bootModes[1].u.nandBoot.bootAddress[1][0]         = 0x4000;         /* Image 0 NAND offset address (block 1) in BE mode */
1205     ibl.bootModes[1].u.nandBoot.bootAddress[1][1]         = 0x2000000;      /* Image 1 NAND offset address (block 2048) in BE mode */
1206     ibl.bootModes[1].u.nandBoot.interface         = ibl_PMEM_IF_GPIO;
1208     ibl.bootModes[1].u.nandBoot.blob[0][0].startAddress  = 0x80000000;       /* Image 0 load start address in LE mode */
1209     ibl.bootModes[1].u.nandBoot.blob[0][0].sizeBytes     = 0xFFC000;         /* Image 0 size in LE mode */
1210     ibl.bootModes[1].u.nandBoot.blob[0][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in LE mode */
1211     ibl.bootModes[1].u.nandBoot.blob[0][1].startAddress  = 0x80000000;       /* Image 1 load start address in LE mode */
1212     ibl.bootModes[1].u.nandBoot.blob[0][1].sizeBytes     = 0xFFC000;         /* Image 1 size in LE mode */
1213     ibl.bootModes[1].u.nandBoot.blob[0][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in LE mode */
1214     ibl.bootModes[1].u.nandBoot.blob[1][0].startAddress  = 0x80000000;       /* Image 0 load start address in BE mode */
1215     ibl.bootModes[1].u.nandBoot.blob[1][0].sizeBytes     = 0xFFC000;         /* Image 0 size mode */
1216     ibl.bootModes[1].u.nandBoot.blob[1][0].branchAddress = 0x80000000;       /* Image 0 branch address after loading in BE mode */
1217     ibl.bootModes[1].u.nandBoot.blob[1][1].startAddress  = 0x80000000;       /* Image 1 load start address in BE mode */
1218     ibl.bootModes[1].u.nandBoot.blob[1][1].sizeBytes     = 0xFFC000;         /* Image 1 size in BE mode */
1219     ibl.bootModes[1].u.nandBoot.blob[1][1].branchAddress = 0x80000000;       /* Image 1 branch address after loading in BE mode */
1222     ibl.bootModes[1].u.nandBoot.nandInfo.busWidthBits  = 8;
1223     ibl.bootModes[1].u.nandBoot.nandInfo.pageSizeBytes = 512;
1224     ibl.bootModes[1].u.nandBoot.nandInfo.pageEccBytes  = 16;
1225     ibl.bootModes[1].u.nandBoot.nandInfo.pagesPerBlock = 32;
1226     ibl.bootModes[1].u.nandBoot.nandInfo.totalBlocks   = 4096;
1228     ibl.bootModes[1].u.nandBoot.nandInfo.addressBytes  = 4;
1229     ibl.bootModes[1].u.nandBoot.nandInfo.lsbFirst      = TRUE;
1230     ibl.bootModes[1].u.nandBoot.nandInfo.blockOffset   = 14;
1231     ibl.bootModes[1].u.nandBoot.nandInfo.pageOffset    = 9;
1232     ibl.bootModes[1].u.nandBoot.nandInfo.columnOffset  = 0;
1234     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
1235     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
1236     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
1237     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
1238     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[4]  = 4; 
1239     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[5]  = 6; 
1240     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[6]  = 7; 
1241     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[7]  = 13; 
1242     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[8]  = 14; 
1243     ibl.bootModes[1].u.nandBoot.nandInfo.eccBytesIdx[9]  = 15; 
1245     ibl.bootModes[1].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 5;
1246     ibl.bootModes[1].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xff;
1248     ibl.bootModes[1].u.nandBoot.nandInfo.resetCommand    = 0xff;
1249     ibl.bootModes[1].u.nandBoot.nandInfo.readCommandPre  = 0;
1250     ibl.bootModes[1].u.nandBoot.nandInfo.readCommandPost = 0;
1251     ibl.bootModes[1].u.nandBoot.nandInfo.postCommand     = FALSE;
1252     
1253         ibl.bootModes[2].bootMode = ibl_BOOT_MODE_TFTP;
1254         ibl.bootModes[2].priority = ibl_HIGHEST_PRIORITY+1;
1255         ibl.bootModes[2].port     = ibl_PORT_SWITCH_ALL;
1257         ibl.bootModes[2].u.ethBoot.doBootp          = FALSE;
1258         ibl.bootModes[2].u.ethBoot.useBootpServerIp = TRUE;
1259         ibl.bootModes[2].u.ethBoot.useBootpFileName = TRUE;
1260         ibl.bootModes[2].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_BBLOB;
1263     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.ipAddr,    192,168,2,100);
1264     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.serverIp,  192,168,2,101);
1265     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.gatewayIp, 192,168,2,1);
1266     SETIP(ibl.bootModes[2].u.ethBoot.ethInfo.netmask,   255,255,255,0);
1268     /* Use the e-fuse value */
1269     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[0] = 0;
1270     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[1] = 0;
1271     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[2] = 0;
1272     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[3] = 0;
1273     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[4] = 0;
1274     ibl.bootModes[2].u.ethBoot.ethInfo.hwAddress[5] = 0;
1277     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[0]  = 'a';
1278     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[1]  = 'p';
1279     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[2]  = 'p';
1280     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[3]  = '.';
1281     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[4]  = 'o';
1282     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[5]  = 'u';
1283     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[6]  = 't';
1284     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[7]  = '\0';
1285     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[8]  = '\0';
1286     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[9]  = '\0';
1287     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[10] = '\0';
1288     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[11] = '\0';
1289     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[12] = '\0';
1290     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[13] = '\0';
1291     ibl.bootModes[2].u.ethBoot.ethInfo.fileName[14] = '\0';
1293     ibl.bootModes[2].u.ethBoot.blob.startAddress  = 0x80000000;       /* Load start address */
1294     ibl.bootModes[2].u.ethBoot.blob.sizeBytes     = 0x20000000;
1295     ibl.bootModes[2].u.ethBoot.blob.branchAddress = 0x80000000;       /* Branch address after loading */
1297     ibl.chkSum = 0;