ar71xx: add initial support for the TL-WR2543N/ND board
authorGabor Juhos <juhosg@openwrt.org>
Sat, 7 Jan 2012 19:36:35 +0000 (19:36 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Sat, 7 Jan 2012 19:36:35 +0000 (19:36 +0000)
The WLAN LEDs are not working yet.

SVN-Revision: 29680

target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/etc/uci-defaults/leds
target/linux/ar71xx/base-files/etc/uci-defaults/network
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-2.6.39
target/linux/ar71xx/files/arch/mips/ar71xx/Kconfig
target/linux/ar71xx/files/arch/mips/ar71xx/Makefile
target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr2543n.c [new file with mode: 0644]
target/linux/ar71xx/files/arch/mips/ar71xx/machtype.h

index dcac49de5b79665007caa5d8723ea73d9b4f0ca8..76f263b64b738cf7d8e23f1fdca43eec8ebb7e9a 100755 (executable)
@@ -113,6 +113,9 @@ get_status_led() {
        tl-wr703n)
                status_led="tp-link:blue:system"
                ;;
+       tl-wr2543n)
+               status_led="tp-link:green:wps"
+               ;;
        unifi)
                status_led="ubnt:green:dome"
                ;;
index 4d04dd7abe7f6f33f646721463679a5a87028a44..6fe10877d23f90bb57aeda89f15485dc955a7f5f 100755 (executable)
@@ -178,6 +178,10 @@ tl-wr1043nd)
        set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
        ;;
 
+tl-wr2543n)
+       set_led_usbdev "usb" "USB" "tp-link:green:usb" "1-1"
+       ;;
+
 wrt160nl)
        set_led_wlan "wlan" "WLAN" "wrt160nl:blue:wlan" "phy0tpt"
        ;;
index c7bd419f1d3a88bf759dadfe8d2e96da91a83d01..45a9423c62bbebd3226651285dcdaf354b30e252 100755 (executable)
@@ -81,6 +81,13 @@ tl-wr1043nd)
        ucidef_add_switch_vlan "rtl8366rb" "2" "0 5t"
        ;;
 
+tl-wr2543n)
+       ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+       ucidef_add_switch "switch0" "1" "1"
+       ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 9t"
+       ucidef_add_switch_vlan "switch0" "2" "0 9t"
+       ;;
+
 tl-wr841n-v1|\
 tl-wr941nd)
        ucidef_set_interface_raw "eth" "eth0"
index 7e8e25e3ace86177c2eb9e0ef3c7a1242ece8116..db859b24ab881e2bddbb799032f2454f5ae65cdc 100755 (executable)
@@ -97,6 +97,9 @@ tplink_board_detect() {
        "104300"*)
                model="TP-Link TL-WR1043N/ND"
                ;;
+       "254300"*)
+               model="TP-Link TL-WR2543N/ND"
+               ;;
        "302000"*)
                model="TP-Link TL-MR3020"
                ;;
@@ -247,6 +250,9 @@ ar71xx_board_detect() {
        *TL-WR1043ND)
                name="tl-wr1043nd"
                ;;
+       *TL-WR2543N*)
+               name="tl-wr2543n"
+               ;;
        *"DIR-615 rev. C1")
                name="dir-615-c1"
                ;;
index db8bdaefb93033a4e7c8ee38cfac4961151a5bce..ae68db6fc0e9dc158dc517f182183458dfb6c23c 100755 (executable)
@@ -132,7 +132,8 @@ platform_check_image() {
        tl-wr841n-v1 | \
        tl-wr841n-v7 | \
        tl-wr941nd | \
-       tl-wr1043nd)
+       tl-wr1043nd | \
+       tl-wr2543n)
                [ "$magic" != "0100" ] && {
                        echo "Invalid image type."
                        return 1
index bf662305a7a542338b80b41e5bafa9c34d2e4f5a..bdf2fcf64f762693924ed9d0bff16749fccc6e1e 100644 (file)
@@ -45,6 +45,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_WR2543N=y
 CONFIG_AR71XX_MACH_TL_WR703N=y
 CONFIG_AR71XX_MACH_TL_WR741ND=y
 CONFIG_AR71XX_MACH_TL_WR741ND_V4=y
@@ -183,6 +184,7 @@ CONFIG_RTL8306_PHY=y
 CONFIG_RTL8366RB_PHY=y
 CONFIG_RTL8366S_PHY=y
 CONFIG_RTL8366_SMI=y
+CONFIG_RTL8367_PHY=y
 # CONFIG_SCSI_DMA is not set
 CONFIG_SERIAL_8250_NR_UARTS=1
 CONFIG_SERIAL_8250_RUNTIME_UARTS=1
index c138217af332691bad44f0041b4440541f02e886..c22cd4abea794d2112e3253dbaac6349436d3b15 100644 (file)
@@ -379,6 +379,15 @@ config AR71XX_MACH_TL_WR1043ND
        select AR71XX_DEV_LEDS_GPIO
        select AR71XX_DEV_USB
 
+config AR71XX_MACH_TL_WR2543N
+       bool "TP-LINK TL-WR2543N/ND support"
+       select SOC_AR724X
+       select AR71XX_DEV_AP91_PCI if PCI
+       select AR71XX_DEV_M25P80
+       select AR71XX_DEV_GPIO_BUTTONS
+       select AR71XX_DEV_LEDS_GPIO
+       select AR71XX_DEV_USB
+
 config AR71XX_MACH_TEW_632BRP
        bool "TRENDnet TEW-632BRP support"
        select SOC_AR913X
index 3125c124c7a6294abca5aea161f5f3145c1e6aa3..ba12234eaa25cdc00c9235bb1563dbcdc0927075 100644 (file)
@@ -64,6 +64,7 @@ obj-$(CONFIG_AR71XX_MACH_TL_WR741ND_V4)       += mach-tl-wr741nd-v4.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_WR2543N)   += mach-tl-wr2543n.o
 obj-$(CONFIG_AR71XX_MACH_TL_WR703N)    += mach-tl-wr703n.o
 obj-$(CONFIG_AR71XX_MACH_UBNT)         += mach-ubnt.o
 obj-$(CONFIG_AR71XX_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr2543n.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr2543n.c
new file mode 100644 (file)
index 0000000..c547b73
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ *  TP-LINK TL-WR2543ND board support
+ *
+ *  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/platform_device.h>
+#include <linux/rtl8367.h>
+#include <asm/mach-ar71xx/ar71xx.h>
+
+#include "machtype.h"
+#include "devices.h"
+#include "dev-ap91-pci.h"
+#include "dev-m25p80.h"
+#include "dev-gpio-buttons.h"
+#include "dev-leds-gpio.h"
+#include "dev-usb.h"
+
+#define TL_WR2543N_GPIO_LED_WPS        0
+#define TL_WR2543N_GPIO_LED_USB        8
+
+#define TL_WR2543N_GPIO_BTN_RESET      11
+#define TL_WR2543N_GPIO_BTN_WPS        12
+
+#define TL_WR2543N_GPIO_RTL8367_SDA    1
+#define TL_WR2543N_GPIO_RTL8367_SCK    6
+
+#define TL_WR2543N_KEYS_POLL_INTERVAL  20      /* msecs */
+#define TL_WR2543N_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR2543N_KEYS_POLL_INTERVAL)
+
+static const char *tl_wr2543n_part_probes[] = {
+       "tp-link",
+       NULL,
+};
+
+static struct flash_platform_data tl_wr2543n_flash_data = {
+       .part_probes    = tl_wr2543n_part_probes,
+       .max_read_len   = 64,
+};
+
+static struct gpio_led tl_wr2543n_leds_gpio[] __initdata = {
+       {
+               .name           = "tp-link:green:usb",
+               .gpio           = TL_WR2543N_GPIO_LED_USB,
+               .active_low     = 1,
+       }, {
+               .name           = "tp-link:green:wps",
+               .gpio           = TL_WR2543N_GPIO_LED_WPS,
+               .active_low     = 1,
+       }
+};
+
+static struct gpio_keys_button tl_wr2543n_gpio_keys[] __initdata = {
+       {
+               .desc           = "reset",
+               .type           = EV_KEY,
+               .code           = KEY_RESTART,
+               .debounce_interval = TL_WR2543N_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_WR2543N_GPIO_BTN_RESET,
+               .active_low     = 1,
+       }, {
+               .desc           = "wps",
+               .type           = EV_KEY,
+               .code           = KEY_WPS_BUTTON,
+               .debounce_interval = TL_WR2543N_KEYS_DEBOUNCE_INTERVAL,
+               .gpio           = TL_WR2543N_GPIO_BTN_WPS,
+       }
+};
+
+static struct rtl8367_extif_config tl_wr2543n_rtl8367_extif0_cfg = {
+       .mode = RTL8367_EXTIF_MODE_RGMII,
+       .txdelay = 1,
+       .rxdelay = 0,
+       .ability = {
+               .force_mode = 1,
+               .txpause = 1,
+               .rxpause = 1,
+               .link = 1,
+               .duplex = 1,
+               .speed = RTL8367_PORT_SPEED_1000,
+       },
+};
+
+static struct rtl8367_platform_data tl_wr2543n_rtl8367_data = {
+       .gpio_sda       = TL_WR2543N_GPIO_RTL8367_SDA,
+       .gpio_sck       = TL_WR2543N_GPIO_RTL8367_SCK,
+       .extif0_cfg     = &tl_wr2543n_rtl8367_extif0_cfg,
+};
+
+static struct platform_device tl_wr2543n_rtl8367_device = {
+       .name           = RTL8367_DRIVER_NAME,
+       .id             = -1,
+       .dev = {
+               .platform_data  = &tl_wr2543n_rtl8367_data,
+       }
+};
+
+static void __init tl_wr2543n_setup(void)
+{
+       u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
+       u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000);
+
+       ar71xx_add_device_m25p80(&tl_wr2543n_flash_data);
+       ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr2543n_leds_gpio),
+                                       tl_wr2543n_leds_gpio);
+       ar71xx_register_gpio_keys_polled(-1, TL_WR2543N_KEYS_POLL_INTERVAL,
+                                        ARRAY_SIZE(tl_wr2543n_gpio_keys),
+                                        tl_wr2543n_gpio_keys);
+       ar71xx_add_device_usb();
+       ap91_pci_init(eeprom, mac);
+
+       ar71xx_init_mac(ar71xx_eth0_data.mac_addr, mac, -1);
+       ar71xx_eth0_data.mii_bus_dev = &tl_wr2543n_rtl8367_device.dev;
+       ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII;
+       ar71xx_eth0_data.speed = SPEED_1000;
+       ar71xx_eth0_data.duplex = DUPLEX_FULL;
+       ar71xx_eth0_pll_data.pll_1000 = 0x1a000000;
+
+       ar71xx_add_device_eth(0);
+
+       platform_device_register(&tl_wr2543n_rtl8367_device);
+}
+
+MIPS_MACHINE(AR71XX_MACH_TL_WR2543N, "TL-WR2543N", "TP-LINK TL-WR2543N/ND",
+            tl_wr2543n_setup);
index 92eb88a1fbb0168863a6d361d53d3fe056be1222..a66046a9097409731d060b36f5eb31c96a4d30f2 100644 (file)
@@ -57,6 +57,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_WR2543N, /* TP-LINK TL-WR2543N/ND */
        AR71XX_MACH_TL_WR703N,  /* TP-LINK TL-WR703N */
        AR71XX_MACH_TL_WR741ND, /* TP-LINK TL-WR741ND */
        AR71XX_MACH_TL_WR741ND_V4, /* TP-LINK TL-WR741ND  v4*/