ath79: add support for AVM FRITZ!WLAN Repeater DVB-C

This commit adds support for the AVM FRITZ!WLAN Repeater DVB-C

SOC:   Qualcomm Atheros QCA9556
RAM:   64 MiB
FLASH: 16 MB SPI-NOR
WLAN:  QCA9556 3T3R 2.4 GHZ b/g/n and
       QCA9880 3T3R 5 GHz n/ac
ETH:   Atheros AR8033 1000 Base-T
DVB-C: EM28174 with MaxLinear MXL251 tuner
BTN:   WPS Button
LED:   Power, WLAN, TV, RSSI0-4

Tested and working:
 - Ethernet (correct MAC, gigabit, iperf3 about 200 Mbit/s)
 - 2.4 GHz Wi-Fi (correct MAC)
 - 5 GHz Wi-Fi (correct MAC)
 - WPS Button (tested using wifitoggle)
 - LEDs
 - Installation via EVA bootloader (FTP recovery)
 - OpenWrt sysupgrade (both CLI and LuCI)
 - Download of "urlader" (mtd0)

Not working:
 - Internal USB
 - DVB-C em28174+MxL251 (depends on internal USB)

Installation via EVA bootloader (FTP recovery):
Set NIC to 192.168.178.3/24 gateway 192.168.178.1 and power on the device,
connect to 192.168.178.1 through FTP and sign in with adam2/adam2:

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

Wait for "Transfer complete" together with the transfer details.
Wait two minutes to make sure flash is complete (just to be safe).

Then restart the device (power off and on) to boot into OpenWrt.
Revert your NIC settings to reach OpenWrt at 192.168.1.1

Signed-off-by: Natalie Kagelmacher <nataliek@pm.me>
[fixed sorting - removed change to other board -
prettified commit message]
Signed-off-by: David Bauer <mail@david-bauer.net>
This commit is contained in:
Natalie Kagelmacher 2020-05-14 10:44:21 +02:00 committed by David Bauer
parent 751e6ab8e6
commit 8ff631feff
7 changed files with 138 additions and 4 deletions

View File

@ -0,0 +1,111 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
#include "qca9556_avm_fritz-repeater.dtsi"
/ {
compatible = "avm,fritzdvbc", "qca,qca9556";
model = "AVM FRITZ!WLAN Repeater DVB-C";
aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
};
led_spi {
compatible = "spi-gpio";
#address-cells = <1>;
#size-cells = <0>;
sck-gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
mosi-gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
num-chipselects = <0>;
spi_gpio: led_gpio@0 {
compatible = "fairchild,74hc595";
reg = <0>;
gpio-controller;
#gpio-cells = <2>;
registers-number = <2>;
spi-max-frequency = <10000000>;
gpio_latch_bit {
gpio-hog;
gpios = <16 GPIO_ACTIVE_HIGH>;
output-high;
line-name = "gpio-latch-bit";
};
};
};
/*
* GPIO pins 100 or greater in the vendor GPL dump are redirected
* to the shift register.
* So OEM source pin 100 becomes 0 on the SR and so forth.
*/
leds {
compatible = "gpio-leds";
led_power: power {
label = "fritzdvbc:green:power";
gpios = <&spi_gpio 6 GPIO_ACTIVE_LOW>;
};
wlan {
label = "fritzdvbc:green:wlan";
gpios = <&spi_gpio 7 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy1tpt";
};
tv {
label = "fritzdvbc:green:tv";
gpios = <&spi_gpio 5 GPIO_ACTIVE_LOW>;
};
rssihigh {
label = "fritzdvbc:green:rssihigh";
gpios = <&spi_gpio 1 GPIO_ACTIVE_LOW>;
};
rssimediumhigh {
label = "fritzdvbc:green:rssimediumhigh";
gpios = <&spi_gpio 2 GPIO_ACTIVE_LOW>;
};
rssimedium {
label = "fritzdvbc:green:rssimedium";
gpios = <&spi_gpio 3 GPIO_ACTIVE_LOW>;
};
rssimediumlow {
label = "fritzdvbc:green:rssimediumlow";
gpios = <&spi_gpio 4 GPIO_ACTIVE_LOW>;
};
rssilow {
label = "fritzdvbc:green:rssilow";
gpios = <&spi_gpio 0 GPIO_ACTIVE_LOW>;
};
};
};
&pcie0 {
status = "okay";
};
&gpio {
reset-pcie-ep {
gpio-hog;
gpios = <109 GPIO_ACTIVE_HIGH>;
output-high;
line-name = "PCIE EP reset";
};
reset-pcie-bus {
gpio-hog;
gpios = <110 GPIO_ACTIVE_HIGH>;
output-high;
line-name = "PCIE Bus reset";
};
};

View File

@ -38,6 +38,14 @@ avm,fritz4020)
ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth1"
ucidef_set_led_switch "lan" "LAN" "$boardname:green:lan" "switch0" "0x1E"
;;
avm,fritzdvbc)
ucidef_set_rssimon "wlan1" "200000" "1"
ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:green:rssilow" "wlan1" "1" "100"
ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "$boardname:green:rssimediumlow" "wlan1" "20" "100"
ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "$boardname:green:rssimedium" "wlan1" "40" "100"
ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$boardname:green:rssimediumhigh" "wlan1" "60" "100"
ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$boardname:green:rssihigh" "wlan1" "80" "100"
;;
comfast,cf-e110n-v2)
ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth1"
ucidef_set_led_switch "wan" "WAN" "$boardname:green:wan" "switch0" "0x02"

View File

@ -15,6 +15,7 @@ ath79_setup_interfaces()
aruba,ap-105|\
avm,fritz1750e|\
avm,fritz300e|\
avm,fritzdvbc|\
comfast,cf-wr752ac-v1|\
comfast,cf-e130n-v2|\
devolo,dvl1200i|\
@ -352,7 +353,8 @@ ath79_setup_macs()
label_mac=$(mtd_get_mac_binary art 0x1002)
;;
avm,fritz1750e|\
avm,fritz450e)
avm,fritz450e|\
avm,fritzdvbc)
label_mac=$(fritz_tffs -n macwlan -i $(find_mtd_part "tffs (1)"))
;;
avm,fritz300e)

View File

@ -11,7 +11,8 @@ case "$FIRMWARE" in
case $board in
avm,fritz1750e|\
avm,fritz4020|\
avm,fritz450e)
avm,fritz450e|\
avm,fritzdvbc)
caldata_extract_reverse "urlader" 0x1541 0x440
;;
dlink,dap-2695-a1)

View File

@ -10,7 +10,8 @@ board=$(board_name)
case "$FIRMWARE" in
"ath10k/cal-pci-0000:00:00.0.bin")
case $board in
avm,fritz1750e)
avm,fritz1750e|\
avm,fritzdvbc)
caldata_extract "urlader" 0x198a 0x844
;;
comfast,cf-wr650ac-v1|\

View File

@ -3,7 +3,8 @@
preinit_set_mac_address() {
case $(board_name) in
avm,fritz1750e|\
avm,fritz450e)
avm,fritz450e|\
avm,fritzdvbc)
ip link set dev eth0 address $(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)"))
;;
dlink,dap-2695-a1)

View File

@ -223,6 +223,16 @@ define Device/avm_fritz450e
endef
TARGET_DEVICES += avm_fritz450e
define Device/avm_fritzdvbc
$(Device/avm)
SOC := qca9556
IMAGE_SIZE := 15232k
DEVICE_MODEL := FRITZ!WLAN Repeater DVB-C
DEVICE_PACKAGES += rssileds kmod-ath10k-ct-smallbuffers \
ath10k-firmware-qca988x-ct -swconfig
endef
TARGET_DEVICES += avm_fritzdvbc
define Device/buffalo_bhr-4grv
SOC := ar7242
DEVICE_VENDOR := Buffalo