Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ath79: add support for AVM FRITZ!WLAN Repeater 450E
SOC:    Qualcomm QCA9556 (Scorpion) 560MHz MIPS74Kc
RAM:    64MB Zentel A3R12E40CBF DDR2
FLASH:  16MiB Winbond W25Q128 SPI NOR
WLAN1:  QCA9556 2.4 GHz 802.11b/g/n 3x3
INPUT:  WPS button
LED:    Power, WiFi, LAN, RSSI indicator
Serial: Header Next to Black metal shield
        Pinout is 3.3V - RX - TX - GND (Square Pad is 3.3V)
        The Serial setting is 115200-8-N-1.

Installation via EVA:
In the first seconds after Power is connected, the bootloader will
listen for FTP connections on 192.168.178.1. Firmware can be uploaded
like following:

  ftp> quote USER adam2
  ftp> quote PASS adam2
  ftp> binary
  ftp> debug
  ftp> passive
  ftp> quote MEDIA FLSH
  ftp> put openwrt-sysupgrade.bin mtd1

Note that this procedure might take up to two minutes.
You need to powercycle the device afterwards to boot OpenWRT.

Tested-by: Andreas Ziegler <dev@andreas-ziegler.de>
Signed-off-by: David Bauer <mail@david-bauer.net>
  • Loading branch information
blocktrron committed Apr 19, 2020
1 parent 45e2b77 commit 8d9c108
Show file tree
Hide file tree
Showing 8 changed files with 189 additions and 90 deletions.
93 changes: 93 additions & 0 deletions target/linux/ath79/dts/qca9556_avm_fritz-repeater.dtsi
@@ -0,0 +1,93 @@
// 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"

/ {
chosen {
bootargs = "console=ttyS0,115200n8";
};

keys {
compatible = "gpio-keys";

wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
};
};
};

&uart {
status = "okay";
};

&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 = "urlader";
reg = <0x0 0x20000>;
read-only;
};

partition@20000 {
compatible = "avm,eva-firmware";
label = "firmware";
reg = <0x20000 0xee0000>;
};

partition@f00000 {
label = "tffs (1)";
reg = <0xf00000 0x80000>;
read-only;
};

partition@f80000 {
label = "tffs (2)";
reg = <0xf80000 0x80000>;
read-only;
};
};
};
};

&wmac {
status = "okay";
qca,no-eeprom;
};

&eth1 {
status = "okay";

phy-handle = <&phy0>;
pll-data = <0x3000000 0x101 0x1313>;

gmac-config {
device = <&gmac>;
ge0-sgmii = <0>;
};
};

&mdio1 {
status = "okay";

phy0: ethernet-phy@0 {
reg = <0>;
};
};
89 changes: 3 additions & 86 deletions target/linux/ath79/dts/qca9556_avm_fritz1750e.dts
@@ -1,19 +1,13 @@
// 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"
#include "qca9556_avm_fritz-repeater.dtsi"

/ {
compatible = "avm,fritz1750e", "qca,qca9557";
model = "AVM FRITZ!WLAN Repeater 1750E";

chosen {
bootargs = "console=ttyS0,115200n8";
};

aliases {
led-boot = &led_power;
led-failsafe = &led_power;
Expand Down Expand Up @@ -91,65 +85,14 @@
gpios = <&spi_gpio 4 GPIO_ACTIVE_HIGH>;
};
};

keys {
compatible = "gpio-keys";

wps {
label = "wps";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
};
};
};

&pcie0 {
status = "okay";
};

&uart {
status = "okay";
};

&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 = "urlader";
reg = <0x0 0x20000>;
read-only;
};

partition@20000 {
compatible = "avm,eva-firmware";
label = "firmware";
reg = <0x20000 0xee0000>;
};

partition@f00000 {
label = "tffs (1)";
reg = <0xf00000 0x80000>;
read-only;
};

partition@f80000 {
label = "tffs (2)";
reg = <0xf80000 0x80000>;
read-only;
};
};
};
&phy0 {
reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
};

&gpio {
Expand All @@ -167,29 +110,3 @@
line-name = "PCIE Bus reset";
};
};

&wmac {
status = "okay";
qca,no-eeprom;
};

&eth1 {
status = "okay";

phy-handle = <&phy0>;
pll-data = <0x3000000 0x101 0x1313>;

gmac-config {
device = <&gmac>;
ge0-sgmii = <0>;
};
};

&mdio1 {
status = "okay";

phy0: ethernet-phy@0 {
reg = <0>;
reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
};
};
76 changes: 76 additions & 0 deletions target/linux/ath79/dts/qca9556_avm_fritz450e.dts
@@ -0,0 +1,76 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include <dt-bindings/gpio/gpio.h>

#include "qca9556_avm_fritz-repeater.dtsi"

/ {
compatible = "avm,fritz450e", "qca,qca9557";
model = "AVM FRITZ!WLAN Repeater 450E";

aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
};

leds {
compatible = "gpio-leds";

led_power: power {
label = "fritz450e:green:power";
gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
};

wlan {
label = "fritz450e:green:wlan";
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};

lan {
label = "fritz450e:green:lan";
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};

rssi2 {
label = "fritz450e:green:rssi2";
gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
};

rssi3 {
label = "fritz450e:green:rssi3";
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
};

rssi4 {
label = "fritz450e:green:rssi4";
gpios = <&gpio 18 GPIO_ACTIVE_LOW>;
};
};
};

&gpio {
/*
* Wondered why rssi0 and rssi1 are missing?
*
* AVM seems to have run low on usable GPIO pins, so
* instead of adding a shift register like they did for
* the 1750E they figured out "Why not use the LEDs on
* the AR8033?".
*
* EVA configures the PHY in a way it does not display
* the link-state using it's LEDs. When we reset the PHY
* using the reset-mechanism of the PHY subsystem, this
* setting is cleared.
*
* We avoid this by keeping the reset line high.
*/
phy-reset {
gpio-hog;
gpios = <11 GPIO_ACTIVE_HIGH>;
output-high;
line-name = "phy-reset";
};
};
3 changes: 2 additions & 1 deletion target/linux/ath79/generic/base-files/etc/board.d/01_leds
Expand Up @@ -12,7 +12,8 @@ case "$board" in
ucidef_set_led_netdev "lan" "LAN" "$boardname:orange:eth0" "eth0"
ucidef_set_led_switch "wan" "WAN" "$boardname:orange:eth1" "switch0" "0x04"
;;
alfa-network,ap121f)
alfa-network,ap121f|\
avm,fritz450e)
ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth0"
;;
avm,fritz1750e)
Expand Down
3 changes: 2 additions & 1 deletion target/linux/ath79/generic/base-files/etc/board.d/02_network
Expand Up @@ -338,7 +338,8 @@ ath79_setup_macs()
alfa-network,ap121f)
label_mac=$(mtd_get_mac_binary art 0x1002)
;;
avm,fritz1750e)
avm,fritz1750e|\
avm,fritz450e)
label_mac=$(fritz_tffs -n macwlan -i $(find_mtd_part "tffs (1)"))
;;
avm,fritz300e)
Expand Down
Expand Up @@ -10,7 +10,8 @@ case "$FIRMWARE" in
"ath9k-eeprom-ahb-18100000.wmac.bin")
case $board in
avm,fritz1750e|\
avm,fritz4020)
avm,fritz4020|\
avm,fritz450e)
caldata_extract_reverse "urlader" 0x1541 0x440
;;
dlink,dir-505|\
Expand Down
Expand Up @@ -4,7 +4,8 @@

preinit_set_mac_address() {
case $(board_name) in
avm,fritz1750e)
avm,fritz1750e|\
avm,fritz450e)
ip link set dev eth0 address $(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)"))
;;
siemens,ws-ap3610)
Expand Down
9 changes: 9 additions & 0 deletions target/linux/ath79/image/generic.mk
Expand Up @@ -201,6 +201,15 @@ define Device/avm_fritz4020
endef
TARGET_DEVICES += avm_fritz4020

define Device/avm_fritz450e
$(Device/avm)
SOC := qca9556
IMAGE_SIZE := 15232k
DEVICE_MODEL := FRITZ!WLAN Repeater 450E
SUPPORTED_DEVICES += fritz450e
endef
TARGET_DEVICES += avm_fritz450e

define Device/buffalo_bhr-4grv
SOC := ar7242
DEVICE_VENDOR := Buffalo
Expand Down

3 comments on commit 8d9c108

@adschm
Copy link
Member

@adschm adschm commented on 8d9c108 Apr 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@blocktrron

SOC in compatible is not matching SOC in DTS name(s). Is this intended?

@blocktrron
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is messy all over the target.

I've prepared a patchset for this, however i first have to confirm no SoC specific quirks are attached to these.

@adschm
Copy link
Member

@adschm adschm commented on 8d9c108 Apr 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@blocktrron FYI: #2482 (comment)
Discussed something similar for ramips a while ago.

Please sign in to comment.