ath79: add support for Ubiquiti UniFi AP Outdoor+
authorDavid Bauer <mail@david-bauer.net>
Wed, 9 Dec 2020 21:18:43 +0000 (22:18 +0100)
committerDavid Bauer <mail@david-bauer.net>
Sun, 31 Jan 2021 23:47:46 +0000 (00:47 +0100)
Hardware
--------
Atheros AR7241
16M SPI-NOR
64M DDR2
Atheros AR9283 2T2R b/g/n
2x Fast Ethernet (built-in)

Installation
------------

Transfer the Firmware update to the device using SCP.

Install using fwupdate.real -m <openwrt.bin> -d

Signed-off-by: David Bauer <mail@david-bauer.net>
target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts [new file with mode: 0644]
target/linux/ath79/dts/ar7241_ubnt_unifi.dts
target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi [new file with mode: 0644]
target/linux/ath79/generic/base-files/etc/board.d/02_network
target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
target/linux/ath79/image/generic-ubnt.mk

diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts b/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
new file mode 100644 (file)
index 0000000..68f83f7
--- /dev/null
@@ -0,0 +1,102 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar7241_ubnt_unifi.dtsi"
+
+/ {
+       compatible = "ubnt,unifi-ap-outdoor-plus", "qca,ar7241";
+       model = "Ubiquiti UniFi AP Outdoor+";
+
+       aliases {
+               led-boot = &led_white;
+               led-failsafe = &led_white;
+               led-running = &led_blue;
+               led-upgrade = &led_blue;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_blue: blue {
+                       label = "blue";
+                       gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               led_white: white {
+                       label = "white";
+                       gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&spi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <50000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       uboot: partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "u-boot-env";
+                               reg = <0x40000 0x10000>;
+                               read-only;
+                       };
+
+                       partition@50000 {
+                               label = "firmware";
+                               reg = <0x50000 0xf60000>;
+
+                               compatible = "fixed-partitions";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               partition@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@300000 {
+                                       label = "rootfs";
+                                       reg = <0x300000 0xc60000>;
+                               };
+                       };
+
+                       partition@fb0000 {
+                               label = "cfg";
+                               reg = <0xfb0000 0x40000>;
+                               read-only;
+                       };
+
+                       art: partition@ff0000 {
+                               label = "art";
+                               reg = <0xff0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&eth1 {
+       status = "okay";
+
+       mtd-mac-address = <&art 0x6>;
+};
+
+&wifi {
+       ubnt,hsr;
+};
index bdb4c61a483c9e02b3e5446b1f59d1b80472be21..287e8cc7db668e1c72a3cd8f7ac1ecd48206c509 100644 (file)
@@ -1,9 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include "ar7241.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
+#include "ar7241_ubnt_unifi.dtsi"
 
 / {
        compatible = "ubnt,unifi", "qca,ar7241";
                led-failsafe = &led_dome_green;
                led-running = &led_dome_green;
                led-upgrade = &led_dome_green;
-               label-mac-device = &wifi;
-       };
-
-       extosc: ref {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <40000000>;
-       };
-
-       keys {
-               compatible = "gpio-keys";
-
-               reset {
-                       linux,code = <KEY_RESTART>;
-                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
-                       debounce-interval = <60>;
-               };
        };
 
        leds {
        };
 };
 
-&uart {
-       status = "okay";
-};
-
-&pll {
-       clocks = <&extosc>;
-};
-
 &spi {
        status = "okay";
 
        };
 };
 
-&pcie {
-       status = "okay";
-
-       wifi: wifi@0,0 {
-               reg = <0x0000 0 0 0 0>;
-               qca,no-eeprom;
-       };
-};
-
-&eth0 {
-       status = "okay";
-
-       mtd-mac-address = <&art 0x0>;
-};
-
 &eth1 {
        compatible = "syscon", "simple-mfd";
 };
diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi b/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi
new file mode 100644 (file)
index 0000000..7bf79f7
--- /dev/null
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "ar7241.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       aliases {
+               label-mac-device = &wifi;
+       };
+
+       extosc: ref {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <40000000>;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&uart {
+       status = "okay";
+};
+
+&pll {
+       clocks = <&extosc>;
+};
+
+&pcie {
+       status = "okay";
+
+       wifi: wifi@0,0 {
+               reg = <0x0000 0 0 0 0>;
+               qca,no-eeprom;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       mtd-mac-address = <&art 0x0>;
+};
+
index 2d76d16f9fba8c5965804b01a1baaf4028fcfe05..cb6765bba54df30df329692353b8b487250c3e29 100755 (executable)
@@ -108,7 +108,8 @@ ath79_setup_interfaces()
        alfa-network,n5q|\
        devolo,dvl1200e|\
        devolo,dvl1750e|\
-       ocedo,ursus)
+       ocedo,ursus|\
+       ubnt,unifi-ap-outdoor-plus)
                ucidef_set_interface_lan "eth0 eth1"
                ;;
        avm,fritz4020|\
index d50d8d9f829047cbc2103e125b5f0a64f42fa47f..552eb406ab8e25df0f2b695c07ba4594cf2d4b87 100644 (file)
@@ -74,7 +74,8 @@ case "$FIRMWARE" in
        avm,fritz300e)
                caldata_extract_reverse "urloader" 0x1541 0x440
                ;;
-       buffalo,wzr-hp-g302h-a1a0)
+       buffalo,wzr-hp-g302h-a1a0|\
+       ubnt,unifi-ap-outdoor-plus)
                caldata_extract "art" 0x1000 0xeb8
                ;;
        buffalo,wzr-hp-g450h|\
index 91a18d3d3551bf82cd58204d5e5856c1e98bc46f..733d803d7ab6c42f249f5f1b10ceb7d22e0edac2 100644 (file)
@@ -120,6 +120,18 @@ define Device/ubnt-xw
   UBNT_VERSION := 6.0.4
 endef
 
+define Device/ubnt-unifi-jffs2
+  $(Device/ubnt)
+  KERNEL_SIZE := 3072k
+  IMAGE_SIZE := 15744k
+  UBNT_TYPE := BZ
+  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
+endef
+
 define Device/ubnt-acb
   $(Device/ubnt)
   IMAGE_SIZE := 15744k
@@ -420,19 +432,19 @@ define Device/ubnt_unifiac-pro
 endef
 TARGET_DEVICES += ubnt_unifiac-pro
 
+define Device/ubnt_unifi-ap-outdoor-plus
+  $(Device/ubnt-bz)
+  $(Device/ubnt-unifi-jffs2)
+  DEVICE_MODEL := UniFi AP Outdoor+
+  SUPPORTED_DEVICES += unifi-outdoor-plus
+endef
+TARGET_DEVICES += ubnt_unifi-ap-outdoor-plus
+
 define Device/ubnt_unifi-ap-pro
+  $(Device/ubnt-unifi-jffs2)
   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