ar71xx: add support for the TP-Link TL-WR703N v1 board

Based on a patch by dongyuqi <729650915@qq.com>

SVN-Revision: 28277
This commit is contained in:
Gabor Juhos 2011-09-21 11:47:53 +00:00
parent d3617ac7d3
commit 733399600f
9 changed files with 152 additions and 1 deletions

View file

@ -0,0 +1,12 @@
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option ifname eth0
option type bridge
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0

View file

@ -96,6 +96,9 @@ get_status_led() {
tl-wr1043nd)
status_led="tl-wr1043nd:green:system"
;;
tl-wr703n)
status_led="tl-wr703n:blue:system"
;;
tl-wr741nd)
status_led="tl-wr741nd:green:system"
;;

View file

@ -133,6 +133,9 @@ ar71xx_board_name() {
*TL-WR941ND)
name="tl-wr941nd"
;;
*"TL-WR703N v1")
name="tl-wr703n"
;;
*UniFi)
name="unifi"
;;

View file

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

View file

@ -38,6 +38,7 @@ CONFIG_AR71XX_MACH_TL_MR3X20=y
CONFIG_AR71XX_MACH_TL_WA901ND=y
CONFIG_AR71XX_MACH_TL_WA901ND_V2=y
CONFIG_AR71XX_MACH_TL_WR1043ND=y
CONFIG_AR71XX_MACH_TL_WR703N=y
CONFIG_AR71XX_MACH_TL_WR741ND=y
CONFIG_AR71XX_MACH_TL_WR841N_V1=y
CONFIG_AR71XX_MACH_TL_WR941ND=y

View file

@ -244,6 +244,15 @@ config AR71XX_MACH_TL_WA901ND_V2
select AR71XX_DEV_GPIO_BUTTONS
select AR71XX_DEV_LEDS_GPIO
config AR71XX_MACH_TL_WR703N
bool "TP-LINK TL-WR703N 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_WR741ND
bool "TP-LINK TL-WR741ND support"
select SOC_AR724X

View file

@ -56,6 +56,7 @@ 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_TL_WR703N) += mach-tl-wr703n.o
obj-$(CONFIG_AR71XX_MACH_UBNT) += mach-ubnt.o
obj-$(CONFIG_AR71XX_MACH_WNDR3700) += mach-wndr3700.o
obj-$(CONFIG_AR71XX_MACH_WNR2000) += mach-wnr2000.o

View file

@ -0,0 +1,121 @@
/*
* TP-LINK TL-WR703N 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/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/spi/flash.h>
#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_WR703N_GPIO_LED_SYSTEM 27
#define TL_WR703N_GPIO_BTN_RESET 11
#define TL_WR703N_GPIO_USB_POWER 8
#define TL_WR703N_KEYS_POLL_INTERVAL 20 /* msecs */
#define TL_WR703N_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR703N_KEYS_POLL_INTERVAL)
#ifdef CONFIG_MTD_PARTITIONS
static struct mtd_partition tl_wr703n_parts[] = {
{
.name = "u-boot",
.offset = 0,
.size = 0x020000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "kernel",
.offset = 0x020000,
.size = 0x100000,
}, {
.name = "rootfs",
.offset = 0x120000,
.size = 0x2d0000,
}, {
.name = "art",
.offset = 0x3f0000,
.size = 0x010000,
.mask_flags = MTD_WRITEABLE,
}, {
.name = "firmware",
.offset = 0x020000,
.size = 0x3d0000,
}
};
#define tl_wr703n_nr_parts ARRAY_SIZE(tl_wr703n_parts)
#else
#define tl_wr703n_parts NULL
#define tl_wr703n_nr_parts 0
#endif /* CONFIG_MTD_PARTITIONS */
static struct flash_platform_data tl_wr703n_flash_data = {
.parts = tl_wr703n_parts,
.nr_parts = tl_wr703n_nr_parts,
};
static struct gpio_led tl_wr703n_leds_gpio[] __initdata = {
{
.name = "tl-wr703n:blue:system",
.gpio = TL_WR703N_GPIO_LED_SYSTEM,
.active_low = 1,
},
};
static struct gpio_keys_button tl_wr703n_gpio_keys[] __initdata = {
{
.desc = "reset",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = TL_WR703N_KEYS_DEBOUNCE_INTERVAL,
.gpio = TL_WR703N_GPIO_BTN_RESET,
.active_low = 1,
}
};
static void __init tl_wr703n_setup(void)
{
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
ar71xx_add_device_m25p80(&tl_wr703n_flash_data);
ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr703n_leds_gpio),
tl_wr703n_leds_gpio);
ar71xx_register_gpio_keys_polled(-1, TL_WR703N_KEYS_POLL_INTERVAL,
ARRAY_SIZE(tl_wr703n_gpio_keys),
tl_wr703n_gpio_keys);
gpio_request(TL_WR703N_GPIO_USB_POWER, "USB power");
gpio_direction_output(TL_WR703N_GPIO_USB_POWER, 1);
ar71xx_add_device_usb();
ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, 0);
ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII;
ar71xx_eth0_data.speed = SPEED_100;
ar71xx_eth0_data.duplex = DUPLEX_FULL;
ar71xx_eth0_data.phy_mask = BIT(4);
ar71xx_add_device_mdio(0x0);
ar71xx_add_device_eth(0);
ar9xxx_add_device_wmac(ee, mac);
}
MIPS_MACHINE(AR71XX_MACH_TL_WR703N, "TL-WR703N", "TP-LINK TL-WR703N v1",
tl_wr703n_setup);

View file

@ -49,6 +49,7 @@ enum ar71xx_mach_type {
AR71XX_MACH_TL_WA901ND, /* TP-LINK TL-WA901ND */
AR71XX_MACH_TL_WA901ND_V2, /* TP-LINK TL-WA901ND v2 */
AR71XX_MACH_TL_WR1043ND, /* TP-LINK TL-WR1041ND */
AR71XX_MACH_TL_WR703N, /* TP-LINK TL-WR703N */
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 */