Removal of the old set_clocks cmd
[oweals/u-boot_mod.git] / u-boot / include / configs / ap121.h
1 /*
2  * This file contains the configuration parameters for the AP121 (AR9331) board.
3  */
4
5 #ifndef __CONFIG_H
6 #define __CONFIG_H
7
8 #include <configs/ar7240.h>
9 #include <config.h>
10
11 /*
12  * FLASH and environment organization
13  */
14 #define CFG_MAX_FLASH_BANKS                     1
15 #define CFG_MAX_FLASH_SECT                      4096    // 4 KB sectors in 16 MB flash
16
17 /*
18  * We boot from this flash
19  */
20 #define CFG_FLASH_BASE                                  0x9F000000
21 #ifdef COMPRESSED_UBOOT
22         #define BOOTSTRAP_TEXT_BASE                     CFG_FLASH_BASE
23         #define BOOTSTRAP_CFG_MONITOR_BASE      BOOTSTRAP_TEXT_BASE
24 #endif
25
26 /*
27  * The following #defines are needed to get flash environment right
28  */
29 #define CFG_MONITOR_BASE        TEXT_BASE
30 #define CFG_MONITOR_LEN         (192 << 10)
31
32 /*
33  * Default bootargs
34  */
35 #undef CONFIG_BOOTARGS
36
37 #if defined(CONFIG_FOR_TPLINK_WR703N_V1) || \
38         defined(CONFIG_FOR_TPLINK_WR720N_V3) || \
39         defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
40         defined(CONFIG_FOR_TPLINK_MR3040_V1V2) || \
41         defined(CONFIG_FOR_TPLINK_MR10U_V1) || \
42         defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
43         defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
44         defined(CONFIG_FOR_TPLINK_MR13U_V1)
45
46         #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:128k(u-boot),1024k(kernel),2816k(rootfs),64k(config),64k(ART)"
47
48 #elif defined(CONFIG_FOR_TPLINK_WR710N_V1)
49
50         #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:128k(u-boot),1024k(kernel),6912k(rootfs),64k(config),64k(ART)"
51
52 #elif defined(CONFIG_FOR_DLINK_DIR505_A1)
53
54         #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:06 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:64k(u-boot),64k(ART),64k(mac),64k(nvram),256k(language),1024k(uImage),6656k(rootfs)"
55
56 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
57
58         #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),16000k(firmware),64k(ART)"
59
60 #endif
61
62 /*
63  * Other env default values
64  */
65 #undef CONFIG_BOOTFILE
66 #define CONFIG_BOOTFILE                 "firmware.bin"
67
68 #undef CONFIG_LOADADDR
69 #define CONFIG_LOADADDR                 0x80800000
70
71 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
72         #define CFG_LOAD_ADDR           0x9F080000
73 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
74         #define CFG_LOAD_ADDR           0x9F050000
75 #else
76         #define CFG_LOAD_ADDR           0x9F020000
77 #endif
78
79 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
80         #define CONFIG_BOOTCOMMAND "bootm 0x9F080000"
81 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
82         #define CONFIG_BOOTCOMMAND "bootm 0x9F050000"
83 #else
84         #define CONFIG_BOOTCOMMAND "bootm 0x9F020000"
85 #endif
86
87 #define CONFIG_IPADDR           192.168.1.1
88 #define CONFIG_SERVERIP         192.168.1.2
89
90 #undef  CFG_HZ
91 #define CFG_HZ                          bd->bi_cfg_hz
92 #undef  CPU_PLL_CONFIG_VAL
93 #undef  CPU_CLK_CONTROL_VAL
94
95 // CPU-RAM-AHB frequency setting
96 #ifndef CFG_PLL_FREQ
97         #define CFG_PLL_FREQ    CFG_PLL_400_400_200
98 #endif
99
100 /*
101  * CPU_PLL_DITHER_FRAC_VAL
102  *
103  * Value written into CPU PLL Dither FRAC Register (PLL_DITHER_FRAC)
104  *
105  * bits 0..9    NFRAC_MAX       =>      1000 (0x3E8)
106  * bits 10..13  NFRAC_MIN       =>      0 (minimum value is used)
107  * bits 20..29  NFRAC_STEP      =>      1
108  *
109  */
110 #define CPU_PLL_DITHER_FRAC_VAL         0x001003E8
111
112 /*
113  * CPU_PLL_SETTLE_TIME_VAL
114  *
115  * Value written into CPU Phase Lock Loop Configuration Register 2 (CPU_PLL_CONFIG2)
116  *
117  * bits 0..11   SETTLE_TIME     =>      850 (0x352)
118  *
119  */
120 #if CONFIG_40MHZ_XTAL_SUPPORT
121         #define CPU_PLL_SETTLE_TIME_VAL         0x00000550
122 #else
123         #define CPU_PLL_SETTLE_TIME_VAL         0x00000352
124 #endif
125
126 /*
127  * CPU_CLK_CONTROL_VAL
128  *
129  * In CPU_CLK_CONTROL_VAL bit 2 is set (BYPASS = 1 -> bypass PLL)
130  * After PLL configuration we nedd to clear this bit
131  *
132  * Values written into CPU Clock Control Register CLOCK_CONTROL
133  *
134  * bits 2               (1bit)  BYPASS (Bypass PLL. This defaults to 1 for test purposes. Software must enable the CPU PLL for normal operation and then set this bit to 0)
135  * bits 5..6    (2bit)  CPU_POST_DIV    =>      0       (DEFAULT, Ratio = 1)
136  * bits 10..11  (2bit)  DDR_POST_DIV    =>      0       (DEFAULT, Ratio = 1)
137  * bits 15..16  (2bit)  AHB_POST_DIV    =>      1       (DEFAULT, Ratio = 2)
138  *
139  */
140
141 /*
142  * CPU_PLL_CONFIG_VAL
143  *
144  * In CPU_PLL_CONFIG_VAL bit 30 is set (CPU_PLLPWD = 1 -> power down control for CPU PLL)
145  * After PLL configuration we need to clear this bit
146  *
147  * Values written into CPU Phase Lock Loop Configuration (CPU_PLL_CONFIG)
148  *
149  * bits 10..15  (6bit)  DIV_INT (The integer part of the DIV to CPU PLL)                        =>      32      (0x20)
150  * bits 16..20  (5bit)  REFDIV  (Reference clock divider)                                                       =>      1       (0x1)   [doesn't start at values different than 1 (maybe need to change other dividers?)]
151  * bits 21              (1bit)  RANGE   (Determine the VCO frequency range of the CPU PLL)      =>      0       (0x0)   [doesn't have impact on clock values]
152  * bits 23..25  (3bit)  OUTDIV  (Define the ratio between VCO output and PLL output     =>      1       (0x1)   [value == 0 is illegal!]
153  *                                                              VCOOUT * (1/2^OUTDIV) = PLLOUT)
154  */
155
156 /*
157  * = PLL CALCULATION =============
158  * PLL = ((25 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV)   // XTAL=25 MHz
159  * OR
160  * PLL = ((40 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV)   // XTAL=40 MHz
161  *
162  * CPU = PLL / CPU_POST_DIV
163  * DDR = PLL / DDR_POST_DIV
164  * AHB = PLL / AHB_POST_DIV
165  *
166  */
167
168 /*
169  * AR7240_SPI_CONTROL
170  *
171  * Value written into SPI Control (SPI_CONTROL) register
172  *
173  * bits 0..5    (6bit)  CLOCK_DIVIDER   (Specifies the clock divider setting. Actual clock frequency would be (AHB_CLK / ((CLOCK_DIVIDER+1)*2)) )
174  * bits 6               (1bit)  REMAP_DISABLE   (Remaps 4 MB space over unless explicitly disabled by setting this bit to 1. If set to 1, 16 MB is accessible.)
175  *
176  */
177
178 /*
179  * CPU_PLL_CONFIG and CPU_CLK_CONTROL registers values generator
180  */
181 #define MAKE_CPU_PLL_CONFIG_VAL(divint, refdiv, range, outdiv)  (((0x3F & divint) << 10) | ((0x1F & refdiv) << 16) | ((0x1 & range) << 21) | ((0x7 & outdiv) << 23))
182 #define MAKE_CPU_CLK_CONTROL_VAL(cpudiv, ddrdiv, ahbdiv)                (((0x3 & (cpudiv - 1)) << 5) | ((0x3 & (ddrdiv - 1)) << 10) | ((0x3 & (ahbdiv - 1)) << 15))
183
184 /*
185  * Default values (400/400/200 MHz) for O/C recovery mode
186  */
187
188 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
189 #define CPU_CLK_CONTROL_VAL_DEFAULT             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
190
191 #if CONFIG_40MHZ_XTAL_SUPPORT
192         // DIV_INT = 20 (40 MHz * 20/2 = 400 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
193         #define CPU_PLL_CONFIG_VAL_DEFAULT      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
194 #else
195         // DIV_INT = 32 (25 MHz * 32/2 = 400 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
196         #define CPU_PLL_CONFIG_VAL_DEFAULT      MAKE_CPU_PLL_CONFIG_VAL(32, 1, 0, 1)
197 #endif
198
199 // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
200 #define AR7240_SPI_CONTROL_DEFAULT      0x42
201
202 #if (CFG_PLL_FREQ == CFG_PLL_200_200_100)
203
204         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
205         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
206
207         #if CONFIG_40MHZ_XTAL_SUPPORT
208                 // DIV_INT = 20 (40 MHz * 20/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
209                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 0, 2)
210         #else
211                 // DIV_INT = 32 (25 MHz * 32/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
212                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(32, 1, 0, 2)
213         #endif
214
215         // CLOCK_DIVIDER = 1 (SPI clock = 100 / 4 ~ 25 MHz)
216         #define AR7240_SPI_CONTROL              0x41
217
218         #define CFG_HZ_FALLBACK (200000000LU/2)
219
220 #elif (CFG_PLL_FREQ == CFG_PLL_200_200_200)
221
222         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
223         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 1)
224
225         #if CONFIG_40MHZ_XTAL_SUPPORT
226                 // DIV_INT = 20 (40 MHz * 20/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
227                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 0, 2)
228         #else
229                 // DIV_INT = 32 (25 MHz * 32/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
230                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(32, 1, 0, 2)
231         #endif
232
233         // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
234         #define AR7240_SPI_CONTROL              0x42
235
236         #define CFG_HZ_FALLBACK (200000000LU/2)
237
238 #elif (CFG_PLL_FREQ == CFG_PLL_225_225_112)
239
240         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
241         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
242
243         #if CONFIG_40MHZ_XTAL_SUPPORT
244                 #define FREQUENCY_NOT_SUPPORTED
245         #else
246                 // DIV_INT = 36 (25 MHz * 36/4 = 225 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
247                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(36, 1, 0, 2)
248         #endif
249
250         // CLOCK_DIVIDER = 1 (SPI clock = 112 / 4 ~ 28 MHz)
251         #define AR7240_SPI_CONTROL              0x41
252
253         #define CFG_HZ_FALLBACK (225000000LU/2)
254
255 #elif (CFG_PLL_FREQ == CFG_PLL_225_225_225)
256
257         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
258         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 1)
259
260         #if CONFIG_40MHZ_XTAL_SUPPORT
261                 #define FREQUENCY_NOT_SUPPORTED
262         #else
263                 // DIV_INT = 36 (25 MHz * 36/4 = 225 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
264                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(36, 1, 0, 2)
265         #endif
266
267         // CLOCK_DIVIDER = 3 (SPI clock = 225 / 8 ~ 28 MHz)
268         #define AR7240_SPI_CONTROL              0x43
269
270         #define CFG_HZ_FALLBACK (225000000LU/2)
271
272 #elif (CFG_PLL_FREQ == CFG_PLL_250_250_125)
273
274         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
275         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
276
277         #if CONFIG_40MHZ_XTAL_SUPPORT
278                 // DIV_INT = 25 (40 MHz * 25/4 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
279                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(25, 1, 0, 2)
280         #else
281                 // DIV_INT = 20 (25 MHz * 20/2 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
282                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
283         #endif
284
285         // CLOCK_DIVIDER = 1 (SPI clock = 125 / 4 ~ 31 MHz)
286         #define AR7240_SPI_CONTROL              0x41
287
288         #define CFG_HZ_FALLBACK (250000000LU/2)
289
290 #elif (CFG_PLL_FREQ == CFG_PLL_250_250_250)
291
292         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
293         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 1)
294
295         #if CONFIG_40MHZ_XTAL_SUPPORT
296                 // DIV_INT = 25 (40 MHz * 25/4 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
297                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(25, 1, 0, 2)
298         #else
299                 // DIV_INT = 20 (25 MHz * 20/2 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
300                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
301         #endif
302
303         // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
304         #define AR7240_SPI_CONTROL              0x43
305
306         #define CFG_HZ_FALLBACK (250000000LU/2)
307
308 #elif (CFG_PLL_FREQ == CFG_PLL_300_300_150)
309
310         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
311         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
312
313         #if CONFIG_40MHZ_XTAL_SUPPORT
314                 // DIV_INT = 15 (40 MHz * 15/2 = 300 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
315                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(15, 1, 0, 1)
316         #else
317                 // DIV_INT = 24 (25 MHz * 24/2 = 300 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
318                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(24, 1, 0, 1)
319         #endif
320
321         // CLOCK_DIVIDER = 2 (SPI clock = 150 / 6 ~ 25 MHz)
322         #define AR7240_SPI_CONTROL              0x42
323
324         #define CFG_HZ_FALLBACK (300000000LU/2)
325
326 #elif (CFG_PLL_FREQ == CFG_PLL_325_325_162)
327
328         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
329         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
330
331         #if CONFIG_40MHZ_XTAL_SUPPORT
332                 #define FREQUENCY_NOT_SUPPORTED
333         #else
334                 // DIV_INT = 26 (25 MHz * 26/2 = 325 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
335                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(26, 1, 0, 1)
336         #endif
337
338         // CLOCK_DIVIDER = 2 (SPI clock = 162 / 6 ~ 27 MHz)
339         #define AR7240_SPI_CONTROL              0x42
340
341         #define CFG_HZ_FALLBACK (325000000LU/2)
342
343 #elif (CFG_PLL_FREQ == CFG_PLL_350_350_175)
344
345         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
346         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
347
348         #if CONFIG_40MHZ_XTAL_SUPPORT
349                 #define FREQUENCY_NOT_SUPPORTED
350         #else
351                 // DIV_INT = 28 (25 MHz * 28/2 = 350 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
352                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(28, 1, 0, 1)
353         #endif
354
355         // CLOCK_DIVIDER = 2 (SPI clock = 175 / 6 ~ 29 MHz)
356         #define AR7240_SPI_CONTROL              0x42
357
358         #define CFG_HZ_FALLBACK (350000000LU/2)
359
360 #elif (CFG_PLL_FREQ == CFG_PLL_360_360_180)
361
362         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
363         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
364
365         #if CONFIG_40MHZ_XTAL_SUPPORT
366                 // DIV_INT = 18 (40 MHz * 18/2 = 360 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
367                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(18, 1, 0, 1)
368         #else
369                 // DIV_INT = 29 (25 MHz * 28/2 = 362 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
370                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(29, 1, 0, 1)
371         #endif
372
373         // CLOCK_DIVIDER = 2 (SPI clock = 180 / 6 ~ 30 MHz)
374         #define AR7240_SPI_CONTROL              0x42
375
376         #define CFG_HZ_FALLBACK (360000000LU/2)
377
378 #elif (CFG_PLL_FREQ == CFG_PLL_380_380_190)
379
380         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
381         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
382
383         #if CONFIG_40MHZ_XTAL_SUPPORT
384                 // DIV_INT = 19 (40 MHz * 19/2 = 380 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
385                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(19, 1, 0, 1)
386         #else
387                 #define FREQUENCY_NOT_SUPPORTED
388         #endif
389
390         // CLOCK_DIVIDER = 2 (SPI clock = 190 / 6 ~ 32 MHz)
391         #define AR7240_SPI_CONTROL              0x42
392
393         #define CFG_HZ_FALLBACK (380000000LU/2)
394
395 #elif (CFG_PLL_FREQ == CFG_PLL_400_400_200)
396
397         // default configuration
398         #define CPU_CLK_CONTROL_VAL     CPU_CLK_CONTROL_VAL_DEFAULT
399         #define CPU_PLL_CONFIG_VAL      CPU_PLL_CONFIG_VAL_DEFAULT
400         #define AR7240_SPI_CONTROL      AR7240_SPI_CONTROL_DEFAULT
401
402         #define CFG_HZ_FALLBACK (400000000LU/2)
403
404 #elif (CFG_PLL_FREQ == CFG_PLL_412_412_206)
405
406         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
407         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
408
409         #if CONFIG_40MHZ_XTAL_SUPPORT
410                 #define FREQUENCY_NOT_SUPPORTED
411         #else
412                 // DIV_INT = 33 (25 MHz * 33/2 = 412 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
413                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(33, 1, 0, 1)
414         #endif
415
416         // CLOCK_DIVIDER = 2 (SPI clock = 206 / 6 ~ 34 MHz)
417         #define AR7240_SPI_CONTROL              0x42
418
419         #define CFG_HZ_FALLBACK (412000000LU/2)
420
421 #elif (CFG_PLL_FREQ == CFG_PLL_420_420_210)
422
423         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
424         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
425
426         #if CONFIG_40MHZ_XTAL_SUPPORT
427                 // DIV_INT = 21 (40 MHz * 21/2 = 420 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
428                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(21, 1, 0, 1)
429         #else
430                 #define FREQUENCY_NOT_SUPPORTED
431         #endif
432
433         // CLOCK_DIVIDER = 2 (SPI clock = 210 / 6 ~ 35 MHz)
434         #define AR7240_SPI_CONTROL              0x42
435
436         #define CFG_HZ_FALLBACK (420000000LU/2)
437
438 #elif (CFG_PLL_FREQ == CFG_PLL_425_425_212)
439
440         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
441         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
442
443         #if CONFIG_40MHZ_XTAL_SUPPORT
444                 #define FREQUENCY_NOT_SUPPORTED
445         #else
446                 // DIV_INT = 34 (25 MHz * 34/2 = 425 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
447                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(34, 1, 0, 1)
448         #endif
449
450         // CLOCK_DIVIDER = 2 (SPI clock = 212 / 6 ~ 35 MHz)
451         #define AR7240_SPI_CONTROL              0x42
452
453         #define CFG_HZ_FALLBACK (425000000LU/2)
454
455 #elif (CFG_PLL_FREQ == CFG_PLL_437_437_218)
456
457         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
458         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
459
460         #if CONFIG_40MHZ_XTAL_SUPPORT
461                 #define FREQUENCY_NOT_SUPPORTED
462         #else
463                 // DIV_INT = 35 (25 MHz * 35/2 = 437 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
464                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(35, 1, 0, 1)
465         #endif
466
467         // CLOCK_DIVIDER = 3 (SPI clock = 218 / 8 ~ 27 MHz)
468         #define AR7240_SPI_CONTROL              0x43
469
470         #define CFG_HZ_FALLBACK (437000000LU/2)
471
472 #elif (CFG_PLL_FREQ == CFG_PLL_440_440_220)
473
474         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
475         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
476
477         #if CONFIG_40MHZ_XTAL_SUPPORT
478                 // DIV_INT = 22 (40 MHz * 22/2 = 440 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
479                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(22, 1, 0, 1)
480         #else
481                 #define FREQUENCY_NOT_SUPPORTED
482         #endif
483
484         // CLOCK_DIVIDER = 3 (SPI clock = 220 / 8 ~ 27 MHz)
485         #define AR7240_SPI_CONTROL              0x43
486
487         #define CFG_HZ_FALLBACK (440000000LU/2)
488
489 #elif (CFG_PLL_FREQ == CFG_PLL_450_450_225)
490
491         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
492         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
493
494         #if CONFIG_40MHZ_XTAL_SUPPORT
495                 #define FREQUENCY_NOT_SUPPORTED
496         #else
497                 // DIV_INT = 36 (25 MHz * 36/2 = 450 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
498                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(36, 1, 0, 1)
499         #endif
500
501         // CLOCK_DIVIDER = 3 (SPI clock = 225 / 8 ~ 28 MHz)
502         #define AR7240_SPI_CONTROL              0x43
503
504         #define CFG_HZ_FALLBACK (450000000LU/2)
505
506 #elif (CFG_PLL_FREQ == CFG_PLL_460_460_230)
507
508         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
509         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
510
511         #if CONFIG_40MHZ_XTAL_SUPPORT
512                 // DIV_INT = 23 (40 MHz * 23/2 = 460 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
513                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(23, 1, 0, 1)
514         #else
515                 // DIV_INT = 37 (25 MHz * 36/2 = 462 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
516                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(37, 1, 0, 1)
517         #endif
518
519         // CLOCK_DIVIDER = 3 (SPI clock = 230 / 8 ~ 29 MHz)
520         #define AR7240_SPI_CONTROL              0x43
521
522         #define CFG_HZ_FALLBACK (460000000LU/2)
523
524 #elif (CFG_PLL_FREQ == CFG_PLL_475_475_237)
525
526         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
527         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
528
529         #if CONFIG_40MHZ_XTAL_SUPPORT
530                 #define FREQUENCY_NOT_SUPPORTED
531         #else
532                 // DIV_INT = 38 (25 MHz * 38/2 = 475 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
533                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(38, 1, 0, 1)
534         #endif
535
536         // CLOCK_DIVIDER = 3 (SPI clock = 237 / 8 ~ 30 MHz)
537         #define AR7240_SPI_CONTROL              0x43
538
539         #define CFG_HZ_FALLBACK (475000000LU/2)
540
541 #elif (CFG_PLL_FREQ == CFG_PLL_480_480_240)
542
543         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
544         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
545
546         #if CONFIG_40MHZ_XTAL_SUPPORT
547                 // DIV_INT = 24 (40 MHz * 24/2 = 480 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
548                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(24, 1, 0, 1)
549         #else
550                 #define FREQUENCY_NOT_SUPPORTED
551         #endif
552
553         // CLOCK_DIVIDER = 3 (SPI clock = 240 / 8 ~ 30 MHz)
554         #define AR7240_SPI_CONTROL              0x43
555
556         #define CFG_HZ_FALLBACK (480000000LU/2)
557
558 #elif (CFG_PLL_FREQ == CFG_PLL_487_487_243)
559
560         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
561         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
562
563         #if CONFIG_40MHZ_XTAL_SUPPORT
564                 #define FREQUENCY_NOT_SUPPORTED
565         #else
566                 // DIV_INT = 39 (25 MHz * 39/2 = 487 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
567                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(39, 1, 0, 1)
568         #endif
569
570         // CLOCK_DIVIDER = 3 (SPI clock = 243 / 8 ~ 30 MHz)
571         #define AR7240_SPI_CONTROL              0x43
572
573         #define CFG_HZ_FALLBACK (487000000LU/2)
574
575 #elif (CFG_PLL_FREQ == CFG_PLL_500_500_250)
576
577         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
578         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
579
580         #if CONFIG_40MHZ_XTAL_SUPPORT
581                 // DIV_INT = 25 (40 MHz * 25/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
582                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(25, 1, 0, 1)
583         #else
584                 // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
585                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(40, 1, 0, 1)
586         #endif
587
588         // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
589         #define AR7240_SPI_CONTROL              0x43
590
591         #define CFG_HZ_FALLBACK (500000000LU/2)
592
593 #elif (CFG_PLL_FREQ == CFG_PLL_500_250_250)
594
595         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 2
596         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 2)
597
598         #if CONFIG_40MHZ_XTAL_SUPPORT
599                 // DIV_INT = 25 (40 MHz * 25/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
600                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(25, 1, 0, 1)
601         #else
602                 // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
603                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(40, 1, 0, 1)
604         #endif
605
606         // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
607         #define AR7240_SPI_CONTROL              0x43
608
609         #define CFG_HZ_FALLBACK (500000000LU/2)
610
611 #elif (CFG_PLL_FREQ == CFG_PLL_520_520_260)
612
613         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
614         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
615
616         #if CONFIG_40MHZ_XTAL_SUPPORT
617                 // DIV_INT = 26 (40 MHz * 26/2 = 520 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
618                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(26, 1, 0, 1)
619         #else
620                 #define FREQUENCY_NOT_SUPPORTED
621         #endif
622
623         // CLOCK_DIVIDER = 3 (SPI clock = 260 / 8 ~ 32 MHz)
624         #define AR7240_SPI_CONTROL              0x43
625
626         #define CFG_HZ_FALLBACK (520000000LU/2)
627
628 #elif (CFG_PLL_FREQ == CFG_PLL_525_262_131)
629
630         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
631         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 4)
632
633         #if CONFIG_40MHZ_XTAL_SUPPORT
634                 #define FREQUENCY_NOT_SUPPORTED
635         #else
636                 // DIV_INT = 42 (25 MHz * 42/2 = 525 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
637                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(42, 1, 0, 1)
638         #endif
639
640         // CLOCK_DIVIDER = 1 (SPI clock = 131 / 4 ~ 33 MHz)
641         #define AR7240_SPI_CONTROL              0x41
642
643         #define CFG_HZ_FALLBACK (525000000LU/2)
644
645 #elif (CFG_PLL_FREQ == CFG_PLL_560_280_140)
646
647         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
648         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 4)
649
650         #if CONFIG_40MHZ_XTAL_SUPPORT
651                 // DIV_INT = 28 (40 MHz * 28/2 = 560 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
652                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(28, 1, 0, 1)
653         #else
654                 // DIV_INT = 45 (25 MHz * 45/2 = 562 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
655                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(45, 1, 0, 1)
656         #endif
657
658         // CLOCK_DIVIDER = 1 (SPI clock = 140 / 4 ~ 35 MHz)
659         #define AR7240_SPI_CONTROL              0x41
660
661         #define CFG_HZ_FALLBACK (560000000LU/2)
662
663 #elif (CFG_PLL_FREQ == CFG_PLL_580_290_145)
664
665         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
666         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 4)
667
668         #if CONFIG_40MHZ_XTAL_SUPPORT
669                 // DIV_INT = 29 (40 MHz * 29/2 = 580 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
670                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(29, 1, 0, 1)
671         #else
672                 #define FREQUENCY_NOT_SUPPORTED
673         #endif
674
675         // CLOCK_DIVIDER = 1 (SPI clock = 145 / 4 ~ 36 MHz)
676         #define AR7240_SPI_CONTROL              0x41
677
678         #define CFG_HZ_FALLBACK (580000000LU/2)
679
680 #elif (CFG_PLL_FREQ == CFG_PLL_600_300_200)
681
682         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 3
683         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 3)
684
685         #if CONFIG_40MHZ_XTAL_SUPPORT
686                 // DIV_INT = 30 (40 MHz * 30/2 = 600 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
687                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(30, 1, 0, 1)
688         #else
689                 // DIV_INT = 48 (25 MHz * 48/2 = 600 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
690                 #define CPU_PLL_CONFIG_VAL      MAKE_CPU_PLL_CONFIG_VAL(48, 1, 0, 1)
691         #endif
692
693         // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
694         #define AR7240_SPI_CONTROL              0x42
695
696         #define CFG_HZ_FALLBACK (600000000LU/2)
697
698 #elif defined(CFG_PLL_FREQ)
699         #error Unknown frequency setting!
700 #endif
701
702 /*
703  * Check if clocks configuration is valid
704  */
705 #ifdef FREQUENCY_NOT_SUPPORTED
706         #error Selected frequency setting is not supported with your reference clock!
707 #endif
708
709 /*
710  * Cache lock for stack
711  */
712 #define CFG_INIT_SP_OFFSET              0x1000
713
714 /*
715  * Address and size of Primary Environment Sector
716  */
717 #if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
718         #define CFG_ENV_IS_IN_FLASH     1
719         #undef CFG_ENV_IS_NOWHERE
720 #else
721         #undef  CFG_ENV_IS_IN_FLASH
722         #define CFG_ENV_IS_NOWHERE      1
723 #endif
724
725 #define CFG_ENV_ADDR                    0x9F040000
726 #define CFG_ENV_SIZE                    0x10000
727
728 /*
729  * Available commands
730  */
731 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
732         #define CONFIG_COMMANDS (CFG_CMD_MEMORY | CFG_CMD_DHCP | CFG_CMD_PING | CFG_CMD_FLASH | CFG_CMD_NET | CFG_CMD_RUN | CFG_CMD_DATE | CFG_CMD_IMI | CFG_CMD_SNTP )
733 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
734         #define CONFIG_COMMANDS (CFG_CMD_MEMORY | CFG_CMD_DHCP | CFG_CMD_PING | CFG_CMD_ENV | CFG_CMD_FLASH | CFG_CMD_NET | CFG_CMD_RUN | CFG_CMD_DATE | CFG_CMD_IMI | CFG_CMD_SNTP)
735 #else
736         #define CONFIG_COMMANDS (CFG_CMD_MEMORY | CFG_CMD_DHCP | CFG_CMD_PING | CFG_CMD_FLASH | CFG_CMD_NET | CFG_CMD_RUN | CFG_CMD_DATE | CFG_CMD_SNTP )
737 #endif
738
739 // Enable NetConsole and custom NetConsole port
740 #define CONFIG_NETCONSOLE
741 #define CONFIG_NETCONSOLE_PORT  6666
742
743 /* DDR init values */
744 #if CONFIG_40MHZ_XTAL_SUPPORT
745         #define CFG_DDR_REFRESH_VAL     0x4270
746 #else
747         #define CFG_DDR_REFRESH_VAL     0x4186
748 #endif
749
750 #define CFG_DDR_CONFIG_VAL              0x7fbc8cd0
751 #define CFG_DDR_MODE_VAL_INIT   0x133
752
753 #ifdef LOW_DRIVE_STRENGTH
754         #define CFG_DDR_EXT_MODE_VAL    0x2
755 #else
756         #define CFG_DDR_EXT_MODE_VAL    0x0
757 #endif
758
759 #define CFG_DDR_MODE_VAL        0x33
760 #define CFG_DDR_TRTW_VAL        0x1f
761 #define CFG_DDR_TWTR_VAL        0x1e
762
763 //#define CFG_DDR_CONFIG2_VAL                   0x99d0e6a8      // HORNET 1.0
764 #define CFG_DDR_CONFIG2_VAL                             0x9dd0e6a8      // HORNET 1.1
765 #define CFG_DDR_RD_DATA_THIS_CYCLE_VAL  0x00ff
766 #define CFG_DDR_TAP0_VAL                                0x8
767 #define CFG_DDR_TAP1_VAL                                0x9
768
769 /* DDR2 Init values */
770 #define CFG_DDR2_EXT_MODE_VAL                   0x402
771
772 #define CONFIG_NET_MULTI
773
774 /* choose eth1 first for tftpboot interface added by ZJin, 110328 */
775 #define CONFIG_AG7240_SPEPHY
776
777 /*
778  * Web Failsafe configuration
779  */
780 #define WEBFAILSAFE_UPLOAD_RAM_ADDRESS                                  CONFIG_LOADADDR
781
782 // U-Boot partition size and offset
783 #define WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS                                CFG_FLASH_BASE
784
785 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
786         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (64 * 1024)
787 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
788         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (256 * 1024)
789 #else
790         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (64 * 1024)
791 #endif
792
793 // Firmware partition offset
794 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
795         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x80000
796 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
797         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x50000
798 #else
799         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x20000
800 #endif
801
802 // ART partition size and offset
803 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
804         #define WEBFAILSAFE_UPLOAD_ART_ADDRESS                          WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x10000
805 #endif
806
807 #define WEBFAILSAFE_UPLOAD_ART_SIZE_IN_BYTES                    (64 * 1024)
808
809 // max. firmware size <= (FLASH_SIZE -  WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES)
810 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
811         // D-Link DIR-505: 64k(U-Boot),64k(ART),64k(MAC),64k(NVRAM),256k(Language)
812         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (512 * 1024)
813 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
814         // Carambola 2: 256k(U-Boot),64k(U-Boot env),64k(ART)
815         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (384 * 1024)
816 #else
817         // TP-Link: 64k(U-Boot),64k(MAC/model/WPS pin block),64k(ART)
818         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (192 * 1024)
819 #endif
820
821 // progress state info
822 #define WEBFAILSAFE_PROGRESS_START                              0
823 #define WEBFAILSAFE_PROGRESS_TIMEOUT                    1
824 #define WEBFAILSAFE_PROGRESS_UPLOAD_READY               2
825 #define WEBFAILSAFE_PROGRESS_UPGRADE_READY              3
826 #define WEBFAILSAFE_PROGRESS_UPGRADE_FAILED             4
827
828 // update type
829 #define WEBFAILSAFE_UPGRADE_TYPE_FIRMWARE               0
830 #define WEBFAILSAFE_UPGRADE_TYPE_UBOOT                  1
831 #define WEBFAILSAFE_UPGRADE_TYPE_ART                    2
832
833 /*-----------------------------------------------------------------------*/
834
835 #define CFG_ATHRS26_PHY                         1
836 #define CFG_AG7240_NMACS                        2
837 #define CFG_MII0_RMII                           1
838 #define CFG_BOOTM_LEN                           (16 << 20) /* 16 MB */
839
840 #undef DEBUG
841 #define milisecdelay(_x)                        udelay((_x) * 1000)
842
843 /* MAC address, model and PIN number offsets in FLASH */
844 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
845         // DIR-505 has two MAC addresses inside dedicated MAC partition
846         // They are stored in plain text... TODO: read/write MAC stored as plain text
847         //#define OFFSET_MAC_DATA_BLOCK                 0x020000
848         //#define OFFSET_MAC_DATA_BLOCK_LENGTH  0x010000
849         //#define OFFSET_MAC_ADDRESS                            0x000004
850         //#define OFFSET_MAC_ADDRESS2                           0x000016
851 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
852         #define OFFSET_MAC_DATA_BLOCK                   0xFF0000
853         #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
854         #define OFFSET_MAC_ADDRESS                              0x000000        // Carambola 2 has two MAC addresses at the beginning of ART partition
855         #define OFFSET_MAC_ADDRESS2                             0x000006
856 #else
857         #define OFFSET_MAC_DATA_BLOCK                   0x010000
858         #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
859         #define OFFSET_MAC_ADDRESS                              0x00FC00
860 #endif
861
862 #if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) && \
863         !defined(CONFIG_FOR_DLINK_DIR505_A1)
864 #define OFFSET_ROUTER_MODEL                                     0x00FD00
865 #endif
866
867 #if defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
868         defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
869         defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
870         defined(CONFIG_FOR_TPLINK_WR710N_V1)
871         #define OFFSET_PIN_NUMBER                               0x00FE00
872 #endif
873
874 /*
875  * PLL and clocks configurations from FLASH
876  *
877  * We need space for 4x 32-bit variables:
878  * - PLL_MAGIC_VARIABLE
879  * - values of registers:
880  *   - CPU_PLL_CONFIG (page 70 in datasheet)
881  *   - CLOCK_CONTROL  (page 71)
882  *   - SPI_CONTROL    (page 261)
883  */
884 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
885         /*
886          * We will store PLL and CLOCK registers
887          * configuration at the end of MAC data
888          * partition (3rd 64 KiB block)
889          */
890         #define PLL_IN_FLASH_MAGIC                              0x504C4C73
891         #define PLL_IN_FLASH_DATA_BLOCK_OFFSET  0x00020000
892         #define PLL_IN_FLASH_DATA_BLOCK_LENGTH  0x00010000
893         #define PLL_IN_FLASH_MAGIC_OFFSET               0x0000FFF0      // last 16 bytes
894 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
895         /*
896          * We will store PLL and CLOCK registers
897          * configuration at the end of U-Boot
898          * image (4th 64 KiB block)
899          * It implies that binary image can't
900          * be bigger than 192 KiB!
901          *
902          * TODO: fix me
903          */
904         #define PLL_IN_FLASH_MAGIC                              0x504C4C73
905         #define PLL_IN_FLASH_DATA_BLOCK_OFFSET  0x00030000
906         #define PLL_IN_FLASH_DATA_BLOCK_LENGTH  0x00010000
907         #define PLL_IN_FLASH_MAGIC_OFFSET               0x0000FFF0      // last 16 bytes
908 #else
909         /*
910          * All TP-Link routers have a lot of unused space
911          * in FLASH, in second 64 KiB block.
912          * We will store there PLL and CLOCK
913          * registers configuration.
914          */
915         #define PLL_IN_FLASH_MAGIC                              0x504C4C73
916         #define PLL_IN_FLASH_DATA_BLOCK_OFFSET  0x00010000
917         #define PLL_IN_FLASH_DATA_BLOCK_LENGTH  0x00010000
918         #define PLL_IN_FLASH_MAGIC_OFFSET               0x0000FFF0      // last 16 bytes
919 #endif
920
921 #include <cmd_confdefs.h>
922
923 #endif  /* __CONFIG_H */