ath79: add AVM FRITZ!WLAN Repeater 300E
No known issues, everything works fine. Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
		| @@ -5,8 +5,19 @@ | |||||||
| board_config_update | board_config_update | ||||||
|  |  | ||||||
| board=$(board_name) | board=$(board_name) | ||||||
|  | boardname="${board##*,}" | ||||||
|  |  | ||||||
| case "$board" in | case "$board" in | ||||||
|  | "avm,fritz300e") | ||||||
|  | 	ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth0" | ||||||
|  | 	ucidef_set_led_wlan "wlan" "WLAN" "$boardname:green:wlan" "phy0tpt" | ||||||
|  | 	ucidef_set_rssimon "wlan0" "200000" "1" | ||||||
|  | 	ucidef_set_led_rssi "rssilow" "RSSILOW" "$boardname:green:rssi0" "wlan0" "1" "100" | ||||||
|  | 	ucidef_set_led_rssi "rssimediumlow" "RSSIMEDIUMLOW" "$boardname:green:rssi1" "wlan0" "20" "100" | ||||||
|  | 	ucidef_set_led_rssi "rssimedium" "RSSIMEDIUM" "$boardname:green:rssi2" "wlan0" "40" "100" | ||||||
|  | 	ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$boardname:green:rssi3" "wlan0" "60" "100" | ||||||
|  | 	ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$boardname:green:rssi4" "wlan0" "80" "100" | ||||||
|  | 	;; | ||||||
| "glinet,ar150") | "glinet,ar150") | ||||||
| 	ucidef_set_led_wlan "wlan" "WLAN" "gl-ar150:orange:wlan" "phy0tpt" | 	ucidef_set_led_wlan "wlan" "WLAN" "gl-ar150:orange:wlan" "phy0tpt" | ||||||
| 	;; | 	;; | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ ath79_setup_interfaces() | |||||||
| 	local board="$1" | 	local board="$1" | ||||||
|  |  | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
|  | 	"avm,fritz300e"|\ | ||||||
| 	"ubnt,unifi") | 	"ubnt,unifi") | ||||||
| 		ucidef_set_interface_lan "eth0" | 		ucidef_set_interface_lan "eth0" | ||||||
| 		;; | 		;; | ||||||
| @@ -36,9 +37,23 @@ ath79_setup_interfaces() | |||||||
| 	esac | 	esac | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ath79_setup_macs() | ||||||
|  | { | ||||||
|  | 	local board="$1" | ||||||
|  |  | ||||||
|  | 	case "$board" in | ||||||
|  | 	avm,fritz300e) | ||||||
|  | 		lan_mac=$(fritz_tffs -n maca -i $(find_mtd_part "tffs (1)")) | ||||||
|  | 		;; | ||||||
|  | 	esac | ||||||
|  |  | ||||||
|  | 	[ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac | ||||||
|  | } | ||||||
|  |  | ||||||
| board_config_update | board_config_update | ||||||
| board=$(board_name) | board=$(board_name) | ||||||
| ath79_setup_interfaces $board | ath79_setup_interfaces $board | ||||||
|  | ath79_setup_macs $board | ||||||
| board_config_flush | board_config_flush | ||||||
|  |  | ||||||
| exit 0 | exit 0 | ||||||
|   | |||||||
| @@ -4,8 +4,12 @@ | |||||||
|  |  | ||||||
| get_status_led() { | get_status_led() { | ||||||
| 	local board=$(board_name) | 	local board=$(board_name) | ||||||
|  | 	local boardname="${board##*,}" | ||||||
|  |  | ||||||
| 	case $board in | 	case $board in | ||||||
|  | 	"avm,fritz300e") | ||||||
|  | 		status_led="${boardname}:green:power" | ||||||
|  | 		;; | ||||||
| 	"glinet,ar150") | 	"glinet,ar150") | ||||||
| 		status_led="gl-ar150:orange:wlan" | 		status_led="gl-ar150:orange:wlan" | ||||||
| 		;; | 		;; | ||||||
|   | |||||||
| @@ -24,11 +24,32 @@ ath9k_eeprom_extract() { | |||||||
| 		ath9k_eeprom_die "failed to extract from $mtd" | 		ath9k_eeprom_die "failed to extract from $mtd" | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ath9k_eeprom_extract_reverse() { | ||||||
|  | 	local part=$1 | ||||||
|  | 	local offset=$2 | ||||||
|  | 	local count=$3 | ||||||
|  | 	local mtd | ||||||
|  | 	local reversed | ||||||
|  | 	local caldata | ||||||
|  |  | ||||||
|  | 	mtd=$(find_mtd_chardev "$part") | ||||||
|  | 	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd) | ||||||
|  |  | ||||||
|  | 	for byte in $reversed; do | ||||||
|  | 		caldata="\x${byte}${caldata}" | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE | ||||||
|  | } | ||||||
|  |  | ||||||
| board=$(board_name) | board=$(board_name) | ||||||
|  |  | ||||||
| case "$FIRMWARE" in | case "$FIRMWARE" in | ||||||
| "ath9k-eeprom-pci-0000:00:00.0.bin") | "ath9k-eeprom-pci-0000:00:00.0.bin") | ||||||
| 	case $board in | 	case $board in | ||||||
|  | 	"avm,fritz300e") | ||||||
|  | 		ath9k_eeprom_extract_reverse "urloader" 5441 1088 | ||||||
|  | 		;; | ||||||
| 	"ubnt,unifi") | 	"ubnt,unifi") | ||||||
| 		ath9k_eeprom_extract "art" 4096 2048 | 		ath9k_eeprom_extract "art" 4096 2048 | ||||||
| 		;; | 		;; | ||||||
|   | |||||||
							
								
								
									
										169
									
								
								target/linux/ath79/dts/ar7242_avm_fritz300e.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										169
									
								
								target/linux/ath79/dts/ar7242_avm_fritz300e.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,169 @@ | |||||||
|  | // 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 "ar7242.dtsi" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	compatible = "avm,fritz300e", "qca,ar7242"; | ||||||
|  | 	model = "AVM FRITZ!WLAN Repeater 300E"; | ||||||
|  |  | ||||||
|  | 	memory@0 { | ||||||
|  | 		device_type = "memory"; | ||||||
|  | 		reg = <0x0 0x4000000>; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	gpio-keys { | ||||||
|  | 		compatible = "gpio-keys-polled"; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 		poll-interval = <20>; | ||||||
|  |  | ||||||
|  | 		wps { | ||||||
|  | 			label = "wps"; | ||||||
|  | 			linux,code = <KEY_WPS_BUTTON>; | ||||||
|  | 			gpios = <&gpio 12 GPIO_ACTIVE_LOW>; | ||||||
|  | 			debounce-interval = <60>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	leds { | ||||||
|  | 		compatible = "gpio-leds"; | ||||||
|  |  | ||||||
|  | 		power { | ||||||
|  | 			label = "fritz300e:green:power"; | ||||||
|  | 			gpios = <&gpio 13 GPIO_ACTIVE_LOW>; | ||||||
|  | 			default-state = "on"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		lan { | ||||||
|  | 			label = "fritz300e:green:lan"; | ||||||
|  | 			gpios = <&gpio 15 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		wlan { | ||||||
|  | 			label = "fritz300e:green:wlan"; | ||||||
|  | 			gpios = <&gpio 16 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	ath9k-leds { | ||||||
|  | 		compatible = "gpio-leds"; | ||||||
|  |  | ||||||
|  | 		rssi0 { | ||||||
|  | 			label = "fritz300e:green:rssi0"; | ||||||
|  | 			gpios = <&ath9k 10 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		rssi1 { | ||||||
|  | 			label = "fritz300e:green:rssi1"; | ||||||
|  | 			gpios = <&ath9k 4 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		rssi2 { | ||||||
|  | 			label = "fritz300e:green:rssi2"; | ||||||
|  | 			gpios = <&ath9k 6 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		rssi3 { | ||||||
|  | 			label = "fritz300e:green:rssi3"; | ||||||
|  | 			gpios = <&ath9k 7 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		rssi4 { | ||||||
|  | 			label = "fritz300e:green:rssi4"; | ||||||
|  | 			gpios = <&ath9k 5 GPIO_ACTIVE_LOW>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	eth-phy-reset { | ||||||
|  | 		compatible = "regulator-fixed"; | ||||||
|  |  | ||||||
|  | 		regulator-name = "eth-phy-reset"; | ||||||
|  | 		regulator-min-microvolt = <3300000>; | ||||||
|  | 		regulator-max-microvolt = <3300000>; | ||||||
|  |  | ||||||
|  | 		gpio = <&gpio 11 GPIO_ACTIVE_LOW>; | ||||||
|  | 		startup-delay-us = <300000>; | ||||||
|  | 		enable-active-high; | ||||||
|  |  | ||||||
|  | 		regulator-always-on; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &spi { | ||||||
|  | 	status = "okay"; | ||||||
|  | 	num-cs = <1>; | ||||||
|  |  | ||||||
|  | 	flash@0 { | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 		compatible = "jedec,spi-nor"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-max-frequency = <25000000>; | ||||||
|  |  | ||||||
|  | 		partitions { | ||||||
|  | 			compatible = "fixed-partitions"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 			partition@0 { | ||||||
|  | 				reg = <0x0 0x20000>; | ||||||
|  | 				label = "urloader"; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@20000 { | ||||||
|  | 				reg = <0x20000 0xee0000>; | ||||||
|  | 				label = "firmware"; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@f00000 { | ||||||
|  | 				reg = <0xf00000 0x80000>; | ||||||
|  | 				label = "tffs (1)"; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			partition@f80000 { | ||||||
|  | 				reg = <0xf80000 0x80000>; | ||||||
|  | 				label = "tffs (2)"; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &uart { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie { | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	ath9k: wifi@0000 { | ||||||
|  | 		reg = <0x0000 0 0 0 0>; | ||||||
|  | 		#gpio-cells = <2>; | ||||||
|  | 		gpio-controller; | ||||||
|  | 		qca,no-eeprom; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &mdio0 { | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	phy0: ethernet-phy@0 { | ||||||
|  | 		reg = <0>; | ||||||
|  | 		phy-mode = "rgmii"; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | ð0 { | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	phy-mode = "rgmii"; | ||||||
|  | 	phy-handle = <&phy0>; | ||||||
|  |  | ||||||
|  | 	pll-data = <0x16000000 0x00000101 0x00001313>; | ||||||
|  | }; | ||||||
| @@ -1,5 +1,7 @@ | |||||||
| CONFIG_BLK_MQ_PCI=y | CONFIG_BLK_MQ_PCI=y | ||||||
|  | CONFIG_INTEL_XWAY_PHY=y | ||||||
| CONFIG_LEDS_RESET=y | CONFIG_LEDS_RESET=y | ||||||
|  | CONFIG_MTD_SPLIT_EVA_FW=y | ||||||
| CONFIG_OF_ADDRESS_PCI=y | CONFIG_OF_ADDRESS_PCI=y | ||||||
| CONFIG_OF_PCI=y | CONFIG_OF_PCI=y | ||||||
| CONFIG_OF_PCI_IRQ=y | CONFIG_OF_PCI_IRQ=y | ||||||
| @@ -10,3 +12,5 @@ CONFIG_PCI_DISABLE_COMMON_QUIRKS=y | |||||||
| CONFIG_PCI_DOMAINS=y | CONFIG_PCI_DOMAINS=y | ||||||
| CONFIG_PHY_AR7100_USB=y | CONFIG_PHY_AR7100_USB=y | ||||||
| CONFIG_PHY_AR7200_USB=y | CONFIG_PHY_AR7200_USB=y | ||||||
|  | CONFIG_REGULATOR=y | ||||||
|  | CONFIG_REGULATOR_FIXED_VOLTAGE=y | ||||||
|   | |||||||
| @@ -21,6 +21,20 @@ define Build/netgear-uImage | |||||||
| 	$(call Build/uImage,$(1) -M $(NETGEAR_KERNEL_MAGIC)) | 	$(call Build/uImage,$(1) -M $(NETGEAR_KERNEL_MAGIC)) | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  |  | ||||||
|  | define Device/avm_fritz300e | ||||||
|  |   ATH_SOC := ar7242 | ||||||
|  |   DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E | ||||||
|  |   KERNEL := kernel-bin | append-dtb | lzma | eva-image | ||||||
|  |   KERNEL_INITRAMFS := $$(KERNEL) | ||||||
|  |   IMAGE_SIZE := 15232k | ||||||
|  |   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 rssileds -swconfig | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += avm_fritz300e | ||||||
|  |  | ||||||
| define Device/embeddedwireless_dorin | define Device/embeddedwireless_dorin | ||||||
|   ATH_SOC := ar9331 |   ATH_SOC := ar9331 | ||||||
|   DEVICE_TITLE := Embedded Wireless Dorin |   DEVICE_TITLE := Embedded Wireless Dorin | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mathias Kresin
					Mathias Kresin