diff mbox series

[2/2] ath79: add support for Ubiquiti UniFi AP Outdoor+

Message ID 20210123005854.576853-2-mail@david-bauer.net
State Under Review
Delegated to: David Bauer
Headers show
Series [1/2] mac80211: convert UniFi Outdoor+ HSR support to OF | expand

Commit Message

David Bauer Jan. 23, 2021, 12:58 a.m. UTC
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>
---
 .../dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts | 102 ++++++++++++++++++
 target/linux/ath79/dts/ar7241_ubnt_unifi.dts  |  45 +-------
 target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi |  52 +++++++++
 .../generic/base-files/etc/board.d/02_network |   3 +-
 .../etc/hotplug.d/firmware/10-ath9k-eeprom    |   3 +-
 target/linux/ath79/image/generic-ubnt.mk      |  30 ++++--
 6 files changed, 180 insertions(+), 55 deletions(-)
 create mode 100644 target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
 create mode 100644 target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi

Comments

Adrian Schmutzler Jan. 23, 2021, 11:28 a.m. UTC | #1
Hi,

two comments below.

> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led_white: white {
> +			label = "blue";
> +			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		blue {
> +			label = "white";
> +			gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
> +		};

Labels and nodes are swapped?

[...]

> --- a/target/linux/ath79/image/generic-ubnt.mk
> +++ b/target/linux/ath79/image/generic-ubnt.mk
> @@ -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)

I found it rather confusing to mix these two includes here. I'd personally prefer to just use ubnt-unifi-jffs2 here (like for the ap-pro) and add the other few surviving variables from ubnt-bz here directly. This is also more consistent with ap-pro and should thus be quicker to grasp ...

Best

Adrian

> +  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
> --
> 2.30.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
diff mbox series

Patch

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
index 0000000000..936850b7df
--- /dev/null
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi-ap-outdoor-plus.dts
@@ -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_white;
+		led-upgrade = &led_white;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_white: white {
+			label = "blue";
+			gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+		};
+
+		blue {
+			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 {
+	ath9k,ubnt-hsr;
+};
diff --git a/target/linux/ath79/dts/ar7241_ubnt_unifi.dts b/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
index bdb4c61a48..287e8cc7db 100644
--- a/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi.dts
@@ -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";
@@ -14,23 +11,6 @@ 
 		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 {
@@ -48,14 +28,6 @@ 
 	};
 };
 
-&uart {
-	status = "okay";
-};
-
-&pll {
-	clocks = <&extosc>;
-};
-
 &spi {
 	status = "okay";
 
@@ -108,21 +80,6 @@ 
 	};
 };
 
-&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
index 0000000000..7bf79f7465
--- /dev/null
+++ b/target/linux/ath79/dts/ar7241_ubnt_unifi.dtsi
@@ -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>;
+};
+
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 0c08871f99..9db4799e52 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
@@ -107,7 +107,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|\
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 d50d8d9f82..552eb406ab 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
@@ -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|\
diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk
index 91a18d3d35..733d803d7a 100644
--- a/target/linux/ath79/image/generic-ubnt.mk
+++ b/target/linux/ath79/image/generic-ubnt.mk
@@ -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