ar71xx: add support for the tp-link tl-wa901nd devices (patch by Pieter "Fate" Hollants, from #7528, without the ethernet fifo cfg values)

SVN-Revision: 22353
v19.07.3_mercusys_ac12_duma
Felix Fietkau 14 years ago
parent d4d6fefdf2
commit 900aaa919b

@ -0,0 +1,16 @@
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 none
config interface lan
option ifname lan
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0

@ -72,6 +72,9 @@ get_status_led() {
tew-632brp)
status_led="tew-632brp:green:status"
;;
tl-wa901nd)
status_led="tl-wa901nd:green:system"
;;
tl-wr1043nd)
status_led="tl-wr1043nd:green:system"
;;

@ -91,6 +91,9 @@ ar71xx_board_name() {
*"DIR-615 rev. C1")
name="dir-615-c1"
;;
*TL-WA901ND)
name="tl-wa901nd"
;;
*TL-WR741ND)
name="tl-wr741nd"
;;

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

@ -33,6 +33,7 @@ CONFIG_AR71XX_MACH_PB92=y
CONFIG_AR71XX_MACH_RB4XX=y
CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y

@ -33,6 +33,7 @@ CONFIG_AR71XX_MACH_PB92=y
CONFIG_AR71XX_MACH_RB4XX=y
CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y

@ -33,6 +33,7 @@ CONFIG_AR71XX_MACH_PB92=y
CONFIG_AR71XX_MACH_RB4XX=y
CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y

@ -33,6 +33,7 @@ CONFIG_AR71XX_MACH_PB92=y
CONFIG_AR71XX_MACH_RB4XX=y
CONFIG_AR71XX_MACH_RB750=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y

@ -167,6 +167,16 @@ config AR71XX_MACH_NBG460N
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
default n
config AR71XX_MACH_TL_WA901ND
bool "TP-LINK TL-WA901ND support"
select AR71XX_DEV_M25P80
select AR71XX_DEV_AP91_ETH
select AR71XX_DEV_AP91_PCI if PCI
select AR71XX_DEV_DSA
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
default n
config AR71XX_MACH_TL_WR741ND
bool "TP-LINK TL-WR741ND support"

@ -43,6 +43,7 @@ obj-$(CONFIG_AR71XX_MACH_PB92) += mach-pb92.o
obj-$(CONFIG_AR71XX_MACH_RB4XX) += mach-rb4xx.o
obj-$(CONFIG_AR71XX_MACH_RB750) += mach-rb750.o
obj-$(CONFIG_AR71XX_MACH_TEW_632BRP) += mach-tew-632brp.o
obj-$(CONFIG_AR71XX_MACH_TL_WA901ND) += mach-tl-wa901nd.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_WR941ND) += mach-tl-wr941nd.o

@ -0,0 +1,142 @@
/*
* TP-LINK TL-WA901ND board support
*
* Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
* Copyright (C) 2010 Pieter Hollants <pieter@hollants.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-dsa.h"
#include "dev-m25p80.h"
#include "dev-ap91-pci.h"
#include "dev-gpio-buttons.h"
#include "dev-leds-gpio.h"
#define TL_WA901ND_GPIO_LED_QSS 0
#define TL_WA901ND_GPIO_LED_SYSTEM 1
#define TL_WA901ND_GPIO_BTN_RESET 11
#define TL_WA901ND_GPIO_BTN_QSS 12
#define TL_WA901ND_BUTTONS_POLL_INTERVAL 20
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition tl_wa901nd_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_flash_data = {
#ifdef CONFIG_MTD_PARTITIONS
.parts = tl_wa901nd_partitions,
.nr_parts = ARRAY_SIZE(tl_wa901nd_partitions),
#endif
};
static struct gpio_led tl_wa901nd_leds_gpio[] __initdata = {
{
.name = "tl-wa901nd:green:system",
.gpio = TL_WA901ND_GPIO_LED_SYSTEM,
.active_low = 1,
}, {
.name = "tl-wa901nd:green:qss",
.gpio = TL_WA901ND_GPIO_LED_QSS,
.active_low = 1,
}
};
static struct gpio_button tl_wa901nd_gpio_buttons[] __initdata = {
{
.desc = "reset",
.type = EV_KEY,
.code = BTN_0,
.threshold = 3,
.gpio = TL_WA901ND_GPIO_BTN_RESET,
.active_low = 1,
}, {
.desc = "qss",
.type = EV_KEY,
.code = BTN_1,
.threshold = 3,
.gpio = TL_WA901ND_GPIO_BTN_QSS,
.active_low = 1,
}
};
static struct dsa_chip_data tl_wa901nd_v1_dsa_chip = {
.port_names[0] = "cpu",
.port_names[1] = "lan",
};
static struct dsa_platform_data tl_wa901nd_v1_dsa_data = {
.nr_chips = 1,
.chip = &tl_wa901nd_v1_dsa_chip,
};
static void __init tl_wa901nd_setup(void)
{
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
ar71xx_set_mac_base(mac);
/*
* ar71xx_eth0 would be the WAN port, but is not connected on
* the TL-WA901ND. ar71xx_eth1 connects to the internal switch chip,
* however we have a single LAN port only.
*/
ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
ar71xx_eth1_data.speed = SPEED_1000;
ar71xx_eth1_data.duplex = DUPLEX_FULL;
ar71xx_add_device_mdio(0x0);
ar71xx_add_device_eth(1);
ar71xx_add_device_dsa(1, &tl_wa901nd_v1_dsa_data);
ar71xx_add_device_m25p80(&tl_wa901nd_flash_data);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wa901nd_leds_gpio),
tl_wa901nd_leds_gpio);
ar71xx_add_device_gpio_buttons(-1, TL_WA901ND_BUTTONS_POLL_INTERVAL,
ARRAY_SIZE(tl_wa901nd_gpio_buttons),
tl_wa901nd_gpio_buttons);
ap91_pci_init(ee, mac);
}
MIPS_MACHINE(AR71XX_MACH_TL_WA901ND, "TL-WA901ND", "TP-LINK TL-WA901ND",
tl_wa901nd_setup);

@ -37,6 +37,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_MZK_W300NH, /* Planex MZK-W300NH */
AR71XX_MACH_NBG460N, /* Zyxel NBG460N/550N/550NH */
AR71XX_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
AR71XX_MACH_TL_WA901ND, /* TP-LINK TL-WA901ND */
AR71XX_MACH_TL_WR741ND, /* TP-LINK TL-WR741ND */
AR71XX_MACH_TL_WR841N_V1, /* TP-LINK TL-WR841N v1 */
AR71XX_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */

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

@ -517,6 +517,10 @@ define Image/Build/Profile/MZKW300NH
$(call Image/Build/Template/$(fs_64k)/$(1),Planex,mzk-w300nh,board=MZK-W300NH)
endef
define Image/Build/Profile/TLWA901NDV1
$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wa901nd-v1,board=TL-WA901ND,TL-WA901NDv1)
endef
define Image/Build/Profile/TLWR741NDV1
$(call Image/Build/Template/$(fs_4k)/$(1),TPLINK,tl-wr741nd-v1,board=TL-WR741ND,TL-WR741NDv1)
endef
@ -585,6 +589,7 @@ define Image/Build/Profile/Default
$(call Image/Build/Profile/PB92,$(1))
$(call Image/Build/Profile/TEW632BRP,$(1))
$(call Image/Build/Profile/TEW652BRP,$(1))
$(call Image/Build/Profile/TLWA901NDV1,$(1))
$(call Image/Build/Profile/TLWR741NDV1,$(1))
$(call Image/Build/Profile/TLWR841NV15,$(1))
$(call Image/Build/Profile/TLWR841NDV3,$(1))

Loading…
Cancel
Save