From 6d6985ff0e41c89650d72d2b5c0c938c2f39906e Mon Sep 17 00:00:00 2001 From: Ryan Mounce Date: Sat, 25 May 2019 22:06:05 +0930 Subject: [PATCH] ath79: add support for WD My Net N750 SoC: AR9344 RAM: 128MB Flash: 16MiB Winbond 25Q128BVFG SPI NOR 5GHz WiFi: AR9380 PCIe 3x3:3 802.11n 2.4GHz WiFi: AR9344 (SoC) AHB 2x2:2 802.11n 5x Gigabit ethernet via AR8327N switch (green + amber LEDs) 2x USB 2.0 via GL850G hub 4x front LEDs from SoC GPIO 1x front WPS button from SoC GPIO 1x bottom reset button from SoC GPIO Known issues: AR8327N LEDs only have default functionality, not presented in sysfs. This is a regression from ar71xx. UART header JP1, 115200 no parity 1 stop TX GND VCC (N/P) RX See https://openwrt.org/toh/wd/n750 for flashing detail. Procedures unchanged from ar71xx. Tested sysupgrade + factory flash from WD Emergency Recovery Signed-off-by: Ryan Mounce --- .../ath79/base-files/etc/board.d/02_network | 6 +- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 12 +- .../etc/uci-defaults/04_led_migration | 3 + .../linux/ath79/dts/ar9344_wd_mynet-n750.dts | 216 ++++++++++++++++++ target/linux/ath79/image/generic.mk | 11 + 5 files changed, 241 insertions(+), 7 deletions(-) create mode 100644 target/linux/ath79/dts/ar9344_wd_mynet-n750.dts diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network index 7b89274ccf..c2e994530d 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -126,7 +126,8 @@ ath79_setup_interfaces() iodata,wn-ac1600dgr|\ iodata,wn-ac1600dgr2|\ iodata,wn-ag300dgr|\ - pcs,cr5000) + pcs,cr5000|\ + wd,mynet-n750) ucidef_add_switch "switch0" \ "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" ;; @@ -290,7 +291,8 @@ ath79_setup_macs() wan_mac=$(mtd_get_mac_text "mac" 24) ;; dlink,dir-859-a1|\ - nec,wg1200cr) + nec,wg1200cr|\ + wd,mynet-n750) lan_mac=$(mtd_get_mac_ascii devdata "lanmac") wan_mac=$(mtd_get_mac_ascii devdata "wanmac") ;; diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom index 3321f28bcc..ce4df2521b 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom @@ -105,7 +105,9 @@ case "$FIRMWARE" in ath9k_eeprom_extract "art" 4096 1088 ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2 ;; - dlink,dir-859-a1) + dlink,dir-859-a1|\ + nec,wg1200cr|\ + wd,mynet-n750) ath9k_eeprom_extract "art" 4096 1088 ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan24mac") 2 ;; @@ -121,10 +123,6 @@ case "$FIRMWARE" in ath9k_eeprom_extract "art" 4096 1088 ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2 ;; - nec,wg1200cr) - ath9k_eeprom_extract "art" 4096 1088 - ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata wlan24mac) 2 - ;; nec,wg800hp) ath9k_eeprom_extract "art" 4096 1088 ath9k_patch_fw_mac $(mtd_get_mac_text board_data 1664) 2 @@ -184,6 +182,10 @@ case "$FIRMWARE" in ubnt,unifi) ath9k_eeprom_extract "art" 4096 2048 ;; + wd,mynet-n750) + ath9k_eeprom_extract "art" 20480 1088 + ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan5mac") 2 + ;; wd,mynet-wifi-rangeextender) ath9k_eeprom_extract "art" 4096 4096 ath9k_patch_fw_mac_crc $(nvram get wl0_hwaddr) "$mac" 2 diff --git a/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration b/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration index d9c61f8103..fe4a9c3cc0 100644 --- a/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration +++ b/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration @@ -12,6 +12,9 @@ engenius,epg5000) tplink,archer-c7-v5) migrate_leds "archer-c7-v5:=tp-link:" ;; +wd,mynet-n750) + migrate_leds "wd:=mynet-n750:" + ;; esac migrations_apply system diff --git a/target/linux/ath79/dts/ar9344_wd_mynet-n750.dts b/target/linux/ath79/dts/ar9344_wd_mynet-n750.dts new file mode 100644 index 0000000000..a9f7e6e9a3 --- /dev/null +++ b/target/linux/ath79/dts/ar9344_wd_mynet-n750.dts @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "ar9344.dtsi" + +/ { + model = "Western Digital My Net N750"; + compatible = "wd,mynet-n750", "qca,ar9344"; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + aliases { + led-boot = &power; + led-failsafe = &power; + led-running = &power; + led-upgrade = &power; + }; + + leds { + compatible = "gpio-leds"; + + wifi { + label = "mynet-n750:blue:wireless"; + gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; + }; + + internet { + label = "mynet-n750:blue:internet"; + gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; + }; + + wps { + label = "mynet-n750:blue:wps"; + gpios = <&gpio 13 GPIO_ACTIVE_HIGH>; + }; + + power: power { + label = "mynet-n750:blue:power"; + gpios = <&gpio 14 GPIO_ACTIVE_HIGH>; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + linux,code = ; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; + + wps { + linux,code = ; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&ref { + clock-frequency = <40000000>; +}; + +&uart { + status = "okay"; +}; + +&gpio { + status = "okay"; + + gpio_ext_lna0 { + gpio-hog; + gpios = <15 0>; + output-high; + line-name = "mynet-n750:ext:lna0"; + }; + + gpio_ext_lna1 { + gpio-hog; + gpios = <18 0>; + output-high; + line-name = "mynet-n750:ext:lna1"; + }; +}; + +&spi { + num-cs = <1>; + + status = "okay"; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "bootloader"; + reg = <0x000000 0x40000>; + read-only; + }; + + partition@40000 { + label = "bdcfg"; + reg = <0x040000 0x10000>; + read-only; + }; + + partition@50000 { + label = "devdata"; + reg = <0x050000 0x10000>; + read-only; + }; + + partition@60000 { + label = "devconf"; + reg = <0x060000 0x10000>; + read-only; + }; + + partition@70000 { + compatible = "seama"; + label = "firmware"; + reg = <0x070000 0xf80000>; + }; + + art: partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&usb { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + port@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + #trigger-source-cells = <0>; + + hub_port1: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; + + hub_port2: port@2 { + reg = <2>; + #trigger-source-cells = <0>; + }; + }; +}; + +&usb_phy { + status = "okay"; +}; + +&pcie { + status = "okay"; + + wifi@0,0 { + compatible = "pci168c,0033"; + reg = <0x0000 0 0 0 0>; + qca,no-eeprom; + }; +}; + +&wmac { + status = "okay"; + qca,no-eeprom; +}; + +&mdio0 { + status = "okay"; + phy-mask = <0>; + + switch0@1f { + compatible = "qca,ar8327"; + reg = <0x1f>; + + qca,ar8327-initvals = < + 0x04 0x07600000 /* PORT0 PAD MODE CTRL */ + 0x10 0x80000080 /* POWER_ON_STRIP */ + 0x50 0xc737c737 /* LED_CTRL0 */ + 0x54 0x00000000 /* LED_CTRL1 */ + 0x58 0x00000000 /* LED_CTRL2 */ + 0x5c 0x0030c300 /* LED_CTRL3 */ + 0x7c 0x0000007e /* PORT0_STATUS */ + >; + }; +}; + +ð0 { + status = "okay"; + + /* default for ar934x, except for 1000M */ + pll-data = <0x06000000 0x00000101 0x00001616>; + + phy-mode = "rgmii"; + fixed-link { + speed = <1000>; + full-duplex; + }; +}; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index b8558a59f0..1585379f83 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -655,6 +655,17 @@ define Device/rosinson_wr818 endef TARGET_DEVICES += rosinson_wr818 +define Device/wd_mynet-n750 + $(Device/seama) + ATH_SOC := ar9344 + DEVICE_TITLE := Western Digital My Net N750 + IMAGE_SIZE := 15872k + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 + SEAMA_SIGNATURE := wrgnd13_wd_av + SUPPORTED_DEVICES += mynet-n750 +endef +TARGET_DEVICES += wd_mynet-n750 + define Device/wd_mynet-wifi-rangeextender ATH_SOC := ar9344 DEVICE_TITLE := Western Digital My Net Wi-Fi Range Extender -- 2.30.2