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 Signed-off-by Simon Taylor <simon.taylor...@gmail.com> --- .../linux/ar71xx/base-files/etc/uci-defaults/leds | 1 + .../ar71xx/base-files/etc/uci-defaults/network | 1 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 6 + .../ar71xx/base-files/lib/upgrade/platform.sh | 1 + target/linux/ar71xx/config-2.6.39 | 1 + target/linux/ar71xx/config-3.2 | 1 + .../ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig | 9 ++ .../ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile | 1 + .../files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c | 107 ++++++++++++++++++++ .../files-2.6.39/arch/mips/ar71xx/machtype.h | 1 + .../files-3.2/arch/mips/ath79/mach-tl-mr11u.c | 107 ++++++++++++++++++++ target/linux/ar71xx/generic/profiles/tp-link.mk | 11 ++ target/linux/ar71xx/image/Makefile | 6 + .../610-MIPS-ath79-openwrt-machines.patch | 12 ++ 14 files changed, 265 insertions(+), 0 deletions(-) create mode 100644 target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c create mode 100644 target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-tl-mr11u.c diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/leds b/target/linux/ar71xx/base-files/etc/uci-defaults/leds index f65af4a..e8a2fea 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/leds @@ -143,6 +143,7 @@ om2p) 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" diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/network b/target/linux/ar71xx/base-files/etc/uci-defaults/network index e646181..fc4137c 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/network +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/network @@ -110,6 +110,7 @@ aw-nr580 |\ bullet-m |\ eap7660d |\ rb-411 |\ +tl-mr11u |\ tl-mr3020 |\ tl-wa901nd |\ tl-wa901nd-v2 |\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index c2fa462..98309e8 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -100,6 +100,9 @@ tplink_board_detect() { "254300"*) model="TP-Link TL-WR2543N/ND" ;; + "110101"*) + model="TP-Link TL-MR11U" + ;; "302000"*) model="TP-Link TL-MR3020" ;; @@ -289,6 +292,9 @@ ar71xx_board_detect() { *"TL-WR703N v1") name="tl-wr703n" ;; + *"TL-MR11U") + name="tl-mr11u" + ;; *UniFi) name="unifi" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index ae68db6..1d2edbb 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -121,6 +121,7 @@ platform_check_image() { } return 0 ;; + tl-mr11u | \ tl-mr3020 | \ tl-mr3220 | \ tl-mr3420 | \ diff --git a/target/linux/ar71xx/config-2.6.39 b/target/linux/ar71xx/config-2.6.39 index 60020d2..456ab52 100644 --- a/target/linux/ar71xx/config-2.6.39 +++ b/target/linux/ar71xx/config-2.6.39 @@ -40,6 +40,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_TL_MR11U=y CONFIG_AR71XX_MACH_TL_MR3020=y CONFIG_AR71XX_MACH_TL_MR3X20=y CONFIG_AR71XX_MACH_TL_WA901ND=y diff --git a/target/linux/ar71xx/config-3.2 b/target/linux/ar71xx/config-3.2 index a735c6f..ecc5b2b 100644 --- a/target/linux/ar71xx/config-3.2 +++ b/target/linux/ar71xx/config-3.2 @@ -49,6 +49,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_TL_MR11U=y CONFIG_ATH79_MACH_TL_MR3020=y CONFIG_ATH79_MACH_TL_MR3X20=y CONFIG_ATH79_MACH_TL_WA901ND=y diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig index 5abe999..aea775c 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Kconfig @@ -303,6 +303,15 @@ config AR71XX_MACH_NBG460N 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 diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile index efd8bd2..193bcd3 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/Makefile @@ -55,6 +55,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_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 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 index 0000000..55428fb --- /dev/null +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-tl-mr11u.c @@ -0,0 +1,107 @@ +/* + * TP-LINK TL-MR11U board support + * + * Copyright (C) 2011 dongyuqi <729650...@qq.com> + * Copyright (C) 2011 Gabor Juhos <juh...@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); diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h index 83038c6..9645432 100644 --- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h +++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/machtype.h @@ -51,6 +51,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_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 */ 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 index 0000000..b8ad563 --- /dev/null +++ b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-tl-mr11u.c @@ -0,0 +1,107 @@ +/* + * TP-LINK TL-MR11U board support + * + * Copyright (C) 2011 dongyuqi <729650...@qq.com> + * Copyright (C) 2011-2012 Gabor Juhos <juh...@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); diff --git a/target/linux/ar71xx/generic/profiles/tp-link.mk b/target/linux/ar71xx/generic/profiles/tp-link.mk index e927696..e2b9721 100644 --- a/target/linux/ar71xx/generic/profiles/tp-link.mk +++ b/target/linux/ar71xx/generic/profiles/tp-link.mk @@ -5,6 +5,17 @@ # 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 diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile index 02eb9b7..b500f46 100644 --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -815,6 +815,11 @@ define Image/Build/Profile/OM2P $(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) @@ -1001,6 +1006,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/TLMR11U,$(1)) $(call Image/Build/Profile/TLMR3020,$(1)) $(call Image/Build/Profile/TLMR3220,$(1)) $(call Image/Build/Profile/TLMR3420,$(1)) diff --git a/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch b/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch index 91916e6..de3ca91 100644 --- a/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch +++ b/target/linux/ar71xx/patches-3.2/610-MIPS-ath79-openwrt-machines.patch @@ -39,6 +39,7 @@ + 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 */ @@ -408,6 +409,16 @@ + 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 @@ -628,6 +639,7 @@ +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 -- 1.7.2.5 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel