ar71xx: add support for the TP-Link TL-WA901ND v2 board

Patch-by: Jonathan Benett <jbscience87@gmail.com>

SVN-Revision: 26119
This commit is contained in:
Gabor Juhos 2011-03-13 15:08:31 +00:00
parent 72b3c18da1
commit 8eb616de82
12 changed files with 177 additions and 1 deletions

View file

@ -0,0 +1,11 @@
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'eth'
option 'ifname' 'eth0'
option 'proto' 'static'
option 'ipaddr' '192.168.1.1'
option 'netmask' '255.255.255.0'

View file

@ -90,6 +90,9 @@ get_status_led() {
tl-wa901nd) tl-wa901nd)
status_led="tl-wa901nd:green:system" status_led="tl-wa901nd:green:system"
;; ;;
tl-wa901nd-v2)
status_led="tl-wa901nd-v2:green:system"
;;
tl-wr1043nd) tl-wr1043nd)
status_led="tl-wr1043nd:green:system" status_led="tl-wr1043nd:green:system"
;; ;;

View file

@ -112,6 +112,9 @@ ar71xx_board_name() {
*TL-WA901ND) *TL-WA901ND)
name="tl-wa901nd" name="tl-wa901nd"
;; ;;
*"TL-WA901ND v2")
name="tl-wa901nd-v2"
;;
*TL-WR741ND) *TL-WR741ND)
name="tl-wr741nd" name="tl-wr741nd"
;; ;;

View file

@ -76,7 +76,7 @@ platform_check_image() {
} }
return 0 return 0
;; ;;
tl-mr3220 | tl-mr3420 | tl-wa901nd | tl-wr741nd | tl-wr841n-v1 | tl-wr941nd | tl-wr1043nd) tl-mr3220 | tl-mr3420 | tl-wa901nd | tl-wa901nd-v2 | tl-wr741nd | tl-wr841n-v1 | tl-wr941nd | tl-wr1043nd)
[ "$magic" != "0100" ] && { [ "$magic" != "0100" ] && {
echo "Invalid image type." echo "Invalid image type."
return 1 return 1

View file

@ -37,6 +37,7 @@ CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_MR3X20=y CONFIG_AR71XX_MACH_TL_MR3X20=y
CONFIG_AR71XX_MACH_TL_WA901ND=y CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WA901ND_V2=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y CONFIG_AR71XX_MACH_TL_WR841N_V1=y

View file

@ -33,6 +33,7 @@ CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_MR3X20=y CONFIG_AR71XX_MACH_TL_MR3X20=y
CONFIG_AR71XX_MACH_TL_WA901ND=y CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WA901ND_V2=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y CONFIG_AR71XX_MACH_TL_WR841N_V1=y

View file

@ -209,6 +209,14 @@ config AR71XX_MACH_TL_WA901ND
select AR71XX_DEV_LEDS_GPIO select AR71XX_DEV_LEDS_GPIO
default n default n
config AR71XX_MACH_TL_WA901ND_V2
bool "TP-LINK TL-WA901ND v2 support"
select AR71XX_DEV_M25P80
select AR71XX_DEV_AR913X_WMAC
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
default n
config AR71XX_MACH_TL_WR741ND config AR71XX_MACH_TL_WR741ND
bool "TP-LINK TL-WR741ND support" bool "TP-LINK TL-WR741ND support"
select AR71XX_DEV_M25P80 select AR71XX_DEV_M25P80

View file

@ -48,6 +48,7 @@ obj-$(CONFIG_AR71XX_MACH_RB750) += mach-rb750.o
obj-$(CONFIG_AR71XX_MACH_TEW_632BRP) += mach-tew-632brp.o obj-$(CONFIG_AR71XX_MACH_TEW_632BRP) += mach-tew-632brp.o
obj-$(CONFIG_AR71XX_MACH_TL_MR3X20) += mach-tl-mr3x20.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_WA901ND) += mach-tl-wa901nd.o
obj-$(CONFIG_AR71XX_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o
obj-$(CONFIG_AR71XX_MACH_TL_WR741ND) += mach-tl-wr741nd.o obj-$(CONFIG_AR71XX_MACH_TL_WR741ND) += mach-tl-wr741nd.o
obj-$(CONFIG_AR71XX_MACH_TL_WR841N_V1) += mach-tl-wr841n.o obj-$(CONFIG_AR71XX_MACH_TL_WR841N_V1) += mach-tl-wr841n.o
obj-$(CONFIG_AR71XX_MACH_TL_WR941ND) += mach-tl-wr941nd.o obj-$(CONFIG_AR71XX_MACH_TL_WR941ND) += mach-tl-wr941nd.o

View file

@ -0,0 +1,131 @@
/*
* TP-LINK TL-WA901ND v2 board support
*
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2010 Pieter Hollants <pieter@hollants.com>
* Copyright (C) 2011 Jonathan Bennett <jbscience87@gmail.com>
*
* 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/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include "machtype.h"
#include "devices.h"
#include "dev-m25p80.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#include "dev-ar913x-wmac.h"
#define TL_WA901ND_V2_GPIO_LED_QSS 4
#define TL_WA901ND_V2_GPIO_LED_SYSTEM 2
#define TL_WA901ND_V2_GPIO_LED_WLAN 9
#define TL_WA901ND_V2_GPIO_BTN_RESET 3
#define TL_WA901ND_V2_GPIO_BTN_QSS 7
#define TL_WA901ND_V2_BUTTONS_POLL_INTERVAL 20
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition tl_wa901nd_v2_partitions[] = {
{
.name = "u-boot",
.offset = 0,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "kernel",
.offset = 0x020000,
.size = 0x140000,
}, {
.name = "rootfs",
.offset = 0x160000,
.size = 0x290000,
}, {
.name = "art",
.offset = 0x3f0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "firmware",
.offset = 0x020000,
.size = 0x3d0000,
}
};
#endif /* CONFIG_MTD_PARTITIONS */
static struct flash_platform_data tl_wa901nd_v2_flash_data = {
#ifdef CONFIG_MTD_PARTITIONS
.parts = tl_wa901nd_v2_partitions,
.nr_parts = ARRAY_SIZE(tl_wa901nd_v2_partitions),
#endif
};
static struct gpio_led tl_wa901nd_v2_leds_gpio[] __initdata = {
{
.name = "tl-wa901nd-v2:green:system",
.gpio = TL_WA901ND_V2_GPIO_LED_SYSTEM,
.active_low = 1,
}, {
.name = "tl-wa901nd-v2:green:qss",
.gpio = TL_WA901ND_V2_GPIO_LED_QSS,
}, {
.name = "tl-wa901nd-v2:green:wlan",
.gpio = TL_WA901ND_V2_GPIO_LED_WLAN,
.active_low = 1,
}
};
static struct gpio_button tl_wa901nd_v2_gpio_buttons[] __initdata = {
{
.desc = "reset",
.type = EV_KEY,
.code = KEY_RESTART,
.threshold = 3,
.gpio = TL_WA901ND_V2_GPIO_BTN_RESET,
.active_low = 1,
}, {
.desc = "qss",
.type = EV_KEY,
.code = KEY_WPS_BUTTON,
.threshold = 3,
.gpio = TL_WA901ND_V2_GPIO_BTN_QSS,
.active_low = 1,
}
};
static void __init tl_wa901nd_v2_setup(void)
{
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0);
ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
ar71xx_eth0_data.phy_mask = 0x00001000;
ar71xx_add_device_mdio(0x0);
ar71xx_eth0_data.reset_bit = RESET_MODULE_GE0_MAC |
RESET_MODULE_GE0_PHY;
ar71xx_add_device_eth(0);
ar71xx_add_device_m25p80(&tl_wa901nd_v2_flash_data);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wa901nd_v2_leds_gpio),
tl_wa901nd_v2_leds_gpio);
ar71xx_add_device_gpio_buttons(-1, TL_WA901ND_V2_BUTTONS_POLL_INTERVAL,
ARRAY_SIZE(tl_wa901nd_v2_gpio_buttons),
tl_wa901nd_v2_gpio_buttons);
ar913x_add_device_wmac(eeprom, mac);
}
MIPS_MACHINE(AR71XX_MACH_TL_WA901ND_V2, "TL-WA901ND-v2",
"TP-LINK TL-WA901ND v2", tl_wa901nd_v2_setup);

View file

@ -42,6 +42,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_TL_MR3220, /* TP-LINK TL-MR3220 */ AR71XX_MACH_TL_MR3220, /* TP-LINK TL-MR3220 */
AR71XX_MACH_TL_MR3420, /* TP-LINK TL-MR3420 */ AR71XX_MACH_TL_MR3420, /* TP-LINK TL-MR3420 */
AR71XX_MACH_TL_WA901ND, /* TP-LINK TL-WA901ND */ AR71XX_MACH_TL_WA901ND, /* TP-LINK TL-WA901ND */
AR71XX_MACH_TL_WA901ND_V2, /* TP-LINK TL-WA901ND v2 */
AR71XX_MACH_TL_WR741ND, /* TP-LINK TL-WR741ND */ AR71XX_MACH_TL_WR741ND, /* TP-LINK TL-WR741ND */
AR71XX_MACH_TL_WR841N_V1, /* TP-LINK TL-WR841N v1 */ AR71XX_MACH_TL_WR841N_V1, /* TP-LINK TL-WR841N v1 */
AR71XX_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */ AR71XX_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */

View file

@ -38,6 +38,17 @@ endef
$(eval $(call Profile,TLWA901NDV1)) $(eval $(call Profile,TLWA901NDV1))
define Profile/TLWA901NDV2
NAME:=TP-LINK TL-WA901ND v2
PACKAGES:=kmod-ath9k wpad-mini
endef
define Profile/TLWA901NDV2/Description
Package set optimized for the TP-LINK TL-WA901ND v2.
endef
$(eval $(call Profile,TLWA901NDV2))
define Profile/TLWR741NDV1 define Profile/TLWR741NDV1
NAME:=TP-LINK TL-WR741ND v1 NAME:=TP-LINK TL-WR741ND v1
PACKAGES:=kmod-ath9k wpad-mini PACKAGES:=kmod-ath9k wpad-mini

View file

@ -592,6 +592,10 @@ define Image/Build/Profile/TLWA901NDV1
$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v1,board=TL-WA901ND,TL-WA901NDv1) $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v1,board=TL-WA901ND,TL-WA901NDv1)
endef endef
define Image/Build/Profile/TLWA901NDV2
$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v2,board=TL-WA901ND-v2,TL-WA901NDv2)
endef
define Image/Build/Profile/TLWR741NDV1 define Image/Build/Profile/TLWR741NDV1
$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr741nd-v1,board=TL-WR741ND,TL-WR741NDv1) $(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr741nd-v1,board=TL-WR741ND,TL-WR741NDv1)
endef endef
@ -689,6 +693,7 @@ define Image/Build/Profile/Default
$(call Image/Build/Profile/TLMR3220V1,$(1)) $(call Image/Build/Profile/TLMR3220V1,$(1))
$(call Image/Build/Profile/TLMR3420V1,$(1)) $(call Image/Build/Profile/TLMR3420V1,$(1))
$(call Image/Build/Profile/TLWA901NDV1,$(1)) $(call Image/Build/Profile/TLWA901NDV1,$(1))
$(call Image/Build/Profile/TLWA901NDV2,$(1))
$(call Image/Build/Profile/TLWR741NDV1,$(1)) $(call Image/Build/Profile/TLWR741NDV1,$(1))
$(call Image/Build/Profile/TLWR740NV1,$(1)) $(call Image/Build/Profile/TLWR740NV1,$(1))
$(call Image/Build/Profile/TLWR841NV15,$(1)) $(call Image/Build/Profile/TLWR841NV15,$(1))