From c450bd4b77cff07aa31d462901711ca72a789e93 Mon Sep 17 00:00:00 2001 From: nivalxer Date: Fri, 28 Jun 2019 23:33:46 +0800 Subject: [PATCH 1/2] mvebu: fixes commit (#1402) https://github.com/openwrt/openwrt/commit/1e3800df1808b4a5a977c3a9651958611df51c83 err_free_stats has been deprecated. Replace with err_netdev. --- .../mvebu/patches-4.14/403-net-mvneta-convert-to-phylink.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/mvebu/patches-4.14/403-net-mvneta-convert-to-phylink.patch b/target/linux/mvebu/patches-4.14/403-net-mvneta-convert-to-phylink.patch index 577317a84..34a2d342d 100644 --- a/target/linux/mvebu/patches-4.14/403-net-mvneta-convert-to-phylink.patch +++ b/target/linux/mvebu/patches-4.14/403-net-mvneta-convert-to-phylink.patch @@ -905,7 +905,7 @@ Signed-off-by: Russell King + phylink = phylink_create(dev, dn, phy_mode, &mvneta_phylink_ops); + if (IS_ERR(phylink)) { + err = PTR_ERR(phylink); -+ goto err_free_stats; ++ goto err_netdev; + } + + pp->phylink = phylink; From 59f21425439b722d5a5b9717686686f1aeacbb6a Mon Sep 17 00:00:00 2001 From: huah0235 Date: Fri, 28 Jun 2019 23:34:11 +0800 Subject: [PATCH 2/2] add wdr6500v6 support (#1421) --- .../ar71xx/base-files/etc/board.d/01_leds | 1 + .../ar71xx/base-files/etc/board.d/02_network | 1 + target/linux/ar71xx/base-files/etc/diag.sh | 3 +- .../etc/hotplug.d/firmware/11-ath10k-caldata | 5 + .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 3 + target/linux/ar71xx/base-files/lib/ar71xx.sh | 3 + .../ar71xx/base-files/lib/upgrade/platform.sh | 4 +- target/linux/ar71xx/config-4.14 | 1 + target/linux/ar71xx/config-4.9 | 1 + .../files/arch/mips/ath79/Kconfig.openwrt | 11 ++ .../ar71xx/files/arch/mips/ath79/Makefile | 1 + .../arch/mips/ath79/mach-tl-wdr6500-v6.c | 140 ++++++++++++++++++ .../ar71xx/files/arch/mips/ath79/machtypes.h | 1 + target/linux/ar71xx/image/generic-tp-link.mk | 13 ++ 14 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr6500-v6.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 af16b541f..9a517d4f6 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/01_leds +++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds @@ -897,6 +897,7 @@ tl-wdr4900-v2) ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy1tpt" ;; tl-wdr6500-v2|\ +tl-wdr6500-v6|\ tl-wr741nd) ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02" 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 55db051ea..b83f79333 100755 --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -360,6 +360,7 @@ ar71xx_setup_interfaces() r6100|\ smart-300|\ tl-wdr6500-v2|\ + tl-wdr6500-v6|\ tl-wr940n-v4|\ tl-wr940n-v6|\ tl-wr941nd-v6|\ diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh index 7f36abeac..fc11aad0f 100644 --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -501,7 +501,8 @@ get_status_led() { tl-wr940n-v6) status_led="tp-link:orange:diag" ;; - tl-wdr6500-v2) + tl-wdr6500-v2|\ + tl-wdr6500-v6) status_led="tp-link:white:system" ;; tube2h) diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 10138d434..af6c976d3 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -229,6 +229,11 @@ case "$FIRMWARE" in ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ /lib/firmware/ath10k/QCA9888/hw2.0/board.bin ;; + tl-wdr6500-v6) + ath10kcal_extract "art" 8192 12064 + ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ + /lib/firmware/ath10k/QCA9888/hw2.0/board.bin + ;; esac ;; *) diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac index b58cf9b59..a9cb69e7d 100644 --- a/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -19,6 +19,9 @@ case "$board" in archer-c60-v2) echo $(macaddr_add $(mtd_get_mac_binary mac 8) $(($PHYNBR - 1)) ) > /sys${DEVPATH}/macaddress ;; + tl-wdr6500-v6) + echo $(macaddr_add $(mtd_get_mac_binary art 2061) $(($PHYNBR - 2)) ) > /sys${DEVPATH}/macaddress + ;; *) ;; esac diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh index 8178641e3..773575fe9 100755 --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -1292,6 +1292,9 @@ ar71xx_board_detect() { *"TL-WDR6500 v2") name="tl-wdr6500-v2" ;; + *"TL-WDR6500 v6") + name="tl-wdr6500-v6" + ;; *"TL-WPA8630") name="tl-wpa8630" ;; diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh index a2c8993f5..91ae4e29c 100755 --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -463,6 +463,7 @@ platform_check_image() { tl-wdr4300|\ tl-wdr4900-v2|\ tl-wdr6500-v2|\ + tl-wdr6500-v6|\ tl-wpa8630|\ tl-wr1041n-v2|\ tl-wr1043nd|\ @@ -504,7 +505,8 @@ platform_check_image() { local magic_ver="0100" case "$board" in - tl-wdr6500-v2) + tl-wdr6500-v2|\ + tl-wdr6500-v6) magic_ver="0200" ;; esac diff --git a/target/linux/ar71xx/config-4.14 b/target/linux/ar71xx/config-4.14 index d0ee679ce..5be477c37 100644 --- a/target/linux/ar71xx/config-4.14 +++ b/target/linux/ar71xx/config-4.14 @@ -220,6 +220,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_TL_WDR3500 is not set # CONFIG_ATH79_MACH_TL_WDR4300 is not set # CONFIG_ATH79_MACH_TL_WDR6500_V2 is not set +CONFIG_ATH79_MACH_TL_WDR6500_V6=y # CONFIG_ATH79_MACH_TL_WPA8630 is not set # CONFIG_ATH79_MACH_TL_WR1041N_V2 is not set # CONFIG_ATH79_MACH_TL_WR1043ND is not set diff --git a/target/linux/ar71xx/config-4.9 b/target/linux/ar71xx/config-4.9 index d9b217b50..c7c6cadef 100644 --- a/target/linux/ar71xx/config-4.9 +++ b/target/linux/ar71xx/config-4.9 @@ -220,6 +220,7 @@ CONFIG_ATH79=y # CONFIG_ATH79_MACH_TL_WDR3500 is not set # CONFIG_ATH79_MACH_TL_WDR4300 is not set # CONFIG_ATH79_MACH_TL_WDR6500_V2 is not set +CONFIG_ATH79_MACH_TL_WDR6500_V6=y # CONFIG_ATH79_MACH_TL_WPA8630 is not set # CONFIG_ATH79_MACH_TL_WR1041N_V2 is not set # CONFIG_ATH79_MACH_TL_WR1043ND 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 08d398b84..7e3aef940 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt @@ -1885,6 +1885,17 @@ config ATH79_MACH_TL_WDR6500_V2 select ATH79_DEV_USB select ATH79_DEV_WMAC +config ATH79_MACH_TL_WDR6500_V6 + bool "TP-LINK TL-WDR6500 v6 board support" + select SOC_QCA956X + 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_WR703N bool "TP-LINK TL-WR703N/TL-WR710N/TL-MR10U support" select SOC_AR933X diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile index f3fadbf2e..52d0a912f 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile @@ -231,6 +231,7 @@ 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 +obj-$(CONFIG_ATH79_MACH_TL_WDR6500_V6) += mach-tl-wdr6500-v6.o obj-$(CONFIG_ATH79_MACH_TL_WPA8630) += mach-tl-wpa8630.o obj-$(CONFIG_ATH79_MACH_TL_WR1041N_V2) += mach-tl-wr1041n-v2.o obj-$(CONFIG_ATH79_MACH_TL_WR1043ND) += mach-tl-wr1043nd.o diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr6500-v6.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr6500-v6.c new file mode 100644 index 000000000..c4178d9dc --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr6500-v6.c @@ -0,0 +1,140 @@ +/* + * TP-LINK TL-WDR6500 v6 + * + * Copyright (C) 2015 Weijie Gao + * + * 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 "common.h" +#include "dev-eth.h" +#include "dev-ap9x-pci.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-usb.h" +#include "dev-wmac.h" +#include "machtypes.h" +#include "pci.h" + +#define TL_WDR6500_V6_GPIO_LED_SYS 21 +#define TL_WDR6500_V6_GPIO_LED_WAN 18 +#define TL_WDR6500_V6_GPIO_LED_LAN1 17 +#define TL_WDR6500_V6_GPIO_LED_LAN2 16 +#define TL_WDR6500_V6_GPIO_LED_LAN3 15 +#define TL_WDR6500_V6_GPIO_LED_LAN4 14 + +#define TL_WDR6500_V6_GPIO_BTN_RESET 1 + +#define TL_WDR6500_V6_KEYS_POLL_INTERVAL 20 /* msecs */ +#define TL_WDR6500_V6_KEYS_DEBOUNCE_INTERVAL (3 * TL_WDR6500_V6_KEYS_POLL_INTERVAL) + +#define TL_WDR6500_V6_WMAC_CALDATA_OFFSET 0x1000 +#define TL_WDR6500_V6_PCIE_CALDATA_OFFSET 0x2000 + +static const char *tl_wdr6500_v6_part_probes[] = { + "tp-link-64k", + NULL, +}; + +static struct flash_platform_data tl_wdr6500_v6_flash_data = { + .part_probes = tl_wdr6500_v6_part_probes, +}; + +static struct gpio_led tl_wdr6500_v6_leds_gpio[] __initdata = { + { + .name = "tp-link:green:lan1", + .gpio = TL_WDR6500_V6_GPIO_LED_LAN1, + .active_low = 1, + }, { + .name = "tp-link:green:lan2", + .gpio = TL_WDR6500_V6_GPIO_LED_LAN2, + .active_low = 1, + }, { + .name = "tp-link:green:lan3", + .gpio = TL_WDR6500_V6_GPIO_LED_LAN3, + .active_low = 1, + }, { + .name = "tp-link:green:lan4", + .gpio = TL_WDR6500_V6_GPIO_LED_LAN4, + .active_low = 1, + }, { + .name = "tp-link:green:wan", + .gpio = TL_WDR6500_V6_GPIO_LED_WAN, + .active_low = 1, + }, { + .name = "tp-link:white:system", + .gpio = TL_WDR6500_V6_GPIO_LED_SYS, + .active_low = 0, + }, +}; + +static struct gpio_keys_button tl_wdr6500_v6_gpio_keys[] __initdata = { + { + .desc = "Reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = TL_WDR6500_V6_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_WDR6500_V6_GPIO_BTN_RESET, + .active_low = 1, + } +}; + + +static void __init tl_ap151_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0x1fff080d); + u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); + u8 tmpmac[ETH_ALEN]; + + ath79_register_m25p80(&tl_wdr6500_v6_flash_data); + + ath79_setup_ar933x_phy4_switch(false, false); + + ath79_register_mdio(1, 0x0); + + /* WAN */ + 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_init_mac(ath79_eth0_data.mac_addr, mac, 1); + ath79_register_eth(0); + + /* LAN */ + ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII; + ath79_eth1_data.duplex = DUPLEX_FULL; + ath79_eth1_data.speed = SPEED_1000; + ath79_init_mac(ath79_eth1_data.mac_addr, mac, 0); + ath79_register_eth(1); + + ath79_init_mac(tmpmac, mac, -1); + ath79_register_wmac(art + TL_WDR6500_V6_WMAC_CALDATA_OFFSET, tmpmac); + + ap91_pci_init(art + TL_WDR6500_V6_PCIE_CALDATA_OFFSET, NULL); +} + +static void __init tl_wdr6500_v6_setup(void) +{ + tl_ap151_setup(); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wdr6500_v6_leds_gpio), + tl_wdr6500_v6_leds_gpio); + + ath79_register_gpio_keys_polled(1, TL_WDR6500_V6_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_wdr6500_v6_gpio_keys), + tl_wdr6500_v6_gpio_keys); +} + +MIPS_MACHINE(ATH79_MACH_TL_WDR6500_V6, "TL-WDR6500-v6", "TP-LINK TL-WDR6500 v6", + tl_wdr6500_v6_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h index 4a140dd16..52e8a9a40 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -284,6 +284,7 @@ enum ath79_mach_type { ATH79_MACH_TL_WDR4300, /* TP-LINK TL-WDR4300 */ ATH79_MACH_TL_WDR4900_V2, /* TP-LINK TL-WDR4900 v2 */ ATH79_MACH_TL_WDR6500_V2, /* TP-LINK TL-WDR6500 v2 */ + ATH79_MACH_TL_WDR6500_V6, /* TP-LINK TL-WDR6500 v6 */ ATH79_MACH_TL_WPA8630, /* TP-Link TL-WPA8630 */ ATH79_MACH_TL_WR1041N_V2, /* TP-LINK TL-WR1041N v2 */ ATH79_MACH_TL_WR1043N_V5, /* TP-LINK TL-WR1043N v5 */ diff --git a/target/linux/ar71xx/image/generic-tp-link.mk b/target/linux/ar71xx/image/generic-tp-link.mk index cb5d525ab..706120d05 100644 --- a/target/linux/ar71xx/image/generic-tp-link.mk +++ b/target/linux/ar71xx/image/generic-tp-link.mk @@ -340,6 +340,19 @@ define Device/tl-wdr6500-v2 endef TARGET_DEVICES += tl-wdr6500-v2 +define Device/tl-wdr6500-v6 +$(Device/tplink-8mlzma) + DEVICE_TITLE := TP-LINK TL-WDR6500 v6 + DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca9888 + KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma + KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | tplink-v1-header + BOARDNAME = TL-WDR6500-v6 + DEVICE_PROFILE = TLWDR6500V6 + TPLINK_HWID := 0x65000006 + TPLINK_HEADER_VERSION := 2 +endef +TARGET_DEVICES += tl-wdr6500-v6 + define Device/mw4530r-v1 $(Device/tl-wdr4300-v1) DEVICE_TITLE := Mercury MW4530R v1