f76cd6883479ebd02aac207797f23f7640f2feca
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
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 */
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 */
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;
229 }
232 menuitem "EVM c6474 Mez IBL";
234 hotmenu setConfig_c6474()
235 {
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;
335 }
337 menuitem "EVM c6474 Lite EVM IBL";
339 hotmenu setConfig_c6474lite()
340 {
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;
438 }
440 menuitem "EVM c6457 EVM IBL";
442 hotmenu setConfig_c6457()
443 {
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;
540 }
542 menuitem "EVM c6455 IBL";
544 hotmenu setConfig_c6455()
545 {
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;
647 }
650 menuitem "EVM c6678 IBL";
652 hotmenu setConfig_c6678()
653 {
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;
795 }
797 menuitem "EVM c6678 NAND Boot IBL";
799 hotmenu setConfig_c6678_nand()
800 {
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;
839 }