ar71xx: add support for TP-Link TL-MR11U
authorGabor Juhos <juhosg@openwrt.org>
Tue, 31 Jan 2012 18:37:01 +0000 (18:37 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Tue, 31 Jan 2012 18:37:01 +0000 (18:37 +0000)
Adds support for TL-MR11U, a portable router with very similar
hardware to the TL-WR703N and TL-MR3020, but with an onboard
2000mAh battery.

Tested, working:
All interfaces (Ethernet, 802.11n, USB)
WPS & Reset switches (Power appears to be a hardware slider)
Ethernet, Wifi, 3G LEDs (Power & charging LEDs hardware controlled)
Sysupgrade

[juhosg: fix indentations to use TABs instead of spaces, fix 3.2 patch
breakage]

Signed-off-by: Simon Taylor <simon.taylor.uk@gmail.com>
SVN-Revision: 29972

14 files changed:
target/linux/ar71xx/base-files/etc/uci-defaults/leds
target/linux/ar71xx/base-files/etc/uci-defaults/network
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-2.6.39
target/linux/ar71xx/config-3.2
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c [new file with mode: 0644]
target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h
target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-tl-mr11u.c [new file with mode: 0644]
target/linux/ar71xx/generic/profiles/tp-link.mk
target/linux/ar71xx/image/Makefile
target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch

index ae75f78c32bdd2fd3a75cf5e0afa33c406e61bea..d9613930d488b430a4254dcd86f483b1dfac1c6f 100755 (executable)
@@ -146,6 +146,7 @@ om2p)
        set_led_netdev "port2" "port2" "om2p:blue:lan" "eth1"
        ;;
 
        set_led_netdev "port2" "port2" "om2p:blue:lan" "eth1"
        ;;
 
+tl-mr11u | \
 tl-mr3020)
        set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1"
        set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
 tl-mr3020)
        set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1"
        set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
index 4d6a68b73a263c0bca51dc6a1bf00317295a9f53..ca9989818322c973e5fe47a2ad9c2ce671876e4a 100755 (executable)
@@ -111,6 +111,7 @@ aw-nr580 |\
 bullet-m |\
 eap7660d |\
 rb-411 |\
 bullet-m |\
 eap7660d |\
 rb-411 |\
+tl-mr11u |\
 tl-mr3020 |\
 tl-wa901nd |\
 tl-wa901nd-v2 |\
 tl-mr3020 |\
 tl-wa901nd |\
 tl-wa901nd-v2 |\
index 6761382743ec08c8343e5c1c04fe8b5e086d0f62..9f117225f1927e3197ba9ef2be8882543c5e68d0 100755 (executable)
@@ -100,6 +100,9 @@ tplink_board_detect() {
        "254300"*)
                model="TP-Link TL-WR2543N/ND"
                ;;
        "254300"*)
                model="TP-Link TL-WR2543N/ND"
                ;;
+       "110101"*)
+               model="TP-Link TL-MR11U"
+               ;;
        "302000"*)
                model="TP-Link TL-MR3020"
                ;;
        "302000"*)
                model="TP-Link TL-MR3020"
                ;;
@@ -292,6 +295,9 @@ ar71xx_board_detect() {
        *"TL-WR703N v1")
                name="tl-wr703n"
                ;;
        *"TL-WR703N v1")
                name="tl-wr703n"
                ;;
+       *"TL-MR11U")
+               name="tl-mr11u"
+               ;;
        *UniFi)
                name="unifi"
                ;;
        *UniFi)
                name="unifi"
                ;;
index d07b7823ad45e01e9a5e68bad54219d5d7e78802..49df3c39667f041f0318ed54040ac0ac3e2f1f9b 100755 (executable)
@@ -122,6 +122,7 @@ platform_check_image() {
                }
                return 0
                ;;
                }
                return 0
                ;;
+       tl-mr11u | \
        tl-mr3020 | \
        tl-mr3220 | \
        tl-mr3420 | \
        tl-mr3020 | \
        tl-mr3220 | \
        tl-mr3420 | \
index 2b1662a745e8cb77b31b225e6ec8da164f29a2f5..4f51b1a2b97424032766d1d54c3f72b23d886110 100644 (file)
@@ -41,6 +41,7 @@ CONFIG_AR71XX_MACH_RB4XX=y
 CONFIG_AR71XX_MACH_RB750=y
 CONFIG_AR71XX_MACH_RW2458N=y
 CONFIG_AR71XX_MACH_TEW_632BRP=y
 CONFIG_AR71XX_MACH_RB750=y
 CONFIG_AR71XX_MACH_RW2458N=y
 CONFIG_AR71XX_MACH_TEW_632BRP=y
+CONFIG_AR71XX_MACH_TL_MR11U=y
 CONFIG_AR71XX_MACH_TL_MR3020=y
 CONFIG_AR71XX_MACH_TL_MR3X20=y
 CONFIG_AR71XX_MACH_TL_WA901ND=y
 CONFIG_AR71XX_MACH_TL_MR3020=y
 CONFIG_AR71XX_MACH_TL_MR3X20=y
 CONFIG_AR71XX_MACH_TL_WA901ND=y
index 6d2f6b815b5bb561bf01530249d99e8f03a3caac..50fe18fd95af8670fe146b554e617ba2c69e687c 100644 (file)
@@ -50,6 +50,7 @@ CONFIG_ATH79_MACH_RB4XX=y
 CONFIG_ATH79_MACH_RB750=y
 CONFIG_ATH79_MACH_RW2458N=y
 CONFIG_ATH79_MACH_TEW_632BRP=y
 CONFIG_ATH79_MACH_RB750=y
 CONFIG_ATH79_MACH_RW2458N=y
 CONFIG_ATH79_MACH_TEW_632BRP=y
+CONFIG_ATH79_MACH_TL_MR11U=y
 CONFIG_ATH79_MACH_TL_MR3020=y
 CONFIG_ATH79_MACH_TL_MR3X20=y
 CONFIG_ATH79_MACH_TL_WA901ND=y
 CONFIG_ATH79_MACH_TL_MR3020=y
 CONFIG_ATH79_MACH_TL_MR3X20=y
 CONFIG_ATH79_MACH_TL_WA901ND=y
index cf1664e76e066b57474e120760fe5cd0937b44cc..60db3ef41529bdfa8796fd4f4f6b0029b4da094d 100644 (file)
@@ -312,6 +312,15 @@ config AR71XX_MACH_NBG460N
        select AR71XX_DEV_GPIO_BUTTONS
        select AR71XX_DEV_LEDS_GPIO
 
        select AR71XX_DEV_GPIO_BUTTONS
        select AR71XX_DEV_LEDS_GPIO
 
+config AR71XX_MACH_TL_MR11U
+        bool "TP-LINK TL-MR11U support"
+        select SOC_AR933X
+        select AR71XX_DEV_M25P80
+        select AR71XX_DEV_GPIO_BUTTONS
+        select AR71XX_DEV_LEDS_GPIO
+        select AR71XX_DEV_USB
+        select AR71XX_DEV_AR9XXX_WMAC
+
 config AR71XX_MACH_TL_MR3020
        bool "TP-LINK TL-MR3020 support"
        select SOC_AR933X
 config AR71XX_MACH_TL_MR3020
        bool "TP-LINK TL-MR3020 support"
        select SOC_AR933X
index 9b36bcfbbad67289e52a1530323216b6532e854d..22e32e5acc69979ef329cd69b3f57e389d6ff557 100644 (file)
@@ -56,6 +56,7 @@ obj-$(CONFIG_AR71XX_MACH_RB4XX)               += mach-rb4xx.o
 obj-$(CONFIG_AR71XX_MACH_RB750)                += mach-rb750.o
 obj-$(CONFIG_AR71XX_MACH_RW2458N)      += mach-rw2458n.o
 obj-$(CONFIG_AR71XX_MACH_TEW_632BRP)   += mach-tew-632brp.o
 obj-$(CONFIG_AR71XX_MACH_RB750)                += mach-rb750.o
 obj-$(CONFIG_AR71XX_MACH_RW2458N)      += mach-rw2458n.o
 obj-$(CONFIG_AR71XX_MACH_TEW_632BRP)   += mach-tew-632brp.o
+obj-$(CONFIG_AR71XX_MACH_TL_MR11U)     += mach-tl-mr11u.o
 obj-$(CONFIG_AR71XX_MACH_TL_MR3020)    += mach-tl-mr3020.o
 obj-$(CONFIG_AR71XX_MACH_TL_MR3X20)    += mach-tl-mr3x20.o
 obj-$(CONFIG_AR71XX_MACH_TL_WA901ND)   += mach-tl-wa901nd.o
 obj-$(CONFIG_AR71XX_MACH_TL_MR3020)    += mach-tl-mr3020.o
 obj-$(CONFIG_AR71XX_MACH_TL_MR3X20)    += mach-tl-mr3x20.o
 obj-$(CONFIG_AR71XX_MACH_TL_WA901ND)   += mach-tl-wa901nd.o
diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c
new file mode 100644 (file)
index 0000000..427af16
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ *  TP-LINK TL-MR11U board support
+ *
+ *  Copyright (C) 2011 dongyuqi <729650915@qq.com>
+ *  Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/gpio.h>
+
+#include <asm/mach-ar71xx/ar71xx.h>
+
+#include "machtype.h"
+#include "devices.h"
+#include "dev-ar9xxx-wmac.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-usb.h"
+
+#define TL_MR11U_GPIO_LED_3G           27
+#define TL_MR11U_GPIO_LED_WLAN         26
+#define TL_MR11U_GPIO_LED_LAN          17
+
+#define TL_MR11U_GPIO_BTN_WPS          20
+#define TL_MR11U_GPIO_BTN_RESET                11
+
+#define TL_MR11U_GPIO_USB_POWER        8
+
+#define TL_MR11U_KEYS_POLL_INTERVAL    20      /* msecs */
+#define TL_MR11U_KEYS_DEBOUNCE_INTERVAL        (3 * TL_MR11U_KEYS_POLL_INTERVAL)
+
+static const char *tl_mr11u_part_probes[] = {
+       "tp-link",
+       NULL,
+};
+
+static struct flash_platform_data tl_mr11u_flash_data = {
+       .part_probes    = tl_mr11u_part_probes,
+};
+
+static struct gpio_led tl_mr11u_leds_gpio[] __initdata = {
+       {
+               .name           = "tp-link:green:3g",
+               .gpio           = TL_MR11U_GPIO_LED_3G,
+               .active_low     = 1,
+       },
+       {
+               .name           = "tp-link:green:wlan",
+               .gpio           = TL_MR11U_GPIO_LED_WLAN,
+               .active_low     = 1,
+       },
+       {
+               .name           = "tp-link:green:lan",
+               .gpio           = TL_MR11U_GPIO_LED_LAN,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button tl_mr11u_gpio_keys[] __initdata = {
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = KEY_WPS_BUTTON,
+               .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_MR11U_GPIO_BTN_WPS,
+               .active_low     = 0,
+       },
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_MR11U_GPIO_BTN_RESET,
+               .active_low     = 0,
+       }
+};
+
+static void __init tl_mr11u_setup(void)
+{
+       u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+       u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+       ar71xx_add_device_m25p80(&tl_mr11u_flash_data);
+       ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_mr11u_leds_gpio),
+                                       tl_mr11u_leds_gpio);
+       ar71xx_register_gpio_keys_polled(-1, TL_MR11U_KEYS_POLL_INTERVAL,
+                                        ARRAY_SIZE(tl_mr11u_gpio_keys),
+                                        tl_mr11u_gpio_keys);
+
+       gpio_request(TL_MR11U_GPIO_USB_POWER, "USB power");
+       gpio_direction_output(TL_MR11U_GPIO_USB_POWER, 1);
+       ar71xx_add_device_usb();
+
+       ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0);
+
+       ar71xx_add_device_mdio(0, 0x0);
+       ar71xx_add_device_eth(0);
+
+       ar9xxx_add_device_wmac(ee, mac);
+}
+
+MIPS_MACHINE(AR71XX_MACH_TL_MR11U, "TL-MR11U", "TP-LINK TL-MR11U",
+            tl_mr11u_setup);
index 1be8dbbf3401021eb1ee181d938131f1f56d428e..452055d78ff545bdd62c46eccfd84cf0207a4712 100644 (file)
@@ -52,6 +52,7 @@ enum ar71xx_mach_type {
        AR71XX_MACH_RB_750,     /* MikroTik RouterBOARD 750 */
        AR71XX_MACH_RW2458N,    /* Redwave RW2458N */
        AR71XX_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
        AR71XX_MACH_RB_750,     /* MikroTik RouterBOARD 750 */
        AR71XX_MACH_RW2458N,    /* Redwave RW2458N */
        AR71XX_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
+       AR71XX_MACH_TL_MR11U,  /* TP-LINK TL-MR11U */
        AR71XX_MACH_TL_MR3020,  /* TP-LINK TL-MR3020 */
        AR71XX_MACH_TL_MR3220,  /* TP-LINK TL-MR3220 */
        AR71XX_MACH_TL_MR3420,  /* TP-LINK TL-MR3420 */
        AR71XX_MACH_TL_MR3020,  /* TP-LINK TL-MR3020 */
        AR71XX_MACH_TL_MR3220,  /* TP-LINK TL-MR3220 */
        AR71XX_MACH_TL_MR3420,  /* TP-LINK TL-MR3420 */
diff --git a/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-tl-mr11u.c b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-tl-mr11u.c
new file mode 100644 (file)
index 0000000..7846b4f
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ *  TP-LINK TL-MR11U board support
+ *
+ *  Copyright (C) 2011 dongyuqi <729650915@qq.com>
+ *  Copyright (C) 2011-2012 Gabor Juhos <juhosg@openwrt.org>
+ *
+ *  This program is free software; you can redistribute it and/or modify it
+ *  under the terms of the GNU General Public License version 2 as published
+ *  by the Free Software Foundation.
+ */
+
+#include <linux/gpio.h>
+
+#include <asm/mach-ath79/ath79.h>
+
+#include "dev-eth.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-m25p80.h"
+#include "dev-usb.h"
+#include "dev-wmac.h"
+#include "machtypes.h"
+
+#define TL_MR11U_GPIO_LED_3G           27
+#define TL_MR11U_GPIO_LED_WLAN         26
+#define TL_MR11U_GPIO_LED_LAN          17
+
+#define TL_MR11U_GPIO_BTN_WPS          20
+#define TL_MR11U_GPIO_BTN_RESET                11
+
+#define TL_MR11U_GPIO_USB_POWER                8
+
+#define TL_MR11U_KEYS_POLL_INTERVAL    20      /* msecs */
+#define TL_MR11U_KEYS_DEBOUNCE_INTERVAL        (3 * TL_MR11U_KEYS_POLL_INTERVAL)
+
+static const char *tl_mr11u_part_probes[] = {
+       "tp-link",
+       NULL,
+};
+
+static struct flash_platform_data tl_mr11u_flash_data = {
+       .part_probes    = tl_mr11u_part_probes,
+};
+
+static struct gpio_led tl_mr11u_leds_gpio[] __initdata = {
+       {
+               .name           = "tp-link:green:3g",
+               .gpio           = TL_MR11U_GPIO_LED_3G,
+               .active_low     = 1,
+       },
+       {
+               .name           = "tp-link:green:wlan",
+               .gpio           = TL_MR11U_GPIO_LED_WLAN,
+               .active_low     = 1,
+       },
+       {
+               .name           = "tp-link:green:lan",
+               .gpio           = TL_MR11U_GPIO_LED_LAN,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button tl_mr11u_gpio_keys[] __initdata = {
+       {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = KEY_WPS_BUTTON,
+               .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_MR11U_GPIO_BTN_WPS,
+               .active_low     = 0,
+       },
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = TL_MR11U_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_MR11U_GPIO_BTN_RESET,
+               .active_low     = 0,
+       }
+};
+
+static void __init tl_mr11u_setup(void)
+{
+       u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+       u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+
+       ath79_register_m25p80(&tl_mr11u_flash_data);
+       ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_mr11u_leds_gpio),
+                                tl_mr11u_leds_gpio);
+       ath79_register_gpio_keys_polled(-1, TL_MR11U_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(tl_mr11u_gpio_keys),
+                                       tl_mr11u_gpio_keys);
+
+       gpio_request(TL_MR11U_GPIO_USB_POWER, "USB power");
+       gpio_direction_output(TL_MR11U_GPIO_USB_POWER, 1);
+       ath79_register_usb();
+
+       ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0);
+
+       ath79_register_mdio(0, 0x0);
+       ath79_register_eth(0);
+
+       ath79_register_wmac(ee, mac);
+}
+
+MIPS_MACHINE(ATH79_MACH_TL_MR11U, "TL-MR11U", "TP-LINK TL-MR11U",
+            tl_mr11u_setup);
index e927696082b73774a0407537da748fe6f2403435..e2b97212bc688dc5871f7a2e2ba814891c3d033b 100644 (file)
@@ -5,6 +5,17 @@
 # See /LICENSE for more information.
 #
 
 # See /LICENSE for more information.
 #
 
+define Profile/TLMR11U
+       NAME:=TP-LINK TL-MR11U
+       PACKAGES:=kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
+endef
+
+define Profile/TLMR11U/Description
+       Package set optimized for the TP-LINK TL-MR11U.
+endef
+$(eval $(call Profile,TLMR11U))
+
+
 define Profile/TLMR3020
        NAME:=TP-LINK TL-MR3020
        PACKAGES:=kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
 define Profile/TLMR3020
        NAME:=TP-LINK TL-MR3020
        PACKAGES:=kmod-usb-core kmod-usb2 kmod-ledtrig-usbdev
index c3dc8a058d94381e3ea4c9183f36dcf8a6468e3b..bd5e945f59cbf3769d857d662ece7a7c6bf49193 100644 (file)
@@ -819,6 +819,11 @@ define Image/Build/Profile/OM2P
         $(call Image/Build/Template/$(fs_squash)/$(1),OpenMesh,om2p,OM2P)
 endef
 
         $(call Image/Build/Template/$(fs_squash)/$(1),OpenMesh,om2p,OM2P)
 endef
 
+tlmr11u_cmdline=board=TL-MR11U console=ttyATH0,115200
+define Image/Build/Profile/TLMR11U
+       $(call Image/Build/Template/$(fs_64kraw)/$(1),TPLINK-LZMA,tl-mr11u-v1,$(tlmr11u_cmdline),0x00110101,1,4Mlzma)
+endef
+
 tlmr3020_cmdline=board=TL-MR3020 console=ttyATH0,115200
 define Image/Build/Profile/TLMR3020
        $(call Image/Build/Template/$(fs_64k)/$(1),TPLINK-LZMA,tl-mr3020-v1,$(tlmr3020_cmdline),0x30200001,1,4Mlzma)
 tlmr3020_cmdline=board=TL-MR3020 console=ttyATH0,115200
 define Image/Build/Profile/TLMR3020
        $(call Image/Build/Template/$(fs_64k)/$(1),TPLINK-LZMA,tl-mr3020-v1,$(tlmr3020_cmdline),0x30200001,1,4Mlzma)
@@ -1006,6 +1011,7 @@ define Image/Build/Profile/Default
        $(call Image/Build/Profile/RW2458N,$(1))
        $(call Image/Build/Profile/TEW632BRP,$(1))
        $(call Image/Build/Profile/TEW652BRP,$(1))
        $(call Image/Build/Profile/RW2458N,$(1))
        $(call Image/Build/Profile/TEW632BRP,$(1))
        $(call Image/Build/Profile/TEW652BRP,$(1))
+       $(call Image/Build/Profile/TLMR11U,$(1))
        $(call Image/Build/Profile/TLMR3020,$(1))
        $(call Image/Build/Profile/TLMR3220,$(1))
        $(call Image/Build/Profile/TLMR3420,$(1))
        $(call Image/Build/Profile/TLMR3020,$(1))
        $(call Image/Build/Profile/TLMR3220,$(1))
        $(call Image/Build/Profile/TLMR3420,$(1))
index 9927f6d73a96855d9bb36690bbf18a9ba2ff26e7..d5204cb08279425e3c462c86a559c045cb263454 100644 (file)
@@ -1,6 +1,6 @@
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
 --- a/arch/mips/ath79/machtypes.h
 +++ b/arch/mips/ath79/machtypes.h
-@@ -16,17 +16,79 @@
+@@ -16,17 +16,80 @@
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
  
  enum ath79_mach_type {
        ATH79_MACH_GENERIC = 0,
@@ -40,6 +40,7 @@
 +      ATH79_MACH_RB_750,              /* MikroTik RouterBOARD 750 */
 +      ATH79_MACH_RW2458N,             /* Redwave RW2458N */
 +      ATH79_MACH_TEW_632BRP,          /* TRENDnet TEW-632BRP */
 +      ATH79_MACH_RB_750,              /* MikroTik RouterBOARD 750 */
 +      ATH79_MACH_RW2458N,             /* Redwave RW2458N */
 +      ATH79_MACH_TEW_632BRP,          /* TRENDnet TEW-632BRP */
++      ATH79_MACH_TL_MR11U,            /* TP-LINK TL-MR11U */
 +      ATH79_MACH_TL_MR3020,           /* TP-LINK TL-MR3020 */
 +      ATH79_MACH_TL_MR3220,           /* TP-LINK TL-MR3220 */
 +      ATH79_MACH_TL_MR3420,           /* TP-LINK TL-MR3420 */
 +      ATH79_MACH_TL_MR3020,           /* TP-LINK TL-MR3020 */
 +      ATH79_MACH_TL_MR3220,           /* TP-LINK TL-MR3220 */
 +      ATH79_MACH_TL_MR3420,           /* TP-LINK TL-MR3420 */
  config ATH79_MACH_PB44
        bool "Atheros PB44 reference board"
        select SOC_AR71XX
  config ATH79_MACH_PB44
        bool "Atheros PB44 reference board"
        select SOC_AR71XX
-@@ -54,6 +137,359 @@ config ATH79_MACH_PB44
+@@ -54,6 +137,369 @@ config ATH79_MACH_PB44
          Say 'Y' here if you want your kernel to support the
          Atheros PB44 reference board.
  
          Say 'Y' here if you want your kernel to support the
          Atheros PB44 reference board.
  
 +      select ATH79_DEV_LEDS_GPIO
 +      select ATH79_DEV_M25P80
 +
 +      select ATH79_DEV_LEDS_GPIO
 +      select ATH79_DEV_M25P80
 +
++config ATH79_MACH_TL_MR11U
++      bool "TP-LINK TL-MR11U support"
++      select SOC_AR933X
++      select ATH79_DEV_ETH
++      select ATH79_DEV_GPIO_BUTTONS
++      select ATH79_DEV_LEDS_GPIO
++      select ATH79_DEV_M25P80
++      select ATH79_DEV_USB
++      select ATH79_DEV_WMAC
++
 +config ATH79_MACH_TL_MR3020
 +      bool "TP-LINK TL-MR3020 support"
 +      select SOC_AR933X
 +config ATH79_MACH_TL_MR3020
 +      bool "TP-LINK TL-MR3020 support"
 +      select SOC_AR933X
  config ATH79_MACH_UBNT_XM
        bool "Ubiquiti Networks XM (rev 1.0) board"
        select SOC_AR724X
  config ATH79_MACH_UBNT_XM
        bool "Ubiquiti Networks XM (rev 1.0) board"
        select SOC_AR724X
-@@ -67,6 +503,24 @@ config ATH79_MACH_UBNT_XM
+@@ -67,6 +513,24 @@ config ATH79_MACH_UBNT_XM
          Say 'Y' here if you want your kernel to support the
          Ubiquiti Networks XM (rev 1.0) board.
  
          Say 'Y' here if you want your kernel to support the
          Ubiquiti Networks XM (rev 1.0) board.
  
  endmenu
  
  config SOC_AR71XX
  endmenu
  
  config SOC_AR71XX
-@@ -96,10 +550,6 @@ config SOC_AR934X
+@@ -96,10 +560,6 @@ config SOC_AR934X
        select PCI_AR724X if PCI
        def_bool n
  
        select PCI_AR724X if PCI
        def_bool n
  
  config ATH79_DEV_AP9X_PCI
        select ATH79_PCI_ATH9K_FIXUP
        def_bool n
  config ATH79_DEV_AP9X_PCI
        select ATH79_PCI_ATH9K_FIXUP
        def_bool n
-@@ -110,7 +560,14 @@ config ATH79_DEV_DSA
+@@ -110,7 +570,14 @@ config ATH79_DEV_DSA
  config ATH79_DEV_ETH
        def_bool n
  
  config ATH79_DEV_ETH
        def_bool n
  
        def_bool n
  
  config ATH79_DEV_GPIO_BUTTONS
        def_bool n
  
  config ATH79_DEV_GPIO_BUTTONS
-@@ -135,4 +592,7 @@ config ATH79_NVRAM
+@@ -135,4 +602,7 @@ config ATH79_NVRAM
  config ATH79_PCI_ATH9K_FIXUP
        def_bool n
  
  config ATH79_PCI_ATH9K_FIXUP
        def_bool n
  
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
  endif
 --- a/arch/mips/ath79/Makefile
 +++ b/arch/mips/ath79/Makefile
-@@ -36,8 +36,55 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
+@@ -36,8 +36,56 @@ obj-$(CONFIG_ATH79_PCI_ATH9K_FIXUP) += p
  #
  # Machines
  #
  #
  # Machines
  #
 +obj-$(CONFIG_ATH79_MACH_RB750)                += mach-rb750.o
 +obj-$(CONFIG_ATH79_MACH_RW2458N)      += mach-rw2458n.o
 +obj-$(CONFIG_ATH79_MACH_TEW_632BRP)   += mach-tew-632brp.o
 +obj-$(CONFIG_ATH79_MACH_RB750)                += mach-rb750.o
 +obj-$(CONFIG_ATH79_MACH_RW2458N)      += mach-rw2458n.o
 +obj-$(CONFIG_ATH79_MACH_TEW_632BRP)   += mach-tew-632brp.o
++obj-$(CONFIG_ATH79_MACH_TL_MR11U)     += mach-tl-mr11u.o
 +obj-$(CONFIG_ATH79_MACH_TL_MR3020)    += mach-tl-mr3020.o
 +obj-$(CONFIG_ATH79_MACH_TL_MR3X20)    += mach-tl-mr3x20.o
 +obj-$(CONFIG_ATH79_MACH_TL_WA901ND)   += mach-tl-wa901nd.o
 +obj-$(CONFIG_ATH79_MACH_TL_MR3020)    += mach-tl-mr3020.o
 +obj-$(CONFIG_ATH79_MACH_TL_MR3X20)    += mach-tl-mr3x20.o
 +obj-$(CONFIG_ATH79_MACH_TL_WA901ND)   += mach-tl-wa901nd.o