ath79: port HiWiFi HC6361 from ar71xx
authorYousong Zhou <yszhou4tech@gmail.com>
Sat, 16 Apr 2022 00:23:52 +0000 (00:23 +0000)
committerYousong Zhou <yszhou4tech@gmail.com>
Sat, 16 Apr 2022 01:27:09 +0000 (01:27 +0000)
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 <yszhou4tech@gmail.com>
target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts [new file with mode: 0644]
target/linux/ath79/generic/base-files/etc/board.d/01_leds
target/linux/ath79/generic/base-files/etc/board.d/02_network
target/linux/ath79/image/generic.mk

diff --git a/target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts b/target/linux/ath79/dts/ar9331_hiwifi_hc6361.dts
new file mode 100644 (file)
index 0000000..05d3f67
--- /dev/null
@@ -0,0 +1,156 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar9331.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       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 = <KEY_RESTART>;
+                       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 = <&reg_usb_vbus>;
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&eth0 {
+       status = "okay";
+
+       nvmem-cells = <&macaddr_bdinfo_18a>;
+       nvmem-cell-names = "mac-address-ascii";
+       mac-address-increment = <1>;
+};
+
+&eth1 {
+       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>;
+       };
+};
index 12a54f3bd5733ea5591b90fc46f76f805c0cfcef..24beb7a361c571543221a47ef8570709bd0b28bf 100644 (file)
@@ -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)
index 03e6434422b09bb37a4e4d7aae4ec210cc456948..8f6063baef54d6863d41c8eba304ae64650de4cb 100644 (file)
@@ -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"
index dc85fb60bfb81297bc00f98ae7ceafd188cc1d63..80a581a72c7c8a7c2ad51280e56947440a4fd570 100644 (file)
@@ -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