ramips: add support for TP-Link Archer C2

Specification:

- System-On-Chip: MT7620A
- CPU/Speed: 580 MHz
- Flash-Chip: Winbond 25Q64BVSIG
- Flash size: 8192 KiB
- RAM: 64 MiB
- Wireless No1: SoC-integrated: MT7620A 2.4GHz 802.11bgn
- Wireless No2: On-board chip: MT7610EN 5GHz 802.11ac
- Switch: RTL8367RB Gigabit Switch
- USB: Yes 1 x 2.0

Preparing a TFTP recovery image for initial flashing:

Currently the only method to install openwrt for the first time is via
TFTP download in u-boot. After first install you can use regular updates.
WARNING: This method also overwrites the bootloader partition!

Create a TFTP recovery image:

1) Download a stock TP-Link Firmware file here:
     https://www.tp-link.com/en/download/Archer-C2_V1.html#Firmware
2) Extract u-boot from the binary file:
     #> dd if=c2v1_stock_firmware.bin of=c2v1_uboot.bin bs=1 skip=512 count=131072
3) Now merge the sysupgrade image and the u-boot into one binary:
     #> cat c2v1_uboot.bin openwrt-squashfs-sysupgrade.bin > ArcherC2V1_tp_recovery.bin

The resulting image can be flashed via TFTP recovery mode.

Flash instructions:

1) To flash the recovery image, start a TFTP server from IP address
   192.168.0.66 and serve the recovery image named
   ArcherC2V1_tp_recovery.bin.
2) Connect your device to the LAN port, then press the WPS/Reset button
   and power it up. Keep pressing the WPS/Reset button for 10 seconds.
   It will try to download the recovery image and flash it.

It can take up to 20-25 minutes to finish. When it reaches 100%, the
router will reboot itself.

Signed-off-by: Serge Vasilugin <vasilugin@yandex.ru>
Signed-off-by: Franz Flasch <franz.flasch@gmx.at>
This commit is contained in:
Franz Flasch 2018-05-17 11:57:00 +02:00 committed by Mathias Kresin
parent abb7524683
commit 8375623a06
6 changed files with 202 additions and 0 deletions

View file

@ -398,6 +398,12 @@ tl-wr841n-v13)
ucidef_set_led_switch "lan4" "lan4" "$boardname:green:lan4" "switch0" "0x10" ucidef_set_led_switch "lan4" "lan4" "$boardname:green:lan4" "switch0" "0x10"
ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x01" ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x01"
;; ;;
tplink,c2-v1)
ucidef_set_led_switch "lan" "lan" "$boardname:green:lan" "switch1" "0x1e"
ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch1" "0x01"
set_usb_led "$boardname:green:usb" "2-1"
set_wifi_led "$boardname:green:wlan"
;;
tplink,c20-v1) tplink,c20-v1)
ucidef_set_led_switch "lan" "lan" "$boardname:blue:lan" "switch0" "0x1e" ucidef_set_led_switch "lan" "lan" "$boardname:blue:lan" "switch0" "0x1e"
ucidef_set_led_switch "wan" "wan" "$boardname:blue:wan" "switch0" "0x01" ucidef_set_led_switch "wan" "wan" "$boardname:blue:wan" "switch0" "0x01"

View file

@ -335,6 +335,10 @@ ramips_setup_interfaces()
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
"1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" "0@eth0"
;; ;;
tplink,c2-v1)
ucidef_add_switch "switch1" \
"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "6@eth0"
;;
tplink,tl-wr902ac-v3) tplink,tl-wr902ac-v3)
ucidef_add_switch "switch0" \ ucidef_add_switch "switch0" \
"4:lan" "6@eth0" "4:lan" "6@eth0"

View file

@ -79,6 +79,7 @@ get_status_led() {
awapn2403|\ awapn2403|\
dir-645|\ dir-645|\
sk-wb8|\ sk-wb8|\
tplink,c2-v1|\
wrh-300cr) wrh-300cr)
status_led="$boardname:green:wps" status_led="$boardname:green:wps"
;; ;;

View file

@ -253,6 +253,7 @@ platform_check_image() {
c20i|\ c20i|\
c50|\ c50|\
mr200|\ mr200|\
tplink,c2-v1|\
tplink,c20-v1|\ tplink,c20-v1|\
tplink,c20-v4|\ tplink,c20-v4|\
tplink,c50-v3|\ tplink,c50-v3|\

View file

@ -0,0 +1,178 @@
/dts-v1/;
/include/ "mt7620a.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
compatible = "tplink,c2-v1", "ralink,mt7620a-soc";
model = "TP-Link Archer C2 v1";
chosen {
bootargs = "console=ttyS0,115200";
};
pinctrl {
state_default: pinctrl0 {
gpio {
ralink,group = "i2c", "uartf", "wled", "ephy", "spi refclk";
ralink,function = "gpio";
};
};
};
gpio-leds {
compatible = "gpio-leds";
lan {
label = "c2-v1:green:lan";
gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};
usb {
label = "c2-v1:green:usb";
gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
};
wps {
label = "c2-v1:green:wps";
gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
};
wan {
label = "c2-v1:green:wan";
gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
};
wlan {
label = "c2-v1:green:wlan";
gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
};
};
gpio-keys {
compatible = "gpio-keys";
reset_wps {
label = "reset_wps";
gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
rfkill {
label = "rfkill";
gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RFKILL>;
};
};
rtl8367rb {
compatible = "realtek,rtl8367b", "rtl8367b";
cpu_port = <6>;
realtek,extif1 = <1 0 1 1 1 1 1 1 2>;
mii-bus = <&mdio0>;
};
};
&spi0 {
status = "okay";
m25p80@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <10000000>;
partition@0 {
label = "u-boot";
reg = <0x0 0x20000>;
read-only;
};
partition@20000 {
label = "firmware";
reg = <0x20000 0x7a0000>;
};
partition@7c0000 {
label = "config";
reg = <0x7c0000 0x10000>;
read-only;
};
rom: partition@7d0000 {
label = "rom";
reg = <0x7d0000 0x10000>;
read-only;
};
partition@7e0000 {
label = "romfile";
reg = <0x7e0000 0x10000>;
read-only;
};
radio: partition@7f0000 {
label = "radio";
reg = <0x7f0000 0x10000>;
read-only;
};
};
};
&ethernet {
status = "okay";
mtd-mac-address = <&rom 0xf100>;
pinctrl-names = "default";
pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
port@5 {
status = "okay";
mediatek,fixed-link = <1000 1 1 1>;
phy-mode = "rgmii";
};
mdio0: mdio-bus {
status = "okay";
};
};
&gpio1 {
status = "okay";
};
&gpio2 {
status = "okay";
};
&gpio3 {
status = "okay";
};
&wmac {
ralink,mtd-eeprom = <&radio 0>;
mtd-mac-address = <&rom 0xf100>;
};
&ehci {
status = "okay";
};
&ohci {
status = "okay";
};
&pcie {
status = "okay";
pcie-bridge {
mt76@0,0 {
reg = <0x0000 0 0 0 0>;
device_type = "pci";
mediatek,mtd-eeprom = <&radio 0x8000>;
};
};
};

View file

@ -472,6 +472,18 @@ define Device/tiny-ac
endef endef
TARGET_DEVICES += tiny-ac TARGET_DEVICES += tiny-ac
define Device/tplink_c2-v1
$(Device/Archer)
DTS := ArcherC2-v1
TPLINK_FLASHLAYOUT := 8Mmtk
TPLINK_HWID := 0xc7500001
TPLINK_HWREV := 50
IMAGES += factory.bin
DEVICE_TITLE := TP-Link Archer C2 v1
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport kmod-switch-rtl8366-smi kmod-switch-rtl8367b
endef
TARGET_DEVICES += tplink_c2-v1
define Device/tplink_c20-v1 define Device/tplink_c20-v1
$(Device/Archer) $(Device/Archer)
DTS := ArcherC20v1 DTS := ArcherC20v1