I was informed that gpio-hogs might be the thing we are looking for, i will look into that. So this patch should be hold back for now.
On 8/16/18 2:15 AM, David Bauer wrote: > This commit adds support for the AVM Fritz!Box 4020 WiFi-router. > > SoC: Qualcomm Atheros QCA9561 (Dragonfly) 750MHz > RAM: Winbond W971GG6KB-25 > FLASH: Macronix MX25L12835F > WiFi: QCA9561 b/g/n 3x3 450Mbit/s > USB: 1x USB 2.0 > IN: WPS button, WiFi button > OUT: Power LED green, Internet LED green, WLAN LED green, > LAN LED green, INFO LED green, INFO LED red > UART: 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. > > Tested and working: > - Ethernet (LAN + WAN) > - WiFi (correct MAC) > - Installation via EVA bootloader > - OpenWRT sysupgrade > - Buttons > - LEDs > > Not working: > - USB port > > Installation via EVA: > In the first seconds after Power is connected, the bootloader will > listen for FTP connections on 169.254.157.1 (Might also be 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. After transfer is > complete you need to powercycle the device to boot OpenWRT. > > Signed-off-by: David Bauer <m...@david-bauer.net> > --- > > v2 changes: > - add annotation for initial output-line-state setting > - rebase onto current master > > .../ath79/base-files/etc/board.d/01_leds | 4 + > .../ath79/base-files/etc/board.d/02_network | 5 + > .../etc/hotplug.d/firmware/10-ath9k-eeprom | 3 + > .../linux/ath79/dts/qca9561_avm_fritz4020.dts | 172 ++++++++++++++++++ > target/linux/ath79/image/generic.mk | 14 ++ > .../005-gpio-74x164-add-initvals.patch | 15 ++ > 6 files changed, 213 insertions(+) > create mode 100644 target/linux/ath79/dts/qca9561_avm_fritz4020.dts > create mode 100644 > target/linux/ath79/patches-4.14/005-gpio-74x164-add-initvals.patch > > diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds > b/target/linux/ath79/base-files/etc/board.d/01_leds > index c3dc1bbe56..f058bf599e 100755 > --- a/target/linux/ath79/base-files/etc/board.d/01_leds > +++ b/target/linux/ath79/base-files/etc/board.d/01_leds > @@ -17,6 +17,10 @@ avm,fritz300e) > ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" > "$boardname:green:rssi3" "wlan0" "60" "100" > ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$boardname:green:rssi4" > "wlan0" "80" "100" > ;; > +avm,fritz4020) > + ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0" > + ucidef_set_led_switch "lan" "LAN" "$boardname:green:lan" "switch0" > "0x1E" > + ;; > etactica,eg200) > ucidef_set_led_netdev "lan" "LAN" "$boardname:red:eth0" "eth0" > ucidef_set_led_oneshot "modbus" "Modbus" "$boardname:red:modbus" "100" > "33" > diff --git a/target/linux/ath79/base-files/etc/board.d/02_network > b/target/linux/ath79/base-files/etc/board.d/02_network > index a29a295c56..6cd1686e23 100755 > --- a/target/linux/ath79/base-files/etc/board.d/02_network > +++ b/target/linux/ath79/base-files/etc/board.d/02_network > @@ -43,6 +43,7 @@ ath79_setup_interfaces() > etactica,eg200) > ucidef_set_interface_lan "eth0" "dhcp" > ;; > + avm,fritz4020|\ > glinet,ar150|\ > glinet,ar300m) > ucidef_set_interfaces_lan_wan "eth1" "eth0" > @@ -155,6 +156,10 @@ ath79_setup_macs() > avm,fritz300e) > lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)")) > ;; > + avm,fritz4020) > + lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)")) > + wan_mac=$(fritz_tffs -n macb -i $(find_mtd_part "tffs (1)")) > + ;; > dlink,dir-825-b1) > lan_mac=$(mtd_get_mac_text "caldata" 65440) > wan_mac=$(mtd_get_mac_text "caldata" 65460) > diff --git > a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > index f71139c55c..c36b566a35 100644 > --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom > @@ -97,6 +97,9 @@ board=$(board_name) > case "$FIRMWARE" in > "ath9k-eeprom-ahb-18100000.wmac.bin") > case $board in > + avm,fritz4020) > + ath9k_eeprom_extract_reverse "urlader" 5441 1088 > + ;; > iodata,wn-ac1600dgr2) > ath9k_eeprom_extract "art" 4096 1088 > ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2 > diff --git a/target/linux/ath79/dts/qca9561_avm_fritz4020.dts > b/target/linux/ath79/dts/qca9561_avm_fritz4020.dts > new file mode 100644 > index 0000000000..a4e059efd4 > --- /dev/null > +++ b/target/linux/ath79/dts/qca9561_avm_fritz4020.dts > @@ -0,0 +1,172 @@ > +// 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 "qca956x.dtsi" > + > +/ { > + compatible = "avm,fritz4020", "qca,qca9560"; > + model = "AVM FRITZ!Box 4020"; > + > + aliases { > + led-boot = &power; > + led-failsafe = &info_red; > + led-running = &power; > + led-upgrade = &info_red; > + }; > + > + chosen { > + bootargs = "console=ttyS0,115200n8"; > + }; > + > + led_spi { > + compatible = "spi-gpio"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + gpio-sck = <&gpio 20 GPIO_ACTIVE_HIGH>; > + gpio-mosi = <&gpio 19 GPIO_ACTIVE_HIGH>; > + num-chipselects = <0>; > + > + led_gpio: led_gpio@0 { > + compatible = "fairchild,74hc595"; > + reg = <0>; > + gpio-controller; > + #gpio-cells = <2>; > + registers-number = <1>; > + lines-initial-states = /bits/ 8 <0xff>; > + spi-max-frequency = <10000000>; > + }; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + power: power { > + label = "fritz4020:green:power"; > + gpios = <&led_gpio 2 GPIO_ACTIVE_LOW>; > + default-state = "on"; > + }; > + > + wlan { > + label = "fritz4020:green:wlan"; > + gpios = <&led_gpio 3 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "phy0tpt"; > + default-state = "off"; > + }; > + > + lan { > + label = "fritz4020:green:lan"; > + gpios = <&led_gpio 0 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + }; > + > + wan { > + label = "fritz4020:green:wan"; > + gpios = <&led_gpio 4 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + }; > + > + info { > + label = "fritz4020:green:info"; > + gpios = <&led_gpio 6 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + }; > + > + info_red: info_red { > + label = "fritz4020:red:info"; > + gpios = <&led_gpio 1 GPIO_ACTIVE_LOW>; > + default-state = "off"; > + }; > + }; > + > + keys { > + compatible = "gpio-keys-polled"; > + poll-interval = <100>; > + > + wps_button { > + label = "WPS button"; > + linux,code = <KEY_WPS_BUTTON>; > + gpios = <&gpio 2 GPIO_ACTIVE_HIGH>; > + }; > + > + wlan_button { > + label = "WLAN button"; > + linux,code = <KEY_RFKILL>; > + gpios = <&gpio 21 GPIO_ACTIVE_HIGH>; > + }; > + }; > +}; > + > +&uart { > + status = "okay"; > +}; > + > +&gpio { > + 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 = <0x000000 0x020000>; > + read-only; > + }; > + > + partition@1 { > + label = "firmware"; > + reg = <0x020000 0xee0000>; > + }; > + > + partition@2 { > + label = "tffs (1)"; > + reg = <0xf00000 0x080000>; > + read-only; > + }; > + > + partition@3 { > + label = "tffs (2)"; > + reg = <0xf80000 0x080000>; > + read-only; > + }; > + }; > + }; > +}; > + > +ð0 { > + status = "okay"; > + > + phy-mode = "mii"; > + phy-handle = <&swphy0>; > + > + gmac-config { > + device = <&gmac>; > + > + switch-phy-addr-swap = <1>; > + switch-phy-swap = <1>; > + }; > +}; > + > +ð1 { > + status = "okay"; > +}; > + > +&wmac { > + status = "okay"; > + qca,no-eeprom; > +}; > diff --git a/target/linux/ath79/image/generic.mk > b/target/linux/ath79/image/generic.mk > index 01020810cc..64043d7535 100644 > --- a/target/linux/ath79/image/generic.mk > +++ b/target/linux/ath79/image/generic.mk > @@ -13,6 +13,20 @@ define Device/avm_fritz300e > endef > TARGET_DEVICES += avm_fritz300e > > +define Device/avm_fritz4020 > + ATH_SOC := qca9561 > + DEVICE_TITLE := AVM FRITZ!Box 4020 > + IMAGE_SIZE := 15232k > + KERNEL := kernel-bin | append-dtb | lzma | eva-image > + KERNEL_INITRAMFS := $$(KERNEL) > + IMAGE/sysupgrade.bin := append-kernel | pad-to 64k | \ > + append-squashfs-fakeroot-be | pad-to 256 | \ > + append-rootfs | pad-rootfs | append-metadata | check-size > $$$$(IMAGE_SIZE) > + DEVICE_PACKAGES := fritz-tffs > + SUPPORTED_DEVICES += fritz4020 > +endef > +TARGET_DEVICES += avm_fritz4020 > + > define Device/buffalo_wzr-hp-g450h > ATH_SOC := ar7242 > DEVICE_TITLE := Buffalo WZR-HP-G450H > diff --git > a/target/linux/ath79/patches-4.14/005-gpio-74x164-add-initvals.patch > b/target/linux/ath79/patches-4.14/005-gpio-74x164-add-initvals.patch > new file mode 100644 > index 0000000000..d72f7140c2 > --- /dev/null > +++ b/target/linux/ath79/patches-4.14/005-gpio-74x164-add-initvals.patch > @@ -0,0 +1,15 @@ > +Index: linux-4.14.62/drivers/gpio/gpio-74x164.c > +=================================================================== > +--- linux-4.14.62.orig/drivers/gpio/gpio-74x164.c > ++++ linux-4.14.62/drivers/gpio/gpio-74x164.c > +@@ -151,6 +151,10 @@ static int gen_74x164_probe(struct spi_d > + chip->gpio_chip.parent = &spi->dev; > + chip->gpio_chip.owner = THIS_MODULE; > + > ++ /* Set initial output line values */ > ++ of_property_read_u8_array(spi->dev.of_node, "lines-initial-states", > chip->buffer, > ++ chip->registers); > ++ > + mutex_init(&chip->lock); > + > + ret = __gen_74x164_write_config(chip); > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel