aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatalie Kagelmacher <nataliek@pm.me>2020-05-14 10:44:21 +0200
committerDavid Bauer <mail@david-bauer.net>2020-06-25 02:35:35 +0200
commit8ff631feff50e901f75d9cdae4c475050d6fc4a7 (patch)
treea2dea83ca67b2a650f6cb79296010eb12404304a
parent751e6ab8e625b7b29d1184c8f28ecd6b2df81fa0 (diff)
downloadupstream-8ff631feff50e901f75d9cdae4c475050d6fc4a7.tar.gz
upstream-8ff631feff50e901f75d9cdae4c475050d6fc4a7.tar.bz2
upstream-8ff631feff50e901f75d9cdae4c475050d6fc4a7.zip
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>
-rw-r--r--target/linux/ath79/dts/qca9556_avm_fritzdvbc.dts111
-rwxr-xr-xtarget/linux/ath79/generic/base-files/etc/board.d/01_leds8
-rwxr-xr-xtarget/linux/ath79/generic/base-files/etc/board.d/02_network4
-rw-r--r--target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom3
-rw-r--r--target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata3
-rw-r--r--target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh3
-rw-r--r--target/linux/ath79/image/generic.mk10
7 files changed, 138 insertions, 4 deletions
diff --git a/target/linux/ath79/dts/qca9556_avm_fritzdvbc.dts b/target/linux/ath79/dts/qca9556_avm_fritzdvbc.dts
new file mode 100644
index 0000000000..28b19f92ef
--- /dev/null
+++ b/target/linux/ath79/dts/qca9556_avm_fritzdvbc.dts
@@ -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";
+ };
+};
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
index be0c3b1217..398c9ed495 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
@@ -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"
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
index 02245031fa..4b74565aa3 100755
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
@@ -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)
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 56d083b4bf..3db4d2a994 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -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)
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 603557d6c2..9d4306e66b 100644
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -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|\
diff --git a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
index 61577a376b..c5d9cd536f 100644
--- a/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
+++ b/target/linux/ath79/generic/base-files/lib/preinit/10_fix_eth_mac.sh
@@ -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)
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index e92dbc99d6..9f296adaa7 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -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