ramips: add support for Hi-Link HLK-7688A
authorEwan Parker <ewan@ewan.cc>
Sat, 31 Oct 2020 09:29:54 +0000 (09:29 +0000)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Fri, 5 Feb 2021 13:54:47 +0000 (14:54 +0100)
Specifications:

  - SoC: MediaTek MT7688AN
  - RAM: 128 MB
  - Flash: 32 MB
  - Ethernet: 5x 10/100 (1x WAN, 4x LAN)
  - Wireless: built in 2.4GHz (bgn)
  - USB: 1x USB 2.0 port
  - Buttons: 1x Reset
  - LEDs: 1x (WiFi)

Flash instructions:

  - Configure TFTP server with IP address 10.10.10.3
  - Name the firmware file as firmware.bin
  - Connect any Ethernet port to the TFTP server's LAN
  - Choose option 2 in U-Boot
  - Alternatively choose option 7 to upload firmware to the built-in
    web server

MAC addresses as verified by OEM firmware:

  use   address   source
  2g    *:XX      factory 0x4
  LAN   *:XX+1    factory 0x28
  WAN   *:XX+1    factory 0x2e

Notes:

This board is ostensibly a module containing the MediaTek MT7688AN SoC,
128 MB DDR2 SDRAM and 32 MB flash storage.  The SoC can be operated in
IoT Gateway Mode or IoT Device Mode.

From some vendors the U-Boot that comes installed operates on UART 2
which is inaccessible in gateway mode and operates unreliably in the
Linux kernel when using more than 64 MB of RAM.  For those, updating
U-Boot is recommended.

Signed-off-by: Ewan Parker <ewan@ewan.cc>
[add WLAN to 01_leds]
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ramips/dts/mt7628an_hilink_hlk-7688a.dts [new file with mode: 0644]
target/linux/ramips/image/mt76x8.mk
target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds
target/linux/ramips/mt76x8/base-files/etc/board.d/02_network

diff --git a/target/linux/ramips/dts/mt7628an_hilink_hlk-7688a.dts b/target/linux/ramips/dts/mt7628an_hilink_hlk-7688a.dts
new file mode 100644 (file)
index 0000000..969488e
--- /dev/null
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "hilink,hlk-7688a", "mediatek,mt7628an-soc";
+       model = "Hi-Link HLK-7688A";
+
+       aliases {
+               led-boot = &led_wlan;
+               led-failsafe = &led_wlan;
+               led-upgrade = &led_wlan;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_wlan: wlan {
+                       label = "green:wlan";
+                       gpios = <&gpio 44 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "wdt", "wled_an";
+               function = "gpio";
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&i2c {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x30000>;
+                               read-only;
+                       };
+
+                       partition@30000 {
+                               label = "u-boot-env";
+                               reg = <0x30000 0x10000>;
+                               read-only;
+                       };
+
+                       factory: partition@40000 {
+                               label = "factory";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               compatible = "denx,uimage";
+                               label = "firmware";
+                               reg = <0x50000 0x1fb0000>;
+                       };
+               };
+       };
+
+       spidev@1 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "linux,spidev";
+               reg = <1>;
+               spi-max-frequency = <40000000>;
+       };
+};
+
+&ethernet {
+       mtd-mac-address = <&factory 0x28>;
+};
+
+&esw {
+       mediatek,portmap = <0x3e>;
+};
+
+&wmac {
+       status = "okay";
+};
index 00593dd6f50650694e8ed30b2795db1dbeffcc31..00976f604489c784ba1c67aeeeea509f3ef8335a 100644 (file)
@@ -135,6 +135,14 @@ define Device/hilink_hlk-7628n
 endef
 TARGET_DEVICES += hilink_hlk-7628n
 
+define Device/hilink_hlk-7688a
+  IMAGE_SIZE := 32448k
+  DEVICE_VENDOR := Hi-Link
+  DEVICE_MODEL := HLK-7688A
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport
+endef
+TARGET_DEVICES += hilink_hlk-7688a
+
 define Device/hiwifi_hc5661a
   IMAGE_SIZE := 15808k
   DEVICE_VENDOR := HiWiFi
index 31bd9e05b18c84f30d18c807e287d29b20c83c1c..bcbc2ed1e66fbaa18e79760db62a2c9623f335eb 100755 (executable)
@@ -33,6 +33,9 @@ hilink,hlk-7628n|\
 skylab,skw92a)
        ucidef_set_led_netdev "wifi_led" "wifi" "green:wlan" "wlan0"
        ;;
+hilink,hlk-7688a)
+       ucidef_set_led_wlan "wlan" "WLAN" "green:wlan" "phy0tpt"
+       ;;
 hiwifi,hc5661a|\
 hiwifi,hc5761a)
        ucidef_set_led_switch "internet" "internet" "blue:internet" "switch0" "0x10"
index fcc2630b3fec00df06e301b92a7fc6b9561ccb4e..8bbcbb2190f970b261de13fd8bdc1226d7f59f24 100755 (executable)
@@ -63,6 +63,7 @@ ramips_setup_interfaces()
                        "1:lan" "0:wan" "6@eth0"
                ;;
        hilink,hlk-7628n|\
+       hilink,hlk-7688a|\
        hiwifi,hc5861b|\
        skylab,skw92a|\
        tplink,archer-c20-v4|\
@@ -166,6 +167,7 @@ ramips_setup_macs()
                lan_mac=$wan_mac
                ;;
        cudy,wr1000|\
+       hilink,hlk-7688a|\
        wavlink,wl-wn577a2)
                wan_mac=$(mtd_get_mac_binary factory 0x2e)
                label_mac=$(mtd_get_mac_binary factory 0x4)