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