From: INAGAKI Hiroshi Date: Fri, 10 Aug 2018 00:07:53 +0000 (+0900) Subject: ath79: add support for I-O DATA WN-AC1600DGR2 X-Git-Tag: v19.07.0-rc1~2824 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=a6369206fe3306114f6c4b26a7cf50b91008cb25 ath79: add support for I-O DATA WN-AC1600DGR2 I-O DATA WN-AC1600DGR2 is a 2.4/5 GHz band 11ac router, based on Qualcomm Atheros QCA9557. Specification: - Qualcomm Atheros QCA9557 - 128 MB of RAM - 16 MB of Flash - 2.4/5 GHz wifi - 2.4 GHz: 2T2R (SoC internal) - 5 GHz: 3T3R (QCA9880) - 5x 10/100/1000 Mbps Ethernet - 6x LEDs, 6x keys (4x buttons, 1x slide switch) - UART header on PCB - Vcc, GND, TX, RX from ethernet port side - 115200n8 Flash instruction using factory image: 1. Connect the computer to the LAN port of WN-AC1600DGR2 2. Connect power cable to WN-AC1600DGR2 and turn on it 3. Access to "http://192.168.0.1/" and open firmware update page ("ファームウェア") 4. Select the OpenWrt factory image and click update ("更新") button 5. Wait ~150 seconds to complete flashing Signed-off-by: INAGAKI Hiroshi --- diff --git a/include/image-commands.mk b/include/image-commands.mk index 143a042fa2..05c2300886 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -264,6 +264,11 @@ define Build/openmesh-image "$(call param_get_default,rootfs,$(1),$@)" "rootfs" endef +define Build/senao-header + $(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new + mv $@.new $@ +endef + define Build/sysupgrade-tar sh $(TOPDIR)/scripts/sysupgrade-tar.sh \ --board $(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)) \ 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 5edfd9e2ce..fe2d5859d3 100755 --- a/target/linux/ath79/base-files/etc/board.d/02_network +++ b/target/linux/ath79/base-files/etc/board.d/02_network @@ -46,6 +46,11 @@ ath79_setup_interfaces() glinet,ar300m) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; + iodata,wn-ac1600dgr2|\ + pcs,cr5000) + ucidef_add_switch "switch0" \ + "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" + ;; netgear,wndr3800) ucidef_set_interfaces_lan_wan "eth0" "eth1" ucidef_add_switch "switch0" \ @@ -66,10 +71,6 @@ ath79_setup_interfaces() "0@eth1" "1:lan:1" "2:lan:4" "3:lan:3" "4:lan:2" ucidef_set_interface_wan "eth0" ;; - pcs,cr5000) - ucidef_add_switch "switch0" \ - "0@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "5:wan" - ;; phicomm,k2t) ucidef_add_switch "switch0" \ "0@eth0" "3:lan:1" "5:lan:2" "4:wan" @@ -152,6 +153,10 @@ ath79_setup_macs() lan_mac=$(mtd_get_mac_text "caldata" 65440) wan_mac=$(mtd_get_mac_text "caldata" 65460) ;; + iodata,wn-ac1600dgr2) + lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr) + wan_mac=$(mtd_get_mac_ascii u-boot-env wanaddr) + ;; phicomm,k2t) lan_mac=$(k2t_get_mac "lan_mac") wan_mac=$(k2t_get_mac "wan_mac") 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 9577859548..29c11bbd5f 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 @@ -95,6 +95,17 @@ ath9k_patch_fw_mac_crc() { board=$(board_name) case "$FIRMWARE" in +"ath9k-eeprom-ahb-18100000.wmac.bin") + case $board in + iodata,wn-ac1600dgr2) + ath9k_eeprom_extract "art" 4096 1088 + ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2 + ;; + *) + ath9k_eeprom_die "board $board is not supported yet" + ;; + esac + ;; "ath9k-eeprom-pci-0000:00:00.0.bin") case $board in avm,fritz300e) diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 57d9744af2..d8254e3ff9 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -87,6 +87,10 @@ board=$(board_name) case "$FIRMWARE" in "ath10k/cal-pci-0000:00:00.0.bin") case $board in + iodata,wn-ac1600dgr2) + ath10kcal_extract "art" 20480 2116 + ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1) + ;; ocedo,koala) ath10kcal_extract "art" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_binary art 12) diff --git a/target/linux/ath79/dts/qca9557_iodata_wn-ac1600dgr2.dts b/target/linux/ath79/dts/qca9557_iodata_wn-ac1600dgr2.dts new file mode 100644 index 0000000000..54b5349fe4 --- /dev/null +++ b/target/linux/ath79/dts/qca9557_iodata_wn-ac1600dgr2.dts @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "qca9557.dtsi" + +/ { + compatible = "iodata,wn-ac1600dgr2", "qca,qca9557"; + model = "I-O DATA WN-AC1600DGR2"; + + aliases { + led-status = &power; + }; + + chosen { + bootargs = "console=ttyS0,115200n8"; + }; + + leds { + compatible = "gpio-leds"; + + power: power { + label = "wn-ac1600dgr2:green:power"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + default-state = "on"; + }; + + copy { + label = "wn-ac1600dgr2:green:copy"; + gpios = <&gpio 2 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + eco { + label = "wn-ac1600dgr2:green:eco"; + gpios = <&gpio 3 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + wlan5g { + label = "wn-ac1600dgr2:green:wlan5g"; + gpios = <&gpio 21 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; + }; + + wlan2g { + label = "wn-ac1600dgr2:green:wlan2g"; + gpios = <&gpio 22 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy1tpt"; + }; + + notification { + label = "wn-ac1600dgr2:amber:notification"; + gpios = <&gpio 23 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + }; + + keys { + compatible = "gpio-keys-polled"; + poll-interval = <20>; + + button_eco { + label = "eco"; + gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + auto { + label = "auto"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + debounce-interval = <60>; + }; + + button_copy { + label = "copy"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + wps { + label = "wps"; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + reset { + label = "reset"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + router { + label = "router"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + debounce-interval = <60>; + }; + }; +}; + +&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>; + + partition@0 { + label = "u-boot"; + reg = <0x000000 0x030000>; + read-only; + }; + + partition@30000 { + label = "u-boot-env"; + reg = <0x030000 0x010000>; + read-only; + }; + + partition@40000 { + label = "firmware"; + reg = <0x040000 0xe50000>; + }; + + partition@e90000 { + label = "manufacture"; + reg = <0xe90000 0x100000>; + read-only; + }; + + partition@f90000 { + label = "backup"; + reg = <0xf90000 0x010000>; + read-only; + }; + + partition@fa0000 { + label = "storage"; + reg = <0xfa0000 0x050000>; + read-only; + }; + + art: partition@ff0000 { + label = "art"; + reg = <0xff0000 0x010000>; + read-only; + }; + }; + }; +}; + +&mdio0 { + status = "okay"; + + phy0: ethernet-phy@0 { + reg = <0>; + + qca,ar8327-initvals = < + 0x04 0x87600000 /* PORT0 PAD MODE CTRL */ + 0x7c 0x0000007e /* PORT0_STATUS */ + >; + }; +}; + +ð0 { + status = "okay"; + + pll-data = <0x56000000 0x00000101 0x00001616>; + phy-handle = <&phy0>; +}; + +&pcie1 { + status = "okay"; + + wifi@0,0 { + compatible = "pci168c,003c"; + reg = <0x0000 0 0 0 0>; + qca,no-eeprom; + }; +}; + +&uart { + status = "okay"; +}; + +&usb_phy0 { + status = "okay"; +}; + +&usb0 { + status = "okay"; +}; + +&wmac { + status = "okay"; + qca,no-eeprom; +}; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 767d635cfb..a32136a40b 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -67,6 +67,18 @@ define Device/glinet_ar300m_nor endef TARGET_DEVICES += glinet_ar300m_nor +define Device/iodata_wn-ac1600dgr2 + ATH_SOC := qca9557 + DEVICE_TITLE := I-O DATA WN-AC1600DGR2 + IMAGE_SIZE := 14656k + IMAGES += factory.bin + IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \ + append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) | \ + senao-header -r 0x30a -p 0x60 -t 2 -v 200 + DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-ath10k ath10k-firmware-qca988x +endef +TARGET_DEVICES += iodata_wn-ac1600dgr2 + define Device/ocedo_koala ATH_SOC := qca9558 DEVICE_TITLE := OCEDO Koala diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index 753e287d73..5426226795 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -108,11 +108,6 @@ define Build/poray-header mv $@.new $@ endef -define Build/senao-header - $(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new - mv $@.new $@ -endef - define Build/seama $(STAGING_DIR_HOST)/bin/seama -i $@ $(1) mv $@.seama $@