From 1df1ea4d7e8b6ae3351780ed58800ccd9edd4c27 Mon Sep 17 00:00:00 2001 From: INAGAKI Hiroshi Date: Tue, 11 Sep 2018 20:13:17 +0900 Subject: [PATCH] ath79: fix support for Buffalo WZR-HP-G450H and split to dts/dtsi There are many parts that are incorrect or missing in the current code for Buffalo WZR-HP-G450H in ath79, so its support is broken. I fixed that issues and split to dts/dtsi files to add support for Buffalo BHR-4GRV. And WZR-450HP has the same hardware as WZR-HP-G450H, so I change the device name to "WZR-HP-G450H/WZR-450HP". Specification: - Atheros AR7242 - 64 MB of RAM - 32 MB of Flash - 2x 16 MB SPI-NOR flash - 3T3R 2.4 GHz wifi - SoC internal - 5x 10/100/1000 Mbps Ethernet - 6x LEDs, 5x keys - 1x USB 2.0 Type-A - UART header on PCB - JP1: Vcc, GND, TX, RX from reset button side Flash instruction using factory image: 1. Boot the WZR-HP-G450H (or WZR-450HP) normaly and connect the computer to its LAN port 2. Access to "http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/firmup.html" with user "bufpy" and password "otdpopy" 3. Select the OpenWrt factory image and click "OK" button to perform firmware update 4. Wait ~200 seconds to complete flashing Signed-off-by: INAGAKI Hiroshi --- .../etc/hotplug.d/firmware/10-ath9k-eeprom | 3 + .../ath79/dts/ar7242_buffalo_wzr-bhr.dtsi | 174 ++++++++++++++++++ .../ath79/dts/ar7242_buffalo_wzr-hp-g450h.dts | 127 +++++-------- target/linux/ath79/image/generic.mk | 6 +- 4 files changed, 227 insertions(+), 83 deletions(-) create mode 100644 target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi 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 334e7056cf..8bcdb30272 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 @@ -120,6 +120,9 @@ case "$FIRMWARE" in tplink,tl-wr941-v4) ath9k_eeprom_extract "art" 4096 3768 ;; + buffalo,wzr-hp-g450h) + ath9k_eeprom_extract "ART" 4096 1088 + ;; ocedo,raccoon|\ tplink,tl-wdr3600|\ tplink,tl-wdr4300|\ diff --git a/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi b/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi new file mode 100644 index 0000000000..c82cf83f7e --- /dev/null +++ b/target/linux/ath79/dts/ar7242_buffalo_wzr-bhr.dtsi @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "ar7242.dtsi" + +/ { + aliases { + led-boot = &diag; + led-failsafe = &diag; + led-upgrade = &diag; + }; + + extosc: ref { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <40000000>; + }; + + keys: keys { + compatible = "gpio-keys-polled"; + poll-interval = <20>; + + usb { + label = "usb"; + linux,code = ; + gpios = <&gpio 1 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + reset { + label = "reset"; + linux,code = ; + gpios = <&gpio 6 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + + sec_vpn: sec_vpn { + gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + diag: diag { + label = "buffalo:red:diag"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + usb { + label = "buffalo:green:usb"; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + default-state = "off"; + trigger-sources = <&hub_port>; + linux,default-trigger = "usbport"; + }; + }; + + gpio-export { + compatible = "gpio-export"; + #size-cells = <0>; + + gpio_usb_power { + gpio-export,name = "buffalo:usb-power"; + gpio-export,output = <1>; + gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; + }; + }; + + virtual_flash { + compatible = "mtd-concat"; + devices = <&flash0 &flash1>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + reg = <0x0 0x40000>; + label = "u-boot"; + read-only; + }; + + partition@40000 { + reg = <0x40000 0x10000>; + label = "u-boot-env"; + }; + + ART: partition@50000 { + reg = <0x50000 0x10000>; + label = "ART"; + read-only; + }; + + partition@60000 { + reg = <0x60000 0x1f80000>; + label = "firmware"; + }; + + partition@1fe0000 { + reg = <0x1fe0000 0x20000>; + label = "user_property"; + read-only; + }; + }; + }; +}; + +&spi { + status = "okay"; + cs-gpios = <0>, <0>; + num-cs = <2>; + + flash0: flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <25000000>; + }; + + flash1: flash@1 { + compatible = "jedec,spi-nor"; + reg = <1>; + spi-max-frequency = <25000000>; + }; +}; + +&mdio0 { + status = "okay"; + + phy-mask = <0x1>; + + phy0: ethernet-phy@0 { + reg = <0>; + phy-mode = "rgmii"; + }; +}; + +ð0 { + status = "okay"; + + mtd-mac-address = <&ART 0x1002>; + + phy-mode = "rgmii"; + phy-handle = <&phy0>; +}; + +&pll { + clocks = <&extosc>; +}; + +&uart { + status = "okay"; +}; + +&usb_phy { + status = "okay"; +}; + +&usb { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + hub_port: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; +}; diff --git a/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g450h.dts b/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g450h.dts index 8ff2c71952..804132dcfd 100644 --- a/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g450h.dts +++ b/target/linux/ath79/dts/ar7242_buffalo_wzr-hp-g450h.dts @@ -4,111 +4,74 @@ #include #include -#include "ar7242.dtsi" +#include "ar7242_buffalo_wzr-bhr.dtsi" / { compatible = "buffalo,wzr-hp-g450h", "qca,ar7242"; - model = "Buffalo WZR-HP-G450H"; + model = "Buffalo WZR-HP-G450H/WZR-450HP"; - keys { - compatible = "gpio-keys-polled"; - poll-interval = <20>; - - usb { - linux,code = ; - gpios = <&gpio 1 GPIO_ACTIVE_LOW>; - debounce-interval = <60>; - }; - - reset { - linux,code = ; - gpios = <&gpio 6 GPIO_ACTIVE_LOW>; - debounce-interval = <60>; - }; - - movie_engine { - linux,code = ; - gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; - debounce-interval = <60>; - }; - - aoss { - linux,code = ; - gpios = <&gpio 8 GPIO_ACTIVE_LOW>; - debounce-interval = <60>; - }; - - router_off { - linux,code = ; - gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; - debounce-interval = <60>; - }; - }; - - leds { + ath9k-leds { compatible = "gpio-leds"; - security { - label = "buffalo:orange:security"; - gpios = <&gpio 13 GPIO_ACTIVE_LOW>; + + led_movie_engine { + label = "buffalo:blue:movie_engine"; + gpios = <&ath9k 13 GPIO_ACTIVE_LOW>; + default-state = "off"; }; - diag { - label = "buffalo:red:diag"; - gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + router { + label = "buffalo:green:router"; + gpios = <&ath9k 14 GPIO_ACTIVE_LOW>; + default-state = "off"; }; - }; - gpio-export { - compatible = "gpio-export"; - #size-cells = <0>; - - gpio_usb_power { - gpio-export,name = "wzr-hp-g450h:usb-power"; - gpio-export,output = <1>; - gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; + wireless { + label = "buffalo:green:wireless"; + gpios = <&ath9k 15 GPIO_ACTIVE_LOW>; + default-state = "off"; + linux,default-trigger = "phy0tpt"; }; }; }; -&mdio0 { - status = "okay"; - phy-mask = <0x1>; +&keys { + movie_engine { + label = "movie_engine"; + linux,code = ; + linux,input-type = ; + gpios = <&gpio 7 GPIO_ACTIVE_HIGH>; + debounce-interval = <60>; + }; - phy0: ethernet-phy@0 { - reg = <0>; - phy-mode = "rgmii"; + aoss { + label = "aoss"; + linux,code = ; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + debounce-interval = <60>; + }; + + router_off { + label = "router_off"; + linux,code = ; + linux,input-type = ; + gpios = <&gpio 12 GPIO_ACTIVE_HIGH>; + debounce-interval = <60>; }; }; -ð0 { - status = "okay"; - - phy-mode = "rgmii"; - pll-data = <0x62000000 0 0>; - - fixed-link { - speed = <1000>; - full-duplex; - }; -}; - -&uart { - status = "okay"; -}; - -&usb_phy { - status = "okay"; -}; - -&usb { - status = "okay"; +&sec_vpn { + label = "buffalo:orange:security"; }; &pcie { status = "okay"; - wifi@0,0 { + ath9k: wifi@0,0 { + compatible = "pci168c,0030"; reg = <0x0000 0 0 0 0>; + mtd-mac-address = <&ART 0x1002>; qca,no-eeprom; + #gpio-cells = <2>; + gpio-controller; }; }; diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk index 2727fb6ca1..91325cf4d4 100644 --- a/target/linux/ath79/image/generic.mk +++ b/target/linux/ath79/image/generic.mk @@ -84,9 +84,13 @@ TARGET_DEVICES += buffalo_wzr-hp-ag300h define Device/buffalo_wzr-hp-g450h ATH_SOC := ar7242 - DEVICE_TITLE := Buffalo WZR-HP-G450H + DEVICE_TITLE := Buffalo WZR-HP-G450H/WZR-450HP DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport IMAGE_SIZE := 32256k + IMAGES += factory.bin tftp.bin + IMAGE/default := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) + IMAGE/factory.bin := $$(IMAGE/default) | buffalo-enc WZR-HP-G450H 1.99 | buffalo-tag WZR-HP-G450H + IMAGE/tftp.bin := $$(IMAGE/default) | buffalo-tftp-header SUPPORTED_DEVICES += wzr-hp-g450h endef TARGET_DEVICES += buffalo_wzr-hp-g450h