2 * This file contains the configuration parameters for the AP121 (AR9331) board.
8 #include <configs/ar7240.h>
10 #include <soc/soc_common.h>
15 #if defined(CONFIG_FOR_TPLINK_WR703N_V1) ||\
16 defined(CONFIG_FOR_TPLINK_WR710N_V1)
18 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO27
21 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
22 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
25 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
27 #elif defined(CONFIG_FOR_TPLINK_MR10U_V1)
29 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO27
32 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
33 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
36 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
38 #elif defined(CONFIG_FOR_TPLINK_WR720N_V3)
40 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO27
43 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
44 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO11 | GPIO18 | GPIO20)
47 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
49 #elif defined(CONFIG_FOR_TPLINK_MR13U_V1)
51 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO27
54 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
55 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO6 | GPIO7 | GPIO11)
58 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
60 #elif defined(CONFIG_FOR_DLINK_DIR505_A1)
62 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO26 | GPIO27)
65 #define CONFIG_QCA_GPIO_MASK_OUTPUTS CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
66 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
69 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
71 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
73 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO27
76 #define CONFIG_QCA_GPIO_MASK_OUTPUTS CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
77 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
80 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
82 #elif defined(CONFIG_FOR_TPLINK_MR3020_V1)
84 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI GPIO0
85 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO17 | GPIO26 | GPIO27)
88 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
89 CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI |\
91 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO11 | GPIO18 | GPIO20)
94 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
95 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
97 #elif defined(CONFIG_FOR_TPLINK_MR3040_V1V2)
99 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO17 | GPIO26 | GPIO27)
101 /* Outputs, inputs */
102 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
103 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
106 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
107 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
109 #elif defined(CONFIG_FOR_TPLINK_WR740N_V4)
111 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI (GPIO0 | GPIO1 | GPIO13 | GPIO14 | GPIO15 | GPIO16)
112 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO17 | GPIO27)
114 /* Outputs, inputs */
115 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
116 CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
117 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO11 | GPIO26)
120 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
121 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
123 #elif defined(CONFIG_FOR_TPLINK_MR3220_V2)
125 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI (GPIO0 | GPIO1 | GPIO13 | GPIO14 | GPIO15 | GPIO16 | GPIO26)
126 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO17 | GPIO27)
128 /* Outputs, inputs */
129 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
130 CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI |\
132 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO11)
135 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
136 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
138 #elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
140 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO13 | GPIO15 | GPIO17 | GPIO27)
142 /* Outputs, inputs */
143 #define CONFIG_QCA_GPIO_MASK_OUTPUTS CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
144 #define CONFIG_QCA_GPIO_MASK_INPUTS (GPIO11)
147 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
149 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
151 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI (GPIO13 | GPIO14)
152 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO GPIO0
154 /* Outputs, inputs */
155 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
156 CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
157 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
160 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
161 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
163 #elif defined(CONFIG_FOR_DRAGINO_V2) ||\
164 defined(CONFIG_FOR_MESH_POTATO_V2)
166 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI (GPIO0 | GPIO28)
167 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO (GPIO13 | GPIO17)
169 /* Outputs, inputs */
170 #define CONFIG_QCA_GPIO_MASK_OUTPUTS (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
171 CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
172 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
175 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
176 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
178 #elif defined(CONFIG_FOR_GL_INET)
180 #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI (GPIO0 | GPIO13)
182 /* Outputs, inputs */
183 #define CONFIG_QCA_GPIO_MASK_OUTPUTS CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
184 #define CONFIG_QCA_GPIO_MASK_INPUTS GPIO11
187 #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
192 * FLASH and environment organization
194 #define CFG_MAX_FLASH_BANKS 1
195 #define CFG_MAX_FLASH_SECT 4096 // 4 KB sectors in 16 MB flash
198 * We boot from this flash
200 #define CFG_FLASH_BASE 0x9F000000
201 #ifdef COMPRESSED_UBOOT
202 #define BOOTSTRAP_TEXT_BASE CFG_FLASH_BASE
203 #define BOOTSTRAP_CFG_MONITOR_BASE BOOTSTRAP_TEXT_BASE
207 * The following #defines are needed to get flash environment right
209 #define CFG_MONITOR_BASE TEXT_BASE
210 #define CFG_MONITOR_LEN (192 << 10)
215 #undef CONFIG_BOOTARGS
217 #if defined(CONFIG_FOR_TPLINK_WR703N_V1) || \
218 defined(CONFIG_FOR_TPLINK_WR720N_V3) || \
219 defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
220 defined(CONFIG_FOR_TPLINK_MR3040_V1V2) || \
221 defined(CONFIG_FOR_TPLINK_MR10U_V1) || \
222 defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
223 defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
224 defined(CONFIG_FOR_TPLINK_MR13U_V1) || \
225 defined(CONFIG_FOR_GL_INET)
227 #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)"
229 #elif defined(CONFIG_FOR_TPLINK_WR710N_V1)
231 #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)"
233 #elif defined(CONFIG_FOR_DLINK_DIR505_A1)
235 #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)"
237 #elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
239 #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)"
241 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
243 #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:128k(u-boot),64k(u-boot-env),16128k(firmware),64k(ART)"
245 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
247 #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)"
249 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
250 defined(CONFIG_FOR_MESH_POTATO_V2)
252 #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 rootfstype=squashfs init=/sbin/init mtdparts=ar7240-nor0:192k(u-boot),64k(u-boot-env),16064k(firmware),64k(ART)"
257 * Other env default values
259 #undef CONFIG_BOOTFILE
260 #define CONFIG_BOOTFILE "firmware.bin"
262 #undef CONFIG_LOADADDR
263 #define CONFIG_LOADADDR 0x80800000
265 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
266 #define CFG_LOAD_ADDR 0x9F080000
267 #define UPDATE_SCRIPT_FW_ADDR "0x9F080000"
268 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
269 #define CFG_LOAD_ADDR 0x9F050000
270 #define UPDATE_SCRIPT_FW_ADDR "0x9F050000"
271 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
272 defined(CONFIG_FOR_MESH_POTATO_V2)
273 #define CFG_LOAD_ADDR 0x9F040000
274 #define UPDATE_SCRIPT_FW_ADDR "0x9F040000"
275 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
276 #define CFG_LOAD_ADDR 0x9F030000
277 #define UPDATE_SCRIPT_FW_ADDR "0x9F030000"
279 #define CFG_LOAD_ADDR 0x9F020000
280 #define UPDATE_SCRIPT_FW_ADDR "0x9F020000"
283 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
284 #define CONFIG_BOOTCOMMAND "bootm 0x9F080000"
285 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
286 #define CONFIG_BOOTCOMMAND "bootm 0x9F050000"
287 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
288 defined(CONFIG_FOR_MESH_POTATO_V2)
289 #define CONFIG_BOOTCOMMAND "bootm 0x9F040000"
290 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
291 #define CONFIG_BOOTCOMMAND "bootm 0x9F030000"
293 #define CONFIG_BOOTCOMMAND "bootm 0x9F020000"
297 * Dragino 2 uses different IP addresses
299 #if defined(CONFIG_FOR_DRAGINO_V2)
300 #define CONFIG_IPADDR 192.168.255.1
301 #define CONFIG_SERVERIP 192.168.255.2
303 #define CONFIG_IPADDR 192.168.1.1
304 #define CONFIG_SERVERIP 192.168.1.2
308 * Dragino 2 uses different prompt
310 #if defined(CONFIG_FOR_DRAGINO_V2) || \
311 defined(CONFIG_FOR_MESH_POTATO_V2)
312 #if defined(CFG_PROMPT)
315 #define CFG_PROMPT "dr_boot> "
318 #if defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
319 #if defined(CFG_PROMPT)
322 #define CFG_PROMPT "BSB> "
326 * PLL/Clocks configuration
331 #define CFG_HZ bd->bi_cfg_hz
333 #define CONFIG_QCA_PLL QCA_PLL_PRESET_400_400_200
337 * For PLL/clocks recovery use reset button by default
339 #ifdef CONFIG_GPIO_RESET_BTN
340 #define CONFIG_QCA_GPIO_OC_RECOVERY_BTN CONFIG_GPIO_RESET_BTN
343 #ifdef CONFIG_GPIO_RESET_BTN_ACTIVE_LOW
344 #define CONFIG_QCA_GPIO_OC_RECOVERY_BTN_ACTIVE_LOW 1
348 * Cache lock for stack
350 #define CFG_INIT_SP_OFFSET 0x1000
353 * Address and size of Primary Environment Sector
355 #if !defined(CONFIG_FOR_DLINK_DIR505_A1)
356 #define CFG_ENV_IS_IN_FLASH 1
357 #undef CFG_ENV_IS_NOWHERE
359 #undef CFG_ENV_IS_IN_FLASH
360 #define CFG_ENV_IS_NOWHERE 1
363 #if defined(CONFIG_FOR_DRAGINO_V2) || \
364 defined(CONFIG_FOR_MESH_POTATO_V2)
365 #define CFG_ENV_ADDR 0x9F030000
366 #define CFG_ENV_SIZE 0x8000
367 #define CFG_ENV_SECT_SIZE 0x10000
368 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
369 #define CFG_ENV_ADDR 0x9F040000
370 #define CFG_ENV_SIZE 0x8000
371 #define CFG_ENV_SECT_SIZE 0x10000
372 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
373 #define CFG_ENV_ADDR 0x9F020000
374 #define CFG_ENV_SIZE 0x8000
375 #define CFG_ENV_SECT_SIZE 0x10000
377 #define CFG_ENV_ADDR 0x9F01EC00
378 #define CFG_ENV_SIZE 0x1000
379 #define CFG_ENV_SECT_SIZE 0x10000
385 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
387 #define CONFIG_COMMANDS (CFG_CMD_MEMORY | \
398 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) || \
399 defined(CONFIG_FOR_DRAGINO_V2) || \
400 defined(CONFIG_FOR_MESH_POTATO_V2) || \
401 defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
403 #define CONFIG_COMMANDS (CFG_CMD_MEMORY | \
420 #define CONFIG_COMMANDS (CFG_CMD_MEMORY | \
436 // Enable NetConsole and custom NetConsole port
437 #define CONFIG_NETCONSOLE
438 #define CONFIG_NETCONSOLE_PORT 6666
440 #define CONFIG_NET_MULTI
442 /* choose eth1 first for tftpboot interface added by ZJin, 110328 */
443 #define CONFIG_AG7240_SPEPHY
446 * Web Failsafe configuration
448 #define WEBFAILSAFE_UPLOAD_RAM_ADDRESS CONFIG_LOADADDR
450 // U-Boot partition size and offset
451 #define WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS CFG_FLASH_BASE
452 #define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES (CONFIG_MAX_UBOOT_SIZE_KB * 1024)
454 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
455 #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "0x10000"
456 #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
457 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
458 #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "0x40000"
459 #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
460 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
461 defined(CONFIG_FOR_MESH_POTATO_V2)
462 #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "0x30000"
463 #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
464 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
465 #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "0x20000"
466 #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
468 // TODO: should be == CONFIG_MAX_UBOOT_SIZE_KB
469 #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "0x1EC00"
470 #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES "0x20000"
473 // Firmware partition offset
474 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
475 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x80000
476 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
477 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x50000
478 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
479 defined(CONFIG_FOR_MESH_POTATO_V2)
480 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x40000
481 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
482 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x30000
484 #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x20000
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
492 #define WEBFAILSAFE_UPLOAD_ART_SIZE_IN_BYTES (64 * 1024)
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 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
502 defined(CONFIG_FOR_MESH_POTATO_V2)
503 // Dragino 2: 192k(U-Boot),64k(U-Boot env),64k(ART)
504 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (320 * 1024)
505 #elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
506 // GS-Oolite v1: 128k(U-Boot + MAC),64k(ART)
507 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (192 * 1024)
508 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
509 // Black Swift board: 128k(U-Boot),64k(U-Boot env),64k(ART)
510 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (256 * 1024)
512 // TP-Link: 64k(U-Boot),64k(MAC/model/WPS pin block),64k(ART)
513 #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES (192 * 1024)
516 // progress state info
517 #define WEBFAILSAFE_PROGRESS_START 0
518 #define WEBFAILSAFE_PROGRESS_TIMEOUT 1
519 #define WEBFAILSAFE_PROGRESS_UPLOAD_READY 2
520 #define WEBFAILSAFE_PROGRESS_UPGRADE_READY 3
521 #define WEBFAILSAFE_PROGRESS_UPGRADE_FAILED 4
524 #define WEBFAILSAFE_UPGRADE_TYPE_FIRMWARE 0
525 #define WEBFAILSAFE_UPGRADE_TYPE_UBOOT 1
526 #define WEBFAILSAFE_UPGRADE_TYPE_ART 2
528 /*-----------------------------------------------------------------------*/
531 * Additional environment variables for simple upgrades
533 #define CONFIG_EXTRA_ENV_SETTINGS "uboot_addr=0x9F000000\0" \
534 "uboot_name=uboot.bin\0" \
535 "uboot_size=" UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "\0" \
536 "uboot_backup_size=" UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES "\0" \
538 "if ping $serverip; then " \
539 "mw.b $loadaddr 0xFF $uboot_backup_size && " \
540 "cp.b $uboot_addr $loadaddr $uboot_backup_size && " \
541 "tftp $loadaddr $uboot_name && " \
542 "if itest.l $filesize <= $uboot_size; then " \
543 "erase $uboot_addr +$uboot_backup_size && " \
544 "cp.b $loadaddr $uboot_addr $uboot_backup_size && " \
547 "echo ERROR! Wrong file size!; " \
550 "echo ERROR! Server not reachable!; " \
552 "firmware_addr=" UPDATE_SCRIPT_FW_ADDR "\0" \
553 "firmware_name=firmware.bin\0" \
555 "if ping $serverip; then " \
556 "tftp $loadaddr $firmware_name && " \
557 "erase $firmware_addr +$filesize && " \
558 "cp.b $loadaddr $firmware_addr $filesize && " \
561 "echo ERROR! Server not reachable!; " \
565 #define CFG_ATHRS26_PHY 1
566 #define CFG_AG7240_NMACS 2
567 #define CFG_MII0_RMII 1
568 #define CFG_BOOTM_LEN (16 << 20) /* 16 MB */
572 /* MAC address, model and PIN number offsets in FLASH */
573 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
574 // DIR-505 has two MAC addresses inside dedicated MAC partition
575 // They are stored in plain text... TODO: read/write MAC stored as plain text
576 //#define OFFSET_MAC_DATA_BLOCK 0x020000
577 //#define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
578 //#define OFFSET_MAC_ADDRESS 0x000004
579 //#define OFFSET_MAC_ADDRESS2 0x000016
580 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) || \
581 defined(CONFIG_FOR_DRAGINO_V2) || \
582 defined(CONFIG_FOR_MESH_POTATO_V2)
583 // Carambola 2 and Dragino 2 have two MAC addresses at the beginning of ART partition
584 #define OFFSET_MAC_DATA_BLOCK 0xFF0000
585 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
586 #define OFFSET_MAC_ADDRESS 0x000000
587 #define OFFSET_MAC_ADDRESS2 0x000006
588 #elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
589 // GS-OOlite has only one MAC, inside second block
590 // It's some kind of TP-Link clone
591 #define OFFSET_MAC_DATA_BLOCK 0x010000
592 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
593 #define OFFSET_MAC_ADDRESS 0x00FC00
594 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
595 // Black Swift board has only one MAC address at the beginning of ART partition
596 #define OFFSET_MAC_DATA_BLOCK 0xFF0000
597 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
598 #define OFFSET_MAC_ADDRESS 0x000000
600 #define OFFSET_MAC_DATA_BLOCK 0x010000
601 #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
602 #define OFFSET_MAC_ADDRESS 0x00FC00
605 #if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) && \
606 !defined(CONFIG_FOR_DLINK_DIR505_A1) && \
607 !defined(CONFIG_FOR_GS_OOLITE_V1_DEV) && \
608 !defined(CONFIG_FOR_DRAGINO_V2) && \
609 !defined(CONFIG_FOR_MESH_POTATO_V2) && \
610 !defined(CONFIG_FOR_GL_INET) && \
611 !defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
612 #define OFFSET_ROUTER_MODEL 0x00FD00
615 #if defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
616 defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
617 defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
618 defined(CONFIG_FOR_TPLINK_WR710N_V1)
619 #define OFFSET_PIN_NUMBER 0x00FE00
623 * PLL and clocks configurations from FLASH
625 #if defined(CONFIG_FOR_DLINK_DIR505_A1) || \
626 defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
629 * We will store PLL and CLOCK registers
630 * configuration at the end of MAC data
631 * partition (3rd 64 KiB block)
633 * For Black Swift board:
634 * We will store PLL and CLOCK registers
635 * configuration at the end of environment
636 * sector (64 KB, environment uses only part!)
638 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET 0x00020000
639 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE 0x00010000
641 #elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
643 * We will store PLL and CLOCK registers
644 * configuration at the end of environment
645 * sector (64 KB, environment uses only half!)
647 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET 0x00040000
648 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE 0x00010000
650 #elif defined(CONFIG_FOR_DRAGINO_V2) || \
651 defined(CONFIG_FOR_MESH_POTATO_V2)
653 * We will store PLL and CLOCK registers
654 * configuration at the end of environment
655 * sector (64 KB, environment uses only half!)
657 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET 0x00030000
658 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE 0x00010000
662 * All TP-Link routers have a lot of unused space
663 * in FLASH, in second 64 KiB block.
664 * We will store there PLL and CLOCK
665 * registers configuration.
667 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET 0x00010000
668 #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE 0x00010000
672 #if defined(CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET)
673 /* Use last 32 bytes */
674 #define CONFIG_QCA_PLL_IN_FLASH_MAGIC_OFFSET (CFG_FLASH_BASE + \
675 CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET + \
679 #include <cmd_confdefs.h>
681 #endif /* __CONFIG_H */