diff mbox series

[OpenWrt-Devel] ath79: add support for GL.iNet GL-AR750S

Message ID mailman.12007.1546172823.2376.openwrt-devel@lists.openwrt.org
State Changes Requested
Delegated to: Mathias Kresin
Headers show
Series [OpenWrt-Devel] ath79: add support for GL.iNet GL-AR750S | expand

Commit Message

Thomas Richard via openwrt-devel Dec. 30, 2018, 12:27 p.m. UTC
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
This patch adds supports for GL-AR750S.
Right now this patch only adds nor image generation.
NAND image generation is not supportet at the moment.

Specification:
- SOC: QCA9563 (775MHz)
- Flash: 16 MiB (W25Q128FVSG)
- RAM: 128 MiB DDR2
- Ethernet: 2x 1Gbps LAN + 1x 1Gbps WAN
- Wireless: 2.4GHz (bgn) and 5GHz (ac)
- USB: 1x USB 2.0 port
- Button: 1x switch button, 1x reset button
- LED: 3x LEDS (green)

Flash instruction:
- Set static ip to 192.168.1.2
- Unplug the power cord
- Hold reset button
- Plug power back in
- Right led will flash 5 times
- Release reset button
- Browse to 192.168.1.1
- Choose sysupgrade image in NOR-flash section
- Press "update nor firmware"
- After successful transfer unplug network cable before device restarts

Signed-off-by: Christoph Krapp <achterin@googlemail.com>
---
 .../ath79/base-files/etc/board.d/02_network   |   4 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   9 +-
 .../linux/ath79/dts/qca9563_glinet_ar750s.dts | 160 ++++++++++++++++++
 target/linux/ath79/image/generic.mk           |   9 +
 4 files changed, 178 insertions(+), 4 deletions(-)
 create mode 100644 target/linux/ath79/dts/qca9563_glinet_ar750s.dts

Comments

Mathias Kresin Dec. 30, 2018, 12:41 p.m. UTC | #1
Hey,

I stumbled of some more stuff. Comments inline.

Am So., 30. Dez. 2018 um 13:27 Uhr schrieb Christoph Krapp via
openwrt-devel <openwrt-devel@lists.openwrt.org>:
>
> The sender domain has a DMARC Reject/Quarantine policy which disallows
> sending mailing list messages using the original "From" header.
>
> To mitigate this problem, the original message has been wrapped
> automatically by the mailing list software.
>
>
> ---------- Forwarded message ----------
> From: Christoph Krapp <achterin@googlemail.com>
> To: openwrt-devel@lists.openwrt.org
> Cc:
> Bcc:
> Date: Sun, 30 Dec 2018 13:26:31 +0100
> Subject: [PATCH] ath79: add support for GL.iNet GL-AR750S
> This patch adds supports for GL-AR750S.
> Right now this patch only adds nor image generation.
> NAND image generation is not supportet at the moment.
>
> Specification:
> - SOC: QCA9563 (775MHz)
> - Flash: 16 MiB (W25Q128FVSG)
> - RAM: 128 MiB DDR2
> - Ethernet: 2x 1Gbps LAN + 1x 1Gbps WAN
> - Wireless: 2.4GHz (bgn) and 5GHz (ac)
> - USB: 1x USB 2.0 port
> - Button: 1x switch button, 1x reset button
> - LED: 3x LEDS (green)

The gl.Inet webpage mentions a " TF Card Slot (128GB Max.) " as well.
Any idea if it works and how it might be connected?

>
> Flash instruction:
> - Set static ip to 192.168.1.2
> - Unplug the power cord
> - Hold reset button
> - Plug power back in
> - Right led will flash 5 times
> - Release reset button
> - Browse to 192.168.1.1
> - Choose sysupgrade image in NOR-flash section
> - Press "update nor firmware"
> - After successful transfer unplug network cable before device restarts
>
> Signed-off-by: Christoph Krapp <achterin@googlemail.com>
> ---
>  .../ath79/base-files/etc/board.d/02_network   |   4 +
>  .../etc/hotplug.d/firmware/11-ath10k-caldata  |   9 +-
>  .../linux/ath79/dts/qca9563_glinet_ar750s.dts | 160 ++++++++++++++++++
>  target/linux/ath79/image/generic.mk           |   9 +
>  4 files changed, 178 insertions(+), 4 deletions(-)
>  create mode 100644 target/linux/ath79/dts/qca9563_glinet_ar750s.dts
>
> diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
> index 004ab59573..b9a0f356bf 100755
> --- a/target/linux/ath79/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/base-files/etc/board.d/02_network
> @@ -93,6 +93,10 @@ ath79_setup_interfaces()
>         glinet,gl-x750)
>                 ucidef_set_interfaces_lan_wan "eth1" "eth0"
>                 ;;
> +       glinet,ar750s)
> +               ucidef_add_switch "switch0" \
> +                       "0@eth0" "2:lan:2" "3:lan:1" "1:wan"
> +               ;;
>         nec,wg800hp)
>                 ucidef_add_switch "switch0" \
>                         "0@eth0" "2:lan" "3:lan" "4:lan" "1:wan"
> diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> index 53f57be824..2118d2b06b 100644
> --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> @@ -92,6 +92,11 @@ case "$FIRMWARE" in
>                 ath10kcal_extract "art" 20480 2116
>                 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1)
>                 ;;
> +       glinet,ar750s|\
> +       tplink,re450-v2)
> +               ath10kcal_extract "art" 20480 2116
> +               ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
> +               ;;
>         glinet,gl-x750)
>                 ath10kcal_extract "art" 20480 2116
>                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
> @@ -122,10 +127,6 @@ case "$FIRMWARE" in
>                 ath10kcal_extract "art" 20480 2116
>                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
>                 ;;
> -       tplink,re450-v2)
> -               ath10kcal_extract "art" 20480 2116
> -               ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
> -               ;;
>         ubnt,unifiac-lite|\
>         ubnt,unifiac-mesh|\
>         ubnt,unifiac-mesh-pro|\
> diff --git a/target/linux/ath79/dts/qca9563_glinet_ar750s.dts b/target/linux/ath79/dts/qca9563_glinet_ar750s.dts
> new file mode 100644
> index 0000000000..eff7aafaf6
> --- /dev/null
> +++ b/target/linux/ath79/dts/qca9563_glinet_ar750s.dts
> @@ -0,0 +1,160 @@
> +// 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"
> +
> +/ {
> +       compatible = "glinet,ar750s", "qca,qca9563";
> +       model = "GL.iNet GL-AR750S";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200n8";
> +       };
> +
> +       aliases {
> +               led-boot = &power;
> +               led-failsafe = &power;
> +               led-running = &power;
> +               led-upgrade = &power;
> +       };
> +
> +       keys {
> +               compatible = "gpio-keys-polled";
> +               poll-interval = <20>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&jtag_disable_pins>;
> +
> +               button0 {
> +                       label = "reset";
> +                       linux,code = <KEY_RESTART>;
> +                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> +               };
> +
> +               button1 {
> +                       label = "button right";
> +                       linux,code = <BTN_0>;
> +                       gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
> +               };
> +

If you have to send a third version of this patch, please drop this blank line.

> +       };
> +
> +       leds {
> +               compatible = "gpio-leds";
> +
> +               power: power {
> +                       label = "gl-ar750s:green:power";
> +                       gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
> +                       default-state = "keep";
> +               };
> +
> +               usbpower {
> +                       label = "gl-ar750s:green:usbpower";
> +                       gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
> +               };

This still looks wrong to me. Since you mentioned only three leds in
the commit message, I assume it is a GPIO which need to be pulled to
enable or disable USB power. Please grep for gpio-export to see how it
is done right.

> +
> +               wlan2g {
> +                       label = "gl-ar750s:green:wlan2g";
> +                       gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
> +                       linux,default-trigger = "phy1tpt";
> +               };
> +
> +               wlan5g {
> +                       label = "gl-ar750s:green:wlan5g";
> +                       gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
> +                       linux,default-trigger = "phy0tpt";
> +               };
> +       };
> +};
> +
> +&spi {
> +       status = "okay";
> +       num-cs = <0>;
> +
> +       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 0x040000>;
> +                               read-only;
> +                       };
> +
> +                       partition@40000 {
> +                               label = "u-boot-env";
> +                               reg = <0x040000 0x010000>;
> +                       };
> +
> +                       art: partition@50000 {
> +                               label = "art";
> +                               reg = <0x050000 0x010000>;
> +                       };
> +
> +                       partition@60000 {
> +                               compatible = "denx,uimage";
> +                               label = "firmware";
> +                               reg = <0x060000 0xfa0000>;
> +                       };
> +

If you have to send a third version of this patch, please drop this blank line.

> +               };
> +       };
> +};
> +
> +&pcie {
> +       status = "okay";
> +};
> +
> +&uart {
> +       status = "okay";
> +};
> +
> +&usb0 {
> +       #address-cells = <1>;
> +       #size-cells = <0>;
> +       status = "okay";
> +
> +       hub_port: port@1 {
> +               reg = <1>;
> +               #trigger-source-cells = <0>;
> +       };
> +};
> +
> +&usb_phy0 {
> +       status = "okay";
> +};
> +
> +&mdio0 {
> +       status = "okay";
> +       phy-mask = <0>;
> +
> +       phy0: ethernet-phy@0 {
> +               reg = <0>;
> +               phy-mode = "sgmii";
> +               qca,ar8327-initvals = <
> +                       0x04 0x00080080 /* PORT0 PAD MODE CTRL */
> +                       0x7c 0x0000007e /* PORT0_STATUS */
> +               >;
> +       };
> +};
> +
> +&eth0 {
> +       status = "okay";
> +
> +       mtd-mac-address = <&art 0x0>;
> +       phy-handle = <&phy0>;
> +};
> +
> +&wmac {
> +       status = "okay";
> +       mtd-cal-data = <&art 0x1000>;
> +       mtd-mac-address = <&art 0x1002>;
> +};
> diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
> index b2f83ba58c..c61148d50e 100644
> --- a/target/linux/ath79/image/generic.mk
> +++ b/target/linux/ath79/image/generic.mk
> @@ -237,6 +237,15 @@ define Device/glinet_ar300m-nor
>  endef
>  TARGET_DEVICES += glinet_ar300m-nor
>
> +define Device/glinet_ar750s
> +  ATH_SOC := qca9563
> +  DEVICE_TITLE := GL.iNet GL-AR750S
> +  DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
> +  IMAGE_SIZE := 16000k
> +  SUPPORTED_DEVICES += gl-ar750s
> +endef
> +TARGET_DEVICES += glinet_ar750s
> +
>  define Device/glinet_gl-x750
>    ATH_SOC := qca9531
>    DEVICE_TITLE := GL.iNet GL-X750
> --
> 2.19.2
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
diff mbox series

Patch

diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index 004ab59573..b9a0f356bf 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -93,6 +93,10 @@  ath79_setup_interfaces()
 	glinet,gl-x750)
 		ucidef_set_interfaces_lan_wan "eth1" "eth0"
 		;;
+	glinet,ar750s)
+		ucidef_add_switch "switch0" \
+			"0@eth0" "2:lan:2" "3:lan:1" "1:wan"
+		;;
 	nec,wg800hp)
 		ucidef_add_switch "switch0" \
 			"0@eth0" "2:lan" "3:lan" "4:lan" "1:wan"
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 53f57be824..2118d2b06b 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -92,6 +92,11 @@  case "$FIRMWARE" in
 		ath10kcal_extract "art" 20480 2116
 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1)
 		;;
+	glinet,ar750s|\
+	tplink,re450-v2)
+		ath10kcal_extract "art" 20480 2116
+		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
+		;;
 	glinet,gl-x750)
 		ath10kcal_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
@@ -122,10 +127,6 @@  case "$FIRMWARE" in
 		ath10kcal_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
-	tplink,re450-v2)
-		ath10kcal_extract "art" 20480 2116
-		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
-		;;
 	ubnt,unifiac-lite|\
 	ubnt,unifiac-mesh|\
 	ubnt,unifiac-mesh-pro|\
diff --git a/target/linux/ath79/dts/qca9563_glinet_ar750s.dts b/target/linux/ath79/dts/qca9563_glinet_ar750s.dts
new file mode 100644
index 0000000000..eff7aafaf6
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_glinet_ar750s.dts
@@ -0,0 +1,160 @@ 
+// 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"
+
+/ {
+	compatible = "glinet,ar750s", "qca,qca9563";
+	model = "GL.iNet GL-AR750S";
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	aliases {
+		led-boot = &power;
+		led-failsafe = &power;
+		led-running = &power;
+		led-upgrade = &power;
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <20>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&jtag_disable_pins>;
+
+		button0 {
+			label = "reset";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+		};
+
+		button1 {
+			label = "button right";
+			linux,code = <BTN_0>;
+			gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+		};
+
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		power: power {
+			label = "gl-ar750s:green:power";
+			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+			default-state = "keep";
+		};
+
+		usbpower {
+			label = "gl-ar750s:green:usbpower";
+			gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan2g {
+			label = "gl-ar750s:green:wlan2g";
+			gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy1tpt";
+		};
+
+		wlan5g {
+			label = "gl-ar750s:green:wlan5g";
+			gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "phy0tpt";
+		};
+	};
+};
+
+&spi {
+	status = "okay";
+	num-cs = <0>;
+
+	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 0x040000>;
+				read-only;
+			};
+
+			partition@40000 {
+				label = "u-boot-env";
+				reg = <0x040000 0x010000>;
+			};
+
+			art: partition@50000 {
+				label = "art";
+				reg = <0x050000 0x010000>;
+			};
+
+			partition@60000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x060000 0xfa0000>;
+			};
+
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&uart {
+	status = "okay";
+};
+
+&usb0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	hub_port: port@1 {
+		reg = <1>;
+		#trigger-source-cells = <0>;
+	};
+};
+
+&usb_phy0 {
+	status = "okay";
+};
+
+&mdio0 {
+	status = "okay";
+	phy-mask = <0>;
+
+	phy0: ethernet-phy@0 {
+		reg = <0>;
+		phy-mode = "sgmii";
+		qca,ar8327-initvals = <
+			0x04 0x00080080 /* PORT0 PAD MODE CTRL */
+			0x7c 0x0000007e /* PORT0_STATUS */
+		>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	mtd-mac-address = <&art 0x0>;
+	phy-handle = <&phy0>;
+};
+
+&wmac {
+	status = "okay";
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&art 0x1002>;
+};
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index b2f83ba58c..c61148d50e 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -237,6 +237,15 @@  define Device/glinet_ar300m-nor
 endef
 TARGET_DEVICES += glinet_ar300m-nor
 
+define Device/glinet_ar750s
+  ATH_SOC := qca9563
+  DEVICE_TITLE := GL.iNet GL-AR750S
+  DEVICE_PACKAGES := kmod-usb2 kmod-ath10k-ct ath10k-firmware-qca988x-ct
+  IMAGE_SIZE := 16000k
+  SUPPORTED_DEVICES += gl-ar750s
+endef
+TARGET_DEVICES += glinet_ar750s
+
 define Device/glinet_gl-x750
   ATH_SOC := qca9531
   DEVICE_TITLE := GL.iNet GL-X750