ath79: add support for Buffalo WZR-HP-AG300H

Buffalo WZR-HP-AG300H is a dual band router based on
Qualcom Atheros AR7161 rev 2

Specification:
- 680 MHz CPU (Qualcomm Atheros AR7161)
- 128 MiB RAM (2x Samsung K4H511638G-LCCC)
- 32 MiB Flash (2x Winbond 25Q128BVFG)
- WiFi 5 GHz a/n (Atheros AR9220)
- WiFi 2.4 GHz b/g/n (Atheros AR9223)
- 1000Base-T WAN (Atheros AR7161)
- 4x 1000Base-T Switch (Atheros AR8316)
- 1x USB 2.0
- 3 Buttons (AOSS/WPS, Reset, USB Eject)
- 2 Slide switches (Router (on/off/auto), Movie Engine (on/off))
- 9 LEDs (Power green, WLAN 2GHz green, WLAN 2GHz amber,
    WLAN 5GHz green, WLAN 5GHz LED amber, Router green,
    Diag red, Movie Engine blue, USB green)

It is already supported by the ar71xx target.

For more information on the device visit the wiki:
<https://openwrt.org/toh/buffalo/wzr-hp-ag300h>

Serial console:
- The UART Header is next to Movie Engine Switch.
- Pinout is RX - TX - GND - 3.3V (Square Pad is 3.3V)
- The Serial setting is 115200-8-N-1.

Installation of OpenWRT from vendor firmware:
- Connect to the Web-interface at http://192.168.11.1
- Go to “Administration” → “Firmware Upgrade”
- Upload the OpenWrt factory image

Tested:
- Ethernet (LAN, WAN)
- WiFi
- Installation
  - via TFTP rescue
  - via factory image
    - on firmware v1.77 (28-05-2012)
    - on pro firmware v24SP2 r30356 (26-03-2018)
  - via sysupgrade from ar71xx
    (wlan devices don't work because of new names)
  - via sysupgrade from itself
- Buttons
- LEDS
- USB (Power control and device recognition)

Signed-off-by: Bernhard Frauendienst <openwrt@nospam.obeliks.de>
master
Bernhard Frauendienst 6 years ago committed by John Crispin
parent 3370e10495
commit 480bf28273
  1. 5
      target/linux/ath79/base-files/etc/board.d/02_network
  2. 18
      target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
  3. 1
      target/linux/ath79/config-4.14
  4. 284
      target/linux/ath79/dts/ar7161_buffalo_wzr-hp-ag300h.dts
  5. 20
      target/linux/ath79/image/common-buffalo.mk
  6. 14
      target/linux/ath79/image/generic.mk
  7. 21
      target/linux/ath79/image/tiny.mk

@ -27,6 +27,11 @@ ath79_setup_interfaces()
wd,mynet-wifi-rangeextender)
ucidef_set_interface_lan "eth0"
;;
buffalo,wzr-hp-ag300h)
ucidef_set_interface_wan "eth1"
ucidef_add_switch "switch0" \
"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1"
;;
buffalo,wzr-hp-g450h)
ucidef_add_switch "switch0" \
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"

@ -156,15 +156,16 @@ case "$FIRMWARE" in
;;
"ath9k-eeprom-pci-0000:00:11.0.bin")
case $board in
dlink,dir-825-b1)
ath9k_eeprom_extract "caldata" 4096 3768
ath9k_patch_fw_mac_crc $(mtd_get_mac_text "caldata" 65440) 524
;;
buffalo,wzr-hp-ag300h|\
netgear,wndr3700|\
netgear,wndr3700v2|\
netgear,wndr3800)
ath9k_eeprom_extract "art" 4096 3768
;;
dlink,dir-825-b1)
ath9k_eeprom_extract "caldata" 4096 3768
ath9k_patch_fw_mac_crc $(mtd_get_mac_text "caldata" 65440) 524
;;
*)
ath9k_eeprom_die "board $board is not supported yet"
;;
@ -172,15 +173,16 @@ case "$FIRMWARE" in
;;
"ath9k-eeprom-pci-0000:00:12.0.bin")
case $board in
dlink,dir-825-b1)
ath9k_eeprom_extract "caldata" 20480 3768
ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "caldata" 65460) 1) 524
;;
buffalo,wzr-hp-ag300h|\
netgear,wndr3700|\
netgear,wndr3700v2|\
netgear,wndr3800)
ath9k_eeprom_extract "art" 20480 3768
;;
dlink,dir-825-b1)
ath9k_eeprom_extract "caldata" 20480 3768
ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "caldata" 65460) 1) 524
;;
*)
ath9k_eeprom_die "board $board is not supported yet"
;;

@ -173,6 +173,7 @@ CONFIG_MTD_SPLIT_TPLINK_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
CONFIG_MTD_SPLIT_WRGG_FW=y
CONFIG_MTD_TPLINK_PARTS=y
CONFIG_MTD_VIRT_CONCAT=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y
CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y

@ -0,0 +1,284 @@
// 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 "ar7100.dtsi"
/ {
compatible = "buffalo,wzr-hp-ag300h", "qca,ar7161";
model = "Buffalo WZR-HP-AG300H/WZR-600DHP";
aliases {
led-boot = &diag;
led-failsafe = &diag;
led-upgrade = &diag;
};
chosen {
bootargs = "console=ttyS0,115200";
};
extosc: ref {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-output-names = "ref";
clock-frequency = <40000000>;
};
gpio-leds {
compatible = "gpio-leds";
diag: diag {
label = "buffalo:red:diag";
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};
ath9k-leds {
// those leds are indeed attached to the wifi chips
compatible = "gpio-leds";
band2g_a {
label = "buffalo:amber:band2g";
gpios = <&ath9k0 1 GPIO_ACTIVE_LOW>;
default-state = "off";
};
usb {
label = "buffalo:green:usb";
gpios = <&ath9k0 3 GPIO_ACTIVE_LOW>;
default-state = "off";
trigger-sources = <&usb_ochi_port>, <&usb_echi_port>;
linux,default-trigger = "usbport";
};
band2g_g {
label = "buffalo:green:band2g";
gpios = <&ath9k0 5 GPIO_ACTIVE_LOW>;
default-state = "off";
linux,default-trigger = "phy0tpt";
};
band5g_g {
label = "buffalo:green:band5g";
gpios = <&ath9k1 1 GPIO_ACTIVE_LOW>;
default-state = "off";
linux,default-trigger = "phy1tpt";
};
router {
label = "buffalo:green:router";
gpios = <&ath9k1 3 GPIO_ACTIVE_LOW>;
default-state = "off";
};
movie_engine {
label = "buffalo:blue:movie_engine";
gpios = <&ath9k1 4 GPIO_ACTIVE_LOW>;
default-state = "off";
};
band5g_a {
label = "buffalo:amber:band5g";
gpios = <&ath9k1 5 GPIO_ACTIVE_LOW>;
default-state = "off";
};
};
gpio-keys-polled {
compatible = "gpio-keys-polled";
poll-interval = <20>;
reset {
linux,code = <KEY_RESTART>;
gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
usb {
linux,code = <BTN_2>;
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
aoss {
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
router_auto {
linux,code = <BTN_6>;
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
router_off {
linux,code = <BTN_5>;
gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
movie_engine {
linux,code = <BTN_7>;
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
gpio-export {
compatible = "gpio-export";
gpio_usb_power {
gpio-export,name = "buffalo:power:usb";
gpio-export,output = <1>;
gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
};
};
flash {
compatible = "mtd-concat";
devices = <&flash0 &flash1>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "u-boot";
reg = <0x0000000 0x0040000>;
read-only;
};
partition@40000 {
label = "u-boot-env";
reg = <0x0040000 0x0010000>;
read-only;
};
art: partition@50000 {
label = "art";
reg = <0x0050000 0x0010000>;
read-only;
};
partition@60000 {
label = "firmware";
reg = <0x0060000 0x1f90000>;
};
partition@1ff0000 {
label = "user_property";
reg = <0x1ff0000 0x0010000>;
read-only;
};
};
};
};
&usb_phy {
status = "okay";
};
&usb1 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
usb_ochi_port: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&usb2 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
usb_echi_port: port@1 {
reg = <1>;
#trigger-source-cells = <0>;
};
};
&pcie0 {
status = "okay";
ath9k0: wifi@0,11 {
compatible = "pci168c,0029";
reg = <0x8800 0 0 0 0>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
ath9k1: wifi@0,12 {
compatible = "pci168c,0029";
reg = <0x9000 0 0 0 0>;
qca,no-eeprom;
#gpio-cells = <2>;
gpio-controller;
};
};
&uart {
status = "okay";
};
&pll {
clocks = <&extosc>;
};
&spi {
status = "okay";
num-cs = <2>;
cs-gpios = <0>, <0>;
flash0: flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <104000000>;
m25p,fast-read;
};
flash1: flash@1 {
compatible = "jedec,spi-nor";
reg = <1>;
spi-max-frequency = <104000000>;
m25p,fast-read;
};
};
&mdio0 {
status = "okay";
phy4: ethernet-phy@4 {
reg = <4>;
phy-mode = "rgmii";
};
};
&eth0 {
status = "okay";
mtd-mac-address = <&art 0x120c>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
&eth1 {
status = "okay";
mtd-mac-address = <&art 0x520c>;
mtd-mac-address-increment = <1>;
phy-handle = <&phy4>;
};

@ -0,0 +1,20 @@
define Build/buffalo-tftp-header
( \
echo -n -e "# Airstation Public Fmt1" | dd bs=32 count=1 conv=sync; \
dd if=$@; \
) > $@.new
mv $@.new $@
endef
define Build/buffalo-tag
$(eval product=$(word 1,$(1)))
$(STAGING_DIR_HOST)/bin/buffalo-tag \
-c 0x80041000 -d 0x801e8000 -w 3 \
-a ath -v 1.99 -m 1.01 -f 1 \
-b $(product) -p $(product) \
-r M_ -l mlang8 \
-i $@ -o $@.new
mv $@.new $@
endef

@ -1,3 +1,4 @@
include ./common-buffalo.mk
include ./common-netgear.mk
DEVICE_VARS += ADDPATTERN_ID ADDPATTERN_VERSION
@ -68,6 +69,19 @@ define Device/avm_fritz4020
endef
TARGET_DEVICES += avm_fritz4020
define Device/buffalo_wzr-hp-ag300h
ATH_SOC := ar7161
DEVICE_TITLE := Buffalo WZR-HP-AG300H
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-AG300H 1.99 | buffalo-tag WZR-HP-AG300H
IMAGE/tftp.bin := $$(IMAGE/default) | buffalo-tftp-header
DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-ledtrig-usbport kmod-leds-reset kmod-owl-loader
SUPPORTED_DEVICES += wzr-hp-ag300h
endef
TARGET_DEVICES += buffalo_wzr-hp-ag300h
define Device/buffalo_wzr-hp-g450h
ATH_SOC := ar7242
DEVICE_TITLE := Buffalo WZR-HP-G450H

@ -1,23 +1,6 @@
DEVICE_VARS += ROOTFS_SIZE
define Build/buffalo-tftp-header
( \
echo -n -e "# Airstation Public Fmt1" | dd bs=32 count=1 conv=sync; \
dd if=$@; \
) > $@.new
mv $@.new $@
endef
include ./common-buffalo.mk
define Build/buffalo-tag
$(eval product=$(word 1,$(1)))
$(STAGING_DIR_HOST)/bin/buffalo-tag \
-c 0x80041000 -d 0x801e8000 -w 3 \
-a ath -v 1.99 -m 1.01 -f 1 \
-b $(product) -p $(product) \
-r M_ -l mlang8 \
-i $@ -o $@.new
mv $@.new $@
endef
DEVICE_VARS += ROOTFS_SIZE
define Device/buffalo_bhr-4grv2
ATH_SOC := qca9558

Loading…
Cancel
Save