From a2565f01920406e6f8b8cc2722bb3e22bb354abe Mon Sep 17 00:00:00 2001 From: Ewan Parker Date: Sat, 31 Oct 2020 09:29:54 +0000 Subject: [PATCH] ramips: add support for Hi-Link HLK-7688A 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 [add WLAN to 01_leds] Signed-off-by: Adrian Schmutzler Signed-off-by: Tianling Shen --- .../ramips/dts/mt7628an_hilink_hlk-7688a.dts | 115 ++++++++++++++++++ target/linux/ramips/image/mt76x8.mk | 8 ++ .../mt76x8/base-files/etc/board.d/01_leds | 3 + .../mt76x8/base-files/etc/board.d/02_network | 2 + 4 files changed, 128 insertions(+) create mode 100644 target/linux/ramips/dts/mt7628an_hilink_hlk-7688a.dts 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 index 0000000000..969488e416 --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_hilink_hlk-7688a.dts @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "mt7628an.dtsi" + +#include +#include + +/ { + 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 = ; + }; + }; + + 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>; + }; +}; + +ðernet { + mtd-mac-address = <&factory 0x28>; +}; + +&esw { + mediatek,portmap = <0x3e>; +}; + +&wmac { + status = "okay"; +}; diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 30f5a5e855..86310da175 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -163,6 +163,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 diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds index 9b2e6d32a2..8fb8f6648d 100755 --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/01_leds @@ -37,6 +37,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" diff --git a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network index 0051a9de8b..861224ac0b 100755 --- a/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network @@ -64,6 +64,7 @@ ramips_setup_interfaces() "1:lan" "0:wan" "6@eth0" ;; hilink,hlk-7628n|\ + hilink,hlk-7688a|\ hiwifi,hc5861b|\ skylab,skw92a|\ tplink,archer-c20-v4|\ @@ -163,6 +164,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)