From c3bb5f072f99216e4da9702abd56d3e1bc0dab58 Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 18 Apr 2019 12:53:34 +0800 Subject: [PATCH] ar71xx: add SGR-W500-N85b v2.0 and TL-WDR3227 v2(ar934x+ar8035) support --- .../ar71xx/base-files/etc/board.d/01_leds | 7 + .../ar71xx/base-files/etc/board.d/02_network | 2 + target/linux/ar71xx/base-files/etc/diag.sh | 4 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 9 + .../ar71xx/base-files/lib/upgrade/platform.sh | 2 + target/linux/ar71xx/config-4.14 | 2 + target/linux/ar71xx/config-4.9 | 2 + .../files/arch/mips/ath79/Kconfig.openwrt | 22 +++ .../ar71xx/files/arch/mips/ath79/Makefile | 2 + .../arch/mips/ath79/mach-sgr-w500-n85b-v2.c | 134 +++++++++++++ .../arch/mips/ath79/mach-tl-wdr3227-v2.c | 186 ++++++++++++++++++ .../ar71xx/files/arch/mips/ath79/machtypes.h | 2 + target/linux/ar71xx/generic/config-default | 2 + .../ar71xx/image/generic-legacy-devices.mk | 6 + target/linux/ar71xx/image/generic-tp-link.mk | 9 + target/linux/ar71xx/image/legacy.mk | 2 + 16 files changed, 393 insertions(+) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-sgr-w500-n85b-v2.c create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr3227-v2.c diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds index 77839835d..af16b541f 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds @@ -728,6 +728,9 @@ rut900) ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08" ucidef_set_led_switch "lan3" "LAN3" "$board:green:lan3" "switch0" "0x04" ;; +sgr-w500-n85b-v2) + ucidef_set_led_wlan "wlan" "WLAN" "grentech:green:wlan2g" "phy0tpt" + ;; smart-300) ucidef_set_led_netdev "wan" "WAN" "nc-link:green:wan" "eth0" ucidef_set_led_switch "lan1" "LAN1" "nc-link:green:lan1" "switch0" "0x04" @@ -870,6 +873,10 @@ tl-wr2041n-v2|\ tl-wr1041n-v2) ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" ;; +tl-wdr3227-v2) + ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:green:wlan2g" "phy0tpt" + ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy1tpt" + ;; tl-wdr3320-v2) ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:green:wlan5g" "phy0tpt" ;; diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network index 0846ac75f..55db051ea 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -121,6 +121,7 @@ ar71xx_setup_interfaces() re450|\ rocket-m-xw|\ sc300m |\ + sgr-w500-n85b-v2|\ tl-mr10u|\ tl-mr11u|\ tl-mr12u|\ @@ -141,6 +142,7 @@ ar71xx_setup_interfaces() tl-wa901nd-v3|\ tl-wa901nd-v4|\ tl-wa901nd-v5|\ + tl-wdr3227-v2|\ tl-wr703n|\ tl-wr802n-v1|\ tl-wr802n-v2|\ diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index ffc8de284..7f36abeac 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -416,6 +416,9 @@ get_status_led() { smart-300) status_led="nc-link:green:system" ;; + sgr-w500-n85b-v2) + status_led="grentech:green:status" + ;; qihoo-c301) status_led="qihoo:green:status" ;; @@ -464,6 +467,7 @@ get_status_led() { tl-wa901nd-v3|\ tl-wa901nd-v4|\ tl-wa901nd-v5|\ + tl-wdr3227-v2|\ tl-wdr3320-v2|\ tl-wdr3500|\ tl-wr1041n-v2|\ diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index b5b5bf9b2..8178641e3 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -349,6 +349,9 @@ tplink_board_detect() { "934100"*) model="NC-LINK SMART-300" ;; + "322700"*) + model="TP-Link TL-WDR3227" + ;; "c50000"*) model="TP-Link Archer C5" ;; @@ -784,6 +787,9 @@ ar71xx_board_detect() { *"GL-USB150") name="gl-usb150" ;; + "GRENTECH SGR-W500-N85b v2.0") + name="sgr-w500-n85b-v2" + ;; *"HiveAP-121") name="hiveap-121" ;; @@ -1268,6 +1274,9 @@ ar71xx_board_detect() { *"TL-WA901ND v5") name="tl-wa901nd-v5" ;; + *"TL-WDR3227 v2") + name="tl-wdr3227-v2" + ;; *"TL-WDR3320 v2") name="tl-wdr3320-v2" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index cda3d7f0e..a2c8993f5 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -355,6 +355,7 @@ platform_check_image() { hornet-ub|\ mr12|\ mr16|\ + sgr-w500-n85b-v2|\ zbt-we1526|\ zcn-1523h-2|\ zcn-1523h-5) @@ -456,6 +457,7 @@ platform_check_image() { tl-wa901nd-v3|\ tl-wa901nd-v4|\ tl-wa901nd-v5|\ + tl-wdr3227-v2|\ tl-wdr3320-v2|\ tl-wdr3500|\ tl-wdr4300|\ diff --git a/target/linux/ar71xx/config-4.14 b/target/linux/ar71xx/config-4.14 index 3d02dedb6..d0ee679ce 100644 --- a/target/linux/ar71xx/config-4.14 +++ b/target/linux/ar71xx/config-4.14 @@ -189,6 +189,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_SC1750 is not set # CONFIG_ATH79_MACH_SC300M is not set # CONFIG_ATH79_MACH_SC450 is not set +# CONFIG_ATH79_MACH_SGR_W500_N85B_V2 is not set # CONFIG_ATH79_MACH_SMART_300 is not set # CONFIG_ATH79_MACH_SOM9331 is not set # CONFIG_ATH79_MACH_SR3200 is not set @@ -214,6 +215,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_TL_WA901ND_V2 is not set # CONFIG_ATH79_MACH_TL_WA901ND_V4 is not set # CONFIG_ATH79_MACH_TL_WAX50RE is not set +# CONFIG_ATH79_MACH_TL_WDR3227_V2 is not set # CONFIG_ATH79_MACH_TL_WDR3320_V2 is not set # CONFIG_ATH79_MACH_TL_WDR3500 is not set # CONFIG_ATH79_MACH_TL_WDR4300 is not set diff --git a/target/linux/ar71xx/config-4.9 b/target/linux/ar71xx/config-4.9 index 68504449f..d9b217b50 100644 --- a/target/linux/ar71xx/config-4.9 +++ b/target/linux/ar71xx/config-4.9 @@ -189,6 +189,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_SC1750 is not set # CONFIG_ATH79_MACH_SC300M is not set # CONFIG_ATH79_MACH_SC450 is not set +# CONFIG_ATH79_MACH_SGR_W500_N85B_V2 is not set # CONFIG_ATH79_MACH_SMART_300 is not set # CONFIG_ATH79_MACH_SOM9331 is not set # CONFIG_ATH79_MACH_SR3200 is not set @@ -214,6 +215,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_TL_WA901ND_V2 is not set # CONFIG_ATH79_MACH_TL_WA901ND_V4 is not set # CONFIG_ATH79_MACH_TL_WAX50RE is not set +# CONFIG_ATH79_MACH_TL_WDR3227_V2 is not set # CONFIG_ATH79_MACH_TL_WDR3320_V2 is not set # CONFIG_ATH79_MACH_TL_WDR3500 is not set # CONFIG_ATH79_MACH_TL_WDR4300 is not set diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt index c5a569d09..08d398b84 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt @@ -105,6 +105,17 @@ config ATH79_MACH_SC450 select ATH79_DEV_M25P80 select ATH79_DEV_USB select ATH79_DEV_WMAC + +config ATH79_MACH_SGR_W500_N85B_V2 + bool "GRENTECH SGR-W500-N85b v2.0 support" + select SOC_AR934X + select ATH79_DEV_AP9X_PCI if PCI + select ATH79_DEV_ETH + select ATH79_DEV_GPIO_BUTTONS + select ATH79_DEV_LEDS_GPIO + select ATH79_DEV_M25P80 + select ATH79_DEV_WMAC + select ATH79_DEV_USB config ATH79_MACH_ALL0258N bool "Allnet ALL0258N support" @@ -1819,6 +1830,17 @@ config ATH79_MACH_TL_WA901ND_V4 select ATH79_DEV_M25P80 select ATH79_DEV_WMAC +config ATH79_MACH_TL_WDR3227_V2 + bool "TP-LINK TL-WDR3227 v2 board support" + select SOC_AR934X + select ATH79_DEV_AP9X_PCI if PCI + select ATH79_DEV_ETH + select ATH79_DEV_GPIO_BUTTONS + select ATH79_DEV_LEDS_GPIO + select ATH79_DEV_M25P80 + select ATH79_DEV_USB + select ATH79_DEV_WMAC + config ATH79_MACH_TL_WDR3320_V2 bool "TP-LINK TL-WDR3320 v2 board support" select SOC_AR934X diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile index 89c437f42..f3fadbf2e 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile @@ -200,6 +200,7 @@ obj-$(CONFIG_ATH79_MACH_RW2458N) += mach-rw2458n.o obj-$(CONFIG_ATH79_MACH_SC1750) += mach-sc1750.o obj-$(CONFIG_ATH79_MACH_SC300M) += mach-sc300m.o obj-$(CONFIG_ATH79_MACH_SC450) += mach-sc450.o +obj-$(CONFIG_ATH79_MACH_SGR_W500_N85B_V2) += mach-sgr-w500-n85b-v2.o obj-$(CONFIG_ATH79_MACH_SMART_300) += mach-smart-300.o obj-$(CONFIG_ATH79_MACH_SOM9331) += mach-som9331.o obj-$(CONFIG_ATH79_MACH_SR3200) += mach-sr3200.o @@ -226,6 +227,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2) += mach-tl-wa901nd-v2.o obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V4) += mach-tl-wa901nd-v4.o obj-$(CONFIG_ATH79_MACH_TL_WAX50RE) += mach-tl-wax50re.o obj-$(CONFIG_ATH79_MACH_TL_WDR3320_V2) += mach-tl-wdr3320-v2.o +obj-$(CONFIG_ATH79_MACH_TL_WDR3320_V2) += mach-tl-wdr3320-v2.o obj-$(CONFIG_ATH79_MACH_TL_WDR3500) += mach-tl-wdr3500.o obj-$(CONFIG_ATH79_MACH_TL_WDR4300) += mach-tl-wdr4300.o obj-$(CONFIG_ATH79_MACH_TL_WDR6500_V2) += mach-tl-wdr6500-v2.o diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-sgr-w500-n85b-v2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-sgr-w500-n85b-v2.c new file mode 100644 index 000000000..d2749e483 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-sgr-w500-n85b-v2.c @@ -0,0 +1,134 @@ +/* + * GRENTECH SGR-W500-N85b v2.0 board support + * + * Copyright (c) 2017 Weijie Gao + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include +#include +#include +#include +#include + +#include + +#include "common.h" +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-spi.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define GRENTECH_GPIO_LED_STATUS 21 +#define GRENTECH_GPIO_LED_WLAN2G 20 + +#define GRENTECH_GPIO_BUTTON_RESET 3 + +#define GRENTECH_GPIO_RTL8211E_RESET_L 11 + +#define GRENTECH_GPIO_EXTERNAL_LNA0 18 +#define GRENTECH_GPIO_EXTERNAL_LNA1 19 + +#define GRENTECH_KEYS_POLL_INTERVAL 20 /* msecs */ +#define GRENTECH_KEYS_DEBOUNCE_INTERVAL (3 * GRENTECH_KEYS_POLL_INTERVAL) + +#define GRENTECH_MAC_OFFSET 0 +#define GRENTECH_WMAC_CALDATA_OFFSET 0x1000 +#define GRENTECH_PCIE_CALDATA_OFFSET 0x5000 + +static struct gpio_led grentech_leds_gpio[] __initdata = { + { + .name = "grentech:green:status", + .gpio = GRENTECH_GPIO_LED_STATUS, + .active_low = 1, + }, + { + .name = "grentech:green:wlan2g", + .gpio = GRENTECH_GPIO_LED_WLAN2G, + .active_low = 1, + } +}; + +static struct gpio_keys_button grentech_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = GRENTECH_KEYS_DEBOUNCE_INTERVAL, + .gpio = GRENTECH_GPIO_BUTTON_RESET, + .active_low = 1, + }, +}; + +static struct mdio_board_info grentech_mdio0_info[] = { + { + .bus_id = "ag71xx-mdio.0", + .phy_addr = 1, + }, +}; + +static void __init grentech_setup(void) +{ + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + u8 tmpmac[ETH_ALEN]; + + ath79_register_m25p80(NULL); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(grentech_leds_gpio), + grentech_leds_gpio); + ath79_register_gpio_keys_polled(-1, GRENTECH_KEYS_POLL_INTERVAL, + ARRAY_SIZE(grentech_gpio_keys), + grentech_gpio_keys); + + gpio_request_one(GRENTECH_GPIO_RTL8211E_RESET_L, + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, + "RTL8211E reset pin"); + + ath79_wmac_set_ext_lna_gpio(0, GRENTECH_GPIO_EXTERNAL_LNA0); + ath79_wmac_set_ext_lna_gpio(1, GRENTECH_GPIO_EXTERNAL_LNA1); + + ath79_init_mac(tmpmac, art + GRENTECH_MAC_OFFSET, 1); + ath79_register_wmac(art + GRENTECH_WMAC_CALDATA_OFFSET, tmpmac); + + /* AR9382 */ + ath79_init_mac(tmpmac, art + GRENTECH_MAC_OFFSET, 2); + ap9x_pci_setup_wmac_led_pin(0, 6); + ap91_pci_init(art + GRENTECH_PCIE_CALDATA_OFFSET, tmpmac); + + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0); + + ath79_register_mdio(0, 0x0); + + ath79_init_mac(ath79_eth0_data.mac_addr, art + GRENTECH_MAC_OFFSET, 0); + + mdiobus_register_board_info(grentech_mdio0_info, + ARRAY_SIZE(grentech_mdio0_info)); + + /* GMAC0 is connected to a RTL8211E Gigabit PHY */ + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = BIT(1); + ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; + ath79_eth0_pll_data.pll_1000 = 0x46000000; + ath79_eth0_pll_data.pll_100 = 0x0101; + ath79_eth0_pll_data.pll_10 = 0x1313; + ath79_register_eth(0); +} + +MIPS_MACHINE(ATH79_MACH_SGR_W500_N85B_V2, "SGRW500N85BV2", "GRENTECH SGR-W500-N85b v2.0", + grentech_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr3227-v2.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr3227-v2.c new file mode 100644 index 000000000..bd21bccf5 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr3227-v2.c @@ -0,0 +1,186 @@ +/* + * TP-LINK TL-WDR3227 board support + * + * Copyright (C) 2012 Gabor Juhos + * Copyright (C) 2013 Gui Iribarren + * + * 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 +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-spi.h" +#include "dev-usb.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define WDR3227_GPIO_LED_USB 11 +#define WDR3227_GPIO_LED_WLAN2G 13 +#define WDR3227_GPIO_LED_SYSTEM 14 +#define WDR3227_GPIO_LED_QSS 15 +#define WDR3227_GPIO_LED_WAN 21 +#define WDR3227_GPIO_LED_LAN1 19 +#define WDR3227_GPIO_LED_LAN2 20 +#define WDR3227_GPIO_LED_LAN3 18 +#define WDR3227_GPIO_LED_LAN4 22 +#define WDR3227_GPIO_BTN_RESET 16 + +#define WDR3227_GPIO_BTN_RFKILL 17 + +#define WDR3227_GPIO_USB_POWER 12 + +#define WDR3227_KEYS_POLL_INTERVAL 20 /* msecs */ +#define WDR3227_KEYS_DEBOUNCE_INTERVAL (3 * WDR3227_KEYS_POLL_INTERVAL) + +#define WDR3227_MAC0_OFFSET 0 +#define WDR3227_MAC1_OFFSET 6 +#define WDR3227_WMAC_CALDATA_OFFSET 0x1000 +#define WDR3227_PCIE_CALDATA_OFFSET 0x5000 + +static const char *WDR3227_part_probes[] = { + "tp-link", + NULL, +}; + +static struct flash_platform_data WDR3227_flash_data = { + .part_probes = WDR3227_part_probes, +}; + +static struct gpio_led WDR3227_leds_gpio[] __initdata = { + { + .name = "tp-link:green:qss", + .gpio = WDR3227_GPIO_LED_QSS, + .active_low = 1, + }, + { + .name = "tp-link:green:system", + .gpio = WDR3227_GPIO_LED_SYSTEM, + .active_low = 1, + }, + { + .name = "tp-link:green:usb", + .gpio = WDR3227_GPIO_LED_USB, + .active_low = 1, + }, + { + .name = "tp-link:green:wlan2g", + .gpio = WDR3227_GPIO_LED_WLAN2G, + .active_low = 1, + }, +}; + +static struct gpio_keys_button WDR3227_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = WDR3227_KEYS_DEBOUNCE_INTERVAL, + .gpio = WDR3227_GPIO_BTN_RESET, + .active_low = 1, + }, + { + .desc = "RFKILL switch", + .type = EV_SW, + .code = KEY_RFKILL, + .debounce_interval = WDR3227_KEYS_DEBOUNCE_INTERVAL, + .gpio = WDR3227_GPIO_BTN_RFKILL, + }, +}; + +static struct at803x_platform_data WDR3227_ar8035_data = { + .enable_rgmii_tx_delay = 1, + .enable_rgmii_rx_delay = 1, +}; + +static struct mdio_board_info WDR3227_mdio0_info[] = { + { + .bus_id = "ag71xx-mdio.0", + .phy_addr = 0, + .platform_data = &WDR3227_ar8035_data, + }, +}; + +static void __init WDR3227_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + u8 tmpmac[ETH_ALEN]; + + ath79_register_m25p80(&WDR3227_flash_data); + ath79_register_leds_gpio(-1, ARRAY_SIZE(WDR3227_leds_gpio), + WDR3227_leds_gpio); + ath79_register_gpio_keys_polled(-1, WDR3227_KEYS_POLL_INTERVAL, + ARRAY_SIZE(WDR3227_gpio_keys), + WDR3227_gpio_keys); + + ath79_init_mac(tmpmac, mac, 0); + ath79_register_wmac(art + WDR3227_WMAC_CALDATA_OFFSET, tmpmac); + + ath79_init_mac(tmpmac, mac, 1); + ap9x_pci_setup_wmac_led_pin(0, 0); + ap91_pci_init(art + WDR3227_PCIE_CALDATA_OFFSET, tmpmac); + + ath79_register_mdio(0, 0x0); + + mdiobus_register_board_info(WDR3227_mdio0_info, ARRAY_SIZE(WDR3227_mdio0_info)); + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1); + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0); + /* GMAC0 is connected to an AR8035 Gigabit PHY */ + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = BIT(0); + ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; + ath79_eth0_pll_data.pll_1000 = 0x0e000000; + ath79_eth0_pll_data.pll_100 = 0x0101; + ath79_eth0_pll_data.pll_10 = 0x1313; + ath79_register_eth(0); +#if 0 + ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_ONLY_MODE); + + ath79_register_mdio(1, 0x0); + + /* LAN */ + ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1); + + /* GMAC1 is connected to the internal switch */ + ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII; + + ath79_register_eth(1); + + /* WAN */ + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 2); + + /* GMAC0 is connected to the PHY4 of the internal switch */ + ath79_switch_data.phy4_mii_en = 1; + ath79_switch_data.phy_poll_mask = BIT(4); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; + ath79_eth0_data.phy_mask = BIT(4); + ath79_eth0_data.mii_bus_dev = &ath79_mdio1_device.dev; + + ath79_register_eth(0); +#endif + ath79_gpio_output_select(WDR3227_GPIO_LED_WAN, + AR934X_GPIO_OUT_LED_LINK4); + gpio_request_one(WDR3227_GPIO_USB_POWER, + GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, + "USB power"); + ath79_register_usb(); +} + +MIPS_MACHINE(ATH79_MACH_TL_WDR3227_V2, "TL-WDR3227-v2", + "TP-LINK TL-WDR3227 v2", + WDR3227_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h index 89026b14f..4a140dd16 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -240,6 +240,7 @@ enum ath79_mach_type { ATH79_MACH_SC1750, /* Abicom SC1750 */ ATH79_MACH_SC300M, /* Abicom SC300M */ ATH79_MACH_SC450, /* Abicom SC450 */ + ATH79_MACH_SGR_W500_N85B_V2, /* GRENTECH SGR_W500_N85B_V2.0 */ ATH79_MACH_SMART_300, /* NC-LINK SMART-300 */ ATH79_MACH_SOM9331, /* OpenEmbed SOM9331 */ ATH79_MACH_SR3200, /* YunCore SR3200 */ @@ -277,6 +278,7 @@ enum ath79_mach_type { ATH79_MACH_TL_WA901ND_V3, /* TP-LINK TL-WA901ND v3 */ ATH79_MACH_TL_WA901ND_V4, /* TP-LINK TL-WA901ND v4 */ ATH79_MACH_TL_WA901ND_V5, /* TP-LINK TL-WA901ND v5 */ + ATH79_MACH_TL_WDR3227_V2, /* TP-LINK TL-WDR3227 v2 */ ATH79_MACH_TL_WDR3320_V2, /* TP-LINK TL-WDR3320 v2 */ ATH79_MACH_TL_WDR3500, /* TP-LINK TL-WDR3500 */ ATH79_MACH_TL_WDR4300, /* TP-LINK TL-WDR4300 */ diff --git a/target/linux/ar71xx/generic/config-default b/target/linux/ar71xx/generic/config-default index 1b9e36300..e9b748884 100644 --- a/target/linux/ar71xx/generic/config-default +++ b/target/linux/ar71xx/generic/config-default @@ -145,6 +145,7 @@ CONFIG_ATH79_MACH_RW2458N=y CONFIG_ATH79_MACH_SC1750=y CONFIG_ATH79_MACH_SC300M=y CONFIG_ATH79_MACH_SC450=y +CONFIG_ATH79_MACH_SGR_W500_N85B_V2=y CONFIG_ATH79_MACH_SMART_300=y CONFIG_ATH79_MACH_SOM9331=y CONFIG_ATH79_MACH_SR3200=y @@ -155,6 +156,7 @@ CONFIG_ATH79_MACH_TEW_732BR=y CONFIG_ATH79_MACH_TEW_823DRU=y CONFIG_ATH79_MACH_TL_MR3X20=y CONFIG_ATH79_MACH_TL_MR6400=y +CONFIG_ATH79_MACH_TL_WDR3227_V2=y CONFIG_ATH79_MACH_TL_WDR3500=y CONFIG_ATH79_MACH_TL_WDR4300=y CONFIG_ATH79_MACH_TL_WDR6500_V2=y diff --git a/target/linux/ar71xx/image/generic-legacy-devices.mk b/target/linux/ar71xx/image/generic-legacy-devices.mk index 027806e40..7deb96353 100644 --- a/target/linux/ar71xx/image/generic-legacy-devices.mk +++ b/target/linux/ar71xx/image/generic-legacy-devices.mk @@ -5,6 +5,12 @@ define LegacyDevice/A60 endef LEGACY_DEVICES += A60 +define LegacyDevice/SGRW500N85BV2 + DEVICE_TITLE := GRENTECH SGR-W500-N85b v2.0 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 +endef +LEGACY_DEVICES += SGRW500N85BV2 + define LegacyDevice/ALFANX DEVICE_TITLE := ALFA Network N2/N5 board endef diff --git a/target/linux/ar71xx/image/generic-tp-link.mk b/target/linux/ar71xx/image/generic-tp-link.mk index 5a1077158..cb5d525ab 100644 --- a/target/linux/ar71xx/image/generic-tp-link.mk +++ b/target/linux/ar71xx/image/generic-tp-link.mk @@ -267,6 +267,15 @@ define Device/tl-mr6400-v1 endef TARGET_DEVICES += tl-mr6400-v1 +define Device/tl-wdr3227-v2 + $(Device/tplink-8mlzma) + DEVICE_TITLE := TP-LINK TL-WDR3227 v2 + BOARDNAME := TL-WDR3227-v2 + DEVICE_PROFILE := TLWDR3227V2 + TPLINK_HWID := 0x32270002 +endef +TARGET_DEVICES += tl-wdr3227-v2 + define Device/tl-wdr3500-v1 $(Device/tplink-8mlzma) DEVICE_TITLE := TP-LINK TL-WDR3500 v1 diff --git a/target/linux/ar71xx/image/legacy.mk b/target/linux/ar71xx/image/legacy.mk index 363e0956c..ab85757bd 100644 --- a/target/linux/ar71xx/image/legacy.mk +++ b/target/linux/ar71xx/image/legacy.mk @@ -269,6 +269,7 @@ wnr2000_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,3712k(firmwar wnr2000v3_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,3712k(firmware),64k(art)ro wnr2000v4_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(u-boot-env)ro,3776k(firmware),64k(art)ro r6100_mtdlayout=mtdparts=ar934x-nfc:128k(u-boot)ro,256k(caldata)ro,256k(caldata-backup),512k(config),512k(pot),2048k(kernel),122240k(ubi),25600k@0x1a0000(firmware),2048k(language),3072k(traffic_meter) +sgrw500n85bv2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,14528k(rootfs),1472k(kernel),64k(art)ro,16000k@0x50000(firmware) tew823dru_mtdlayout=mtdparts=spi0.0:192k(u-boot)ro,64k(nvram)ro,15296k(firmware),192k(lang)ro,512k(my-dlink)ro,64k(mac)ro,64k(art)ro wndr4300_mtdlayout=mtdparts=ar934x-nfc:256k(u-boot)ro,256k(u-boot-env)ro,256k(caldata)ro,512k(pot),2048k(language),512k(config),3072k(traffic_meter),2048k(kernel),23552k(ubi),25600k@0x6c0000(firmware),256k(caldata_backup),-(reserved) zcn1523h_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,6208k(rootfs),1472k(kernel),64k(configure)ro,64k(mfg)ro,64k(art)ro,7680k@0x50000(firmware) @@ -895,6 +896,7 @@ $(eval $(call SingleProfile,AthLzma,64k,BXU2000N2,bxu2000n-2-a1,BXU2000n-2-A1,tt $(eval $(call SingleProfile,AthLzma,64k,CAP4200AG,cap4200ag,CAP4200AG,ttyS0,115200,$$(cap4200ag_mtdlayout),KRuImage)) $(eval $(call SingleProfile,AthLzma,64k,DB120,db120,DB120,ttyS0,115200,$$(db120_mtdlayout),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,HORNETUBx2,hornet-ub-x2,HORNET-UB,ttyATH0,115200,$$(alfa_mtdlayout_16M),KRuImage,65536)) +$(eval $(call SingleProfile,AthLzma,64k,SGRW500N85BV2,sgr-w500-n85b-v2,SGRW500N85BV2,ttyS0,115200,$$(sgrw500n85bv2_mtdlayout),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,TUBE2H16M,tube2h-16M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_16M),KRuImage,65536)) $(eval $(call SingleProfile,CameoAP121_8M,64kraw-nojffs,DIR505A1,dir-505-a1,DIR-505-A1,ttyATH0,115200,"HORNET-PACKET-DIR505A1-3",1.99.99,""))