From 5c147d36ba7e998aee7ff4f81553b935bcfc5383 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Sat, 16 Apr 2022 00:23:52 +0000 Subject: [PATCH] ath79: port HiWiFi HC6361 from ar71xx The device was added for ar71xx target and dropped during the ath79 transition, mainly because of the ascii mac address stored in bdinfo partition Device page, http://wiki.openwrt.org/toh/hiwifi/hc6361 The vendor u-boot image accepts sysupgrade.bin image with specific requirements, including having squashfs signature "hsqs" at file offset 0x140000. This is not possible now that OpenWrt kernel image is at least 2MB with the signature at offset 0x240000. Installation of current build of OpenWrt now requires a bootstrap step of installing an earlier version first. - If the vendor u-boot accepts sysupgrade image, hc6361 image of LEDE release should work - If the vendor u-boot accepts only verified flashsmt image, install the one in the above device page. The image is based on Barrier Breaker SHA256SUM of the flashsmt image 81b193b95ea5f8e5c30cd62fa9facf275f39233be4fdeed7038f3deed2736156 After the bootstrap step, current build of OpenWrt can be installed there fine. Signed-off-by: Yousong Zhou --- .../linux/ath79/dts/ar9331_hiwifi_hc6361.dts | 156 ++++++++++++++++++ .../generic/base-files/etc/board.d/01_leds | 4 + .../generic/base-files/etc/board.d/02_network | 1 + target/linux/ath79/image/generic.mk | 12 ++ 4 files changed, 173 insertions(+) create mode 100644 target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts diff --git a/target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts b/target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts new file mode 100644 index 0000000000..05d3f6730e --- /dev/null +++ b/target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "ar9331.dtsi" + +#include +#include + +/ { + model = "HiWiFi HC6361"; + compatible = "hiwifi,hc6361", "qca,ar9331"; + + aliases { + serial0 = &uart; + led-boot = &led_system; + led-failsafe = &led_system; + led-running = &led_system; + led-upgrade = &led_system; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led_system: system { + label = "blue:system"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + wlan { + label = "blue:wlan"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + wan { + label = "blue:wan"; + gpios = <&gpio 27 GPIO_ACTIVE_LOW>; + }; + }; + + reg_usb_vbus: regulator { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + gpio = <&gpio 20 GPIO_ACTIVE_HIGH>; + }; +}; + +&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>; + + uboot: partition@0 { + reg = <0x0 0x10000>; + label = "u-boot"; + read-only; + }; + + bdinfo: partition@10000 { + reg = <0x10000 0x10000>; + label = "bdinfo"; + read-only; + }; + + firmware: partition@20000 { + compatible = "denx,uimage"; + reg = <0x20000 0xfc0000>; + label = "firmware"; + }; + + backup: partition@fe0000 { + reg = <0xfe0000 0x10000>; + label = "backup"; + read-only; + }; + + art: partition@ff0000 { + reg = <0xff0000 0x10000>; + label = "art"; + read-only; + }; + }; + }; +}; + +&gpio { + status = "okay"; +}; + +&uart { + status = "okay"; +}; + +&usb { + status = "okay"; + dr_mode = "host"; + vbus-supply = <®_usb_vbus>; +}; + +&usb_phy { + status = "okay"; +}; + +ð0 { + status = "okay"; + + nvmem-cells = <&macaddr_bdinfo_18a>; + nvmem-cell-names = "mac-address-ascii"; + mac-address-increment = <1>; +}; + +ð1 { + status = "okay"; + + nvmem-cells = <&macaddr_bdinfo_18a>; + nvmem-cell-names = "mac-address-ascii"; +}; + +&wmac { + status = "okay"; + mtd-cal-data = <&art 0x1000>; + + nvmem-cells = <&macaddr_bdinfo_18a>; + nvmem-cell-names = "mac-address-ascii"; + mac-address-increment = <2>; +}; + +&bdinfo { + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_bdinfo_18a: macaddr@18a { + reg = <0x18a 0x11>; + }; +}; diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds index 12a54f3bd5..24beb7a361 100644 --- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds @@ -250,6 +250,10 @@ joyit,jt-or750i|\ yuncore,xd3200) ucidef_set_led_default "ath10k" "ath10k-disable" "ath10k-phy0" "0" ;; +hiwifi,hc6361) + ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth1" + ucidef_set_led_wlan "wlan" "WLAN" "blue:wlan" "phy0tpt" + ;; meraki,mr12|\ tplink,cpe210-v2|\ tplink,cpe210-v3) diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network index 03e6434422..8f6063baef 100644 --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network @@ -504,6 +504,7 @@ ath79_setup_interfaces() ucidef_add_switch "switch0" \ "0@eth0" "1:lan" "2:lan" ;; + hiwifi,hc6361|\ xiaomi,mi-router-4q|\ zbtlink,zbt-wd323) ucidef_set_interface_wan "eth1" diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index dc85fb60bf..80a581a72c 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -1387,6 +1387,18 @@ define Device/hak5_wifi-pineapple-nano endef TARGET_DEVICES += hak5_wifi-pineapple-nano +define Device/hiwifi_hc6361 + SOC := ar9331 + DEVICE_VENDOR := HiWiFi + DEVICE_MODEL := HC6361 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-chipidea2 kmod-usb-storage \ + kmod-fs-ext4 kmod-nls-iso8859-1 e2fsprogs + BOARDNAME := HiWiFi-HC6361 + KERNEL := kernel-bin | append-dtb | lzma | uImage lzma | pad-to $$(BLOCKSIZE) + IMAGE_SIZE := 16128k +endef +TARGET_DEVICES += hiwifi_hc6361 + define Device/iodata_etg3-r SOC := ar9342 DEVICE_VENDOR := I-O DATA