CPU/RAM/AHB clocks and memory type print
[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_PLL_FREQ
90 #undef CFG_HZ
91 #undef CPU_PLL_CONFIG_VAL
92 #undef CPU_CLK_CONTROL_VAL
93
94 // CPU-RAM-AHB frequency setting
95 #define CFG_PLL_FREQ    CFG_PLL_400_400_200
96 //#define CFG_PLL_FREQ  CFG_PLL_525_525_262     // only for test!
97
98 /*
99  * CPU_PLL_DITHER_FRAC_VAL
100  *
101  * Value written into CPU PLL Dither FRAC Register (PLL_DITHER_FRAC)
102  *
103  * bits 0..9    NFRAC_MAX       =>      1000 (0x3E8)
104  * bits 10..13  NFRAC_MIN       =>      0 (minimum value is used)
105  * bits 20..29  NFRAC_STEP      =>      1
106  *
107  */
108 #define CPU_PLL_DITHER_FRAC_VAL         0x001003e8
109
110 /*
111  * CPU_PLL_SETTLE_TIME_VAL
112  *
113  * Value written into CPU Phase Lock Loop Configuration Register 2 (CPU_PLL_CONFIG2)
114  *
115  * bits 0..11   SETTLE_TIME     =>      850 (0x352)
116  *
117  */
118 #if CONFIG_40MHZ_XTAL_SUPPORT
119         #define CPU_PLL_SETTLE_TIME_VAL         0x00000550
120 #else
121         #define CPU_PLL_SETTLE_TIME_VAL         0x00000352
122 #endif
123
124 /*
125  * CPU_CLK_CONTROL_VAL
126  *
127  * In CPU_CLK_CONTROL_VAL bit 2 is set (BYPASS = 1 -> bypass PLL)
128  * After PLL configuration we nedd to clear this bit
129  *
130  * Values written into CPU Clock Control Register CLOCK_CONTROL
131  *
132  * 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)
133  * bits 5..6    (2bit)  CPU_POST_DIV    =>      0       (DEFAULT, Ratio = 1)
134  * bits 10..11  (2bit)  DDR_POST_DIV    =>      0       (DEFAULT, Ratio = 1)
135  * bits 15..16  (2bit)  AHB_POST_DIV    =>      1       (DEFAULT, Ratio = 2)
136  *
137  */
138
139 /*
140  * CPU_PLL_CONFIG_VAL
141  *
142  * In CPU_PLL_CONFIG_VAL bit 30 is set (CPU_PLLPWD = 1 -> power down control for CPU PLL)
143  * After PLL configuration we need to clear this bit
144  *
145  * Values written into CPU Phase Lock Loop Configuration (CPU_PLL_CONFIG)
146  *
147  * bits 10..15  (6bit)  DIV_INT (The integer part of the DIV to CPU PLL)                        =>      32      (0x20)
148  * bits 16..20  (5bit)  REFDIV  (Reference clock divider)                                                       =>      1       (0x1)   [doesn't start at values different than 1 (maybe need to change other dividers?)]
149  * bits 21              (1bit)  RANGE   (Determine the VCO frequency range of the CPU PLL)      =>      0       (0x0)   [doesn't have impact on clock values]
150  * bits 23..25  (3bit)  OUTDIV  (Define the ratio between VCO output and PLL output     =>      1       (0x1)   [value == 0 is illegal!]
151  *                                                              VCOOUT * (1/2^OUTDIV) = PLLOUT)
152  */
153
154 /*
155  * = PLL CALCULATION =============
156  * PLL = ((25 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV)   // XTAL=25 MHz
157  * OR
158  * PLL = ((40 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV)   // XTAL=40 MHz
159  *
160  * CPU = PLL / CPU_POST_DIV
161  * DDR = PLL / DDR_POST_DIV
162  * AHB = PLL / AHB_POST_DIV
163  *
164  */
165
166 /*
167  * AR7240_SPI_CONTROL
168  *
169  * Value written into SPI Control (SPI_CONTROL) register
170  *
171  * bits 0..5    (6bit)  CLOCK_DIVIDER   (Specifies the clock divider setting. Actual clock frequency would be (AHB_CLK / ((CLOCK_DIVIDER+1)*2)) )
172  * 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.)
173  *
174  */
175
176 /*
177  * CPU_PLL_CONFIG and CPU_CLK_CONTROL registers values generator
178  */
179 #define MAKE_CPU_PLL_CONFIG_VAL(divint, refdiv, outdiv)         (0x40000000 | ((0x3F & divint) << 10) | ((0x1F & refdiv) << 16) | ((0x7 & outdiv) << 23))
180 #define MAKE_CPU_CLK_CONTROL_VAL(cpudiv, ddrdiv, ahbdiv)        (0x4 | ((0x3 & (cpudiv - 1)) << 5) | ((0x3 & (ddrdiv - 1)) << 10) | ((0x3 & (ahbdiv - 1)) << 15))
181
182 /*
183  * Default values (400/400/200 MHz) for O/C recovery mode
184  */
185
186 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
187 #define CPU_CLK_CONTROL_VAL_DEFAULT             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
188
189 #if CONFIG_40MHZ_XTAL_SUPPORT
190         // DIV_INT = 20 (40 MHz * 20/2 = 400 MHz)
191         // REFDIV = 1, OUTDIV = 1
192         #define CPU_PLL_CONFIG_VAL_DEFAULT      MAKE_CPU_PLL_CONFIG_VAL(20, 1, 1)
193 #else
194         // DIV_INT = 32 (25 MHz * 32/2 = 400 MHz)
195         // REFDIV = 1, OUTDIV = 1
196         #define CPU_PLL_CONFIG_VAL_DEFAULT      MAKE_CPU_PLL_CONFIG_VAL(32, 1, 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_400_400_200)
203
204         #define CFG_HZ  (400000000LU/2)
205
206         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
207         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
208
209         #if CONFIG_40MHZ_XTAL_SUPPORT
210                 // DIV_INT = 20 (40 MHz * 20/2 = 400 MHz)
211                 // REFDIV = 1, OUTDIV = 1
212                 #define CPU_PLL_CONFIG_VAL      0x40815000
213         #else
214                 // DIV_INT = 32 (25 MHz * 32/2 = 400 MHz)
215                 // REFDIV = 1, OUTDIV = 1
216                 #define CPU_PLL_CONFIG_VAL      0x40818000
217         #endif
218
219         // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
220         #define AR7240_SPI_CONTROL              0x42
221
222 #elif (CFG_PLL_FREQ == CFG_PLL_412_412_206)
223
224         #define CFG_HZ  (412500000LU/2)
225
226         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
227         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
228
229         // DIV_INT = 33 (25 MHz * 33/2 = 412,5 MHz)
230         // REFDIV = 1, OUTDIV = 1
231         #define CPU_PLL_CONFIG_VAL              0x40818400
232
233         // CLOCK_DIVIDER = 2 (SPI clock = 206,25 / 6 ~ 34,4 MHz)
234         #define AR7240_SPI_CONTROL              0x42
235
236 #elif (CFG_PLL_FREQ == CFG_PLL_425_425_212)
237
238         #define CFG_HZ  (425000000LU/2)
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         // DIV_INT = 34 (25 MHz * 34/2 = 425 MHz)
244         // REFDIV = 1, OUTDIV = 1
245         #define CPU_PLL_CONFIG_VAL              0x40818800
246
247         // CLOCK_DIVIDER = 2 (SPI clock = 212,5 / 6 ~ 35,4 MHz)
248         #define AR7240_SPI_CONTROL              0x42
249
250 #elif (CFG_PLL_FREQ == CFG_PLL_437_437_218)
251
252         #define CFG_HZ  (437500000LU/2)
253
254         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
255         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
256
257         // DIV_INT = 35 (25 MHz * 35/2 = 437,5 MHz)
258         // REFDIV = 1, OUTDIV = 1
259         #define CPU_PLL_CONFIG_VAL              0x40818C00
260
261         // CLOCK_DIVIDER = 2 (SPI clock = 218,75 / 6 ~ 36,5 MHz)
262         #define AR7240_SPI_CONTROL              0x42
263
264
265 #elif (CFG_PLL_FREQ == CFG_PLL_450_450_225)
266
267         #define CFG_HZ  (450000000LU/2)
268
269         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
270         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
271
272         // DIV_INT = 36 (25 MHz * 36/2 = 450 MHz)
273         // REFDIV = 1, OUTDIV = 1
274         #define CPU_PLL_CONFIG_VAL              0x40819000
275
276         // CLOCK_DIVIDER = 3 (SPI clock = 225 / 6 ~ 37,5 MHz)
277         #define AR7240_SPI_CONTROL              0x42
278
279 #elif (CFG_PLL_FREQ == CFG_PLL_462_462_231)
280
281         #define CFG_HZ  (462500000LU/2)
282
283         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
284         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
285
286         // DIV_INT = 37 (25 MHz * 37/2 = 462,5 MHz)
287         // REFDIV = 1, OUTDIV = 1
288         #define CPU_PLL_CONFIG_VAL              0x40819400
289
290         // CLOCK_DIVIDER = 3 (SPI clock = 231,25 / 6 ~ 38,5 MHz)
291         #define AR7240_SPI_CONTROL              0x42
292
293 #elif (CFG_PLL_FREQ == CFG_PLL_475_475_237)
294
295         #define CFG_HZ  (475000000LU/2)
296
297         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
298         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
299
300         // DIV_INT = 38 (25 MHz * 38/2 = 475 MHz)
301         // REFDIV = 1, OUTDIV = 1
302         #define CPU_PLL_CONFIG_VAL              0x40819800
303
304         // CLOCK_DIVIDER = 3 (SPI clock = 237,5 / 6 ~ 39,6 MHz)
305         #define AR7240_SPI_CONTROL              0x42
306
307 #elif (CFG_PLL_FREQ == CFG_PLL_487_487_243)
308
309         #define CFG_HZ  (487500000LU/2)
310
311         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
312         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
313
314         // DIV_INT = 39 (25 MHz * 39/2 = 487,5 MHz)
315         // REFDIV = 1, OUTDIV = 1
316         #define CPU_PLL_CONFIG_VAL              0x40819C00
317
318         // CLOCK_DIVIDER = 3 (SPI clock = 243,75 / 8 ~ 30,5 MHz)
319         #define AR7240_SPI_CONTROL              0x43
320
321
322 #elif (CFG_PLL_FREQ == CFG_PLL_500_500_250)
323
324         #define CFG_HZ  (500000000LU/2)
325
326         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
327         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
328
329         // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz)
330         // REFDIV = 1, OUTDIV = 1
331         #define CPU_PLL_CONFIG_VAL              0x4081A000
332
333         // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31,3 MHz)
334         #define AR7240_SPI_CONTROL              0x43
335
336 #elif (CFG_PLL_FREQ == CFG_PLL_500_250_250)
337
338         #define CFG_HZ  (500000000LU/2)
339
340         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 2
341         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 2)
342
343         // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz)
344         // REFDIV = 1, OUTDIV = 1
345         #define CPU_PLL_CONFIG_VAL              0x4081A000
346
347         // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31,3 MHz)
348         #define AR7240_SPI_CONTROL              0x43
349
350 #elif (CFG_PLL_FREQ == CFG_PLL_562_281_140)
351
352         #define CFG_HZ  (562500000LU/2)
353
354         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
355         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 4)
356
357         // DIV_INT = 45 (25 MHz * 45/2 = 562,5 MHz)
358         // REFDIV = 1, OUTDIV = 1
359         #define CPU_PLL_CONFIG_VAL              0x4081B400
360
361         // CLOCK_DIVIDER = 1 (SPI clock = 140,625 / 4 ~ 35,2 MHz)
362         #define AR7240_SPI_CONTROL              0x41
363
364 #elif (CFG_PLL_FREQ == CFG_PLL_525_262_131)
365
366         #define CFG_HZ  (525000000LU/2)
367
368         // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
369         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 2, 4)
370
371         // DIV_INT = 42 (25 MHz * 42/2 = 525 MHz)
372         // REFDIV = 1, OUTDIV = 1
373         #define CPU_PLL_CONFIG_VAL              0x4081A800
374
375         // CLOCK_DIVIDER = 1 (SPI clock = 131 / 4 ~ 32,8 MHz)
376         #define AR7240_SPI_CONTROL              0x41
377
378 #elif (CFG_PLL_FREQ == CFG_PLL_525_525_262)
379
380         #define CFG_HZ  (525000000LU/2)
381
382         // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
383         #define CPU_CLK_CONTROL_VAL             MAKE_CPU_CLK_CONTROL_VAL(1, 1, 2)
384
385         // DIV_INT = 42 (25 MHz * 42/2 = 525 MHz)
386         // REFDIV = 1, OUTDIV = 1
387         #define CPU_PLL_CONFIG_VAL              0x4081A800
388
389         // CLOCK_DIVIDER = 1 (SPI clock = 131 / 4 ~ 32,8 MHz)
390         #define AR7240_SPI_CONTROL              0x41
391
392 #endif
393
394 /*
395  * Cache lock for stack
396  */
397 #define CFG_INIT_SP_OFFSET              0x1000
398
399 /*
400  * Address and size of Primary Environment Sector
401  */
402 #if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
403         #define CFG_ENV_IS_IN_FLASH     1
404         #undef CFG_ENV_IS_NOWHERE
405 #else
406         #undef  CFG_ENV_IS_IN_FLASH
407         #define CFG_ENV_IS_NOWHERE      1
408 #endif
409
410 #define CFG_ENV_ADDR                    0x9F040000
411 #define CFG_ENV_SIZE                    0x10000
412
413 /*
414  * Available commands
415  */
416 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
417         #define CONFIG_COMMANDS (CFG_CMD_MEMORY | CFG_CMD_FLASH | CFG_CMD_NET | CFG_CMD_PING | CFG_CMD_DATE | CFG_CMD_IMI )
418 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
419         #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)
420 #else
421         #define CONFIG_COMMANDS (CFG_CMD_MEMORY | CFG_CMD_FLASH | CFG_CMD_NET | CFG_CMD_PING )
422 #endif
423
424 // Enable NetConsole and custom NetConsole port
425 #define CONFIG_NETCONSOLE
426 #define CONFIG_NETCONSOLE_PORT  6666
427
428 /* DDR init values */
429 #if CONFIG_40MHZ_XTAL_SUPPORT
430         #define CFG_DDR_REFRESH_VAL     0x4270
431 #else
432         #define CFG_DDR_REFRESH_VAL     0x4186
433 #endif
434
435 #define CFG_DDR_CONFIG_VAL              0x7fbc8cd0
436 #define CFG_DDR_MODE_VAL_INIT   0x133
437
438 #ifdef LOW_DRIVE_STRENGTH
439         #define CFG_DDR_EXT_MODE_VAL    0x2
440 #else
441         #define CFG_DDR_EXT_MODE_VAL    0x0
442 #endif
443
444 #define CFG_DDR_MODE_VAL        0x33
445 #define CFG_DDR_TRTW_VAL        0x1f
446 #define CFG_DDR_TWTR_VAL        0x1e
447
448 //#define CFG_DDR_CONFIG2_VAL                   0x99d0e6a8      // HORNET 1.0
449 #define CFG_DDR_CONFIG2_VAL                             0x9dd0e6a8      // HORNET 1.1
450 #define CFG_DDR_RD_DATA_THIS_CYCLE_VAL  0x00ff
451 #define CFG_DDR_TAP0_VAL                                0x8
452 #define CFG_DDR_TAP1_VAL                                0x9
453
454 /* DDR2 Init values */
455 #define CFG_DDR2_EXT_MODE_VAL                   0x402
456
457 #define CONFIG_NET_MULTI
458
459 /* choose eth1 first for tftpboot interface added by ZJin, 110328 */
460 #define CONFIG_AG7240_SPEPHY
461
462 /*
463  * Web Failsafe configuration
464  */
465 #define WEBFAILSAFE_UPLOAD_RAM_ADDRESS                                  CONFIG_LOADADDR
466
467 // U-Boot partition size and offset
468 #define WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS                                CFG_FLASH_BASE
469
470 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
471         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (64 * 1024)
472 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
473         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (256 * 1024)
474 #else
475         #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES          (64 * 1024)
476 #endif
477
478 // Firmware partition offset
479 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
480         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x80000
481 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
482         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x50000
483 #else
484         #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x20000
485 #endif
486
487 // ART partition size and offset
488 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
489         #define WEBFAILSAFE_UPLOAD_ART_ADDRESS                          WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x10000
490 #endif
491
492 #define WEBFAILSAFE_UPLOAD_ART_SIZE_IN_BYTES                    (64 * 1024)
493
494 // max. firmware size <= (FLASH_SIZE -  WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES)
495 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
496         // D-Link DIR-505: 64k(U-Boot),64k(ART),64k(MAC),64k(NVRAM),256k(Language)
497         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (512 * 1024)
498 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
499         // Carambola 2: 256k(U-Boot),64k(U-Boot env),64k(ART)
500         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (384 * 1024)
501 #else
502         // TP-Link: 64k(U-Boot),64k(MAC/model/WPS pin block),64k(ART)
503         #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (192 * 1024)
504 #endif
505
506 // progress state info
507 #define WEBFAILSAFE_PROGRESS_START                              0
508 #define WEBFAILSAFE_PROGRESS_TIMEOUT                    1
509 #define WEBFAILSAFE_PROGRESS_UPLOAD_READY               2
510 #define WEBFAILSAFE_PROGRESS_UPGRADE_READY              3
511 #define WEBFAILSAFE_PROGRESS_UPGRADE_FAILED             4
512
513 // update type
514 #define WEBFAILSAFE_UPGRADE_TYPE_FIRMWARE               0
515 #define WEBFAILSAFE_UPGRADE_TYPE_UBOOT                  1
516 #define WEBFAILSAFE_UPGRADE_TYPE_ART                    2
517
518 /*-----------------------------------------------------------------------*/
519
520 #define CFG_ATHRS26_PHY                         1
521 #define CFG_AG7240_NMACS                        2
522 #define CFG_MII0_RMII                           1
523 #define CFG_BOOTM_LEN                           (16 << 20) /* 16 MB */
524
525 #undef DEBUG
526 #define milisecdelay(_x)                        udelay((_x) * 1000)
527
528 /* MAC address, model and PIN number offsets in FLASH */
529 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
530         // DIR-505 has two MAC addresses inside dedicated MAC partition
531         // They are stored in plain text... TODO: read/write MAC stored as plain text
532         //#define OFFSET_MAC_DATA_BLOCK                 0x020000
533         //#define OFFSET_MAC_DATA_BLOCK_LENGTH  0x010000
534         //#define OFFSET_MAC_ADDRESS                            0x000004
535         //#define OFFSET_MAC_ADDRESS2                           0x000016
536 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
537         #define OFFSET_MAC_DATA_BLOCK                   0xFF0000
538         #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
539         #define OFFSET_MAC_ADDRESS                              0x000000        // Carambola 2 has two MAC addresses at the beginning of ART partition
540         #define OFFSET_MAC_ADDRESS2                             0x000006
541 #else
542         #define OFFSET_MAC_DATA_BLOCK                   0x010000
543         #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
544         #define OFFSET_MAC_ADDRESS                              0x00FC00
545 #endif
546
547 #if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) && \
548         !defined(CONFIG_FOR_DLINK_DIR505_A1)
549 #define OFFSET_ROUTER_MODEL                                     0x00FD00
550 #endif
551
552 #if defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
553         defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
554         defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
555         defined(CONFIG_FOR_TPLINK_WR710N_V1)
556         #define OFFSET_PIN_NUMBER                               0x00FE00
557 #endif
558
559 #include <cmd_confdefs.h>
560
561 #endif  /* __CONFIG_H */