Add support for GL.iNet GL-USB150 (AR9331 based)
[oweals/u-boot_mod.git] / u-boot / include / configs / ap121.h
index 10f30ed1a0beeebc5d95076bb8d5b6c31bfb14ce..6f4ff56d6238e5337a5e7238a1ab894437102b43 100644 (file)
 /*
- * This file contains the configuration parameters for the AP121 (AR9331) board.
+ * Copyright (C) 2016 Piotr Dymacz <piotr@dymacz.pl>
+ *
+ * This file contains the configuration parameters
+ * for Qualcomm Atheros AR933x based devices
+ *
+ * Reference designs: AP121
+ *
+ * SPDX-License-Identifier: GPL-2.0
  */
 
-#ifndef __CONFIG_H
-#define __CONFIG_H
+#ifndef _AP121_H
+#define _AP121_H
 
-#include <configs/ar7240.h>
 #include <config.h>
+#include <configs/qca9k_common.h>
 #include <soc/soc_common.h>
 
 /*
+ * ==================
  * GPIO configuration
+ * ==================
  */
-#if defined(CONFIG_FOR_TPLINK_WR703N_V1) ||\
-       defined(CONFIG_FOR_TPLINK_WR710N_V1)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO27
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
+
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO13 | GPIO14
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO0
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
+
+#elif defined(CONFIG_FOR_ALFA_NETWORK_AP121F)
+
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO26 | GPIO27 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO12 | GPIO21
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO26 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L GPIO27 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+
+#elif defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB)
+
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0  | GPIO1 | GPIO13
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO26 | GPIO28 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11 | GPIO12
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO26 | GPIO28 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
-
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
-
-#elif defined(CONFIG_FOR_TPLINK_MR10U_V1)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO27
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
-
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
-
-#elif defined(CONFIG_FOR_TPLINK_WR720N_V3)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO27
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO11 | GPIO18 | GPIO20)
-
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
+#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
 
-#elif defined(CONFIG_FOR_TPLINK_MR13U_V1)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO27
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO6 | GPIO7 | GPIO11)
+#elif defined(CONFIG_FOR_CREATCOMM_D3321)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0  | GPIO13 | GPIO14 |\
+                                               GPIO15 | GPIO16
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO12
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
 #elif defined(CONFIG_FOR_DLINK_DIR505_A1)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO26 | GPIO27)
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO26 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO27
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
-
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-
-#elif defined(CONFIG_FOR_TPLINK_MR3020_V1)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             GPIO0
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO17 | GPIO26 | GPIO27)
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
-                                                                                                        CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI |\
-                                                                                                        GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO11 | GPIO18 | GPIO20)
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
+      defined(CONFIG_FOR_MESH_POTATO_V2)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0 | GPIO28
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO13 | GPIO17
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-#elif defined(CONFIG_FOR_TPLINK_MR3040_V1V2)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO17 | GPIO26 | GPIO27)
+#elif defined(CONFIG_FOR_GL_AR150)
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0 | GPIO13 | GPIO15
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO6 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO1  | GPIO7  | GPIO8 | GPIO11 |\
+                                               GPIO14 | GPIO16 | GPIO17
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO6
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO18)
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+#elif defined(CONFIG_FOR_GL_INET)
 
-#elif defined(CONFIG_FOR_TPLINK_WR740N_V4)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             (GPIO0  | GPIO1 | GPIO13 | GPIO14 | GPIO15 | GPIO16)
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO17 | GPIO27)
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0 | GPIO13
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
-                                                                                                        CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO11 | GPIO26)
+#elif defined(CONFIG_FOR_GL_USB150)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO7 | GPIO13 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO13
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L GPIO7 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-#elif defined(CONFIG_FOR_TPLINK_MR3220_V2)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             (GPIO0  | GPIO1 | GPIO13 | GPIO14 | GPIO15 | GPIO16 | GPIO26)
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO17 | GPIO27)
-
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
-                                                                                                        CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI |\
-                                                                                                        GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO11)
+#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO | GPIO8)
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO13 | GPIO15 | GPIO17 |\
+                                               GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO13 | GPIO15 | GPIO17 | GPIO27)
+#elif defined(CONFIG_FOR_TPLINK_MR10U_V1)
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             (GPIO11)
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO18 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO18 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
+#elif defined(CONFIG_FOR_TPLINK_MR13U_V1)
 
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             (GPIO13 | GPIO14)
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             GPIO0
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO18 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO6 | GPIO7 | GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO18
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
-                                                                                                        CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
+#elif defined(CONFIG_FOR_TPLINK_MR3020_V1)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO26 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11 | GPIO18 | GPIO20
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
-         defined(CONFIG_FOR_MESH_POTATO_V2)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             (GPIO0  | GPIO28)
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO             (GPIO13 | GPIO17)
+#elif defined(CONFIG_FOR_TPLINK_MR3040_V1V2)
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    (CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO |\
-                                                                                                        CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI)
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO26 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO18 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO18 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_HI    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_LO
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+#elif defined(CONFIG_FOR_TPLINK_MR3220_V2)
 
-#elif defined(CONFIG_FOR_GL_INET)
-       /* LEDs */
-       #define CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI             (GPIO0 | GPIO13)
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0  | GPIO1  | GPIO13 |\
+                                               GPIO14 | GPIO15 | GPIO16 |\
+                                               GPIO26
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
+
+#elif defined(CONFIG_FOR_TPLINK_WR703N_V1) ||\
+      defined(CONFIG_FOR_TPLINK_WR710N_V1)
+
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-       /* Outputs, inputs */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS                    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
-       #define CONFIG_QCA_GPIO_MASK_INPUTS                             GPIO11
+#elif defined(CONFIG_FOR_TPLINK_WR720N_V3)
 
-       /* Initial states */
-       #define CONFIG_QCA_GPIO_MASK_OUTPUTS_INIT_LO    CONFIG_QCA_GPIO_MASK_LEDS_ACTIVE_HI
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11 | GPIO18 | GPIO20
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H GPIO8 |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_L
 
-#endif
+#elif defined(CONFIG_FOR_TPLINK_WR740N_V4)
 
-/*
- * FLASH and environment organization
- */
-#define CFG_MAX_FLASH_BANKS                    1
-#define CFG_MAX_FLASH_SECT                     4096    // 4 KB sectors in 16 MB flash
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_H  GPIO0  | GPIO1  | GPIO13 |\
+                                               GPIO14 | GPIO15 | GPIO16
+       #define CONFIG_QCA_GPIO_MASK_LED_ACT_L  GPIO17 | GPIO27
+       #define CONFIG_QCA_GPIO_MASK_OUT        CONFIG_QCA_GPIO_MASK_LED_ACT_L |\
+                                               CONFIG_QCA_GPIO_MASK_LED_ACT_H
+       #define CONFIG_QCA_GPIO_MASK_IN         GPIO11 | GPIO26
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_H CONFIG_QCA_GPIO_MASK_LED_ACT_L
+       #define CONFIG_QCA_GPIO_MASK_OUT_INIT_L CONFIG_QCA_GPIO_MASK_LED_ACT_H
 
-/*
- * We boot from this flash
- */
-#define CFG_FLASH_BASE                                 0x9F000000
-#ifdef COMPRESSED_UBOOT
-       #define BOOTSTRAP_TEXT_BASE                     CFG_FLASH_BASE
-       #define BOOTSTRAP_CFG_MONITOR_BASE      BOOTSTRAP_TEXT_BASE
 #endif
 
 /*
- * The following #defines are needed to get flash environment right
- */
-#define        CFG_MONITOR_BASE        TEXT_BASE
-#define        CFG_MONITOR_LEN         (192 << 10)
-
-/*
+ * ================
  * Default bootargs
+ * ================
  */
-#undef CONFIG_BOOTARGS
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
 
-#if defined(CONFIG_FOR_TPLINK_WR703N_V1) || \
-       defined(CONFIG_FOR_TPLINK_WR720N_V3) || \
-       defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
-       defined(CONFIG_FOR_TPLINK_MR3040_V1V2) || \
-       defined(CONFIG_FOR_TPLINK_MR10U_V1) || \
-       defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
-       defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
-       defined(CONFIG_FOR_TPLINK_MR13U_V1) || \
-       defined(CONFIG_FOR_GL_INET)
+       #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)"
 
-       #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)"
+#elif defined(CONFIG_FOR_ALFA_NETWORK_AP121F)
 
-#elif defined(CONFIG_FOR_TPLINK_WR710N_V1)
+       #define CONFIG_BOOTARGS "board=AP121F console=ttyATH0,115200 "\
+                               "rootfstype=squashfs,jffs2 noinitrd "\
+                               "mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env),64k(art)ro,-(firmware)"
 
-       #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)"
-
-#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+#elif defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB)
 
-       #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)"
+       #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:02 "\
+                               "rootfstype=squashfs init=/sbin/init "\
+                               "mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),6144k(rootfs),1600k(uImage),64k(NVRAM),64k(ART)"
 
-#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
+#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
 
-       #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)"
+       #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)"
 
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
+#elif defined(CONFIG_FOR_CREATCOMM_D3321)
 
-       #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)"
+       #define CONFIG_BOOTARGS "console=ttyS0,115200 root=31:03 "\
+                               "rootfstype=squashfs init=/sbin/init "\
+                               "mtdparts=ar7240-nor0:256k(u-boot),64k(u-boot-env),1216k(uImage),5952k(rootfs),256k(config),384k(customer),64k(ART) mem=32M"
 
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
 
-       #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)"
+       #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)"
 
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
       defined(CONFIG_FOR_MESH_POTATO_V2)
 
-       #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)"
+       #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)"
 
-#endif
+#elif defined(CONFIG_FOR_GL_AR150) ||\
+      defined(CONFIG_FOR_GL_USB150)
 
-/*
- * Other env default values
- */
-#undef CONFIG_BOOTFILE
-#define CONFIG_BOOTFILE                        "firmware.bin"
+       #define CONFIG_BOOTARGS "console=ttyATH0,115200 board=domino root=31:03 "\
+                               "rootfstype=squashfs,jffs2 noinitrd "\
+                               "mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,1280k(kernel),14656k(rootfs),64k(nvram),64k(art)ro,15936k@0x50000(firmware)"
 
-#undef CONFIG_LOADADDR
-#define CONFIG_LOADADDR                        0x80800000
+#elif defined(CONFIG_FOR_GL_INET)            ||\
+      defined(CONFIG_FOR_TPLINK_MR10U_V1)    ||\
+      defined(CONFIG_FOR_TPLINK_MR13U_V1)    ||\
+      defined(CONFIG_FOR_TPLINK_MR3020_V1)   ||\
+      defined(CONFIG_FOR_TPLINK_MR3040_V1V2) ||\
+      defined(CONFIG_FOR_TPLINK_MR3220_V2)   ||\
+      defined(CONFIG_FOR_TPLINK_WR703N_V1)   ||\
+      defined(CONFIG_FOR_TPLINK_WR720N_V3)   ||\
+      defined(CONFIG_FOR_TPLINK_WR740N_V4)
 
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define CFG_LOAD_ADDR                    0x9F080000
-       #define UPDATE_SCRIPT_FW_ADDR   "0x9F080000"
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       #define CFG_LOAD_ADDR                    0x9F050000
-       #define UPDATE_SCRIPT_FW_ADDR   "0x9F050000"
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
-      defined(CONFIG_FOR_MESH_POTATO_V2)
-       #define CFG_LOAD_ADDR                    0x9F040000
-       #define UPDATE_SCRIPT_FW_ADDR   "0x9F040000"
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       #define CFG_LOAD_ADDR                    0x9F030000
-       #define UPDATE_SCRIPT_FW_ADDR   "0x9F030000"
-#else
-       #define CFG_LOAD_ADDR                    0x9F020000
-       #define UPDATE_SCRIPT_FW_ADDR   "0x9F020000"
-#endif
+       #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)"
 
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define CONFIG_BOOTCOMMAND "bootm 0x9F080000"
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       #define CONFIG_BOOTCOMMAND "bootm 0x9F050000"
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
-      defined(CONFIG_FOR_MESH_POTATO_V2)
-       #define CONFIG_BOOTCOMMAND "bootm 0x9F040000"
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       #define CONFIG_BOOTCOMMAND "bootm 0x9F030000"
-#else
-       #define CONFIG_BOOTCOMMAND "bootm 0x9F020000"
-#endif
+#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
 
-/*
- * Dragino 2 uses different IP addresses
- */
-#if defined(CONFIG_FOR_DRAGINO_V2)
-       #define CONFIG_IPADDR           192.168.255.1
-       #define CONFIG_SERVERIP         192.168.255.2
-#else
-       #define CONFIG_IPADDR           192.168.1.1
-       #define CONFIG_SERVERIP         192.168.1.2
-#endif
+       #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)"
 
-/*
- * Dragino 2 uses different prompt
- */
-#if defined(CONFIG_FOR_DRAGINO_V2) || \
-    defined(CONFIG_FOR_MESH_POTATO_V2)
-       #if defined(CFG_PROMPT)
-               #undef CFG_PROMPT
-       #endif
-       #define CFG_PROMPT "dr_boot> "
-#endif
+#elif defined(CONFIG_FOR_TPLINK_WR710N_V1)
 
-#if defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       #if defined(CFG_PROMPT)
-               #undef CFG_PROMPT
-       #endif
-       #define CFG_PROMPT "BSB> "
-#endif
+       #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)"
 
-/*
- * PLL/Clocks configuration
- */
-#ifdef CFG_HZ
-       #undef  CFG_HZ
 #endif
-#define        CFG_HZ  bd->bi_cfg_hz
-
-#define CONFIG_QCA_PLL                 QCA_PLL_PRESET_400_400_200
-
 
 /*
- * For PLL/clocks recovery use reset button by default
+ * =============================
+ * Load address and boot command
+ * =============================
  */
-#ifdef CONFIG_GPIO_RESET_BTN
-       #define CONFIG_QCA_GPIO_OC_RECOVERY_BTN         CONFIG_GPIO_RESET_BTN
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_AP121F)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) ||\
+    defined(CONFIG_FOR_CREATCOMM_D3321)        ||\
+    defined(CONFIG_FOR_GL_AR150)               ||\
+    defined(CONFIG_FOR_GL_USB150)
+       #define CFG_LOAD_ADDR   0x9F050000
+#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
+       #define CFG_LOAD_ADDR   0x9F030000
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+       #define CFG_LOAD_ADDR   0x9F080000
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
+      defined(CONFIG_FOR_MESH_POTATO_V2)
+       #define CFG_LOAD_ADDR   0x9F040000
+#else
+       #define CFG_LOAD_ADDR   0x9F020000
 #endif
 
-#ifdef CONFIG_GPIO_RESET_BTN_ACTIVE_LOW
-       #define CONFIG_QCA_GPIO_OC_RECOVERY_BTN_ACTIVE_LOW      1
+#if defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB)
+       #define CONFIG_BOOTCOMMAND      "bootm 0x9F050000 || bootm 0x9F650000 || bootm 0x9FE50000"
+#else
+       #define CONFIG_BOOTCOMMAND      "bootm " MK_STR(CFG_LOAD_ADDR)
 #endif
 
 /*
- * Cache lock for stack
+ * =========================
+ * Environment configuration
+ * =========================
  */
-#define CFG_INIT_SP_OFFSET             0x1000
-
-/*
- * Address and size of Primary Environment Sector
- */
-#if !defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define CFG_ENV_IS_IN_FLASH     1
-       #undef  CFG_ENV_IS_NOWHERE
-#else
-       #undef  CFG_ENV_IS_IN_FLASH
-       #define CFG_ENV_IS_NOWHERE      1
-#endif
-
-#if defined(CONFIG_FOR_DRAGINO_V2) || \
-       defined(CONFIG_FOR_MESH_POTATO_V2)
-       #define CFG_ENV_ADDR            0x9F030000
-       #define CFG_ENV_SIZE            0x8000
-       #define CFG_ENV_SECT_SIZE       0x10000
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) ||\
+    defined(CONFIG_FOR_CREATCOMM_D3321)        ||\
+    defined(CONFIG_FOR_GL_AR150)               ||\
+    defined(CONFIG_FOR_GL_USB150)
        #define CFG_ENV_ADDR            0x9F040000
        #define CFG_ENV_SIZE            0x8000
        #define CFG_ENV_SECT_SIZE       0x10000
+#elif defined(CONFIG_FOR_ALFA_NETWORK_AP121F)
+       #define CFG_ENV_ADDR            0x9F030000
+       #define CFG_ENV_SIZE            0x10000
 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
        #define CFG_ENV_ADDR            0x9F020000
        #define CFG_ENV_SIZE            0x8000
        #define CFG_ENV_SECT_SIZE       0x10000
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+       #define CFG_ENV_ADDR            0x9F028000
+       #define CFG_ENV_SIZE            0x7C00
+       #define CFG_ENV_SECT_SIZE       0x10000
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
+      defined(CONFIG_FOR_MESH_POTATO_V2)
+       #define CFG_ENV_ADDR            0x9F030000
+       #define CFG_ENV_SIZE            0x8000
+       #define CFG_ENV_SECT_SIZE       0x10000
 #else
        #define CFG_ENV_ADDR            0x9F01EC00
        #define CFG_ENV_SIZE            0x1000
 #endif
 
 /*
- * Available commands
+ * ===========================
+ * List of available baudrates
+ * ===========================
  */
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-
-       #define CONFIG_COMMANDS (CFG_CMD_MEMORY | \
-                                                        CFG_CMD_PING   | \
-                                                        CFG_CMD_FLASH  | \
-                                                        CFG_CMD_NET    | \
-                                                        CFG_CMD_RUN    | \
-                                                        CFG_CMD_DATE   | \
-                                                        CFG_CMD_ECHO   | \
-                                                        CFG_CMD_BOOTD  | \
-                                                        CFG_CMD_ITEST  | \
-                                                        CFG_CMD_IMI)
-
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) || \
-      defined(CONFIG_FOR_DRAGINO_V2) || \
-      defined(CONFIG_FOR_MESH_POTATO_V2) || \
-      defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-
-       #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   | \
-                                                        CFG_CMD_ECHO   | \
-                                                        CFG_CMD_BOOTD  | \
-                                                        CFG_CMD_ITEST  | \
-                                                        CFG_CMD_IMI    | \
-                                                        CFG_CMD_ENV    | \
-                                                        CFG_CMD_LOADB)
+#define CFG_BAUDRATE_TABLE     \
+               { 600,    1200,   2400,    4800,    9600,    14400,  \
+                 19200,  28800,  38400,   56000,   57600,   115200, \
+                 128000, 153600, 230400,  250000,  256000,  460800, \
+                 576000, 921600, 1000000, 1152000, 1500000, 2000000 }
 
+/*
+ * ==================================================
+ * MAC address/es, model and WPS pin offsets in FLASH
+ * ==================================================
+ */
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) ||\
+    defined(CONFIG_FOR_CREATCOMM_D3321)        ||\
+    defined(CONFIG_FOR_DRAGINO_V2)             ||\
+    defined(CONFIG_FOR_MESH_POTATO_V2)
+       #define OFFSET_MAC_DATA_BLOCK           0xFF0000
+       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
+       #define OFFSET_MAC_ADDRESS              0x000000
+       #define OFFSET_MAC_ADDRESS2             0x000006
+#elif defined(CONFIG_FOR_ALFA_NETWORK_AP121F)
+       #define OFFSET_MAC_DATA_BLOCK           0x40000
+       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x10000
+       #define OFFSET_MAC_ADDRESS              0x00000
+#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD) ||\
+      defined(CONFIG_FOR_GL_AR150)          ||\
+      defined(CONFIG_FOR_GL_USB150)
+       #define OFFSET_MAC_DATA_BLOCK           0xFF0000
+       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
+       #define OFFSET_MAC_ADDRESS              0x000000
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+       /*
+        * DIR-505 has two MAC addresses inside dedicated MAC partition
+        * They are stored in plain text...
+        * TODO: read/write MAC stored as plain text
+        * #define OFFSET_MAC_DATA_BLOCK        0x02000
+        * #define OFFSET_MAC_DATA_BLOCK_LENGTH 0x010000
+        * #define OFFSET_MAC_ADDRESS           0x000004
+        * #define OFFSET_MAC_ADDRESS2          0x000016
+        */
+#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
+       #define OFFSET_MAC_DATA_BLOCK           0x010000
+       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
+       #define OFFSET_MAC_ADDRESS              0x00FC00
 #else
-
-       #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   | \
-                                                        CFG_CMD_ECHO   | \
-                                                        CFG_CMD_BOOTD  | \
-                                                        CFG_CMD_ITEST  | \
-                                                        CFG_CMD_ENV    | \
-                                                        CFG_CMD_LOADB)
-
+       #define OFFSET_MAC_DATA_BLOCK           0x010000
+       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
+       #define OFFSET_MAC_ADDRESS              0x00FC00
 #endif
 
-// Enable NetConsole and custom NetConsole port
-#define CONFIG_NETCONSOLE
-#define CONFIG_NETCONSOLE_PORT 6666
-
-#define CONFIG_NET_MULTI
+#if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    &&\
+    !defined(CONFIG_FOR_ALFA_NETWORK_AP121F)    &&\
+    !defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) &&\
+    !defined(CONFIG_FOR_BLACK_SWIFT_BOARD)      &&\
+    !defined(CONFIG_FOR_CREATCOMM_D3321)        &&\
+    !defined(CONFIG_FOR_DLINK_DIR505_A1)        &&\
+    !defined(CONFIG_FOR_DRAGINO_V2)             &&\
+    !defined(CONFIG_FOR_GL_AR150)               &&\
+    !defined(CONFIG_FOR_GL_INET)                &&\
+    !defined(CONFIG_FOR_GL_USB150)              &&\
+    !defined(CONFIG_FOR_GS_OOLITE_V1_DEV)       &&\
+    !defined(CONFIG_FOR_MESH_POTATO_V2)
+       #define OFFSET_ROUTER_MODEL     0xFD00
+#endif
 
-/* choose eth1 first for tftpboot interface added by ZJin, 110328 */
-#define CONFIG_AG7240_SPEPHY
+#if defined(CONFIG_FOR_TPLINK_MR3020_V1) ||\
+    defined(CONFIG_FOR_TPLINK_MR3220_V2) ||\
+    defined(CONFIG_FOR_TPLINK_WR710N_V1) ||\
+    defined(CONFIG_FOR_TPLINK_WR740N_V4)
+       #define OFFSET_PIN_NUMBER       0xFE00
+#endif
 
 /*
- * Web Failsafe configuration
+ * =========================
+ * Custom changes per device
+ * =========================
  */
-#define WEBFAILSAFE_UPLOAD_RAM_ADDRESS                                 CONFIG_LOADADDR
 
-// U-Boot partition size and offset
-#define WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS                               CFG_FLASH_BASE
-#define WEBFAILSAFE_UPLOAD_UBOOT_SIZE_IN_BYTES                 (CONFIG_MAX_UBOOT_SIZE_KB * 1024)
+/* Dragino 2 uses different IP addresses */
+#if defined(CONFIG_FOR_DRAGINO_V2)
+       #undef  CONFIG_IPADDR
+       #define CONFIG_IPADDR   192.168.255.1
 
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES                       "0x10000"
-       #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES        UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES                       "0x40000"
-       #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES        UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
-      defined(CONFIG_FOR_MESH_POTATO_V2)
-       #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES                       "0x30000"
-       #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES        UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES                       "0x20000"
-       #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES        UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES
-#else
-       // TODO: should be == CONFIG_MAX_UBOOT_SIZE_KB
-       #define UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES                       "0x1EC00"
-       #define UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES        "0x20000"
+       #undef  CONFIG_SERVERIP
+       #define CONFIG_SERVERIP 192.168.255.2
 #endif
 
-// Firmware partition offset
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x80000
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x50000
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
+/* Dragino 2 and Black Swift boards use different prompts */
+#if defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
+       #undef  CFG_PROMPT
+       #define CFG_PROMPT      "BSB> "
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
       defined(CONFIG_FOR_MESH_POTATO_V2)
-       #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x40000
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x30000
-#else
-       #define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS                       WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x20000
+       #undef  CFG_PROMPT
+       #define CFG_PROMPT      "dr_boot> "
 #endif
 
-// ART partition size and offset
+/* D-Link DIR-505 is limited to 64 KB only and doesn't use env */
 #if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       #define WEBFAILSAFE_UPLOAD_ART_ADDRESS                          WEBFAILSAFE_UPLOAD_UBOOT_ADDRESS + 0x10000
+       #undef CONFIG_CMD_DHCP
+       #undef CONFIG_CMD_LOADB
 #endif
 
-#define WEBFAILSAFE_UPLOAD_ART_SIZE_IN_BYTES                   (64 * 1024)
+/*
+ * ===========================
+ * HTTP recovery configuration
+ * ===========================
+ */
+#define WEBFAILSAFE_UPLOAD_KERNEL_ADDRESS      CFG_LOAD_ADDR
+
+#if defined(CONFIG_FOR_ALFA_NETWORK_AP121F)
+       #define WEBFAILSAFE_UPLOAD_ART_ADDRESS  (CFG_FLASH_BASE + 0x40000)
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+       #define WEBFAILSAFE_UPLOAD_ART_ADDRESS  (CFG_FLASH_BASE + 0x10000)
+#endif
 
-// max. firmware size <= (FLASH_SIZE -  WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES)
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       // D-Link DIR-505: 64k(U-Boot),64k(ART),64k(MAC),64k(NVRAM),256k(Language)
-       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (512 * 1024)
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       // Carambola 2: 256k(U-Boot),64k(U-Boot env),64k(ART)
+/* Firmware size limit */
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) ||\
+    defined(CONFIG_FOR_GL_AR150)            ||\
+    defined(CONFIG_FOR_GL_USB150)
        #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (384 * 1024)
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
+#elif defined(CONFIG_FOR_ALFA_NETWORK_AP121F) ||\
+      defined(CONFIG_FOR_DRAGINO_V2)          ||\
       defined(CONFIG_FOR_MESH_POTATO_V2)
-       // Dragino 2: 192k(U-Boot),64k(U-Boot env),64k(ART)
        #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (320 * 1024)
-#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
-       // GS-Oolite v1: 128k(U-Boot + MAC),64k(ART)
-       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (192 * 1024)
+#elif defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB)
+       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (448 * 1024)
 #elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       // Black Swift board: 128k(U-Boot),64k(U-Boot env),64k(ART)
        #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (256 * 1024)
+#elif defined(CONFIG_FOR_CREATCOMM_D3321)
+       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (1856 * 1024)
+#elif defined(CONFIG_FOR_DLINK_DIR505_A1)
+       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (512 * 1024)
+#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
+       #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (192 * 1024)
 #else
-       // TP-Link: 64k(U-Boot),64k(MAC/model/WPS pin block),64k(ART)
        #define WEBFAILSAFE_UPLOAD_LIMITED_AREA_IN_BYTES        (192 * 1024)
 #endif
 
-// progress state info
-#define WEBFAILSAFE_PROGRESS_START                             0
-#define WEBFAILSAFE_PROGRESS_TIMEOUT                   1
-#define WEBFAILSAFE_PROGRESS_UPLOAD_READY              2
-#define WEBFAILSAFE_PROGRESS_UPGRADE_READY             3
-#define WEBFAILSAFE_PROGRESS_UPGRADE_FAILED            4
-
-// update type
-#define WEBFAILSAFE_UPGRADE_TYPE_FIRMWARE              0
-#define WEBFAILSAFE_UPGRADE_TYPE_UBOOT                 1
-#define WEBFAILSAFE_UPGRADE_TYPE_ART                   2
-
-/*-----------------------------------------------------------------------*/
-
 /*
- * Additional environment variables for simple upgrades
+ * ========================
+ * PLL/Clocks configuration
+ * ========================
  */
-#define CONFIG_EXTRA_ENV_SETTINGS      "uboot_addr=0x9F000000\0" \
-                                                                       "uboot_name=uboot.bin\0" \
-                                                                       "uboot_size=" UPDATE_SCRIPT_UBOOT_SIZE_IN_BYTES "\0" \
-                                                                       "uboot_backup_size=" UPDATE_SCRIPT_UBOOT_BACKUP_SIZE_IN_BYTES "\0" \
-                                                                       "uboot_upg=" \
-                                                                               "if ping $serverip; then " \
-                                                                                       "mw.b $loadaddr 0xFF $uboot_backup_size && " \
-                                                                                       "cp.b $uboot_addr $loadaddr $uboot_backup_size && " \
-                                                                                       "tftp $loadaddr $uboot_name && " \
-                                                                                       "if itest.l $filesize <= $uboot_size; then " \
-                                                                                               "erase $uboot_addr +$uboot_backup_size && " \
-                                                                                               "cp.b $loadaddr $uboot_addr $uboot_backup_size && " \
-                                                                                               "echo OK!; " \
-                                                                                       "else " \
-                                                                                               "echo ERROR! Wrong file size!; " \
-                                                                                       "fi; " \
-                                                                               "else " \
-                                                                                       "echo ERROR! Server not reachable!; " \
-                                                                               "fi\0" \
-                                                                       "firmware_addr=" UPDATE_SCRIPT_FW_ADDR "\0" \
-                                                                       "firmware_name=firmware.bin\0" \
-                                                                       "firmware_upg=" \
-                                                                               "if ping $serverip; then " \
-                                                                                       "tftp $loadaddr $firmware_name && " \
-                                                                                       "erase $firmware_addr +$filesize && " \
-                                                                                       "cp.b $loadaddr $firmware_addr $filesize && " \
-                                                                                       "echo OK!; " \
-                                                                               "else " \
-                                                                                       "echo ERROR! Server not reachable!; " \
-                                                                               "fi\0"
-
-#define CFG_ATHRS26_PHY                                1
-#define CFG_AG7240_NMACS                       2
-#define CFG_MII0_RMII                          1
-#define CFG_BOOTM_LEN                          (16 << 20) /* 16 MB */
-
-#undef DEBUG
-
-/* MAC address, model and PIN number offsets in FLASH */
-#if defined(CONFIG_FOR_DLINK_DIR505_A1)
-       // DIR-505 has two MAC addresses inside dedicated MAC partition
-       // They are stored in plain text... TODO: read/write MAC stored as plain text
-       //#define OFFSET_MAC_DATA_BLOCK                 0x020000
-       //#define OFFSET_MAC_DATA_BLOCK_LENGTH  0x010000
-       //#define OFFSET_MAC_ADDRESS                            0x000004
-       //#define OFFSET_MAC_ADDRESS2                           0x000016
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) || \
-      defined(CONFIG_FOR_DRAGINO_V2) || \
-      defined(CONFIG_FOR_MESH_POTATO_V2)
-       // Carambola 2 and Dragino 2 have two MAC addresses at the beginning of ART partition
-       #define OFFSET_MAC_DATA_BLOCK                   0xFF0000
-       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
-       #define OFFSET_MAC_ADDRESS                              0x000000
-       #define OFFSET_MAC_ADDRESS2                             0x000006
-#elif defined(CONFIG_FOR_GS_OOLITE_V1_DEV)
-       // GS-OOlite has only one MAC, inside second block
-       // It's some kind of TP-Link clone
-       #define OFFSET_MAC_DATA_BLOCK                   0x010000
-       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
-       #define OFFSET_MAC_ADDRESS                              0x00FC00
-#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       // Black Swift board has only one MAC address at the beginning of ART partition
-       #define OFFSET_MAC_DATA_BLOCK           0xFF0000
-       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
-       #define OFFSET_MAC_ADDRESS              0x000000
-#else
-       #define OFFSET_MAC_DATA_BLOCK                   0x010000
-       #define OFFSET_MAC_DATA_BLOCK_LENGTH    0x010000
-       #define OFFSET_MAC_ADDRESS                              0x00FC00
-#endif
+#define CONFIG_QCA_PLL QCA_PLL_PRESET_400_400_200
 
-#if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2) && \
-       !defined(CONFIG_FOR_DLINK_DIR505_A1)     && \
-       !defined(CONFIG_FOR_GS_OOLITE_V1_DEV)    && \
-       !defined(CONFIG_FOR_DRAGINO_V2)          && \
-       !defined(CONFIG_FOR_MESH_POTATO_V2)      && \
-       !defined(CONFIG_FOR_GL_INET)             && \
-       !defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-#define OFFSET_ROUTER_MODEL                                    0x00FD00
-#endif
+#if defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_AP121F)    ||\
+    defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) ||\
+    defined(CONFIG_FOR_CREATCOMM_D3321)        ||\
+    defined(CONFIG_FOR_GL_AR150)               ||\
+    defined(CONFIG_FOR_GL_USB150)
 
-#if defined(CONFIG_FOR_TPLINK_MR3020_V1) || \
-       defined(CONFIG_FOR_TPLINK_WR740N_V4) || \
-       defined(CONFIG_FOR_TPLINK_MR3220_V2) || \
-       defined(CONFIG_FOR_TPLINK_WR710N_V1)
-       #define OFFSET_PIN_NUMBER                               0x00FE00
-#endif
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x40000
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE      0x10000
 
-/*
- * PLL and clocks configurations from FLASH
- */
-#if defined(CONFIG_FOR_DLINK_DIR505_A1) || \
-    defined(CONFIG_FOR_BLACK_SWIFT_BOARD)
-       /*
-        * For DIR505 A1:
-        * We will store PLL and CLOCK registers
-        * configuration at the end of MAC data
-        * partition (3rd 64 KiB block)
-        * ----
-        * For Black Swift board:
-        * We will store PLL and CLOCK registers
-        * configuration at the end of environment
-        * sector (64 KB, environment uses only part!)
-        */
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x00020000
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE              0x00010000
+#elif defined(CONFIG_FOR_BLACK_SWIFT_BOARD) ||\
+      defined(CONFIG_FOR_DLINK_DIR505_A1)
 
-#elif defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)
-       /*
-        * We will store PLL and CLOCK registers
-        * configuration at the end of environment
-        * sector (64 KB, environment uses only half!)
-        */
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x00040000
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE              0x00010000
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x20000
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE      0x10000
 
-#elif defined(CONFIG_FOR_DRAGINO_V2) || \
+#elif defined(CONFIG_FOR_DRAGINO_V2) ||\
       defined(CONFIG_FOR_MESH_POTATO_V2)
-       /*
-        * We will store PLL and CLOCK registers
-        * configuration at the end of environment
-        * sector (64 KB, environment uses only half!)
-        */
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x00030000
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE              0x00010000
+
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x30000
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE      0x10000
 
 #else
-       /*
-        * All TP-Link routers have a lot of unused space
-        * in FLASH, in second 64 KiB block.
-        * We will store there PLL and CLOCK
-        * registers configuration.
-        */
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x00010000
-       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE              0x00010000
 
-#endif
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET    0x10000
+       #define CONFIG_QCA_PLL_IN_FLASH_BLOCK_SIZE      0x10000
 
-#if defined(CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET)
-       /* Use last 32 bytes */
-       #define CONFIG_QCA_PLL_IN_FLASH_MAGIC_OFFSET    (CFG_FLASH_BASE + \
-                                                                                                        CONFIG_QCA_PLL_IN_FLASH_BLOCK_OFFSET + \
-                                                                                                        0x0000FFE0)
 #endif
 
-#include <cmd_confdefs.h>
+/*
+ * ==================================
+ * For upgrade scripts in environment
+ * ==================================
+ */
+#if !defined(CONFIG_FOR_8DEVICES_CARAMBOLA2)    &&\
+    !defined(CONFIG_FOR_ALFA_NETWORK_AP121F)    &&\
+    !defined(CONFIG_FOR_ALFA_NETWORK_HORNET_UB) &&\
+    !defined(CONFIG_FOR_BLACK_SWIFT_BOARD)      &&\
+    !defined(CONFIG_FOR_CREATCOMM_D3321)        &&\
+    !defined(CONFIG_FOR_DLINK_DIR505_A1)        &&\
+    !defined(CONFIG_FOR_DRAGINO_V2)             &&\
+    !defined(CONFIG_FOR_GL_AR150)               &&\
+    !defined(CONFIG_FOR_GL_USB150)              &&\
+    !defined(CONFIG_FOR_MESH_POTATO_V2)
+       #define CONFIG_UPG_SCRIPTS_UBOOT_SIZE_BCKP_HEX  0x20000
+#endif
 
-#endif /* __CONFIG_H */
+#endif /* _AP121_H */