Skip to content

Commit

Permalink
ath79: add support for TP-Link RE450 v3
Browse files Browse the repository at this point in the history
TP-Link RE450 v3 is a dual band router/range-extender based on
Qualcomm/Atheros QCA9563 + QCA9880.

This device is nearly identical to RE450 v2 besides a modified flash
layout (hence I think force-flashing a RE450v2 image will lead to at
least loss of MAC address).

Specification:

- 775 MHz CPU
- 64 MB of RAM (DDR2)
- 8 MB of FLASH (SPI NOR)
- 3T3R 2.4 GHz
- 3T3R 5 GHz
- 1x 10/100/1000 Mbps Ethernet (AR8033 PHY)
- 7x LED, 4x button-
- possible UART header on PCB¹

Flash instruction:
Apply factory image in OEM firmware web-gui.

¹ Didn't check to connect as I didn't even manage to connect on
  RE450v2 (AFAIU it requires disconnecting some resistors, which I was
  too much of a coward to do).  But given the similarities to v2 I
  think it's the same or very similar procedure (and most likely also
  the only way to debrick).

Signed-off-by: Andreas Wiese <aw-openwrt@meterriblecrew.net>
[remove dts-v1 and compatible in DTSI]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
  • Loading branch information
herrwiese authored and adschm committed May 31, 2020
1 parent 7e51313 commit c764c51
Show file tree
Hide file tree
Showing 8 changed files with 290 additions and 176 deletions.
201 changes: 27 additions & 174 deletions target/linux/ath79/dts/qca9563_tplink_re450-v2.dts
Original file line number Diff line number Diff line change
@@ -1,194 +1,47 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

#include "qca956x.dtsi"
#include "qca9563_tplink_re450.dtsi"

/ {
compatible = "tplink,re450-v2", "qca,qca9563";
model = "TP-Link RE450 v2";
};

chosen {
bootargs = "console=ttyS0,115200n8";
&partitions {
partition@0 {
label = "u-boot";
reg = <0x000000 0x020000>;
read-only;
};

aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
mdio-gpio0 = &mdio2;
partition@20000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x020000 0x5e0000>;
};

leds {
compatible = "gpio-leds";

led_power: power {
label = "tp-link:blue:power";
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
};

wlan2g {
label = "tp-link:blue:wlan2g";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy1tpt";
};

wlan5g {
label = "tp-link:blue:wlan5g";
gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};

lan_link {
label = "tp-link:green:lan_link";
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
};

lan_data {
label = "tp-link:green:lan_data";
gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
};

wps_blue {
label = "tp-link:blue:wps";
gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
};

wps_red {
label = "tp-link:red:wps";
gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
};
partition@600000 {
label = "partition-table";
reg = <0x600000 0x010000>;
read-only;
};

keys {
compatible = "gpio-keys";

reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};

power {
label = "Power button";
linux,code = <KEY_POWER>;
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};

leds {
label = "LED control button";
linux,code = <BTN_0>;
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};

wps {
label = "WPS button";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
info: partition@610000 {
label = "info";
reg = <0x610000 0x020000>;
read-only;
};

mdio2: mdio {
compatible = "virtual,mdio-gpio";

gpios = <&gpio 3 GPIO_ACTIVE_HIGH>, /* MDC */
<&gpio 4 GPIO_ACTIVE_HIGH>; /* MDIO */
#address-cells = <1>;
#size-cells = <0>;

phy4: ethernet-phy@4 {
reg = <4>;
device_type = "ethernet-phy";
reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
};
partition@630000 {
label = "config";
reg = <0x630000 0x020000>;
read-only;
};
};

&pcie {
status = "okay";
};

&uart {
status = "okay";
};

&gpio {
status = "okay";
};

&spi {
status = "okay";

num-cs = <1>;

flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "u-boot";
reg = <0x000000 0x020000>;
read-only;
};

partition@20000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x020000 0x5e0000>;
};

partition@600000 {
label = "partition-table";
reg = <0x600000 0x010000>;
read-only;
};

info: partition@610000 {
label = "info";
reg = <0x610000 0x020000>;
read-only;
};

partition@630000 {
label = "config";
reg = <0x630000 0x020000>;
read-only;
};

art: partition@7f0000 {
label = "art";
reg = <0x7f0000 0x010000>;
read-only;
};
};
art: partition@7f0000 {
label = "art";
reg = <0x7f0000 0x010000>;
read-only;
};
};

&eth0 {
status = "okay";

phy-mode = "sgmii";
phy-handle = <&phy4>;

mtd-mac-address = <&info 0x8>;
};

&wmac {
status = "okay";

mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&info 0x8>;
};
53 changes: 53 additions & 0 deletions target/linux/ath79/dts/qca9563_tplink_re450-v3.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

#include "qca9563_tplink_re450.dtsi"

/ {
compatible = "tplink,re450-v3", "qca,qca9563";
model = "TP-Link RE450 v3";
};

&partitions {
partition@0 {
label = "u-boot";
reg = <0x000000 0x020000>;
read-only;
};

info: partition@20000 {
label = "info";
reg = <0x020000 0x002000>;
read-only;
};

partition@22000 {
label = "partition-table";
reg = <0x022000 0x002000>;
read-only;
};

partition@24000 {
label = "info2";
reg = <0x024000 0x00a000>;
read-only;
};

partition@2e000 {
label = "config";
reg = <0x02e000 0x022000>;
read-only;
};

partition@50000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x050000 0x7a0000>;
};

art: partition@7f0000 {
label = "art";
reg = <0x7f0000 0x010000>;
read-only;
};
};
Loading

0 comments on commit c764c51

Please sign in to comment.