[openwrt/openwrt] ath79: add support for Ubiquiti UniFi AP Pro

LEDE Commits lede-commits at lists.infradead.org
Thu Sep 17 12:11:35 EDT 2020


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

commit b7da0d294465d5ab8d923f3b8265ece0a5847ac3
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Fri Sep 11 18:32:05 2020 +0200

    ath79: add support for Ubiquiti UniFi AP Pro
    
    This adds support for the Ubiquiti UniFi AP Pro to the ath79 target. The
    device was previously supported on the now removed ar71xx target.
    
    SoC   Atheros AR9344
    WiFi  Atheros AR9344 & Atheros AR9280
    ETH   Atheros AR8327
    RAM   128M DDR2
    FLASH 16M SPI-NOR
    
    Installation
    ------------
    
    Follow the Ubiquiti TFTP recovery procedure for this device.
    
    1. Hold down the reset button while connecting power for 10 seconds.
    2. Transfer the factory image via TFTP to the AP (192.168.1.20)
    3. Wait 2 minutes for the AP to write the firmware to flash. The device
       will automatically reboot to OpenWrt.
    
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 .../linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts   | 158 +++++++++++++++++++++
 .../generic/base-files/etc/board.d/02_network      |   4 +
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         |   1 +
 target/linux/ath79/image/generic-ubnt.mk           |  25 ++++
 4 files changed, 188 insertions(+)

diff --git a/target/linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts b/target/linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts
new file mode 100644
index 0000000000..f8ffb6f0b9
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts
@@ -0,0 +1,158 @@
+// 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 "ar9344.dtsi"
+
+/ {
+	model = "Ubiquiti UniFi AP Pro";
+	compatible = "ubnt,unifi-ap-pro";
+
+	aliases {
+		led-boot = &led_white;
+		led-failsafe = &led_white;
+		led-running = &led_blue;
+		led-upgrade = &led_blue;
+		label-mac-device = &eth0;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_white: led-white {
+			label = "ubnt:white:dome";
+			gpios = <&gpio 12 GPIO_ACTIVE_HIGH>;
+		};
+
+		led_blue: led-blue {
+			label = "ubnt:blue:dome";
+			gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&ref {
+	clock-frequency = <40000000>;
+};
+
+&uart {
+	status = "okay";
+};
+
+&spi {
+	status = "okay";
+
+	num-cs = <1>;
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			uboot: partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x40000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "u-boot-env";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			partition at 50000 {
+				label = "firmware";
+				reg = <0x50000 0xf60000>;
+
+				compatible = "fixed-partitions";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				partition at 0 {
+					label = "kernel";
+					reg = <0x0 0x300000>;
+					/* Can be resized w/o issues.
+					 * U-Boot can load kernel from the
+					 * entirety of the "firmware" partition space.
+					 */
+				};
+
+				partition at 300000 {
+					label = "rootfs";
+					reg = <0x300000 0xc60000>;
+				};
+			};
+
+			partition at fb0000 {
+				label = "cfg";
+				reg = <0xfb0000 0x40000>;
+				read-only;
+			};
+
+			art: partition at ff0000 {
+				label = "art";
+				reg = <0xff0000 0x10000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+
+	wifi at 0,0 {
+		compatible = "pci168c,0033";
+		reg = <0 0 0 0 0>;
+		qca,no-eeprom;
+	};
+};
+
+&wmac {
+	status = "okay";
+
+	mtd-cal-data = <&art 0x1000>;
+};
+
+&mdio0 {
+	status = "okay";
+
+	phy0: ethernet-phy at 0 {
+		reg = <0>;
+
+		qca,ar8327-initvals = <
+			0x4 0x7600000 /* PORT0 PAD MODE CTRL */
+			0x10 0x80000080 /* POWER_ON_STRAP */
+			0x7c 0x7e /* PORT0_STATUS */
+			>;
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	pll-data = <0x6000000 0x101 0x1616>;
+
+	mtd-mac-address = <&art 0x0>;
+
+	phy-mode = "rgmii";
+	phy-handle = <&phy0>;
+};
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 40ea14fa9b..518ca6f91a 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
@@ -371,6 +371,10 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth0" "2:lan:1" "3:lan:2"
 		;;
+	ubnt,unifi-ap-pro)
+		ucidef_add_switch "switch0" \
+			"0 at eth0" "1:lan" "2:lan"
+		;;
 	zbtlink,zbt-wd323|\
 	xiaomi,mi-router-4q)
 		ucidef_set_interface_wan "eth1"
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 3983b1f8c0..88d43e25c4 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
@@ -98,6 +98,7 @@ case "$FIRMWARE" in
 	tplink,tl-wdr4300-v1-il|\
 	tplink,tl-wdr4310-v1|\
 	tplink,tl-wdr4900-v2|\
+	ubnt,unifi-ap-pro|\
 	winchannel,wb2000)
 		caldata_extract "art" 0x5000 0x440
 		;;
diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk
index b945183776..6939edd25d 100644
--- a/target/linux/ath79/image/generic-ubnt.mk
+++ b/target/linux/ath79/image/generic-ubnt.mk
@@ -13,6 +13,14 @@ define Build/mkubntimage
 		-k $(IMAGE_KERNEL) -r $@ -o $@
 endef
 
+define Build/mkubntimage2
+	-$(STAGING_DIR_HOST)/bin/mkfwimage2 -f 0x9f000000 \
+		-v $(UBNT_TYPE).$(UBNT_CHIP).v6.0.0-$(VERSION_DIST)-$(REVISION) \
+		-p jffs2:0x50000:0xf60000:0:0:$@ \
+		-o $@.new
+	@mv $@.new $@
+endef
+
 # all UBNT XM/WA devices expect the kernel image to have 1024k while flash, when
 # booting the image, the size doesn't matter.
 define Build/mkubntimage-split
@@ -369,3 +377,20 @@ define Device/ubnt_unifiac-pro
   SUPPORTED_DEVICES += unifiac-pro
 endef
 TARGET_DEVICES += ubnt_unifiac-pro
+
+define Device/ubnt_unifi-ap-pro
+  SOC := ar9344
+  DEVICE_VENDOR := Ubiquiti
+  DEVICE_MODEL := UniFi AP Pro
+  UBNT_TYPE := BZ
+  UBNT_CHIP := ar934x
+  KERNEL_SIZE := 3072k
+  IMAGE_SIZE := 15744k
+  KERNEL := kernel-bin | append-dtb | lzma | uImage lzma | jffs2 kernel0
+  IMAGES := sysupgrade.bin factory.bin
+  IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs |\
+	pad-rootfs | append-metadata | check-size
+  IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage2
+  SUPPORTED_DEVICES += uap-pro
+endef
+TARGET_DEVICES += ubnt_unifi-ap-pro



More information about the lede-commits mailing list