From 6fa94d5e8f8d008dc55eae02ca1b21199d9a8915 Mon Sep 17 00:00:00 2001 From: Piotr Dymacz Date: Sat, 9 Mar 2019 16:31:17 +0100 Subject: [PATCH] ath79: add support for YunCore A770 YunCore A770 is a ceiling AC750 AP with 2 Fast Ethernet ports, PoE (802.3at) support, based on QCA9531 + QCA9887. Specification: - 650/597/216 MHz (CPU/DDR/AHB) - 128 MB of RAM (DDR2) - 16 MB of flash (SPI NOR) - 2x 10/100 Mbps Ethernet (PoE 802.3at support in WAN port) - 2T2R 2.4 GHz (QCA9531), with ext. PA and LNA - 1T1R 5 GHz (QCA9887), with ext. FEM (SKY85728-11) - 2x regular LED, 1x RGB LED (all driven by GPIO) - 1x button (reset) - DC jack for main power input (12 V) - UART header on PCB Flash instruction: 1. First, gain root access to the device, following below steps: - Login into web gui (default password/IP: admin/192.168.188.253). - Go to 'Advanced' -> 'Management' -> 'System' and download backup of configuration (bakfile.bin). - Open the file as tar.gz archive, edit/update 'shadow' file and change hash of root password to something known. - Repack the archive, rename it back to 'bakfile.bin' and use to restore configuration of the device. - After that, device will reboot and can be accessed over SSH. 2. Then, install OpenWrt: - Login over SSH and issue command: fw_setenv bootcmd "bootm 0x9f050000 || bootm 0x9fe80000" - Upload 'sysupgrade' image and install it (only if previous command succeeded) with command: 'sysupgrade -n -F openwrt-...'. Signed-off-by: Piotr Dymacz --- .../ath79/base-files/etc/board.d/01_leds | 4 + .../ath79/base-files/etc/board.d/02_network | 3 +- .../etc/hotplug.d/firmware/11-ath10k-caldata | 3 + .../linux/ath79/dts/qca9531_yuncore_a770.dts | 126 ++++++++++++++++++ target/linux/ath79/image/generic.mk | 8 ++ 5 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 target/linux/ath79/dts/qca9531_yuncore_a770.dts diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds index 0fa4bc73bb..a7b6a65e0f 100755 --- a/target/linux/ath79/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/base-files/etc/board.d/01_leds @@ -171,6 +171,10 @@ wd,mynet-wifi-rangeextender) ucidef_set_led_rssi "rssimedium" "RSSIMED" "$boardname:blue:rssi-med" "wlan0" "33" "100" ucidef_set_led_rssi "rssihigh" "RSSIMAX" "$boardname:blue:rssi-max" "wlan0" "66" "100" ;; +yuncore,a770) + ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0" + ucidef_set_led_switch "lan" "LAN" "$boardname:green:lan" "switch0" "0x10" + ;; esac board_config_flush 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 9a7f2d6472..76a1ffba40 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -100,7 +100,8 @@ ath79_setup_interfaces() glinet,gl-x750|\ tplink,tl-wr810n-v1|\ tplink,tl-wr810n-v2|\ - ubnt,routerstation) + ubnt,routerstation|\ + yuncore,a770) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; glinet,gl-ar750s) 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 096064b7ce..53128cad65 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 @@ -150,6 +150,9 @@ case "$FIRMWARE" in ubnt,unifiac-pro) ath10kcal_extract "EEPROM" 20480 2116 ;; + yuncore,a770) + ath10kcal_extract "art" 20480 2116 + ;; esac ;; "ath10k/pre-cal-pci-0000:00:00.0.bin") diff --git a/target/linux/ath79/dts/qca9531_yuncore_a770.dts b/target/linux/ath79/dts/qca9531_yuncore_a770.dts new file mode 100644 index 0000000000..18ad6307a1 --- /dev/null +++ b/target/linux/ath79/dts/qca9531_yuncore_a770.dts @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca953x.dtsi" + +/ { + model = "YunCore A770"; + compatible = "yuncore,a770", "qca,qca9533"; + + aliases { + led-boot = &status; + led-failsafe = &status; + led-running = &status; + led-upgrade = &status; + }; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + lan { + label = "a770:green:lan"; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + }; + + status: status { + label = "a770:green:status"; + gpios = <&gpio 12 GPIO_ACTIVE_LOW>; + default-state = "keep"; + }; + + wan { + label = "a770:green:wan"; + gpios = <&gpio 4 GPIO_ACTIVE_LOW>; + }; + + wlan2g { + label = "a770:red:wlan2g"; + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + }; +}; + +ð0 { + status = "okay"; + + phy-handle = <&swphy4>; + mtd-mac-address = <&art 0x0>; +}; + +ð1 { + mtd-mac-address = <&art 0x6>; +}; + +&pcie0 { + 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 0x040000>; + read-only; + }; + + partition@40000 { + label = "u-boot-env"; + reg = <0x040000 0x010000>; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x050000 0xfa0000>; + }; + + art: partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&uart { + status = "okay"; +}; + +&wmac { + status = "okay"; + + mtd-cal-data = <&art 0x1000>; +}; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index fa504ee0fc..c68e6a4a90 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -556,3 +556,11 @@ define Device/xiaomi_mi-router-4q IMAGE_SIZE := 14336k endef TARGET_DEVICES += xiaomi_mi-router-4q + +define Device/yuncore_a770 + ATH_SOC := qca9531 + DEVICE_TITLE := YunCore A770 + DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9887-ct + IMAGE_SIZE := 16000k +endef +TARGET_DEVICES += yuncore_a770