]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/ibl.git/blob - src/util/i2cConfig/i2cConfig.gel
f76cd6883479ebd02aac207797f23f7640f2feca
[keystone-rtos/ibl.git] / src / util / i2cConfig / i2cConfig.gel
1 <<<<<<< HEAD:src/util/i2cConfig/i2cConfig.gel
2 #define TRUE  1
3 #define FALSE 0
5 #define ibl_MAGIC_VALUE                  0xCEC11EBB
7 #define ibl_HIGHEST_PRIORITY     1  
8 #define ibl_LOWEST_PRIORITY     10
9 #define ibl_DEVICE_NOBOOT       20
11 #define ibl_PORT_SWITCH_ALL     -2
13 #define SETIP(array,i0,i1,i2,i3)      array[0]=(i0);  \
14                                       array[1]=(i1);  \
15                                       array[2]=(i2);  \
16                                       array[3]=(i3)
18 #define  ibl_BOOT_MODE_TFTP     10
19 #define  ibl_BOOT_MODE_NAND     11
20 #define  ibl_BOOT_MODE_NOR      12
21 #define  ibl_BOOT_MODE_NONE     13
24 #define ibl_BOOT_FORMAT_AUTO    0
25 #define ibl_BOOT_FORMAT_NAME    1
26 #define ibl_BOOT_FORMAT_BIS     2
27 #define ibl_BOOT_FORMAT_COFF    3
28 #define ibl_BOOT_FORMAT_ELF     4
29 #define ibl_BOOT_FORMAT_BBLOB    5
30 #define ibl_BOOT_FORMAT_BTBL    6
32 #define  ibl_PMEM_IF_GPIO         0
34 #define  ibl_PMEM_IF_CHIPSEL_2    2   /* EMIF interface using chip select 2, no wait enabled */
35 #define  ibl_PMEM_IF_CHIPSEL_3    3   /* EMIF interface using chip select 3, no wait enabled */
36 #define  ibl_PMEM_IF_CHIPSEL_4    4   /* EMIF interface using chip select 4 */
37 #define  ibl_PMEM_IF_CHIPSEL_5    5   /* EMIF interface using chip select 5 */
39 #define  ibl_PMEM_IF_SPI          100 /* Interface through SPI */
42 #define ibl_MAIN_PLL    0
43 #define ibl_DDR_PLL     1
44 #define ibl_NET_PLL     2
46 #define ibl_EMIF4_ENABLE_sdRamConfig                  (1 <<  0)
47 #define  ibl_EMIF4_ENABLE_sdRamConfig2                (1 <<  1)
48 #define  ibl_EMIF4_ENABLE_sdRamRefreshCtl             (1 <<  2)
49 #define  ibl_EMIF4_ENABLE_sdRamTiming1                (1 <<  3)
50 #define  ibl_EMIF4_ENABLE_sdRamTiming2                (1 <<  4)
51 #define  ibl_EMIF4_ENABLE_sdRamTiming3                (1 <<  5)
52 #define  ibl_EMIF4_ENABLE_lpDdrNvmTiming              (1 <<  6)
53 #define  ibl_EMIF4_ENABLE_powerManageCtl              (1 <<  7)
54 #define  ibl_EMIF4_ENABLE_iODFTTestLogic              (1 <<  8)
55 #define  ibl_EMIF4_ENABLE_performCountCfg             (1 <<  9)
56 #define  ibl_EMIF4_ENABLE_performCountMstRegSel       (1 << 10)
57 #define  ibl_EMIF4_ENABLE_readIdleCtl                 (1 << 11)
58 #define  ibl_EMIF4_ENABLE_sysVbusmIntEnSet            (1 << 12)
59 #define  ibl_EMIF4_ENABLE_sdRamOutImpdedCalCfg        (1 << 13)
60 #define  ibl_EMIF4_ENABLE_tempAlterCfg                (1 << 14)
61 #define  ibl_EMIF4_ENABLE_ddrPhyCtl1                  (1 << 15)
62 #define  ibl_EMIF4_ENABLE_ddrPhyCtl2                  (1 << 16)
63 #define  ibl_EMIF4_ENABLE_priClassSvceMap             (1 << 17)
64 #define  ibl_EMIF4_ENABLE_mstId2ClsSvce1Map           (1 << 18)
65 #define  ibl_EMIF4_ENABLE_mstId2ClsSvce2Map           (1 << 11)
66 #define  ibl_EMIF4_ENABLE_eccCtl                      (1 << 19)
67 #define  ibl_EMIF4_ENABLE_eccRange1                   (1 << 20)
68 #define  ibl_EMIF4_ENABLE_eccRange2                   (1 << 21)
69 #define  ibl_EMIF4_ENABLE_rdWrtExcThresh              (1 << 22)
70 #define  ibl_BOOT_EMIF4_ENABLE_ALL                    0x007fffff
71     
72 /* @} */  
74 menuitem "EVM c6472 IBL";
76 hotmenu setConfig_c6472()
77 {
78     ibl.iblMagic = ibl_MAGIC_VALUE;
80     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
81     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
82     ibl.pllConfig[ibl_MAIN_PLL].mult          = 28;
83     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
84     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 700;
86     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
87     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
89     /* The network PLL. The multipliers/dividers are fixed */
90     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
92     /* EMIF configuration. The values are for DDR at 533 MHz  */
93     ibl.ddrConfig.configDdr = TRUE;
95     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538832; /* timing, 32bit wide */
96     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x0000073B; /* Refresh 533Mhz */ 
97     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x47245BD2; /* Timing 1 */
98     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0125DC44; /* Timing 2 */
99     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
101     /* Ethernet configuration for port 0 */
102     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;
103     ibl.ethConfig[0].port             = 0;
105     /* Bootp is disabled. The server and file name are provided here */
106     ibl.ethConfig[0].doBootp          = FALSE;
107     ibl.ethConfig[0].useBootpServerIp = FALSE;
108     ibl.ethConfig[0].useBootpFileName = FALSE;
109     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
112     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    10,218,109,21);
113     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  10,218,109,196);
114     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 10,218,109,2);
115     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);
117     /* Leave the hardware address as 0 so the e-fuse value will be used */
122     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';
123     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';
124     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';
125     ibl.ethConfig[0].ethInfo.fileName[3]  = '7';
126     ibl.ethConfig[0].ethInfo.fileName[4]  = '2';
127     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';
128     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';
129     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';
130     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';
131     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';
132     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';
133     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';
134     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';
135     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';
136     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';
138     /* Even though the entire range of DDR2 is chosen, the load will
139      * stop when the ftp reaches the end of the file */
140     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
141     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
142     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
144     /* For port 1 use bootp */
145     /* Ethernet configuration for port 0 */
146     ibl.ethConfig[1].ethPriority      = ibl_HIGHEST_PRIORITY + 1;
147     ibl.ethConfig[1].port             = 1;
149     /* Bootp is disabled. The server and file name are provided here */
150     ibl.ethConfig[1].doBootp          = TRUE;
151     ibl.ethConfig[1].useBootpServerIp = TRUE;
152     ibl.ethConfig[1].useBootpFileName = TRUE;
153     ibl.ethConfig[1].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
156     /* SGMII not present */
157         ibl.sgmiiConfig[0].adviseAbility = 0;
158         ibl.sgmiiConfig[0].control       = 0;
159         ibl.sgmiiConfig[0].txConfig      = 0;
160         ibl.sgmiiConfig[0].rxConfig      = 0;
161         ibl.sgmiiConfig[0].auxConfig     = 0;
163         ibl.sgmiiConfig[1].adviseAbility = 0;
164         ibl.sgmiiConfig[1].control       = 0;
165         ibl.sgmiiConfig[1].txConfig      = 0;
166         ibl.sgmiiConfig[1].rxConfig      = 0;
167         ibl.sgmiiConfig[1].auxConfig     = 0;
170     /* Leave the hardware address as 0 so the e-fuse value will be used */
171     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;
172     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;
173     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;
174     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;
175     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;
176     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;
179     /* Leave all remaining fields as 0 since bootp will fill them in */
182     /* Even though the entire range of DDR2 is chosen, the load will */
183     /* stop when the ftp reaches the end of the file */
184  
185     ibl.ethConfig[1].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
186     ibl.ethConfig[1].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
187     ibl.ethConfig[1].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
188     
191     /* MDIO configuration */
192     ibl.mdioConfig.nMdioOps = 8;
193     ibl.mdioConfig.mdioClkDiv = 0x20;
194     ibl.mdioConfig.interDelay = 1400;   /* ~2ms at 700 MHz */
196     ibl.mdioConfig.mdio[0] =  (1 << 30) | (27 << 21) | (24 << 16) | 0x848b;
197     ibl.mdioConfig.mdio[1] =  (1 << 30) | (20 << 21) | (24 << 16) | 0x0ce0;
198     ibl.mdioConfig.mdio[2] =  (1 << 30) | (24 << 21) | (24 << 16) | 0x4101;
199     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (24 << 16) | 0x9140;
201     ibl.mdioConfig.mdio[4] =  (1 << 30) | (27 << 21) | (25 << 16) | 0x848b;
202     ibl.mdioConfig.mdio[5] =  (1 << 30) | (20 << 21) | (25 << 16) | 0x0ce0;
203     ibl.mdioConfig.mdio[6] =  (1 << 30) | (24 << 21) | (25 << 16) | 0x4101;
204     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | (25 << 16) | 0x9140;
207     /* Nand boot is disabled */
208     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;
210     ibl.nandConfig.bootFormat   = ibl_BOOT_FORMAT_AUTO;
212     ibl.nandConfig.nandInfo.busWidthBits  = 8;
213     ibl.nandConfig.nandInfo.pageSizeBytes = 2048;
214     ibl.nandConfig.nandInfo.pageEccBytes  = 64;
215     ibl.nandConfig.nandInfo.pagesPerBlock = 64;
216     ibl.nandConfig.nandInfo.totalBlocks   = 1024;
218     ibl.nandConfig.nandInfo.addressBytes  = 4;
219     ibl.nandConfig.nandInfo.lsbFirst      = TRUE;
220     ibl.nandConfig.nandInfo.blockOffset   = 22;
221     ibl.nandConfig.nandInfo.pageOffset    = 16;
222     ibl.nandConfig.nandInfo.columnOffset  = 0;
224     ibl.nandConfig.nandInfo.resetCommand    = 0xff;
225     ibl.nandConfig.nandInfo.readCommandPre  = 0;
226     ibl.nandConfig.nandInfo.readCommandPost = 0x30;
227     ibl.nandConfig.nandInfo.postCommand     = TRUE;
232 menuitem "EVM c6474 Mez IBL";
234 hotmenu setConfig_c6474()
236     ibl.iblMagic = ibl_MAGIC_VALUE;
238     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
239     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
240     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
241     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
242     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
244     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
245     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
247     /* The network PLL. The multipliers/dividers are fixed */
248     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
250     /* EMIF configuration. The values are for DDR at 533 MHz  */
251     ibl.ddrConfig.configDdr = TRUE;
253     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
254     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
255     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
256     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
257     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
260     /* Ethernet configuration for port 0 */
261     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;
262     ibl.ethConfig[0].port             = 0;
264     /* Bootp is disabled. The server and file name are provided here */
265     ibl.ethConfig[0].doBootp          = FALSE;
266     ibl.ethConfig[0].useBootpServerIp = FALSE;
267     ibl.ethConfig[0].useBootpFileName = FALSE;
268     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
270     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    10,218,109,35);
271     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  10,218,109,196);
272     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 10,218,109,1);
273     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);
275     /* Set the hardware address as 0 so the e-fuse value will be used */
276     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;
277     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;
278     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;
279     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;
280     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;
281     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;
284     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';
285     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';
286     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';
287     ibl.ethConfig[0].ethInfo.fileName[3]  = '7';
288     ibl.ethConfig[0].ethInfo.fileName[4]  = '4';
289     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';
290     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';
291     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';
292     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';
293     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';
294     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';
295     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';
296     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';
297     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';
298     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';
300     /* Even though the entire range of DDR2 is chosen, the load will
301      * stop when the ftp reaches the end of the file */
302     ibl.ethConfig[0].blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
303     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
304     ibl.ethConfig[0].blob.branchAddress = 0x80000000;       /* Base of DDR2 */
306     /* There is no port 1 on the 6474 */
307     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;
309     /* SGMII is present */
310     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
311     ibl.sgmiiConfig[0].control       = 0x20;
312     ibl.sgmiiConfig[0].txConfig      = 0x00000ea3;
313     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;
314     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
316     /* MDIO configuration */
317     ibl.mdioConfig.nMdioOps = 8;
318     ibl.mdioConfig.mdioClkDiv = 0x26;
319     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
321     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
322     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (15 << 16) | 0x0047;
323     ibl.mdioConfig.mdio[2] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
324     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (15 << 16) | 0x8140;
326     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
327     ibl.mdioConfig.mdio[5] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
328     ibl.mdioConfig.mdio[6] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
329     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x9140;
332     /* Nand boot is disabled */
333     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;
337 menuitem "EVM c6474 Lite EVM IBL";
339 hotmenu setConfig_c6474lite()
341     ibl.iblMagic = ibl_MAGIC_VALUE;
343     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
344     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
345     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
346     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
347     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
349     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
350     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
352     /* The network PLL. The multipliers/dividers are fixed */
353     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
355     /* EMIF configuration. The values are for DDR at 533 MHz  */
356     ibl.ddrConfig.configDdr = TRUE;
358     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
359     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ 
360     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */
361     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */
362     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */
365     /* Ethernet configuration for port 0 */
366     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;
367     ibl.ethConfig[0].port             = 0;
369     /* Bootp is disabled. The server and file name are provided here */
370     ibl.ethConfig[0].doBootp          = FALSE;
371     ibl.ethConfig[0].useBootpServerIp = FALSE;
372     ibl.ethConfig[0].useBootpFileName = FALSE;
373     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
375     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,114);
376     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);
377     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);
378     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);
380     /* Set the hardware address as 0 so the e-fuse value will be used */
381     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;
382     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;
383     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;
384     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;
385     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;
386     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;
389     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';
390     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';
391     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';
392     ibl.ethConfig[0].ethInfo.fileName[3]  = '7';
393     ibl.ethConfig[0].ethInfo.fileName[4]  = '4';
394     ibl.ethConfig[0].ethInfo.fileName[5]  = 'l';
395     ibl.ethConfig[0].ethInfo.fileName[6]  = '-';
396     ibl.ethConfig[0].ethInfo.fileName[7]  = 'l';
397     ibl.ethConfig[0].ethInfo.fileName[8]  = 'e';
398     ibl.ethConfig[0].ethInfo.fileName[9]  = '.';
399     ibl.ethConfig[0].ethInfo.fileName[10] = 'b';
400     ibl.ethConfig[0].ethInfo.fileName[11] = 'i';
401     ibl.ethConfig[0].ethInfo.fileName[12] = 'n';
402     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';
403     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';
406     /* Even though the entire range of DDR2 is chosen, the load will
407      * stop when the ftp reaches the end of the file */
408     ibl.ethConfig[0].blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
409     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
410     ibl.ethConfig[0].blob.branchAddress = 0x80000000;       /* Base of DDR2 */
412     /* There is no port 1 on the 6474 Lite EVM */
413     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;
415     /* SGMII is present */
416     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
417     ibl.sgmiiConfig[0].control       = 0x20;
418     ibl.sgmiiConfig[0].txConfig      = 0x00000e23;
419     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;
420     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
422     /* MDIO configuration */
423     ibl.mdioConfig.nMdioOps = 5;
424     ibl.mdioConfig.mdioClkDiv = 0x20;
425     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
427     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
428     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
429     ibl.mdioConfig.mdio[2] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
431     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
432     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x9140;
435     /* This board has NAND. We will enable later */
436     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;
440 menuitem "EVM c6457 EVM IBL";
442 hotmenu setConfig_c6457()
444     ibl.iblMagic = ibl_MAGIC_VALUE;
446     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
447     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
448     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
449     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
450     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
452     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
453     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
455     /* The network PLL. The multipliers/dividers are fixed */
456     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
458     /* EMIF configuration */
459     ibl.ddrConfig.configDdr = TRUE;
461     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */
462     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a0e; /* Refresh 333Mhz */ 
463     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x832474da; /* Timing 1 */
464     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0144c742; /* Timing 2 */
465     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x001800C6;
468     /* Ethernet configuration for port 0 */
469     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;
470     ibl.ethConfig[0].port             = 0;
472     /* Bootp is disabled. The server and file name are provided here */
473     ibl.ethConfig[0].doBootp          = FALSE;
474     ibl.ethConfig[0].useBootpServerIp = FALSE;
475     ibl.ethConfig[0].useBootpFileName = FALSE;
476     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
478     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,115);
479     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);
480     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);
481     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);
483     /* Set the hardware address as 0 so the e-fuse value will be used */
484     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;
485     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;
486     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;
487     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;
488     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;
489     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;
492     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';
493     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';
494     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';
495     ibl.ethConfig[0].ethInfo.fileName[3]  = '5';
496     ibl.ethConfig[0].ethInfo.fileName[4]  = '7';
497     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';
498     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';
499     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';
500     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';
501     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';
502     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';
503     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';
504     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';
505     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';
506     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';
509     /* Even though the entire range of DDR2 is chosen, the load will
510      * stop when the ftp reaches the end of the file */
511     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
512     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
513     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
515     /* There is no port 1 on the 6457 Lite EVM */
516     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;
518     /* SGMII is present */
519     ibl.sgmiiConfig[0].adviseAbility = 0x9801;
520     ibl.sgmiiConfig[0].control       = 0x20;
521     ibl.sgmiiConfig[0].txConfig      = 0x00000e21;
522     ibl.sgmiiConfig[0].rxConfig      = 0x00081021;
523     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;
525     /* MDIO configuration */
526     ibl.mdioConfig.nMdioOps = 5;
527     ibl.mdioConfig.mdioClkDiv = 0xa5;
528     ibl.mdioConfig.interDelay = 3000;   /* ~2ms at 1000 MHz */
530     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;
531     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;
532     ibl.mdioConfig.mdio[2] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;
533     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;
534     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0x8140;
537     /* This board has NAND. We will enable later */
538     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;
542 menuitem "EVM c6455 IBL";
544 hotmenu setConfig_c6455()
546     ibl.iblMagic = ibl_MAGIC_VALUE;
548     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;
549     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
550     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
551     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;
552     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
554     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */
555     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;
557     /* The network PLL. The multipliers/dividers are fixed */
558     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;
560     /* EMIF configuration. The values are for DDR at 500 MHz  */
561     ibl.ddrConfig.configDdr = TRUE;
563     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538822; /* timing, 32bit wide */
564     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x000007a2; /* Refresh 500Mhz */ 
565     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x3edb4b91; /* Timing 1 */
566     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00a2c722; /* Timing 2 */
567     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x00000005; /* PHY read latency for CAS 4 is 4 + 2 - 1 */
569     /* Ethernet configuration for port 0 */
570     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;
571     ibl.ethConfig[0].port             = 0;
573     /* Bootp is disabled. The server and file name are provided here */
574     ibl.ethConfig[0].doBootp          = FALSE;
575     ibl.ethConfig[0].useBootpServerIp = FALSE;
576     ibl.ethConfig[0].useBootpFileName = FALSE;
577     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;
580     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,118);
581     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);
582     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);
583     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);
585     /* There is no e-fuse mac address. A value must be assigned */
586     ibl.ethConfig[0].ethInfo.hwAddress[0] = 10;
587     ibl.ethConfig[0].ethInfo.hwAddress[1] = 224;
588     ibl.ethConfig[0].ethInfo.hwAddress[2] = 166;
589     ibl.ethConfig[0].ethInfo.hwAddress[3] = 102;
590     ibl.ethConfig[0].ethInfo.hwAddress[4] = 87;
591     ibl.ethConfig[0].ethInfo.hwAddress[5] = 25;
594     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';
595     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';
596     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';
597     ibl.ethConfig[0].ethInfo.fileName[3]  = '5';
598     ibl.ethConfig[0].ethInfo.fileName[4]  = '5';
599     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';
600     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';
601     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';
602     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';
603     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';
604     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';
605     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';
606     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';
607     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';
608     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';
611     /* Even though the entire range of DDR2 is chosen, the load will
612      * stop when the ftp reaches the end of the file */
613     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */
614     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
615     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */
617     /* There is no ethernet port 1 */
618     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;
621     /* SGMII not present */
622         ibl.sgmiiConfig[0].adviseAbility = 0;
623         ibl.sgmiiConfig[0].control       = 0;
624         ibl.sgmiiConfig[0].txConfig      = 0;
625         ibl.sgmiiConfig[0].rxConfig      = 0;
626         ibl.sgmiiConfig[0].auxConfig     = 0;
628         ibl.sgmiiConfig[1].adviseAbility = 0;
629         ibl.sgmiiConfig[1].control       = 0;
630         ibl.sgmiiConfig[1].txConfig      = 0;
631         ibl.sgmiiConfig[1].rxConfig      = 0;
632         ibl.sgmiiConfig[1].auxConfig     = 0;
636     /* MDIO configuration */
637     ibl.mdioConfig.nMdioOps = 0;
638     ibl.mdioConfig.mdioClkDiv = 0x20;
639     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */
641     ibl.mdioConfig.mdio[0] =  (1 << 30) | (14 << 21) | (0 << 16) | 0xd5d0;
644     /* Nand boot is disabled */
645     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;
650 menuitem "EVM c6678 IBL";
652 hotmenu setConfig_c6678()
654         ibl.iblMagic = ibl_MAGIC_VALUE;
656         /* Main PLL: 100 MHz reference, 1GHz output */
657         ibl.pllConfig[ibl_MAIN_PLL].doEnable      = 1;
658         ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;
659         ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;
660         ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 2;
661         ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;
663         /* DDR PLL: 66.66 MHz reference, 400 MHz output, for an 800MHz DDR rate */
664         ibl.pllConfig[ibl_DDR_PLL].doEnable       = 1; 
665         ibl.pllConfig[ibl_DDR_PLL].prediv         = 1;
666         ibl.pllConfig[ibl_DDR_PLL].mult           = 12;
667         ibl.pllConfig[ibl_DDR_PLL].postdiv        = 2;
668         ibl.pllConfig[ibl_DDR_PLL].pllOutFreqMhz  = 400;
670     /* Net PLL: 100 MHz reference, 1050 MHz output (followed by a built in divide by 3 to give 350 MHz to PA) */
671         ibl.pllConfig[ibl_NET_PLL].doEnable       = 1;
672         ibl.pllConfig[ibl_NET_PLL].prediv         = 1;
673         ibl.pllConfig[ibl_NET_PLL].mult                   = 21;
674         ibl.pllConfig[ibl_NET_PLL].postdiv        = 2;
675         ibl.pllConfig[ibl_NET_PLL].pllOutFreqMhz  = 1050;
678         ibl.ddrConfig.configDdr = 1;
679         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;
681         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig                         = 0x63C452B2;
682         ibl.ddrConfig.uEmif.emif4p0.sdRamConfig2                        = 0;
683         ibl.ddrConfig.uEmif.emif4p0.sdRamRefreshCtl                     = 0x000030D4;
684         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming1                        = 0x0AAAE51B;
685         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming2                        = 0x2A2F7FDA;
686         ibl.ddrConfig.uEmif.emif4p0.sdRamTiming3                        = 0x057F82B8;
687         ibl.ddrConfig.uEmif.emif4p0.lpDdrNvmTiming                      = 0;
688         ibl.ddrConfig.uEmif.emif4p0.powerManageCtl                      = 0;
689         ibl.ddrConfig.uEmif.emif4p0.iODFTTestLogic                      = 0;
690         ibl.ddrConfig.uEmif.emif4p0.performCountCfg                     = 0;
691         ibl.ddrConfig.uEmif.emif4p0.performCountMstRegSel       = 0;
692         ibl.ddrConfig.uEmif.emif4p0.readIdleCtl                         = 0;
693         ibl.ddrConfig.uEmif.emif4p0.sysVbusmIntEnSet            = 0;
694         ibl.ddrConfig.uEmif.emif4p0.sdRamOutImpdedCalCfg        = 0;
695         ibl.ddrConfig.uEmif.emif4p0.tempAlterCfg                        = 0;
696         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl1                          = 0x0010010d;
697         ibl.ddrConfig.uEmif.emif4p0.ddrPhyCtl2                          = 0;
698         ibl.ddrConfig.uEmif.emif4p0.priClassSvceMap                     = 0;
699         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce1Map           = 0;
700         ibl.ddrConfig.uEmif.emif4p0.mstId2ClsSvce2Map           = 0;
701         ibl.ddrConfig.uEmif.emif4p0.eccCtl                                      = 0;
702         ibl.ddrConfig.uEmif.emif4p0.eccRange1                           = 0;
703         ibl.ddrConfig.uEmif.emif4p0.eccRange2                           = 0;
704         ibl.ddrConfig.uEmif.emif4p0.rdWrtExcThresh                      = 0;
707         ibl.sgmiiConfig[0].configure     = 1;
708         ibl.sgmiiConfig[0].adviseAbility = 1;
709         ibl.sgmiiConfig[0].control               = 1;
710         ibl.sgmiiConfig[0].txConfig      = 0x108a1;
711         ibl.sgmiiConfig[0].rxConfig      = 0x700621;
712         ibl.sgmiiConfig[0].auxConfig     = 0x41;
714         ibl.sgmiiConfig[1].configure     = 1;
715         ibl.sgmiiConfig[1].adviseAbility = 1;
716         ibl.sgmiiConfig[1].control               = 1;
717         ibl.sgmiiConfig[1].txConfig      = 0x108a1;
718         ibl.sgmiiConfig[1].rxConfig      = 0x700621;
719         ibl.sgmiiConfig[1].auxConfig     = 0x41;
721         ibl.mdioConfig.nMdioOps = 0;
723         ibl.spiConfig.addrWidth  = 24;
724         ibl.spiConfig.nPins      = 5;
725         ibl.spiConfig.mode       = 1;
726         ibl.spiConfig.csel       = 2;
727         ibl.spiConfig.c2tdelay   = 1;
728         ibl.spiConfig.busFreqMHz = 20;
730         ibl.emifConfig[0].csSpace    = 2;
731         ibl.emifConfig[0].busWidth   = 8;
732         ibl.emifConfig[0].waitEnable = 0;
734         ibl.emifConfig[1].csSpace    = 0;
735         ibl.emifConfig[1].busWidth   = 0;
736         ibl.emifConfig[1].waitEnable = 0;
738         ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NOR;
739         ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
740         ibl.bootModes[0].port     = 0;
742         ibl.bootModes[0].u.norBoot.bootFormat   = ibl_BOOT_FORMAT_ELF;
743         ibl.bootModes[0].u.norBoot.bootAddress  = 0;
744         ibl.bootModes[0].u.norBoot.interface    = ibl_PMEM_IF_SPI;
745     ibl.bootModes[0].u.norBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
746     ibl.bootModes[0].u.norBoot.blob.sizeBytes     = 0x80000;          /* 512 KB */
747     ibl.bootModes[0].u.norBoot.blob.branchAddress = 0x80000000;       /* Base address of DDR2 */
749         ibl.bootModes[1].bootMode = ibl_BOOT_MODE_TFTP;
750         ibl.bootModes[1].priority = ibl_HIGHEST_PRIORITY+1;
751         ibl.bootModes[1].port     = ibl_PORT_SWITCH_ALL;
753         ibl.bootModes[1].u.ethBoot.doBootp          = FALSE;
754         ibl.bootModes[1].u.ethBoot.useBootpServerIp = FALSE;
755         ibl.bootModes[1].u.ethBoot.useBootpFileName = FALSE;
756         ibl.bootModes[1].u.ethBoot.bootFormat       = ibl_BOOT_FORMAT_ELF;
759     SETIP(ibl.bootModes[1].u.ethBoot.ethInfo.ipAddr,    192,168,1,100);
760     SETIP(ibl.bootModes[1].u.ethBoot.ethInfo.serverIp,  192,168,1,101);
761     SETIP(ibl.bootModes[1].u.ethBoot.ethInfo.gatewayIp, 192,168,1,1);
762     SETIP(ibl.bootModes[1].u.ethBoot.ethInfo.netmask,   255,255,255,0);
764     /* Use the e-fuse value */
765     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[0] = 0;
766     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[1] = 0;
767     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[2] = 0;
768     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[3] = 0;
769     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[4] = 0;
770     ibl.bootModes[1].u.ethBoot.ethInfo.hwAddress[5] = 0;
773     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[0]  = 'c';
774     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[1]  = '6';
775     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[2]  = '6';
776     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[3]  = '7';
777     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[4]  = '8';
778     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[5]  = '-';
779     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[6]  = 'l';
780     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[7]  = 'e';
781     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[8]  = '.';
782     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[9]  = 'b';
783     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[10] = 'i';
784     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[11] = 'n';
785     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[12] = '\0';
786     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[13] = '\0';
787     ibl.bootModes[1].u.ethBoot.ethInfo.fileName[14] = '\0';
789     ibl.bootModes[1].u.ethBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
790     ibl.bootModes[1].u.ethBoot.blob.sizeBytes     = 0x20000000;       /* All of DDR2 */
791     ibl.bootModes[1].u.ethBoot.blob.branchAddress = 0x80000000;       /* Base of DDR2 */
793         ibl.chkSum = 0;
797 menuitem "EVM c6678 NAND Boot IBL";
799 hotmenu setConfig_c6678_nand()
801     /* Nand boot is higher priority */
802     ibl.bootModes[0].bootMode = ibl_BOOT_MODE_NAND;
803     ibl.bootModes[0].priority = ibl_HIGHEST_PRIORITY;
804     ibl.bootModes[0].port     = 0;
806     ibl.bootModes[0].u.nandBoot.bootFormat        = ibl_BOOT_FORMAT_ELF;
807     ibl.bootModes[0].u.nandBoot.bootAddress       = 0;
808     ibl.bootModes[0].u.nandBoot.interface         = ibl_PMEM_IF_CHIPSEL_2;
809     ibl.bootModes[0].u.nandBoot.blob.startAddress  = 0x80000000;       /* Base address of DDR2 */
810     ibl.bootModes[0].u.nandBoot.blob.sizeBytes     = 0x80000;          /* 512 KB */
811     ibl.bootModes[0].u.nandBoot.blob.branchAddress = 0x80000000;       /* Base address of DDR2 */
813     ibl.bootModes[0].u.nandBoot.nandInfo.busWidthBits  = 8;
814     ibl.bootModes[0].u.nandBoot.nandInfo.pageSizeBytes = 512;
815     ibl.bootModes[0].u.nandBoot.nandInfo.pageEccBytes  = 16;
816     ibl.bootModes[0].u.nandBoot.nandInfo.pagesPerBlock = 32;
817     ibl.bootModes[0].u.nandBoot.nandInfo.totalBlocks   = 4096;
819     ibl.bootModes[0].u.nandBoot.nandInfo.addressBytes  = 4;
820     ibl.bootModes[0].u.nandBoot.nandInfo.lsbFirst      = TRUE;
821     ibl.bootModes[0].u.nandBoot.nandInfo.blockOffset   = 14;
822     ibl.bootModes[0].u.nandBoot.nandInfo.pageOffset    = 9;
823     ibl.bootModes[0].u.nandBoot.nandInfo.columnOffset  = 0;
825     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[0]  = 0; 
826     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[1]  = 1; 
827     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[2]  = 2; 
828     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[3]  = 3; 
829     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[4]  = 6; 
830     ibl.bootModes[0].u.nandBoot.nandInfo.eccBytesIdx[5]  = 7; 
832     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[0]= 5;
833     ibl.bootModes[0].u.nandBoot.nandInfo.badBlkMarkIdx[1]= 0xffff;
835     ibl.bootModes[0].u.nandBoot.nandInfo.resetCommand    = 0xff;
836     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPre  = 0;
837     ibl.bootModes[0].u.nandBoot.nandInfo.readCommandPost = 0;
838     ibl.bootModes[0].u.nandBoot.nandInfo.postCommand     = FALSE;