2 * This file contains the configuration parameters for the AP121 (AR9331) board.
8 #include <configs/ar7240.h>
12 * FLASH and environment organization
14 #define CFG_MAX_FLASH_BANKS 1
15 #define CFG_MAX_FLASH_SECT 4096 // 4 KB sectors in 16 MB flash
18 * We boot from this flash
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
27 * The following #defines are needed to get flash environment right
29 #define CFG_MONITOR_BASE TEXT_BASE
30 #define CFG_MONITOR_LEN (192 << 10)
35 #undef CONFIG_BOOTARGS
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)
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)"
48 #elif defined(CONFIG_FOR_TPLINK_WR710N_V1)
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)"
52 #elif defined(CONFIG_FOR_DLINK_DIR505_A1)
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)"
56 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
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)"
63 * Other env default values
65 #undef CONFIG_BOOTFILE
66 #define CONFIG_BOOTFILE "firmware.bin"
68 #undef CONFIG_LOADADDR
69 #define CONFIG_LOADADDR 0x80800000
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
76 #define CFG_LOAD_ADDR 0x9F020000
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"
84 #define CONFIG_BOOTCOMMAND "bootm 0x9F020000"
87 #define CONFIG_IPADDR 192.168.1.1
88 #define CONFIG_SERVERIP 192.168.1.2
91 #define CFG_HZ bd->bi_cfg_hz
92 #undef CPU_PLL_CONFIG_VAL
93 #undef CPU_CLK_CONTROL_VAL
95 // CPU-RAM-AHB frequency setting
97 #define CFG_PLL_FREQ CFG_PLL_400_400_200
101 * CPU_PLL_DITHER_FRAC_VAL
103 * Value written into CPU PLL Dither FRAC Register (PLL_DITHER_FRAC)
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
110 #define CPU_PLL_DITHER_FRAC_VAL 0x001003E8
113 * CPU_PLL_SETTLE_TIME_VAL
115 * Value written into CPU Phase Lock Loop Configuration Register 2 (CPU_PLL_CONFIG2)
117 * bits 0..11 SETTLE_TIME => 850 (0x352)
120 #if CONFIG_40MHZ_XTAL_SUPPORT
121 #define CPU_PLL_SETTLE_TIME_VAL 0x00000550
123 #define CPU_PLL_SETTLE_TIME_VAL 0x00000352
127 * CPU_CLK_CONTROL_VAL
129 * In CPU_CLK_CONTROL_VAL bit 2 is set (BYPASS = 1 -> bypass PLL)
130 * After PLL configuration we nedd to clear this bit
132 * Values written into CPU Clock Control Register CLOCK_CONTROL
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)
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
147 * Values written into CPU Phase Lock Loop Configuration (CPU_PLL_CONFIG)
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)
157 * = PLL CALCULATION =============
158 * PLL = ((25 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV) // XTAL=25 MHz
160 * PLL = ((40 MHz / REFDIV) * DIV_INT) / (2 ^ OUTDIV) // XTAL=40 MHz
162 * CPU = PLL / CPU_POST_DIV
163 * DDR = PLL / DDR_POST_DIV
164 * AHB = PLL / AHB_POST_DIV
171 * Value written into SPI Control (SPI_CONTROL) register
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.)
179 * CPU_PLL_CONFIG and CPU_CLK_CONTROL registers values generator
181 #define MAKE_AR9331_CPU_PLL_CONFIG_VAL(divint, refdiv, range, outdiv) ( ((0x3F & divint) << 10) | \
182 ((0x1F & refdiv) << 16) | \
183 ((0x1 & range) << 21) | \
184 ((0x7 & outdiv) << 23) )
186 #define MAKE_AR9331_CPU_CLK_CONTROL_VAL(cpudiv, ddrdiv, ahbdiv) ( ((0x3 & (cpudiv - 1)) << 5) | \
187 ((0x3 & (ddrdiv - 1)) << 10) | \
188 ((0x3 & (ahbdiv - 1)) << 15) )
190 #define MAKE_AR9331_SPI_CONTROL_VAL(spidiv) ( ((spidiv >> 1) - 1) | 0x40 )
193 * Default values (400/400/200 MHz) for O/C recovery mode
196 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
197 #define CPU_CLK_CONTROL_VAL_DEFAULT MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
199 #if CONFIG_40MHZ_XTAL_SUPPORT
200 // DIV_INT = 20 (40 MHz * 20/2 = 400 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
201 #define CPU_PLL_CONFIG_VAL_DEFAULT MAKE_AR9331_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
203 // DIV_INT = 32 (25 MHz * 32/2 = 400 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
204 #define CPU_PLL_CONFIG_VAL_DEFAULT MAKE_AR9331_CPU_PLL_CONFIG_VAL(32, 1, 0, 1)
207 // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
208 #define AR7240_SPI_CONTROL_DEFAULT MAKE_AR9331_SPI_CONTROL_VAL(6)
210 #if (CFG_PLL_FREQ == CFG_PLL_200_200_100)
212 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
213 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
215 #if CONFIG_40MHZ_XTAL_SUPPORT
216 // DIV_INT = 20 (40 MHz * 20/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
217 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(20, 1, 0, 2)
219 // DIV_INT = 32 (25 MHz * 32/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
220 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(32, 1, 0, 2)
223 // CLOCK_DIVIDER = 1 (SPI clock = 100 / 4 ~ 25 MHz)
224 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
226 #define CFG_HZ_FALLBACK (200000000LU/2)
228 #elif (CFG_PLL_FREQ == CFG_PLL_200_200_200)
230 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
231 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 1)
233 #if CONFIG_40MHZ_XTAL_SUPPORT
234 // DIV_INT = 20 (40 MHz * 20/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
235 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(20, 1, 0, 2)
237 // DIV_INT = 32 (25 MHz * 32/4 = 200 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
238 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(32, 1, 0, 2)
241 // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
242 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
244 #define CFG_HZ_FALLBACK (200000000LU/2)
246 #elif (CFG_PLL_FREQ == CFG_PLL_225_225_112)
248 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
249 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
251 #if CONFIG_40MHZ_XTAL_SUPPORT
252 #define FREQUENCY_NOT_SUPPORTED
254 // DIV_INT = 36 (25 MHz * 36/4 = 225 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
255 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(36, 1, 0, 2)
258 // CLOCK_DIVIDER = 1 (SPI clock = 112 / 4 ~ 28 MHz)
259 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
261 #define CFG_HZ_FALLBACK (225000000LU/2)
263 #elif (CFG_PLL_FREQ == CFG_PLL_225_225_225)
265 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
266 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 1)
268 #if CONFIG_40MHZ_XTAL_SUPPORT
269 #define FREQUENCY_NOT_SUPPORTED
271 // DIV_INT = 36 (25 MHz * 36/4 = 225 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
272 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(36, 1, 0, 2)
275 // CLOCK_DIVIDER = 3 (SPI clock = 225 / 8 ~ 28 MHz)
276 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
278 #define CFG_HZ_FALLBACK (225000000LU/2)
280 #elif (CFG_PLL_FREQ == CFG_PLL_250_250_125)
282 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
283 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
285 #if CONFIG_40MHZ_XTAL_SUPPORT
286 // DIV_INT = 25 (40 MHz * 25/4 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
287 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(25, 1, 0, 2)
289 // DIV_INT = 20 (25 MHz * 20/2 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
290 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
293 // CLOCK_DIVIDER = 1 (SPI clock = 125 / 4 ~ 31 MHz)
294 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
296 #define CFG_HZ_FALLBACK (250000000LU/2)
298 #elif (CFG_PLL_FREQ == CFG_PLL_250_250_250)
300 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 1
301 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 1)
303 #if CONFIG_40MHZ_XTAL_SUPPORT
304 // DIV_INT = 25 (40 MHz * 25/4 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 2
305 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(25, 1, 0, 2)
307 // DIV_INT = 20 (25 MHz * 20/2 = 250 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
308 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(20, 1, 0, 1)
311 // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
312 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
314 #define CFG_HZ_FALLBACK (250000000LU/2)
316 #elif (CFG_PLL_FREQ == CFG_PLL_300_300_150)
318 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
319 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
321 #if CONFIG_40MHZ_XTAL_SUPPORT
322 // DIV_INT = 15 (40 MHz * 15/2 = 300 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
323 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(15, 1, 0, 1)
325 // DIV_INT = 24 (25 MHz * 24/2 = 300 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
326 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(24, 1, 0, 1)
329 // CLOCK_DIVIDER = 2 (SPI clock = 150 / 6 ~ 25 MHz)
330 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
332 #define CFG_HZ_FALLBACK (300000000LU/2)
334 #elif (CFG_PLL_FREQ == CFG_PLL_325_325_162)
336 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
337 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
339 #if CONFIG_40MHZ_XTAL_SUPPORT
340 #define FREQUENCY_NOT_SUPPORTED
342 // DIV_INT = 26 (25 MHz * 26/2 = 325 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
343 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(26, 1, 0, 1)
346 // CLOCK_DIVIDER = 2 (SPI clock = 162 / 6 ~ 27 MHz)
347 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
349 #define CFG_HZ_FALLBACK (325000000LU/2)
351 #elif (CFG_PLL_FREQ == CFG_PLL_350_350_175)
353 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
354 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
356 #if CONFIG_40MHZ_XTAL_SUPPORT
357 #define FREQUENCY_NOT_SUPPORTED
359 // DIV_INT = 28 (25 MHz * 28/2 = 350 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
360 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(28, 1, 0, 1)
363 // CLOCK_DIVIDER = 2 (SPI clock = 175 / 6 ~ 29 MHz)
364 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
366 #define CFG_HZ_FALLBACK (350000000LU/2)
368 #elif (CFG_PLL_FREQ == CFG_PLL_360_360_180)
370 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
371 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
373 #if CONFIG_40MHZ_XTAL_SUPPORT
374 // DIV_INT = 18 (40 MHz * 18/2 = 360 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
375 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(18, 1, 0, 1)
377 // DIV_INT = 29 (25 MHz * 28/2 = 362 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
378 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(29, 1, 0, 1)
381 // CLOCK_DIVIDER = 2 (SPI clock = 180 / 6 ~ 30 MHz)
382 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
384 #define CFG_HZ_FALLBACK (360000000LU/2)
386 #elif (CFG_PLL_FREQ == CFG_PLL_380_380_190)
388 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
389 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
391 #if CONFIG_40MHZ_XTAL_SUPPORT
392 // DIV_INT = 19 (40 MHz * 19/2 = 380 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
393 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(19, 1, 0, 1)
395 #define FREQUENCY_NOT_SUPPORTED
398 // CLOCK_DIVIDER = 2 (SPI clock = 190 / 6 ~ 32 MHz)
399 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
401 #define CFG_HZ_FALLBACK (380000000LU/2)
403 #elif (CFG_PLL_FREQ == CFG_PLL_400_400_200)
405 // default configuration
406 #define CPU_CLK_CONTROL_VAL CPU_CLK_CONTROL_VAL_DEFAULT
407 #define CPU_PLL_CONFIG_VAL CPU_PLL_CONFIG_VAL_DEFAULT
408 #define AR7240_SPI_CONTROL AR7240_SPI_CONTROL_DEFAULT
410 #define CFG_HZ_FALLBACK (400000000LU/2)
412 #elif (CFG_PLL_FREQ == CFG_PLL_412_412_206)
414 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
415 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
417 #if CONFIG_40MHZ_XTAL_SUPPORT
418 #define FREQUENCY_NOT_SUPPORTED
420 // DIV_INT = 33 (25 MHz * 33/2 = 412 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
421 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(33, 1, 0, 1)
424 // CLOCK_DIVIDER = 2 (SPI clock = 206 / 6 ~ 34 MHz)
425 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
427 #define CFG_HZ_FALLBACK (412000000LU/2)
429 #elif (CFG_PLL_FREQ == CFG_PLL_420_420_210)
431 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
432 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
434 #if CONFIG_40MHZ_XTAL_SUPPORT
435 // DIV_INT = 21 (40 MHz * 21/2 = 420 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
436 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(21, 1, 0, 1)
438 #define FREQUENCY_NOT_SUPPORTED
441 // CLOCK_DIVIDER = 2 (SPI clock = 210 / 6 ~ 35 MHz)
442 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
444 #define CFG_HZ_FALLBACK (420000000LU/2)
446 #elif (CFG_PLL_FREQ == CFG_PLL_425_425_212)
448 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
449 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
451 #if CONFIG_40MHZ_XTAL_SUPPORT
452 #define FREQUENCY_NOT_SUPPORTED
454 // DIV_INT = 34 (25 MHz * 34/2 = 425 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
455 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(34, 1, 0, 1)
458 // CLOCK_DIVIDER = 2 (SPI clock = 212 / 6 ~ 35 MHz)
459 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
461 #define CFG_HZ_FALLBACK (425000000LU/2)
463 #elif (CFG_PLL_FREQ == CFG_PLL_437_437_218)
465 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
466 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
468 #if CONFIG_40MHZ_XTAL_SUPPORT
469 #define FREQUENCY_NOT_SUPPORTED
471 // DIV_INT = 35 (25 MHz * 35/2 = 437 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
472 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(35, 1, 0, 1)
475 // CLOCK_DIVIDER = 3 (SPI clock = 218 / 8 ~ 27 MHz)
476 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
478 #define CFG_HZ_FALLBACK (437000000LU/2)
480 #elif (CFG_PLL_FREQ == CFG_PLL_440_440_220)
482 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
483 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
485 #if CONFIG_40MHZ_XTAL_SUPPORT
486 // DIV_INT = 22 (40 MHz * 22/2 = 440 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
487 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(22, 1, 0, 1)
489 #define FREQUENCY_NOT_SUPPORTED
492 // CLOCK_DIVIDER = 3 (SPI clock = 220 / 8 ~ 27 MHz)
493 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
495 #define CFG_HZ_FALLBACK (440000000LU/2)
497 #elif (CFG_PLL_FREQ == CFG_PLL_450_450_225)
499 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
500 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
502 #if CONFIG_40MHZ_XTAL_SUPPORT
503 #define FREQUENCY_NOT_SUPPORTED
505 // DIV_INT = 36 (25 MHz * 36/2 = 450 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
506 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(36, 1, 0, 1)
509 // CLOCK_DIVIDER = 3 (SPI clock = 225 / 8 ~ 28 MHz)
510 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
512 #define CFG_HZ_FALLBACK (450000000LU/2)
514 #elif (CFG_PLL_FREQ == CFG_PLL_460_460_230)
516 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
517 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
519 #if CONFIG_40MHZ_XTAL_SUPPORT
520 // DIV_INT = 23 (40 MHz * 23/2 = 460 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
521 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(23, 1, 0, 1)
523 // DIV_INT = 37 (25 MHz * 36/2 = 462 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
524 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(37, 1, 0, 1)
527 // CLOCK_DIVIDER = 3 (SPI clock = 230 / 8 ~ 29 MHz)
528 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
530 #define CFG_HZ_FALLBACK (460000000LU/2)
532 #elif (CFG_PLL_FREQ == CFG_PLL_475_475_237)
534 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
535 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
537 #if CONFIG_40MHZ_XTAL_SUPPORT
538 #define FREQUENCY_NOT_SUPPORTED
540 // DIV_INT = 38 (25 MHz * 38/2 = 475 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
541 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(38, 1, 0, 1)
544 // CLOCK_DIVIDER = 3 (SPI clock = 237 / 8 ~ 30 MHz)
545 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
547 #define CFG_HZ_FALLBACK (475000000LU/2)
549 #elif (CFG_PLL_FREQ == CFG_PLL_480_480_240)
551 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
552 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
554 #if CONFIG_40MHZ_XTAL_SUPPORT
555 // DIV_INT = 24 (40 MHz * 24/2 = 480 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
556 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(24, 1, 0, 1)
558 #define FREQUENCY_NOT_SUPPORTED
561 // CLOCK_DIVIDER = 3 (SPI clock = 240 / 8 ~ 30 MHz)
562 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
564 #define CFG_HZ_FALLBACK (480000000LU/2)
566 #elif (CFG_PLL_FREQ == CFG_PLL_487_487_243)
568 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
569 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
571 #if CONFIG_40MHZ_XTAL_SUPPORT
572 #define FREQUENCY_NOT_SUPPORTED
574 // DIV_INT = 39 (25 MHz * 39/2 = 487 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
575 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(39, 1, 0, 1)
578 // CLOCK_DIVIDER = 3 (SPI clock = 243 / 8 ~ 30 MHz)
579 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
581 #define CFG_HZ_FALLBACK (487000000LU/2)
583 #elif (CFG_PLL_FREQ == CFG_PLL_500_500_250)
585 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
586 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
588 #if CONFIG_40MHZ_XTAL_SUPPORT
589 // DIV_INT = 25 (40 MHz * 25/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
590 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(25, 1, 0, 1)
592 // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
593 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(40, 1, 0, 1)
596 // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
597 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
599 #define CFG_HZ_FALLBACK (500000000LU/2)
601 #elif (CFG_PLL_FREQ == CFG_PLL_500_250_250)
603 // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 2
604 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 2, 2)
606 #if CONFIG_40MHZ_XTAL_SUPPORT
607 // DIV_INT = 25 (40 MHz * 25/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
608 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(25, 1, 0, 1)
610 // DIV_INT = 40 (25 MHz * 40/2 = 500 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
611 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(40, 1, 0, 1)
614 // CLOCK_DIVIDER = 3 (SPI clock = 250 / 8 ~ 31 MHz)
615 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
617 #define CFG_HZ_FALLBACK (500000000LU/2)
619 #elif (CFG_PLL_FREQ == CFG_PLL_520_520_260)
621 // CPU_DIV = 1, RAM_DIV = 1, AHB_DIV = 2
622 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 1, 2)
624 #if CONFIG_40MHZ_XTAL_SUPPORT
625 // DIV_INT = 26 (40 MHz * 26/2 = 520 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
626 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(26, 1, 0, 1)
628 #define FREQUENCY_NOT_SUPPORTED
631 // CLOCK_DIVIDER = 3 (SPI clock = 260 / 8 ~ 32 MHz)
632 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(8)
634 #define CFG_HZ_FALLBACK (520000000LU/2)
636 #elif (CFG_PLL_FREQ == CFG_PLL_525_262_131)
638 // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
639 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 2, 4)
641 #if CONFIG_40MHZ_XTAL_SUPPORT
642 #define FREQUENCY_NOT_SUPPORTED
644 // DIV_INT = 42 (25 MHz * 42/2 = 525 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
645 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(42, 1, 0, 1)
648 // CLOCK_DIVIDER = 1 (SPI clock = 131 / 4 ~ 33 MHz)
649 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
651 #define CFG_HZ_FALLBACK (525000000LU/2)
653 #elif (CFG_PLL_FREQ == CFG_PLL_560_280_140)
655 // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
656 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 2, 4)
658 #if CONFIG_40MHZ_XTAL_SUPPORT
659 // DIV_INT = 28 (40 MHz * 28/2 = 560 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
660 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(28, 1, 0, 1)
662 // DIV_INT = 45 (25 MHz * 45/2 = 562 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
663 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(45, 1, 0, 1)
666 // CLOCK_DIVIDER = 1 (SPI clock = 140 / 4 ~ 35 MHz)
667 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
669 #define CFG_HZ_FALLBACK (560000000LU/2)
671 #elif (CFG_PLL_FREQ == CFG_PLL_580_290_145)
673 // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 4
674 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 2, 4)
676 #if CONFIG_40MHZ_XTAL_SUPPORT
677 // DIV_INT = 29 (40 MHz * 29/2 = 580 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
678 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(29, 1, 0, 1)
680 #define FREQUENCY_NOT_SUPPORTED
683 // CLOCK_DIVIDER = 1 (SPI clock = 145 / 4 ~ 36 MHz)
684 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(4)
686 #define CFG_HZ_FALLBACK (580000000LU/2)
688 #elif (CFG_PLL_FREQ == CFG_PLL_600_300_200)
690 // CPU_DIV = 1, RAM_DIV = 2, AHB_DIV = 3
691 #define CPU_CLK_CONTROL_VAL MAKE_AR9331_CPU_CLK_CONTROL_VAL(1, 2, 3)
693 #if CONFIG_40MHZ_XTAL_SUPPORT
694 // DIV_INT = 30 (40 MHz * 30/2 = 600 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
695 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(30, 1, 0, 1)
697 // DIV_INT = 48 (25 MHz * 48/2 = 600 MHz), REFDIV = 1, RANGE = 0, OUTDIV = 1
698 #define CPU_PLL_CONFIG_VAL MAKE_AR9331_CPU_PLL_CONFIG_VAL(48, 1, 0, 1)
701 // CLOCK_DIVIDER = 2 (SPI clock = 200 / 6 ~ 33 MHz)
702 #define AR7240_SPI_CONTROL MAKE_AR9331_SPI_CONTROL_VAL(6)
704 #define CFG_HZ_FALLBACK (600000000LU/2)
706 #elif defined(CFG_PLL_FREQ)
707 #error Unknown frequency setting!
711 * Check if clocks configuration is valid
713 #ifdef FREQUENCY_NOT_SUPPORTED
714 #error Selected frequency setting is not supported with your reference clock!
718 * Cache lock for stack
720 #define CFG_INIT_SP_OFFSET 0x1000
723 * Address and size of Primary Environment Sector
725 #if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
726 #define CFG_ENV_IS_IN_FLASH 1
727 #undef CFG_ENV_IS_NOWHERE
729 #undef CFG_ENV_IS_IN_FLASH
730 #define CFG_ENV_IS_NOWHERE 1
733 #define CFG_ENV_ADDR 0x9F040000
734 #define CFG_ENV_SIZE 0x10000
739 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
740 #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 )
741 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
742 #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)
744 #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 )
747 // Enable NetConsole and custom NetConsole port
748 #define CONFIG_NETCONSOLE
749 #define CONFIG_NETCONSOLE_PORT 6666
751 /* DDR init values */
752 #if CONFIG_40MHZ_XTAL_SUPPORT
753 #define CFG_DDR_REFRESH_VAL 0x4270
755 #define CFG_DDR_REFRESH_VAL 0x4186
758 #define CFG_DDR_CONFIG_VAL 0x7fbc8cd0
759 #define CFG_DDR_MODE_VAL_INIT 0x133
761 #ifdef LOW_DRIVE_STRENGTH
762 #define CFG_DDR_EXT_MODE_VAL 0x2
764 #define CFG_DDR_EXT_MODE_VAL 0x0
767 #define CFG_DDR_MODE_VAL 0x33
768 #define CFG_DDR_TRTW_VAL 0x1f
769 #define CFG_DDR_TWTR_VAL 0x1e
771 //#define CFG_DDR_CONFIG2_VAL 0x99d0e6a8 // HORNET 1.0
772 #define CFG_DDR_CONFIG2_VAL 0x9dd0e6a8 // HORNET 1.1
773 #define CFG_DDR_RD_DATA_THIS_CYCLE_VAL 0x00ff
774 #define CFG_DDR_TAP0_VAL 0x8
775 #define CFG_DDR_TAP1_VAL 0x9
777 /* DDR2 Init values */
778 #define CFG_DDR2_EXT_MODE_VAL 0x402
780 #define CONFIG_NET_MULTI
782 /* choose eth1 first for tftpboot interface added by ZJin, 110328 */
783 #define CONFIG_AG7240_SPEPHY
786 * Web Failsafe configuration
788 #define WEBFAILSAFE_UPLOAD_RAM_ADDRESS CONFIG_LOADADDR
790 // U-Boot partition size and offset
791 #define WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS CFG_FLASH_BASE
793 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
794 #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES (64 * 1024)
795 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
796 #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES (256 * 1024)
798 #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES (64 * 1024)
801 // Firmware partition offset
802 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
803 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x80000
804 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
805 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x50000
807 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x20000
810 // ART partition size and offset
811 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
812 #define WEBFAILSAFE_UPLOAD_ART_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x10000
815 #define WEBFAILSAFE_UPLOAD_ART_SIZE_IN_BYTES (64 * 1024)
817 // max. firmware size <= (FLASH_SIZE - WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES)
818 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
819 // D-Link DIR-505: 64k(U-Boot),64k(ART),64k(MAC),64k(NVRAM),256k(Language)
820 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (512 * 1024)
821 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
822 // Carambola 2: 256k(U-Boot),64k(U-Boot env),64k(ART)
823 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (384 * 1024)
825 // TP-Link: 64k(U-Boot),64k(MAC/model/WPS pin block),64k(ART)
826 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (192 * 1024)
829 // progress state info
830 #define WEBFAILSAFE_PROGRESS_START 0
831 #define WEBFAILSAFE_PROGRESS_TIMEOUT 1
832 #define WEBFAILSAFE_PROGRESS_UPLOAD_READY 2
833 #define WEBFAILSAFE_PROGRESS_UPGRADE_READY 3
834 #define WEBFAILSAFE_PROGRESS_UPGRADE_FAILED 4
837 #define WEBFAILSAFE_UPGRADE_TYPE_FIRMWARE 0
838 #define WEBFAILSAFE_UPGRADE_TYPE_UBOOT 1
839 #define WEBFAILSAFE_UPGRADE_TYPE_ART 2
841 /*-----------------------------------------------------------------------*/
843 #define CFG_ATHRS26_PHY 1
844 #define CFG_AG7240_NMACS 2
845 #define CFG_MII0_RMII 1
846 #define CFG_BOOTM_LEN (16 << 20) /* 16 MB */
849 #define milisecdelay(_x) udelay((_x) * 1000)
851 /* MAC address, model and PIN number offsets in FLASH */
852 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
853 // DIR-505 has two MAC addresses inside dedicated MAC partition
854 // They are stored in plain text... TODO: read/write MAC stored as plain text
855 //#define OFFSET_MAC_DATA_BLOCK 0x020000
856 //#define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
857 //#define OFFSET_MAC_ADDRESS 0x000004
858 //#define OFFSET_MAC_ADDRESS2 0x000016
859 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
860 #define OFFSET_MAC_DATA_BLOCK 0xFF0000
861 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
862 #define OFFSET_MAC_ADDRESS 0x000000 // Carambola 2 has two MAC addresses at the beginning of ART partition
863 #define OFFSET_MAC_ADDRESS2 0x000006
865 #define OFFSET_MAC_DATA_BLOCK 0x010000
866 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
867 #define OFFSET_MAC_ADDRESS 0x00FC00
870 #if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) && \
871 !defined(CONFIG_FOR_DLINK_DIR505_A1)
872 #define OFFSET_ROUTER_MODEL 0x00FD00
875 #if defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
876 defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
877 defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
878 defined(CONFIG_FOR_TPLINK_WR710N_V1)
879 #define OFFSET_PIN_NUMBER 0x00FE00
883 * PLL and clocks configurations from FLASH
885 * We need space for 4x 32-bit variables:
886 * - PLL_MAGIC_VARIABLE
887 * - values of registers:
888 * - CPU_PLL_CONFIG (page 70 in datasheet)
889 * - CLOCK_CONTROL (page 71)
890 * - SPI_CONTROL (page 261)
892 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
894 * We will store PLL and CLOCK registers
895 * configuration at the end of MAC data
896 * partition (3rd 64 KiB block)
898 #define PLL_IN_FLASH_MAGIC 0x504C4C73
899 #define PLL_IN_FLASH_DATA_BLOCK_OFFSET 0x00020000
900 #define PLL_IN_FLASH_DATA_BLOCK_LENGTH 0x00010000
901 #define PLL_IN_FLASH_MAGIC_OFFSET 0x0000FFF0 // last 16 bytes
902 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
904 * We will store PLL and CLOCK registers
905 * configuration at the end of U-Boot
906 * image (4th 64 KiB block)
907 * It implies that binary image can't
908 * be bigger than 192 KiB!
912 #define PLL_IN_FLASH_MAGIC 0x504C4C73
913 #define PLL_IN_FLASH_DATA_BLOCK_OFFSET 0x00030000
914 #define PLL_IN_FLASH_DATA_BLOCK_LENGTH 0x00010000
915 #define PLL_IN_FLASH_MAGIC_OFFSET 0x0000FFF0 // last 16 bytes
918 * All TP-Link routers have a lot of unused space
919 * in FLASH, in second 64 KiB block.
920 * We will store there PLL and CLOCK
921 * registers configuration.
923 #define PLL_IN_FLASH_MAGIC 0x504C4C73
924 #define PLL_IN_FLASH_DATA_BLOCK_OFFSET 0x00010000
925 #define PLL_IN_FLASH_DATA_BLOCK_LENGTH 0x00010000
926 #define PLL_IN_FLASH_MAGIC_OFFSET 0x0000FFF0 // last 16 bytes
929 #include <cmd_confdefs.h>
931 #endif /* __CONFIG_H */