ar71xx: add support for TP-LINK TL-WDR8500 v1 (#4615)

This commit add support for the TP-LINK TL-WDR8500 v1

SOC:	Qualcomm QCA9563 775MHz
RAM:    128MB M14D1G1664A-2.5B DDR2
FLASH:  8MB Winbond 25Q64FVSIG
WLAN1:  QCA9563 2.4GHz 802.11b/g/n 3x3
WLAN2:  QCA9984 5GHz 802.11 n/ac 4x4
Ethernet: 5 x 1000Mbps (1wan, 4lan)

Installation via breed:
Flash into breed-qca956x-uart_rx18_tx22-reset1.bin,
and then edit the environment variables:
  Field: autoboot.command
  Value: boot mem 0x9f020200

From https://www.right.com.cn/forum/thread-328619-1-1.html

Signed-off-by: AmadeusGhost <42570690+AmadeusGhost@users.noreply.github.com>
This commit is contained in:
AmadeusGhost 2020-05-20 10:00:51 +08:00 committed by GitHub
parent 4685f86c44
commit 1457fa8e97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 218 additions and 9 deletions

View File

@ -902,6 +902,9 @@ tl-wdr4900-v2)
ucidef_set_led_wlan "wlan2g" "WLAN2G" "tp-link:blue:wlan2g" "phy0tpt"
ucidef_set_led_wlan "wlan5g" "WLAN5G" "tp-link:blue:wlan5g" "phy1tpt"
;;
tl-wdr8500-v1)
ucidef_set_led_default "sys" "SYS" "tp-link:blue:system" "1"
;;
tl-wr885n-v1)
ucidef_set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth0"
ucidef_set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x10"

View File

@ -209,6 +209,7 @@ ar71xx_setup_interfaces()
ap132|\
ap136|\
ap152|\
tl-wdr8500-v1|\
rb-750gl|\
rb-751g|\
rb-951g-2hnd|\

View File

@ -91,6 +91,7 @@ get_status_led() {
tl-mr13u|\
tl-wdr4300|\
tl-wdr4900-v2|\
tl-wdr8500-v1|\
tl-wr703n|\
tl-wr710n|\
tl-wr720n-v3|\

View File

@ -234,6 +234,10 @@ 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-wdr8500-v1)
ath10kcal_extract "art" 20480 12064
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
;;
esac
;;
*)

View File

@ -302,6 +302,9 @@ tplink_board_detect() {
"322000"*)
model="TP-Link TL-MR3220"
;;
"322700"*)
model="TP-Link TL-WDR3227"
;;
"332000"*)
model="TP-Link TL-WDR3320"
;;
@ -349,12 +352,12 @@ tplink_board_detect() {
"751000"*)
model="TP-Link TL-WA7510N"
;;
"85000001")
model="TP-Link TL-WDR8500"
;;
"934100"*)
model="NC-LINK SMART-300"
;;
"322700"*)
model="TP-Link TL-WDR3227"
;;
"c50000"*)
model="TP-Link Archer C5"
;;
@ -1301,6 +1304,9 @@ ar71xx_board_detect() {
*"TL-WDR6500 v6")
name="tl-wdr6500-v6"
;;
*"TL-WDR8500 v1")
name="tl-wdr8500-v1"
;;
*"TL-WPA8630")
name="tl-wpa8630"
;;

View File

@ -465,6 +465,7 @@ platform_check_image() {
tl-wdr4900-v2|\
tl-wdr6500-v2|\
tl-wdr6500-v6|\
tl-wdr8500-v1|\
tl-wpa8630|\
tl-wr1041n-v2|\
tl-wr1043nd|\

View File

@ -144,6 +144,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_LAN_TURTLE is not set
# CONFIG_ATH79_MACH_LIMA is not set
# CONFIG_ATH79_MACH_MC_MAC1200R is not set
# CONFIG_ATH79_MACH_MC_MW4530R is not set
# CONFIG_ATH79_MACH_MR12 is not set
# CONFIG_ATH79_MACH_MR16 is not set
# CONFIG_ATH79_MACH_MR1750 is not set
@ -220,7 +221,8 @@ 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_WDR6500_V6 is not set
# CONFIG_ATH79_MACH_TL_WDR8500_V1 is not set
# 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
@ -244,6 +246,17 @@ CONFIG_ATH79_MACH_TL_WDR6500_V6=y
# CONFIG_ATH79_MACH_TL_WR841N_V9 is not set
# CONFIG_ATH79_MACH_TL_WR880N_V1 is not set
# CONFIG_ATH79_MACH_TL_WR881N_V1 is not set
# CONFIG_ATH79_MACH_TL_WR882N_V1 is not set
# CONFIG_ATH79_MACH_TL_WR882N_V2 is not set
# CONFIG_ATH79_MACH_TL_WR882N_V3 is not set
# CONFIG_ATH79_MACH_TL_WR885N_V1 is not set
# CONFIG_ATH79_MACH_TL_WR885N_V2 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V2 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V3 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V4 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V5 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V6 is not set
# CONFIG_ATH79_MACH_TL_WR886N_V7 is not set
# CONFIG_ATH79_MACH_TL_WR902AC_V1 is not set
# CONFIG_ATH79_MACH_TL_WR940N_V4 is not set
# CONFIG_ATH79_MACH_TL_WR941ND is not set

View File

@ -144,7 +144,7 @@ CONFIG_ATH79=y
# CONFIG_ATH79_MACH_LAN_TURTLE is not set
# CONFIG_ATH79_MACH_LIMA is not set
# CONFIG_ATH79_MACH_MC_MAC1200R is not set
CONFIG_ATH79_MACH_MC_MW4530R=y
# CONFIG_ATH79_MACH_MC_MW4530R is not set
# CONFIG_ATH79_MACH_MR12 is not set
# CONFIG_ATH79_MACH_MR16 is not set
# CONFIG_ATH79_MACH_MR1750 is not set
@ -221,7 +221,8 @@ CONFIG_ATH79_MACH_MC_MW4530R=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_WDR6500_V6 is not set
# CONFIG_ATH79_MACH_TL_WDR8500_V1 is not set
# 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

View File

@ -1896,6 +1896,16 @@ config ATH79_MACH_TL_WDR6500_V6
select ATH79_DEV_USB
select ATH79_DEV_WMAC
config ATH79_MACH_TL_WDR8500_V1
bool "TP-LINK TL-WDR8500 v1 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_WMAC
config ATH79_MACH_TL_WR703N
bool "TP-LINK TL-WR703N/TL-WR710N/TL-MR10U support"
select SOC_AR933X

View File

@ -107,7 +107,7 @@ obj-$(CONFIG_ATH79_MACH_DLAN_HOTSPOT) += mach-dlan-hotspot.o
obj-$(CONFIG_ATH79_MACH_DLAN_PRO_1200_AC) += mach-dlan-pro-1200-ac.o
obj-$(CONFIG_ATH79_MACH_DLAN_PRO_500_WP) += mach-dlan-pro-500-wp.o
obj-$(CONFIG_ATH79_MACH_DOMYWIFI_DW33D) += mach-domywifi-dw33d.o
obj-$(CONFIG_ATH79_MACH_ARRIS_SBR_AC1750) += mach-sbr-ac1750.o
obj-$(CONFIG_ATH79_MACH_ARRIS_SBR_AC1750) += mach-sbr-ac1750.o
obj-$(CONFIG_ATH79_MACH_DR342) += mach-dr344.o
obj-$(CONFIG_ATH79_MACH_DR344) += mach-dr344.o
obj-$(CONFIG_ATH79_MACH_DR531) += mach-dr531.o
@ -232,6 +232,7 @@ 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_WDR8500_V1) += mach-tl-wdr8500-v1.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

View File

@ -0,0 +1,148 @@
/*
* TP-LINK TL-WDR8500_V1 board support
*
* Copyright (C) 2018 mht
*
* 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/gpio.h>
#include <linux/platform_device.h>
#include <linux/proc_fs.h>
#include <linux/spi/spi_gpio.h>
#include <linux/spi/74x164.h>
#include <linux/ath9k_platform.h>
#include <linux/ar8216_platform.h>
#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include <asm/mach-ath79/irq.h>
#include "common.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"
#include "pci.h"
#define TL_WDR8500_V1_GPIO_BTN_RESET 1
#define TL_WDR8500_V1_GPIO_BTN_TURBO 2
// tx = 18 / rx = 22
#define TL_WDR8500_V1_GPIO_LED_TURBO 5
#define TL_WDR8500_V1_GPIO_LED_SYS 21
#define TL_WDR8500_V1_KEYS_POLL_INTERVAL 20 /* msecs */
#define TL_WDR8500_V1_KEYS_DEBOUNCE_INTERVAL (3 * TL_WDR8500_V1_KEYS_POLL_INTERVAL)
#define TL_WDR8500_V1_WMAC_CALDATA_OFFSET 0x1000
#define TL_WDR8500_V1_GPIO_MDC 3
#define TL_WDR8500_V1_GPIO_MDIO 4
// u-boot 128K
static const char *tl_wdr8500_v1_part_probes[] = {
"tp-link",
NULL,
};
static struct flash_platform_data tl_wdr8500_v1_flash_data = {
.part_probes = tl_wdr8500_v1_part_probes,
};
static struct gpio_led tl_wdr8500_v1_leds_gpio[] __initdata = {
{
.name = "tp-link:blue:system",
.gpio = TL_WDR8500_V1_GPIO_LED_SYS,
.active_low = 1,
}, {
.name = "tp-link:green:turbo",
.gpio = TL_WDR8500_V1_GPIO_LED_TURBO,
.active_low = 1,
},
};
static struct gpio_keys_button tl_wdr8500_v1_gpio_keys[] __initdata = {
{
.desc = "RFKill button",
.type = EV_KEY,
.code = KEY_RFKILL,
.debounce_interval = TL_WDR8500_V1_KEYS_DEBOUNCE_INTERVAL,
.gpio = TL_WDR8500_V1_GPIO_BTN_TURBO,
.active_low = 1,
},
{
.desc = "Reset button",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = TL_WDR8500_V1_KEYS_DEBOUNCE_INTERVAL,
.gpio = TL_WDR8500_V1_GPIO_BTN_RESET,
.active_low = 1,
},
};
static struct ar8327_pad_cfg TL_WDR8500_v1_ar8337_pad0_cfg = {
.mode = AR8327_PAD_MAC_SGMII,
.sgmii_delay_en = true,
};
static struct ar8327_platform_data TL_WDR8500_v1_ar8337_data = {
.pad0_cfg = &TL_WDR8500_v1_ar8337_pad0_cfg,
.port0_cfg = {
.force_link = 1,
.speed = AR8327_PORT_SPEED_1000,
.duplex = 1,
.txpause = 1,
.rxpause = 1,
},
};
static struct mdio_board_info TL_WDR8500_v1_mdio0_info[] = {
{
.bus_id = "ag71xx-mdio.0",
.phy_addr = 0,
.platform_data = &TL_WDR8500_v1_ar8337_data,
},
};
static void __init TL_WDR8500_v1_setup(void)
{
u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
ath79_register_m25p80(&tl_wdr8500_v1_flash_data);
ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wdr8500_v1_leds_gpio),
tl_wdr8500_v1_leds_gpio);
ath79_register_gpio_keys_polled(-1, TL_WDR8500_V1_KEYS_POLL_INTERVAL,
ARRAY_SIZE(tl_wdr8500_v1_gpio_keys),
tl_wdr8500_v1_gpio_keys);
platform_device_register(&ath79_mdio0_device);
ath79_register_mdio(1, 0x0);
mdiobus_register_board_info(TL_WDR8500_v1_mdio0_info,
ARRAY_SIZE(TL_WDR8500_v1_mdio0_info));
ath79_register_wmac(art + TL_WDR8500_V1_WMAC_CALDATA_OFFSET, mac);
ath79_register_pci();
/* GMAC0 is connected to an AR8337 switch */
ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1);
ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII;
ath79_eth0_data.speed = SPEED_1000;
ath79_eth0_data.duplex = DUPLEX_FULL;
ath79_eth0_data.phy_mask = BIT(0);
ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev;
ath79_register_eth(0);
}
MIPS_MACHINE(ATH79_MACH_TL_WDR8500_V1, "TL-WDR8500-v1", "TP-LINK TL-WDR8500 v1",
TL_WDR8500_v1_setup);

View File

@ -101,7 +101,7 @@ enum ath79_mach_type {
ATH79_MACH_DLAN_PRO_1200_AC, /* devolo dLAN pro 1200+ WiFi ac*/
ATH79_MACH_DLAN_PRO_500_WP, /* devolo dLAN pro 500 Wireless+ */
ATH79_MACH_DOMYWIFI_DW33D, /* DomyWifi DW33D */
ATH79_MACH_ARRIS_SBR_AC1750, /* ARRIS SBR-AC1750 */
ATH79_MACH_ARRIS_SBR_AC1750, /* ARRIS SBR-AC1750 */
ATH79_MACH_DR342, /* Wallys DR342 */
ATH79_MACH_DR344, /* Wallys DR344 */
ATH79_MACH_DR531, /* Wallys DR531 */
@ -285,6 +285,7 @@ enum ath79_mach_type {
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_WDR8500_V1, /* TP-LINK TL-WDR8500 v1 */
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 */

View File

@ -35,6 +35,7 @@ CONFIG_ATH79_MACH_ARCHER_C60_V2=y
CONFIG_ATH79_MACH_ARCHER_C7=y
CONFIG_ATH79_MACH_ARDUINO_YUN=y
CONFIG_ATH79_MACH_AW_NR580=y
CONFIG_ATH79_MACH_BHR_4GRV2=y
CONFIG_ATH79_MACH_BHU_BXU2000N2_A=y
CONFIG_ATH79_MACH_BSB=y
CONFIG_ATH79_MACH_C55=y
@ -112,6 +113,7 @@ CONFIG_ATH79_MACH_KOALA=y
CONFIG_ATH79_MACH_LAN_TURTLE=y
CONFIG_ATH79_MACH_LIMA=y
CONFIG_ATH79_MACH_MC_MAC1200R=y
CONFIG_ATH79_MACH_MC_MW4530R=y
CONFIG_ATH79_MACH_MR12=y
CONFIG_ATH79_MACH_MR16=y
CONFIG_ATH79_MACH_MR1750=y
@ -160,6 +162,8 @@ 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
CONFIG_ATH79_MACH_TL_WDR6500_V6=y
CONFIG_ATH79_MACH_TL_WDR8500_V1=y
CONFIG_ATH79_MACH_TL_WPA8630=y
CONFIG_ATH79_MACH_TL_WR1043ND=y
CONFIG_ATH79_MACH_TL_WR1043ND_V2=y

View File

@ -354,7 +354,7 @@ endef
TARGET_DEVICES += tl-wdr6500-v2
define Device/tl-wdr6500-v6
$(Device/tplink-8mlzma)
$(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
@ -366,6 +366,21 @@ $(Device/tplink-8mlzma)
endef
TARGET_DEVICES += tl-wdr6500-v6
define Device/tl-wdr8500-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WDR8500 v1
DEVICE_PACKAGES := kmod-ath10k ath10k-firmware-qca9984
KERNEL := kernel-bin | patch-cmdline | lzma | uImage lzma
KERNEL_INITRAMFS := kernel-bin | patch-cmdline | lzma | uImage lzma | tplink-v1-header
BOARDNAME := TL-WDR8500-v1
DEVICE_PROFILE := TLWDR8500V1
TPLINK_HWID := 0x85000001
TPLINK_HEADER_VERSION := 1
TPLINK_BOARD_ID := TL-WDR8500-V1
SUPPORTED_DEVICES := tl-wdr8500-v1
endef
TARGET_DEVICES += tl-wdr8500-v1
define Device/tl-wpa8630-v1
$(Device/tplink-8mlzma)
DEVICE_TITLE := TP-LINK TL-WPA8630 v1