Просмотр исходного кода

ath79: add support for the TP-LINK CPE220 V3

This adds support for a popular low-cost 2.4GHz N based AP

Specifications:
SoC: Qualcomm Atheros QCA9533 (650MHz)
RAM: 64MB
Storage: 8 MB SPI NOR
Wireless: 2.4GHz N based built into SoC 2x2
Ethernet: 2x 100/10 Mbps, integrated into SoC

Installation:
Flash factory image through stock firmware WEB UI
or through TFTP
To get to TFTP recovery just hold reset button while powering on for
around 4-5 seconds and release.
Rename factory image to recovery.bin
Stock TFTP server IP:192.168.0.100
Stock device TFTP adress:192.168.0.254

This also applies some minor changes to the common DTSI:
- use &wmac for label-mac-device, as this one is actually set up in
  common DTSI
- move &eth0 to parent DTSI
- fix several leading spaces, added/removed newlines

Signed-off-by: Andrew Cameron <[email protected]>
[DTS style fixes/improvements, updated commit message/title]
Signed-off-by: Adrian Schmutzler <[email protected]>
Andrew Cameron 6 лет назад
Родитель
Сommit
bae0d47f2e

+ 5 - 125
target/linux/ath79/dts/qca9533_tplink_cpe210.dtsi

@@ -1,135 +1,15 @@
 // 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 "qca9533_tplink_cpexxx.dtsi"
 
-#include "qca953x.dtsi"
-
-/ {
-	chosen {
-		bootargs = "console=ttyS0,115200n8";
-	};
-
-	aliases {
-		led-boot = &led_system;
-		led-failsafe = &led_system;
-		led-running = &led_system;
-		led-upgrade = &led_system;
-		label-mac-device = &eth0;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		lan {
-			label = "tp-link:green:lan";
-			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
-		};
-
-		link1 {
-			label = "tp-link:green:link1";
-			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-		};
-
-		link2 {
-			label = "tp-link:green:link2";
-			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
-		};
-
-		link3 {
-			label = "tp-link:green:link3";
-			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-		};
-
-		led_system: link4 {
-			label = "tp-link:green:link4";
-			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	keys {
-		compatible = "gpio-keys";
-
-		reset_button {
-			label = "Reset button";
-			linux,code = <KEY_RESTART>;
-			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
-		};
-	};
-};
-
-&uart {
-	status = "okay";
-};
-
-&spi {
-	status = "okay";
-	num-cs = <1>;
-
-	flash@0 {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <25000000>;
-
-		partitions {
-			compatible = "fixed-partitions";
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			uboot: partition@0 {
-				label = "u-boot";
-				reg = <0x000000 0x020000>;
-				read-only;
-			};
-
-			partition@20000 {
-				label = "partition-table";
-				reg = <0x020000 0x10000>;
-				read-only;
-			};
-
-			info: partition@30000 {
-				label = "info";
-				reg = <0x030000 0x10000>;
-				read-only;
-			};
-
-			partition@40000 {
-				label = "firmware";
-				reg = <0x040000 0x780000>;
-				compatible = "tplink,firmware";
-			};
-
-			config: partition@7c0000 {
-				label = "config";
-				reg = <0x7c0000 0x30000>;
-				read-only;
-			};
-
-			art: partition@7f0000 {
-				label = "art";
-				reg = <0x7f0000 0x10000>;
-				read-only;
-			};
-		};
+&leds {
+	lan {
+		label = "tp-link:green:lan";
+		gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
 	};
 };
 
-&eth0 {
-	status = "okay";
-	phy-handle = <&swphy4>;
-	mtd-mac-address = <&info 0x8>;
-};
-
 &eth1 {
 	compatible = "syscon", "simple-mfd";
 };
-
-&wmac {
-	status = "okay";
-	mtd-cal-data = <&art 0x1000>;
-	mtd-mac-address = <&info 0x8>;
-};

+ 33 - 0
target/linux/ath79/dts/qca9533_tplink_cpe220-v3.dts

@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "qca9533_tplink_cpexxx.dtsi"
+
+/ {
+	compatible = "tplink,cpe220-v3", "qca,qca9533";
+	model = "TP-Link CPE220 v3";
+};
+
+&leds {
+	lan0 {
+		label = "tp-link:green:lan0";
+		gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+	};
+
+	lan1 {
+		label = "tp-link:green:lan1";
+		gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+	};
+};
+
+&eth1 {
+	status = "okay";
+
+	mtd-mac-address = <&info 0x8>;
+
+	gmac-config {
+		device = <&gmac>;
+		switch-phy-swap = <0>;
+		switch-only-mode = <1>;
+	};
+};

+ 130 - 0
target/linux/ath79/dts/qca9533_tplink_cpexxx.dtsi

@@ -0,0 +1,130 @@
+// 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 "qca953x.dtsi"
+
+/ {
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	aliases {
+		led-boot = &led_link4;
+		led-failsafe = &led_link4;
+		led-running = &led_link4;
+		led-upgrade = &led_link4;
+		label-mac-device = &wmac;
+	};
+
+	leds: leds {
+		compatible = "gpio-leds";
+
+		link1 {
+			label = "tp-link:green:link1";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		link2 {
+			label = "tp-link:green:link2";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+
+		link3 {
+			label = "tp-link:green:link3";
+			gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+		};
+
+		led_link4: link4 {
+			label = "tp-link:green:link4";
+			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset_button {
+			label = "Reset button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&spi {
+	status = "okay";
+
+	num-cs = <1>;
+
+	flash@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			uboot: partition@0 {
+				label = "u-boot";
+				reg = <0x000000 0x020000>;
+				read-only;
+			};
+
+			partition@20000 {
+				label = "partition-table";
+				reg = <0x020000 0x010000>;
+				read-only;
+			};
+
+			info: partition@30000 {
+				label = "info";
+				reg = <0x030000 0x010000>;
+				read-only;
+			};
+
+			partition@40000 {
+				label = "firmware";
+				reg = <0x040000 0x780000>;
+				compatible = "tplink,firmware";
+			};
+
+			config: partition@7c0000 {
+				label = "config";
+				reg = <0x7c0000 0x030000>;
+				read-only;
+			};
+
+			art: partition@7f0000 {
+				label = "art";
+				reg = <0x7f0000 0x010000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&wmac {
+	status = "okay";
+
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&info 0x8>;
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-handle = <&swphy4>;
+
+	mtd-mac-address = <&info 0x8>;
+};

+ 1 - 0
target/linux/ath79/generic/base-files/etc/board.d/01_leds

@@ -173,6 +173,7 @@ tplink,archer-d50-v1)
 	;;
 tplink,cpe210-v1|\
 tplink,cpe220-v2|\
+tplink,cpe220-v3|\
 tplink,cpe510-v1|\
 tplink,wbs210-v2)
 	ucidef_set_led_netdev "lan0" "LAN0" "tp-link:green:lan0" "eth1"

+ 1 - 0
target/linux/ath79/generic/base-files/etc/board.d/02_network

@@ -89,6 +89,7 @@ ath79_setup_interfaces()
 	comfast,cf-e314n-v2|\
 	tplink,cpe210-v1|\
 	tplink,cpe220-v2|\
+	tplink,cpe220-v3|\
 	tplink,cpe510-v1|\
 	tplink,wbs210-v2|\
 	ubnt,nanostation-m|\

+ 1 - 0
target/linux/ath79/generic/base-files/etc/board.d/03_gpio_switches

@@ -44,6 +44,7 @@ tplink,archer-c25-v1)
 	;;
 tplink,cpe210-v1|\
 tplink,cpe220-v2|\
+tplink,cpe220-v3|\
 tplink,cpe510-v1|\
 tplink,wbs210-v2)
 	ucidef_add_gpio_switch "poe_passthrough" "PoE Passthrough" "20"

+ 12 - 0
target/linux/ath79/image/generic-tp-link.mk

@@ -240,6 +240,18 @@ define Device/tplink_cpe220-v2
 endef
 TARGET_DEVICES += tplink_cpe220-v2
 
+define Device/tplink_cpe220-v3
+  $(Device/tplink-safeloader)
+  ATH_SOC := qca9533
+  IMAGE_SIZE := 7680k
+  DEVICE_MODEL := CPE220
+  DEVICE_VARIANT := v3
+  DEVICE_PACKAGES := rssileds
+  TPLINK_BOARD_ID := CPE220V3
+  LOADER_TYPE := elf
+endef
+TARGET_DEVICES += tplink_cpe220-v3
+
 define Device/tplink_cpe510-v1
   $(Device/tplink-loader-okli)
   ATH_SOC := ar9344

+ 41 - 0
tools/firmware-utils/src/tplink-safeloader.c

@@ -271,6 +271,47 @@ static struct device_info boards[] = {
 		.last_sysupgrade_partition = "support-list",
 	},
 
+	/** Firmware layout for the CPE220 V3 */
+	{
+		.id     = "CPE220V3",
+		.vendor = "CPE220(TP-LINK|UN|N300-2|00000000):3.0\r\n",
+		.support_list =
+			"SupportList:\r\n"
+			"CPE220(TP-LINK|EU|N300-2|00000000):3.0\r\n"
+			"CPE220(TP-LINK|EU|N300-2|45550000):3.0\r\n"
+			"CPE220(TP-LINK|EU|N300-2|55530000):3.0\r\n"
+			"CPE220(TP-LINK|UN|N300-2|00000000):3.0\r\n"
+			"CPE220(TP-LINK|UN|N300-2|45550000):3.0\r\n"
+			"CPE220(TP-LINK|UN|N300-2|55530000):3.0\r\n"
+			"CPE220(TP-LINK|US|N300-2|55530000):3.0\r\n"
+			"CPE220(TP-LINK|UN|N300-2):3.0\r\n"
+			"CPE220(TP-LINK|EU|N300-2):3.0\r\n"
+			"CPE220(TP-LINK|US|N300-2):3.0\r\n",
+		.support_trail = '\xff',
+		.soft_ver = NULL,
+
+		.partitions = {
+			{"fs-uboot", 0x00000, 0x20000},
+			{"partition-table", 0x20000, 0x02000},
+			{"default-mac", 0x30000, 0x00020},
+			{"product-info", 0x31100, 0x00100},
+			{"device-info", 0x31400, 0x00400},
+			{"signature", 0x32000, 0x00400},
+			{"device-id", 0x33000, 0x00100},
+			{"firmware", 0x40000, 0x770000},
+			{"soft-version", 0x7b0000, 0x00100},
+			{"support-list", 0x7b1000, 0x01000},
+			{"user-config", 0x7c0000, 0x10000},
+			{"default-config", 0x7d0000, 0x10000},
+			{"log", 0x7e0000, 0x10000},
+			{"radio", 0x7f0000, 0x10000},
+			{NULL, 0, 0}
+		},
+
+		.first_sysupgrade_partition = "os-image",
+		.last_sysupgrade_partition = "support-list",
+	},
+
 	/** Firmware layout for the CPE510/520 V1 */
 	{
 		.id	= "CPE510",