diff options
author | INAGAKI Hiroshi <musashino.open@gmail.com> | 2018-08-10 09:07:53 +0900 |
---|---|---|
committer | Mathias Kresin <dev@kresin.me> | 2018-08-11 21:45:06 +0200 |
commit | a6369206fe3306114f6c4b26a7cf50b91008cb25 (patch) | |
tree | d2d83a78b70c60049d7d620e090a0eedaf9ab8c6 | |
parent | 97de133368762824ba3d7e9d95f97011a597ec1a (diff) | |
download | upstream-a6369206fe3306114f6c4b26a7cf50b91008cb25.tar.gz upstream-a6369206fe3306114f6c4b26a7cf50b91008cb25.tar.bz2 upstream-a6369206fe3306114f6c4b26a7cf50b91008cb25.zip |
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 <musashino.open@gmail.com>
-rw-r--r-- | include/image-commands.mk | 5 | ||||
-rwxr-xr-x | target/linux/ath79/base-files/etc/board.d/02_network | 13 | ||||
-rw-r--r-- | target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom | 11 | ||||
-rw-r--r-- | target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 4 | ||||
-rw-r--r-- | target/linux/ath79/dts/qca9557_iodata_wn-ac1600dgr2.dts | 216 | ||||
-rw-r--r-- | target/linux/ath79/image/generic.mk | 12 | ||||
-rw-r--r-- | target/linux/ramips/image/Makefile | 5 |
7 files changed, 257 insertions, 9 deletions
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 <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +#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 = <BTN_1>; + debounce-interval = <60>; + }; + + auto { + label = "auto"; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + linux,code = <BTN_0>; + linux,input-type = <EV_SW>; + debounce-interval = <60>; + }; + + button_copy { + label = "copy"; + gpios = <&gpio 15 GPIO_ACTIVE_LOW>; + linux,code = <BTN_1>; + debounce-interval = <60>; + }; + + wps { + label = "wps"; + gpios = <&gpio 16 GPIO_ACTIVE_LOW>; + linux,code = <KEY_WPS_BUTTON>; + debounce-interval = <60>; + }; + + reset { + label = "reset"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + linux,code = <KEY_RESTART>; + debounce-interval = <60>; + }; + + router { + label = "router"; + gpios = <&gpio 19 GPIO_ACTIVE_LOW>; + linux,code = <BTN_0>; + linux,input-type = <EV_SW>; + 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 $@ |