diff options
4 files changed, 188 insertions, 0 deletions
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 = ð0; + }; + + 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@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; + }; + }; + }; +}; + +&pcie { + status = "okay"; + + wifi@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@0 { + reg = <0>; + + qca,ar8327-initvals = < + 0x4 0x7600000 /* PORT0 PAD MODE CTRL */ + 0x10 0x80000080 /* POWER_ON_STRAP */ + 0x7c 0x7e /* PORT0_STATUS */ + >; + }; +}; + +ð0 { + 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@eth0" "2:lan:1" "3:lan:2" ;; + ubnt,unifi-ap-pro) + ucidef_add_switch "switch0" \ + "0@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 |