8e83d967cb4c5ceeca6d7ec6ccaeabf431dcebe7
[keystone-rtos/ibl.git] / src / util / i2cConfig / i2cConfig.gel
1 #define TRUE  1\r
2 #define FALSE 0\r
3 \r
4 #define ibl_MAGIC_VALUE                  0xCEC11EBB\r
5 \r
6 #define ibl_HIGHEST_PRIORITY     1  \r
7 #define ibl_LOWEST_PRIORITY     10\r
8 #define ibl_DEVICE_NOBOOT       20\r
9 \r
10 #define SETIP(array,i0,i1,i2,i3)      array[0]=(i0);  \\r
11                                       array[1]=(i1);  \\r
12                                       array[2]=(i2);  \\r
13                                       array[3]=(i3)\r
14 \r
15 #define ibl_BOOT_FORMAT_AUTO    0\r
16 #define ibl_BOOT_FORMAT_NAME    1\r
17 #define ibl_BOOT_FORMAT_BIS     2\r
18 #define ibl_BOOT_FORMAT_COFF    3\r
19 #define ibl_BOOT_FORMAT_ELF     4\r
20 #define ibl_BOOT_FORMAT_BBLOB   5\r
21 #define ibl_BOOT_FORMAT_BTBL    6\r
22 \r
23 #define ibl_MAIN_PLL    0\r
24 #define ibl_DDR_PLL     1\r
25 #define ibl_NET_PLL     2\r
26 \r
27 \r
28 menuitem "EVM c6472 IBL";\r
29 \r
30 hotmenu setConfig_c6472()\r
31 {\r
32     ibl.iblMagic = ibl_MAGIC_VALUE;\r
33 \r
34     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;\r
35     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;\r
36     ibl.pllConfig[ibl_MAIN_PLL].mult          = 28;\r
37     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;\r
38     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 700;\r
39 \r
40     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */\r
41     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;\r
42 \r
43     /* The network PLL. The multipliers/dividers are fixed */\r
44     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;\r
45 \r
46     /* EMIF configuration. The values are for DDR at 533 MHz  */\r
47     ibl.ddrConfig.configDdr = TRUE;\r
48 \r
49     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538832; /* timing, 32bit wide */\r
50     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x0000073B; /* Refresh 533Mhz */ \r
51     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x47245BD2; /* Timing 1 */\r
52     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x0125DC44; /* Timing 2 */\r
53     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */\r
54 \r
55     /* Ethernet configuration for port 0 */\r
56     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;\r
57     ibl.ethConfig[0].port             = 0;\r
58 \r
59     /* Bootp is disabled. The server and file name are provided here */\r
60     ibl.ethConfig[0].doBootp          = FALSE;\r
61     ibl.ethConfig[0].useBootpServerIp = FALSE;\r
62     ibl.ethConfig[0].useBootpFileName = FALSE;\r
63     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
64 \r
65 \r
66     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,113);\r
67     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);\r
68     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);\r
69     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);\r
70 \r
71     /* Leave the hardware address as 0 so the e-fuse value will be used */\r
72 \r
73 \r
74 \r
75 \r
76     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';\r
77     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';\r
78     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';\r
79     ibl.ethConfig[0].ethInfo.fileName[3]  = '7';\r
80     ibl.ethConfig[0].ethInfo.fileName[4]  = '2';\r
81     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';\r
82     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';\r
83     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';\r
84     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';\r
85     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';\r
86     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';\r
87     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';\r
88     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';\r
89     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';\r
90     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';\r
91 \r
92     /* Even though the entire range of DDR2 is chosen, the load will\r
93      * stop when the ftp reaches the end of the file */\r
94     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */\r
95     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
96     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */\r
97 \r
98     /* For port 1 use bootp */\r
99     /* Ethernet configuration for port 0 */\r
100     ibl.ethConfig[1].ethPriority      = ibl_HIGHEST_PRIORITY + 1;\r
101     ibl.ethConfig[1].port             = 1;\r
102 \r
103     /* Bootp is disabled. The server and file name are provided here */\r
104     ibl.ethConfig[1].doBootp          = TRUE;\r
105     ibl.ethConfig[1].useBootpServerIp = TRUE;\r
106     ibl.ethConfig[1].useBootpFileName = TRUE;\r
107     ibl.ethConfig[1].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
108 \r
109 \r
110     /* SGMII not present */\r
111         ibl.sgmiiConfig[0].adviseAbility = 0;\r
112         ibl.sgmiiConfig[0].control       = 0;\r
113         ibl.sgmiiConfig[0].txConfig      = 0;\r
114         ibl.sgmiiConfig[0].rxConfig      = 0;\r
115         ibl.sgmiiConfig[0].auxConfig     = 0;\r
116 \r
117         ibl.sgmiiConfig[1].adviseAbility = 0;\r
118         ibl.sgmiiConfig[1].control       = 0;\r
119         ibl.sgmiiConfig[1].txConfig      = 0;\r
120         ibl.sgmiiConfig[1].rxConfig      = 0;\r
121         ibl.sgmiiConfig[1].auxConfig     = 0;\r
122 \r
123 \r
124     /* Leave the hardware address as 0 so the e-fuse value will be used */\r
125     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;\r
126     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;\r
127     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;\r
128     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;\r
129     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;\r
130     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;\r
131 \r
132 \r
133     /* Leave all remaining fields as 0 since bootp will fill them in */\r
134 \r
135 \r
136     /* Even though the entire range of DDR2 is chosen, the load will */\r
137     /* stop when the ftp reaches the end of the file */\r
138  \r
139     ibl.ethConfig[1].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */\r
140     ibl.ethConfig[1].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
141     ibl.ethConfig[1].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */\r
142     \r
143 \r
144 \r
145     /* MDIO configuration */\r
146     ibl.mdioConfig.nMdioOps = 8;\r
147     ibl.mdioConfig.mdioClkDiv = 0x20;\r
148     ibl.mdioConfig.interDelay = 1400;   /* ~2ms at 700 MHz */\r
149 \r
150     ibl.mdioConfig.mdio[0] =  (1 << 30) | (27 << 21) | (24 << 16) | 0x848b;\r
151     ibl.mdioConfig.mdio[1] =  (1 << 30) | (20 << 21) | (24 << 16) | 0x0ce0;\r
152     ibl.mdioConfig.mdio[2] =  (1 << 30) | (24 << 21) | (24 << 16) | 0x4101;\r
153     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (24 << 16) | 0x9140;\r
154 \r
155     ibl.mdioConfig.mdio[4] =  (1 << 30) | (27 << 21) | (25 << 16) | 0x848b;\r
156     ibl.mdioConfig.mdio[5] =  (1 << 30) | (20 << 21) | (25 << 16) | 0x0ce0;\r
157     ibl.mdioConfig.mdio[6] =  (1 << 30) | (24 << 21) | (25 << 16) | 0x4101;\r
158     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | (25 << 16) | 0x9140;\r
159 \r
160 \r
161     /* Nand boot is disabled */\r
162     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;\r
163 \r
164 }\r
165 \r
166 \r
167 menuitem "EVM c6474 Mez IBL";\r
168 \r
169 hotmenu setConfig_c6474()\r
170 {\r
171     ibl.iblMagic = ibl_MAGIC_VALUE;\r
172 \r
173     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;\r
174     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;\r
175     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;\r
176     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;\r
177     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;\r
178 \r
179     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */\r
180     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;\r
181 \r
182     /* The network PLL. The multipliers/dividers are fixed */\r
183     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;\r
184 \r
185     /* EMIF configuration. The values are for DDR at 533 MHz  */\r
186     ibl.ddrConfig.configDdr = TRUE;\r
187 \r
188     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */\r
189     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ \r
190     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */\r
191     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */\r
192     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */\r
193 \r
194 \r
195     /* Ethernet configuration for port 0 */\r
196     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;\r
197     ibl.ethConfig[0].port             = 0;\r
198 \r
199     /* Bootp is disabled. The server and file name are provided here */\r
200     ibl.ethConfig[0].doBootp          = FALSE;\r
201     ibl.ethConfig[0].useBootpServerIp = FALSE;\r
202     ibl.ethConfig[0].useBootpFileName = FALSE;\r
203     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
204 \r
205     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    10,218,109,35);\r
206     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  10,218,109,196);\r
207     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 10,218,109,1);\r
208     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);\r
209 \r
210     /* Set the hardware address as 0 so the e-fuse value will be used */\r
211     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;\r
212     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;\r
213     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;\r
214     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;\r
215     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;\r
216     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;\r
217 \r
218 \r
219     ibl.ethConfig[0].ethInfo.fileName[0]  = 't';\r
220     ibl.ethConfig[0].ethInfo.fileName[1]  = 'e';\r
221     ibl.ethConfig[0].ethInfo.fileName[2]  = 's';\r
222     ibl.ethConfig[0].ethInfo.fileName[3]  = 't';\r
223     ibl.ethConfig[0].ethInfo.fileName[4]  = '.';\r
224     ibl.ethConfig[0].ethInfo.fileName[5]  = 'b';\r
225     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';\r
226     ibl.ethConfig[0].ethInfo.fileName[7]  = 'o';\r
227     ibl.ethConfig[0].ethInfo.fileName[8]  = 'b';\r
228     ibl.ethConfig[0].ethInfo.fileName[9]  = '\0';\r
229     ibl.ethConfig[0].ethInfo.fileName[10] = '\0';\r
230     ibl.ethConfig[0].ethInfo.fileName[11] = '\0';\r
231     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';\r
232     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';\r
233     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';\r
234 \r
235 \r
236     /* Even though the entire range of DDR2 is chosen, the load will\r
237      * stop when the ftp reaches the end of the file */\r
238     ibl.ethConfig[0].blob.startAddress  = 0x80000000;       /* Base address of DDR2 */\r
239     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
240     ibl.ethConfig[0].blob.branchAddress = 0x80000000;       /* Base of DDR2 */\r
241 \r
242     /* There is no port 1 on the 6474 */\r
243     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;\r
244 \r
245     /* SGMII is present */\r
246     ibl.sgmiiConfig[0].adviseAbility = 0x9801;\r
247     ibl.sgmiiConfig[0].control       = 0x20;\r
248     ibl.sgmiiConfig[0].txConfig      = 0x00000ea3;\r
249     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;\r
250     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;\r
251 \r
252     /* MDIO configuration */\r
253     ibl.mdioConfig.nMdioOps = 8;\r
254     ibl.mdioConfig.mdioClkDiv = 0x26;\r
255     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */\r
256 \r
257     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;\r
258     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (15 << 16) | 0x0047;\r
259     ibl.mdioConfig.mdio[2] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;\r
260     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (15 << 16) | 0x8140;\r
261 \r
262     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;\r
263     ibl.mdioConfig.mdio[5] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
264     ibl.mdioConfig.mdio[6] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
265     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0xa100;\r
266 \r
267 \r
268     /* Nand boot is disabled */\r
269     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;\r
270 \r
271 }\r
272 \r
273 menuitem "EVM c6474 Lite EVM IBL";\r
274 \r
275 hotmenu setConfig_c6474lite()\r
276 {\r
277     ibl.iblMagic = ibl_MAGIC_VALUE;\r
278 \r
279     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;\r
280     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;\r
281     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;\r
282     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;\r
283     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;\r
284 \r
285     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */\r
286     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;\r
287 \r
288     /* The network PLL. The multipliers/dividers are fixed */\r
289     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;\r
290 \r
291     /* EMIF configuration. The values are for DDR at 533 MHz  */\r
292     ibl.ddrConfig.configDdr = TRUE;\r
293 \r
294     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */\r
295     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a29; /* Refresh 333Mhz */ \r
296     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x4d246c9a; /* Timing 1 */\r
297     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00993c42; /* Timing 2 */\r
298     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */\r
299 \r
300 \r
301     /* Ethernet configuration for port 0 */\r
302     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;\r
303     ibl.ethConfig[0].port             = 0;\r
304 \r
305     /* Bootp is disabled. The server and file name are provided here */\r
306     ibl.ethConfig[0].doBootp          = FALSE;\r
307     ibl.ethConfig[0].useBootpServerIp = FALSE;\r
308     ibl.ethConfig[0].useBootpFileName = FALSE;\r
309     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
310 \r
311     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,114);\r
312     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);\r
313     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);\r
314     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);\r
315 \r
316     /* Set the hardware address as 0 so the e-fuse value will be used */\r
317     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;\r
318     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;\r
319     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;\r
320     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;\r
321     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;\r
322     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;\r
323 \r
324 \r
325     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';\r
326     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';\r
327     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';\r
328     ibl.ethConfig[0].ethInfo.fileName[3]  = '7';\r
329     ibl.ethConfig[0].ethInfo.fileName[4]  = '4';\r
330     ibl.ethConfig[0].ethInfo.fileName[5]  = 'l';\r
331     ibl.ethConfig[0].ethInfo.fileName[6]  = '-';\r
332     ibl.ethConfig[0].ethInfo.fileName[7]  = 'l';\r
333     ibl.ethConfig[0].ethInfo.fileName[8]  = 'e';\r
334     ibl.ethConfig[0].ethInfo.fileName[9]  = '.';\r
335     ibl.ethConfig[0].ethInfo.fileName[10] = 'b';\r
336     ibl.ethConfig[0].ethInfo.fileName[11] = 'i';\r
337     ibl.ethConfig[0].ethInfo.fileName[12] = 'n';\r
338     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';\r
339     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';\r
340 \r
341 \r
342     /* Even though the entire range of DDR2 is chosen, the load will\r
343      * stop when the ftp reaches the end of the file */\r
344     ibl.ethConfig[0].blob.startAddress  = 0x80000000;       /* Base address of DDR2 */\r
345     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
346     ibl.ethConfig[0].blob.branchAddress = 0x80000000;       /* Base of DDR2 */\r
347 \r
348     /* There is no port 1 on the 6474 Lite EVM */\r
349     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;\r
350 \r
351     /* SGMII is present */\r
352     ibl.sgmiiConfig[0].adviseAbility = 0x9801;\r
353     ibl.sgmiiConfig[0].control       = 0x20;\r
354     ibl.sgmiiConfig[0].txConfig      = 0x00000e23;\r
355     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;\r
356     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;\r
357 \r
358     /* MDIO configuration */\r
359     ibl.mdioConfig.nMdioOps = 8;\r
360     ibl.mdioConfig.mdioClkDiv = 0x26;\r
361     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */\r
362 \r
363     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;\r
364     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (15 << 16) | 0x0047;\r
365     ibl.mdioConfig.mdio[2] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;\r
366     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (15 << 16) | 0x8140;\r
367 \r
368     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;\r
369     ibl.mdioConfig.mdio[5] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
370     ibl.mdioConfig.mdio[6] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
371     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0xa100;\r
372 \r
373 \r
374     /* This board has NAND. We will enable later */\r
375     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;\r
376 \r
377 }\r
378 \r
379 menuitem "EVM c6457 EVM IBL";\r
380 \r
381 hotmenu setConfig_c6457()\r
382 {\r
383     ibl.iblMagic = ibl_MAGIC_VALUE;\r
384 \r
385     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;\r
386     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;\r
387     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;\r
388     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;\r
389     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;\r
390 \r
391     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */\r
392     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;\r
393 \r
394     /* The network PLL. The multipliers/dividers are fixed */\r
395     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;\r
396 \r
397     /* EMIF configuration */\r
398     ibl.ddrConfig.configDdr = TRUE;\r
399 \r
400     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00d38a32; /* cas5, 8 banks, 10 bit column */\r
401     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x00000a0e; /* Refresh 333Mhz */ \r
402     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x832474da; /* Timing 1 */\r
403     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x3d44c742; /* Timing 2 */\r
404     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x50001906; /* PHY read latency for CAS 5 is 5 + 2 - 1 */\r
405 \r
406 \r
407     /* Ethernet configuration for port 0 */\r
408     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;\r
409     ibl.ethConfig[0].port             = 0;\r
410 \r
411     /* Bootp is disabled. The server and file name are provided here */\r
412     ibl.ethConfig[0].doBootp          = FALSE;\r
413     ibl.ethConfig[0].useBootpServerIp = FALSE;\r
414     ibl.ethConfig[0].useBootpFileName = FALSE;\r
415     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
416 \r
417     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,115);\r
418     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);\r
419     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);\r
420     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);\r
421 \r
422     /* Set the hardware address as 0 so the e-fuse value will be used */\r
423     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0;\r
424     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0;\r
425     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0;\r
426     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0;\r
427     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0;\r
428     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0;\r
429 \r
430 \r
431     ibl.ethConfig[0].ethInfo.fileName[0]  = 'c';\r
432     ibl.ethConfig[0].ethInfo.fileName[1]  = '6';\r
433     ibl.ethConfig[0].ethInfo.fileName[2]  = '4';\r
434     ibl.ethConfig[0].ethInfo.fileName[3]  = '5';\r
435     ibl.ethConfig[0].ethInfo.fileName[4]  = '7';\r
436     ibl.ethConfig[0].ethInfo.fileName[5]  = '-';\r
437     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';\r
438     ibl.ethConfig[0].ethInfo.fileName[7]  = 'e';\r
439     ibl.ethConfig[0].ethInfo.fileName[8]  = '.';\r
440     ibl.ethConfig[0].ethInfo.fileName[9]  = 'b';\r
441     ibl.ethConfig[0].ethInfo.fileName[10] = 'i';\r
442     ibl.ethConfig[0].ethInfo.fileName[11] = 'n';\r
443     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';\r
444     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';\r
445     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';\r
446 \r
447 \r
448     /* Even though the entire range of DDR2 is chosen, the load will\r
449      * stop when the ftp reaches the end of the file */\r
450     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */\r
451     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
452     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */\r
453 \r
454     /* There is no port 1 on the 6457 Lite EVM */\r
455     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;\r
456 \r
457     /* SGMII is present */\r
458     ibl.sgmiiConfig[0].adviseAbility = 0x9801;\r
459     ibl.sgmiiConfig[0].control       = 0x20;\r
460     ibl.sgmiiConfig[0].txConfig      = 0x00000e23;\r
461     ibl.sgmiiConfig[0].rxConfig      = 0x00081023;\r
462     ibl.sgmiiConfig[0].auxConfig     = 0x0000000b;\r
463 \r
464     /* MDIO configuration */\r
465     ibl.mdioConfig.nMdioOps = 8;\r
466     ibl.mdioConfig.mdioClkDiv = 0x26;\r
467     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */\r
468 \r
469     ibl.mdioConfig.mdio[0] =  (1 << 30) | ( 4 << 21) | (27 << 16) | 0x0081;\r
470     ibl.mdioConfig.mdio[1] =  (1 << 30) | (26 << 21) | (15 << 16) | 0x0047;\r
471     ibl.mdioConfig.mdio[2] =  (1 << 30) | (26 << 21) | (14 << 16) | 0x0047;\r
472     ibl.mdioConfig.mdio[3] =  (1 << 30) | ( 0 << 21) | (15 << 16) | 0x8140;\r
473 \r
474     ibl.mdioConfig.mdio[4] =  (1 << 30) | ( 0 << 21) | (14 << 16) | 0x8140;\r
475     ibl.mdioConfig.mdio[5] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
476     ibl.mdioConfig.mdio[6] =  (1 << 30) | ( 1 << 21) | (22 << 16) | 0x043e;\r
477     ibl.mdioConfig.mdio[7] =  (1 << 30) | ( 0 << 21) | ( 1 << 16) | 0xa100;\r
478 \r
479 \r
480     /* This board has NAND. We will enable later */\r
481     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;\r
482 \r
483 }\r
484 \r
485 menuitem "EVM c6455 IBL";\r
486 \r
487 hotmenu setConfig_c6455()\r
488 {\r
489     ibl.iblMagic = ibl_MAGIC_VALUE;\r
490 \r
491     ibl.pllConfig[ibl_MAIN_PLL].doEnable      = TRUE;\r
492     ibl.pllConfig[ibl_MAIN_PLL].prediv        = 1;\r
493     ibl.pllConfig[ibl_MAIN_PLL].mult          = 20;\r
494     ibl.pllConfig[ibl_MAIN_PLL].postdiv       = 1;\r
495     ibl.pllConfig[ibl_MAIN_PLL].pllOutFreqMhz = 1000;\r
496 \r
497     /* The DDR PLL. The multipliers/dividers are fixed, so are really dont cares */\r
498     ibl.pllConfig[ibl_DDR_PLL].doEnable = TRUE;\r
499 \r
500     /* The network PLL. The multipliers/dividers are fixed */\r
501     ibl.pllConfig[ibl_NET_PLL].doEnable = TRUE;\r
502 \r
503     /* EMIF configuration. The values are for DDR at 500 MHz  */\r
504     ibl.ddrConfig.configDdr = TRUE;\r
505 \r
506     ibl.ddrConfig.uEmif.emif3p1.sdcfg  = 0x00538822; /* timing, 32bit wide */\r
507     ibl.ddrConfig.uEmif.emif3p1.sdrfc  = 0x000007a2; /* Refresh 500Mhz */ \r
508     ibl.ddrConfig.uEmif.emif3p1.sdtim1 = 0x3edb4b91; /* Timing 1 */\r
509     ibl.ddrConfig.uEmif.emif3p1.sdtim2 = 0x00a2c722; /* Timing 2 */\r
510     ibl.ddrConfig.uEmif.emif3p1.dmcctl = 0x00000005; /* PHY read latency for CAS 4 is 4 + 2 - 1 */\r
511 \r
512     /* Ethernet configuration for port 0 */\r
513     ibl.ethConfig[0].ethPriority      = ibl_HIGHEST_PRIORITY;\r
514     ibl.ethConfig[0].port             = 0;\r
515 \r
516     /* Bootp is disabled. The server and file name are provided here */\r
517     ibl.ethConfig[0].doBootp          = FALSE;\r
518     ibl.ethConfig[0].useBootpServerIp = FALSE;\r
519     ibl.ethConfig[0].useBootpFileName = FALSE;\r
520     ibl.ethConfig[0].bootFormat       = ibl_BOOT_FORMAT_BBLOB;\r
521 \r
522 \r
523     SETIP(ibl.ethConfig[0].ethInfo.ipAddr,    158,218,100,118);\r
524     SETIP(ibl.ethConfig[0].ethInfo.serverIp,  158,218,100,25);\r
525     SETIP(ibl.ethConfig[0].ethInfo.gatewayIp, 158,218,100,2);\r
526     SETIP(ibl.ethConfig[0].ethInfo.netmask,   255,255,255,0);\r
527 \r
528     /* There is no e-fuse mac address. A value must be assigned\r
529     ibl.ethConfig[0].ethInfo.hwAddress[0] = 0x00;\r
530     ibl.ethConfig[0].ethInfo.hwAddress[1] = 0xe0;\r
531     ibl.ethConfig[0].ethInfo.hwAddress[2] = 0xa6;\r
532     ibl.ethConfig[0].ethInfo.hwAddress[3] = 0x66;\r
533     ibl.ethConfig[0].ethInfo.hwAddress[4] = 0x57;\r
534     ibl.ethConfig[0].ethInfo.hwAddress[5] = 0x19;\r
535 \r
536 \r
537     ibl.ethConfig[0].ethInfo.fileName[0]  = 't';\r
538     ibl.ethConfig[0].ethInfo.fileName[1]  = 'e';\r
539     ibl.ethConfig[0].ethInfo.fileName[2]  = 's';\r
540     ibl.ethConfig[0].ethInfo.fileName[3]  = 't';\r
541     ibl.ethConfig[0].ethInfo.fileName[4]  = '.';\r
542     ibl.ethConfig[0].ethInfo.fileName[5]  = 'b';\r
543     ibl.ethConfig[0].ethInfo.fileName[6]  = 'l';\r
544     ibl.ethConfig[0].ethInfo.fileName[7]  = 'o';\r
545     ibl.ethConfig[0].ethInfo.fileName[8]  = 'b';\r
546     ibl.ethConfig[0].ethInfo.fileName[9]  = '\0';\r
547     ibl.ethConfig[0].ethInfo.fileName[10] = '\0';\r
548     ibl.ethConfig[0].ethInfo.fileName[11] = '\0';\r
549     ibl.ethConfig[0].ethInfo.fileName[12] = '\0';\r
550     ibl.ethConfig[0].ethInfo.fileName[13] = '\0';\r
551     ibl.ethConfig[0].ethInfo.fileName[14] = '\0';\r
552 \r
553 \r
554     /* Even though the entire range of DDR2 is chosen, the load will\r
555      * stop when the ftp reaches the end of the file */\r
556     ibl.ethConfig[0].blob.startAddress  = 0xe0000000;       /* Base address of DDR2 */\r
557     ibl.ethConfig[0].blob.sizeBytes     = 0x20000000;       /* All of DDR2 */\r
558     ibl.ethConfig[0].blob.branchAddress = 0xe0000000;       /* Base of DDR2 */\r
559 \r
560     /* There is no ethernet port 1 */\r
561     ibl.ethConfig[1].ethPriority      = ibl_DEVICE_NOBOOT;\r
562 \r
563 \r
564     /* SGMII not present */\r
565         ibl.sgmiiConfig[0].adviseAbility = 0;\r
566         ibl.sgmiiConfig[0].control       = 0;\r
567         ibl.sgmiiConfig[0].txConfig      = 0;\r
568         ibl.sgmiiConfig[0].rxConfig      = 0;\r
569         ibl.sgmiiConfig[0].auxConfig     = 0;\r
570 \r
571         ibl.sgmiiConfig[1].adviseAbility = 0;\r
572         ibl.sgmiiConfig[1].control       = 0;\r
573         ibl.sgmiiConfig[1].txConfig      = 0;\r
574         ibl.sgmiiConfig[1].rxConfig      = 0;\r
575         ibl.sgmiiConfig[1].auxConfig     = 0;\r
576 \r
577 \r
578 \r
579     /* MDIO configuration */\r
580     ibl.mdioConfig.nMdioOps = 0;\r
581     ibl.mdioConfig.mdioClkDiv = 0x20;\r
582     ibl.mdioConfig.interDelay = 2000;   /* ~2ms at 1000 MHz */\r
583 \r
584     ibl.mdioConfig.mdio[0] =  (1 << 30) | (14 << 21) | (0 << 16) | 0xd5d0;\r
585 \r
586 \r
587     /* Nand boot is disabled */\r
588     ibl.nandConfig.nandPriority = ibl_DEVICE_NOBOOT;\r
589 \r
590 }\r
591 \r
592 \r