[openwrt/openwrt] ath79: add support for AVM FRITZ!WLAN Repeater DVB-C

LEDE Commits lede-commits at lists.infradead.org
Wed Jun 24 20:37:48 EDT 2020


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/8ff631feff50e901f75d9cdae4c475050d6fc4a7

commit 8ff631feff50e901f75d9cdae4c475050d6fc4a7
Author: Natalie Kagelmacher <nataliek at pm.me>
AuthorDate: Thu May 14 10:44:21 2020 +0200

    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 at pm.me>
    [fixed sorting - removed change to other board -
    prettified commit message]
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 target/linux/ath79/dts/qca9556_avm_fritzdvbc.dts   | 111 +++++++++++++++++++++
 .../ath79/generic/base-files/etc/board.d/01_leds   |   8 ++
 .../generic/base-files/etc/board.d/02_network      |   4 +-
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         |   3 +-
 .../etc/hotplug.d/firmware/11-ath10k-caldata       |   3 +-
 .../base-files/lib/preinit/10_fix_eth_mac.sh       |   3 +-
 target/linux/ath79/image/generic.mk                |  10 ++
 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 at 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



More information about the lede-commits mailing list