ar71xx: add support for the TL-WR841N v1.5 board

SVN-Revision: 18893
This commit is contained in:
Gabor Juhos 2009-12-22 19:31:28 +00:00
parent ce6136a61c
commit cace9f4566
15 changed files with 222 additions and 1 deletions

View file

@ -0,0 +1,19 @@
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface mac0
option ifname eth0
config interface lan
option ifname "lan1 lan2 lan3 lan4"
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0
config interface wan
option ifname wan
option proto dhcp

View file

@ -72,6 +72,9 @@ get_status_led() {
tl-wr741nd)
status_led="tl-wr741nd:green:system"
;;
tl-wr841n-v1)
status_led="tl-wr841n:green:system"
;;
tl-wr941nd)
status_led="tl-wr941nd:green:system"
;;

View file

@ -76,6 +76,9 @@ ar71xx_board_name() {
*TL-WR741ND)
name="tl-wr741nd"
;;
*"TL-WR841N v1")
name="tl-wr841n-v1"
;;
*TL-WR941ND)
name="tl-wr941nd"
;;

View file

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

View file

@ -21,6 +21,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y
CONFIG_AR71XX_MACH_TL_WR941ND=y
CONFIG_AR71XX_MACH_UBNT=y
CONFIG_AR71XX_MACH_WNDR3700=y

View file

@ -23,6 +23,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y
CONFIG_AR71XX_MACH_TL_WR941ND=y
CONFIG_AR71XX_MACH_UBNT=y
CONFIG_AR71XX_MACH_WNDR3700=y

View file

@ -23,6 +23,7 @@ CONFIG_AR71XX_MACH_RB_4XX=y
CONFIG_AR71XX_MACH_TEW_632BRP=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y
CONFIG_AR71XX_MACH_TL_WR941ND=y
CONFIG_AR71XX_MACH_UBNT=y
CONFIG_AR71XX_MACH_WNDR3700=y

View file

@ -94,6 +94,11 @@ config AR71XX_MACH_TL_WR741ND
select AR71XX_DEV_AP91_PCI if PCI
default y
config AR71XX_MACH_TL_WR841N_V1
bool "TP-LINK TL-WR841N v1 support"
select AR71XX_DEV_M25P80
default y
config AR71XX_MACH_TL_WR941ND
bool "TP-LINK TL-WR941ND support"
select AR71XX_DEV_M25P80

View file

@ -31,6 +31,7 @@ obj-$(CONFIG_AR71XX_MACH_PB44) += mach-pb44.o
obj-$(CONFIG_AR71XX_MACH_RB_4XX) += mach-rb-4xx.o
obj-$(CONFIG_AR71XX_MACH_TEW_632BRP) += mach-tew-632brp.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
obj-$(CONFIG_AR71XX_MACH_TL_WR1043ND) += mach-tl-wr1043nd.o
obj-$(CONFIG_AR71XX_MACH_UBNT) += mach-ubnt.o

View file

@ -0,0 +1,158 @@
/*
* TP-LINK TL-WR841N board support
*
* Copyright (C) 2009 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/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/input.h>
#include <asm/mips_machine.h>
#include <asm/mach-ar71xx/ar71xx.h>
#include <asm/mach-ar71xx/pci.h>
#include "devices.h"
#include "dev-m25p80.h"
#include "dev-ar913x-wmac.h"
#define TL_WR841ND_V1_GPIO_LED_SYSTEM 2
#define TL_WR841ND_V1_GPIO_LED_QSS 5
#define TL_WR841ND_V1_GPIO_BTN_RESET 3
#define TL_WR841ND_V1_GPIO_BTN_QSS 7
#define TL_WR841ND_V1_BUTTONS_POLL_INTERVAL 20
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition tl_wr841n_v1_partitions[] = {
{
.name = "redboot",
.offset = 0,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
} , {
.name = "kernel",
.offset = 0x020000,
.size = 0x140000,
} , {
.name = "rootfs",
.offset = 0x160000,
.size = 0x280000,
} , {
.name = "config",
.offset = 0x3e0000,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
} , {
.name = "firmware",
.offset = 0x020000,
.size = 0x3c0000,
}
};
#endif /* CONFIG_MTD_PARTITIONS */
static struct flash_platform_data tl_wr841n_v1_flash_data = {
#ifdef CONFIG_MTD_PARTITIONS
.parts = tl_wr841n_v1_partitions,
.nr_parts = ARRAY_SIZE(tl_wr841n_v1_partitions),
#endif
};
static struct ar71xx_pci_irq tl_wr841n_v1_pci_irqs[] __initdata = {
{
.slot = 0,
.pin = 1,
.irq = AR71XX_PCI_IRQ_DEV0,
}, {
.slot = 1,
.pin = 1,
.irq = AR71XX_PCI_IRQ_DEV1,
}, {
.slot = 2,
.pin = 1,
.irq = AR71XX_PCI_IRQ_DEV2,
}
};
static struct gpio_led tl_wr841n_v1_leds_gpio[] __initdata = {
{
.name = "tl-wr841n:green:system",
.gpio = TL_WR841ND_V1_GPIO_LED_SYSTEM,
.active_low = 1,
}, {
.name = "tl-wr841n:red:qss",
.gpio = TL_WR841ND_V1_GPIO_LED_QSS,
.active_low = 1,
}
};
static struct gpio_button tl_wr841n_v1_gpio_buttons[] __initdata = {
{
.desc = "reset",
.type = EV_KEY,
.code = BTN_0,
.threshold = 5,
.gpio = TL_WR841ND_V1_GPIO_BTN_RESET,
.active_low = 1,
}, {
.desc = "qss",
.type = EV_KEY,
.code = BTN_1,
.threshold = 5,
.gpio = TL_WR841ND_V1_GPIO_BTN_QSS,
.active_low = 1,
}
};
static struct dsa_chip_data tl_wr841n_v1_dsa_chip = {
.port_names[0] = "wan",
.port_names[1] = "lan1",
.port_names[2] = "lan2",
.port_names[3] = "lan3",
.port_names[4] = "lan4",
.port_names[5] = "cpu",
};
static struct dsa_platform_data tl_wr841n_v1_dsa_data = {
.nr_chips = 1,
.chip = &tl_wr841n_v1_dsa_chip,
};
static void __init tl_wr841n_v1_setup(void)
{
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
ar71xx_set_mac_base(mac);
ar71xx_add_device_mdio(0x0);
ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
ar71xx_eth0_data.phy_mask = 0x0;
ar71xx_eth0_data.speed = SPEED_100;
ar71xx_eth0_data.duplex = DUPLEX_FULL;
ar71xx_add_device_eth(0);
ar71xx_add_device_dsa(0, &tl_wr841n_v1_dsa_data);
ar71xx_add_device_m25p80(&tl_wr841n_v1_flash_data);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr841n_v1_leds_gpio),
tl_wr841n_v1_leds_gpio);
ar71xx_add_device_gpio_buttons(-1, TL_WR841ND_V1_BUTTONS_POLL_INTERVAL,
ARRAY_SIZE(tl_wr841n_v1_gpio_buttons),
tl_wr841n_v1_gpio_buttons);
ar71xx_pci_init(ARRAY_SIZE(tl_wr841n_v1_pci_irqs),
tl_wr841n_v1_pci_irqs);
}
MIPS_MACHINE(AR71XX_MACH_TL_WR841N_V1, "TP-LINK TL-WR841N v1",
tl_wr841n_v1_setup);

View file

@ -70,6 +70,9 @@ static struct board_rec boards[] __initdata = {
}, {
.name = "TL-WR741ND",
.mach_type = AR71XX_MACH_TL_WR741ND,
}, {
.name = "TL-WR841N-v1.5",
.mach_type = AR71XX_MACH_TL_WR841N_V1,
}, {
.name = "TL-WR941ND",
.mach_type = AR71XX_MACH_TL_WR941ND,

View file

@ -139,6 +139,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_TEW_632BRP, /* TRENDnet TEW-632BRP */
AR71XX_MACH_DIR_615_C1, /* D-Link DIR-615 rev. C1 */
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 */
AR71XX_MACH_TL_WR1043ND, /* TP-LINK TL-WR1041ND */
AR71XX_MACH_UBNT_LSSR71, /* Ubiquiti LS-SR71 */

View file

@ -461,6 +461,10 @@ define Image/Build/Profile/TLWR741NDV1
$(call Image/Build/Template/TPLINK4K/$(1),tl-wr741ndv1,board=TL-WR741ND,TL-WR741NDv1)
endef
define Image/Build/Profile/TLWR841NV15
$(call Image/Build/Template/TPLINK/$(1),tl-wr841n-v1.5,board=TL-WR841N-v1.5,TL-WR841Nv1.5)
endef
define Image/Build/Profile/TLWR841NDV3
$(call Image/Build/Template/TPLINK/$(1),tl-wr841ndv3,board=TL-WR941ND,TL-WR841NDv3)
endef
@ -503,6 +507,7 @@ define Image/Build/Profile/Default
$(call Image/Build/Profile/TEW632BRP,$(1))
$(call Image/Build/Profile/TEW652BRP,$(1))
$(call Image/Build/Profile/TLWR741NDV1,$(1))
$(call Image/Build/Profile/TLWR841NV15,$(1))
$(call Image/Build/Profile/TLWR841NDV3,$(1))
$(call Image/Build/Profile/TLWR841NDV5,$(1))
$(call Image/Build/Profile/TLWR941NDV2,$(1))

View file

@ -15,6 +15,17 @@ endef
$(eval $(call Profile,TLWR741NDV1))
define Profile/TLWR841NV15
NAME:=TP-LINK TL-WR841N v1.5
PACKAGES:=kmod-ath9k hostapd-mini
endef
define Profile/TLWR841NV15/Description
Package set optimized for the TP-LINK TL-WR841N v1.5.
endef
$(eval $(call Profile,TLWR841NV15))
define Profile/TLWR841NDV3
NAME:=TP-LINK TL-WR841ND v3
PACKAGES:=kmod-ath9k hostapd-mini

View file

@ -34,6 +34,7 @@
#define HEADER_VERSION_V1 0x01000000
#define HWID_TL_WR741ND_V1 0x07410001
#define HWID_TL_WR841N_V1_5 0x08410002
#define HWID_TL_WR841ND_V3 0x08410003
#define HWID_TL_WR841ND_V5 0x08410005
#define HWID_TL_WR941ND_V2 0x09410002
@ -113,6 +114,14 @@ static struct board_info boards[] = {
.kernel_la = 0x80060000,
.kernel_ep = 0x80060000,
.rootfs_ofs = 0x140000,
}, {
.id = "TL-WR841Nv1.5",
.hw_id = HWID_TL_WR841N_V1_5,
.hw_rev = 2,
.fw_max_len = 0x3c0000,
.kernel_la = 0x80060000,
.kernel_ep = 0x80060000,
.rootfs_ofs = 0x140000,
}, {
.id = "TL-WR841NDv3",
.hw_id = HWID_TL_WR841ND_V3,