123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350 |
- From e78d1a06c8a47be9ea5a306bfb43f3d7ceb89646 Mon Sep 17 00:00:00 2001
- From: Chukun Pan <[email protected]>
- Date: Sun, 21 May 2023 23:00:16 +0800
- Subject: [PATCH] mediatek: filogic: add H3C Magic NX30 Pro support
- Hardware specification:
- SoC: MediaTek MT7981B 2x A53
- Flash: W25N01GVZEIG 128MB
- RAM: NT5CB128M16JR-FL 256MB
- Ethernet: 4x 10/100/1000 Mbps
- Switch: MediaTek MT7531AE
- WiFi: MediaTek MT7976C
- Button: Reset, WPS
- Power: DC 12V 1A
- Flash instructions:
- 1. PC run command: "telnet 192.168.124.1 99"
- Username: H3C, password is the web login
- password of the router.
- 2. Download preloader.bin and bl31-uboot.fip
- 3. PC run command: "python3 -m http.server 80"
- 4. Download files in the telnet window:
- "wget http://192.168.124.xx/xxx.bin"
- Replace xx with your PC's IP and
- the preloader.bin and bl31-uboot.fip.
- 5. Flushing openwrt's uboot:
- "mtd write xxx-preloader.bin BL2"
- "mtd write xxx-bl31-uboot.fip FIP"
- 6. Connect to the router via the Lan port,
- set a static ip of your PC.
- (ip 192.168.1.254, gateway 192.168.1.1)
- 7. Download initramfs image, reboot router,
- waiting for tftp recovery to complete.
- 8. After openwrt boots up, perform sysupgrade.
- Note:
- 1. The u-boot-env partition on mtd is empty,
- OEM stores their env on ubi:u-boot-env.
- 2. Back up all mtd partitions before flashing.
- Signed-off-by: Chukun Pan <[email protected]>
- ---
- .../dts/mt7981b-h3c-magic-nx30-pro.dts | 239 ++++++++++++++++++
- .../filogic/base-files/etc/board.d/02_network | 8 +
- .../etc/hotplug.d/ieee80211/11_fix_wifi_mac | 5 +
- .../base-files/lib/upgrade/platform.sh | 1 +
- target/linux/mediatek/image/filogic.mk | 25 ++
- 5 files changed, 278 insertions(+)
- create mode 100644 target/linux/mediatek/dts/mt7981b-h3c-magic-nx30-pro.dts
- diff --git a/target/linux/mediatek/dts/mt7981b-h3c-magic-nx30-pro.dts b/target/linux/mediatek/dts/mt7981b-h3c-magic-nx30-pro.dts
- new file mode 100644
- index 0000000000000..358365adba44b
- --- /dev/null
- +++ b/target/linux/mediatek/dts/mt7981b-h3c-magic-nx30-pro.dts
- @@ -0,0 +1,213 @@
- +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
- +
- +/dts-v1/;
- +#include <dt-bindings/gpio/gpio.h>
- +#include <dt-bindings/input/input.h>
- +
- +#include "mt7981.dtsi"
- +
- +/ {
- + model = "H3C Magic NX30 Pro";
- + compatible = "h3c,magic-nx30-pro", "mediatek,mt7981";
- +
- + aliases {
- + serial0 = &uart0;
- + led-boot = &led_status_green;
- + led-failsafe = &led_status_red;
- + led-running = &led_status_green;
- + led-upgrade = &led_status_red;
- + };
- +
- + chosen {
- + stdout-path = "serial0:115200n8";
- + };
- +
- + memory {
- + reg = <0 0x40000000 0 0x10000000>;
- + };
- +
- + gpio-keys {
- + compatible = "gpio-keys";
- +
- + reset {
- + label = "reset";
- + linux,code = <KEY_RESTART>;
- + gpios = <&pio 1 GPIO_ACTIVE_LOW>;
- + };
- +
- + wps {
- + label = "wps";
- + linux,code = <KEY_WPS_BUTTON>;
- + gpios = <&pio 0 GPIO_ACTIVE_LOW>;
- + };
- + };
- +
- + leds {
- + compatible = "gpio-leds";
- +
- + led_status_green: green {
- + label = "green:status";
- + gpios = <&pio 4 GPIO_ACTIVE_LOW>;
- + };
- +
- + led_status_red: red {
- + label = "red:status";
- + gpios = <&pio 5 GPIO_ACTIVE_LOW>;
- + };
- + };
- +};
- +
- +ð {
- + status = "okay";
- +
- + gmac0: mac@0 {
- + compatible = "mediatek,eth-mac";
- + reg = <0>;
- + phy-mode = "2500base-x";
- +
- + fixed-link {
- + speed = <2500>;
- + full-duplex;
- + pause;
- + };
- + };
- +
- + gmac1: mac@1 {
- + compatible = "mediatek,eth-mac";
- + reg = <1>;
- + phy-mode = "gmii";
- + phy-handle = <&int_gbe_phy>;
- + };
- +};
- +
- +&mdio_bus {
- + switch: switch@0 {
- + compatible = "mediatek,mt7531";
- + reg = <31>;
- + reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
- + interrupt-controller;
- + #interrupt-cells = <1>;
- + interrupt-parent = <&pio>;
- + interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
- + };
- +};
- +
- +&spi0 {
- + pinctrl-names = "default";
- + pinctrl-0 = <&spi0_flash_pins>;
- + status = "okay";
- +
- + spi_nand@0 {
- + compatible = "spi-nand";
- + #address-cells = <1>;
- + #size-cells = <1>;
- + reg = <0>;
- +
- + spi-max-frequency = <52000000>;
- + spi-tx-buswidth = <4>;
- + spi-rx-buswidth = <4>;
- +
- + partitions {
- + compatible = "fixed-partitions";
- + #address-cells = <1>;
- + #size-cells = <1>;
- +
- + partition@0 {
- + label = "BL2";
- + reg = <0x0000000 0x0100000>;
- + read-only;
- + };
- +
- + partition@100000 {
- + label = "u-boot-env";
- + reg = <0x0100000 0x0080000>;
- + };
- +
- + factory: partition@180000 {
- + label = "Factory";
- + reg = <0x0180000 0x0200000>;
- + read-only;
- + };
- +
- + partition@380000 {
- + label = "FIP";
- + reg = <0x0380000 0x0200000>;
- + read-only;
- + };
- +
- + partition@580000 {
- + label = "ubi";
- + reg = <0x0580000 0x04000000>;
- + };
- + };
- + };
- +};
- +
- +&switch {
- + ports {
- + #address-cells = <1>;
- + #size-cells = <0>;
- +
- + port@0 {
- + reg = <0>;
- + label = "lan1";
- + };
- +
- + port@1 {
- + reg = <1>;
- + label = "lan2";
- + };
- +
- + port@2 {
- + reg = <2>;
- + label = "lan3";
- + };
- +
- + port@6 {
- + reg = <6>;
- + ethernet = <&gmac0>;
- + phy-mode = "2500base-x";
- +
- + fixed-link {
- + speed = <2500>;
- + full-duplex;
- + pause;
- + };
- + };
- + };
- +};
- +
- +&pio {
- + spi0_flash_pins: spi0-pins {
- + mux {
- + function = "spi";
- + groups = "spi0", "spi0_wp_hold";
- + };
- +
- + conf-pu {
- + pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
- + drive-strength = <8>;
- + mediatek,pull-up-adv = <0>; /* bias-disable */
- + };
- +
- + conf-pd {
- + pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
- + drive-strength = <8>;
- + mediatek,pull-up-adv = <0>; /* bias-disable */
- + };
- + };
- +};
- +
- +&uart0 {
- + status = "okay";
- +};
- +
- +&watchdog {
- + status = "okay";
- +};
- +
- +&wifi {
- + status = "okay";
- +
- + mediatek,mtd-eeprom = <&factory 0x0>;
- +};
- diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
- index c05c5d25e4621..6abc81a0b0561 100644
- --- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
- +++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
- @@ -23,6 +23,9 @@
- glinet,gl-mt3000)
- ucidef_set_interfaces_lan_wan eth1 eth0
- ;;
- + h3c,magic-nx30-pro)
- + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" eth1
- + ;;
- mediatek,mt7986a-rfb)
- ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan6" "eth1 wan"
- ;;
- @@ -69,6 +72,11 @@
- bananapi,bpi-r3)
- wan_mac=$(macaddr_add $(cat /sys/class/net/eth0/address) 1)
- ;;
- + h3c,magic-nx30-pro)
- + wan_mac=$(mtd_get_mac_ascii pdt_data_1 ethaddr)
- + lan_mac=$(macaddr_add "$wan_mac" 1)
- + label_mac=$wan_mac
- + ;;
- netgear,wax220)
- lan_mac=$(mtd_get_mac_ascii u-boot-env mac)
- label_mac=$lan_mac
- diff --git a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
- index 4b7047eec5e5a..ab23b100444ce 100644
- --- a/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
- +++ b/target/linux/mediatek/filogic/base-files/etc/hotplug.d/ieee80211/11_fix_wifi_mac
- @@ -32,6 +32,11 @@
- [ "$PHYNBR" = "0" ] && echo "$addr" > /sys${DEVPATH}/macaddress
- [ "$PHYNBR" = "1" ] && macaddr_setbit_la $(macaddr_add $addr 1) > /sys${DEVPATH}/macaddress
- ;;
- + h3c,magic-nx30-pro)
- + addr=$(mtd_get_mac_ascii pdt_data_1 ethaddr)
- + [ "$PHYNBR" = "0" ] && macaddr_add $addr 2 > /sys${DEVPATH}/macaddress
- + [ "$PHYNBR" = "1" ] && macaddr_add $addr 3 > /sys${DEVPATH}/macaddress
- + ;;
- netgear,wax220)
- hw_mac_addr=$(mtd_get_mac_ascii u-boot-env mac)
- [ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
- diff --git a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
- index 11c2c5c66439d..186abfa5a8d82 100755
- --- a/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
- +++ b/target/linux/mediatek/filogic/base-files/lib/upgrade/platform.sh
- @@ -74,6 +74,7 @@ platform_do_upgrade() {
- CI_UBIPART="ubi0"
- nand_do_upgrade "$1"
- ;;
- + h3c,magic-nx30-pro|\
- qihoo,360t7|\
- tplink,tl-xdr4288|\
- tplink,tl-xdr6086|\
- diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
- index fd83b9d4416f9..2ace305140b2e 100644
- --- a/target/linux/mediatek/image/filogic.mk
- +++ b/target/linux/mediatek/image/filogic.mk
- @@ -176,6 +176,21 @@ define Device/glinet_gl-mt3000
- endef
- TARGET_DEVICES += glinet_gl-mt3000
-
- +define Device/h3c_magic-nx30-pro
- + DEVICE_VENDOR := H3C
- + DEVICE_MODEL := Magic NX30 Pro
- + DEVICE_DTS := mt7981b-h3c-magic-nx30-pro
- + DEVICE_DTS_DIR := ../dts
- + UBINIZE_OPTS := -E 5
- + BLOCKSIZE := 128k
- + PAGESIZE := 2048
- + KERNEL_IN_UBI := 1
- + IMAGE_SIZE := 65536k
- + IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
- + DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware
- +endef
- +TARGET_DEVICES += h3c_magic-nx30-pro
- +
- define Device/netgear_wax220
- DEVICE_VENDOR := Netgear
- DEVICE_MODEL := WAX220
|