From patchwork Mon Sep 14 12:19:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Bauer X-Patchwork-Id: 1363557 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=david-bauer.net Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=Od6lYPOH; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BqlpN2WgTz9sSs for ; Mon, 14 Sep 2020 22:21:32 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=Aer+ysCg5ZjMQuhN4xZAlwS+5+VvsMw5yLLvI4A4vno=; b=Od6lYPOHX3ye/45n/jAwivdHek OK4rSFr2VgrEkW4djJEg+Y+2CUzkaet6W0OjDivZKNi/Jw93S87AMQnbgTjISXdgxSl5Kzh2kQtgA GIz8w8jTN/tZiUxFmbjLAQ4KXK6sbdX9U8iGzil3rDb6ZCtUTp4Ou5E9IAGyK9O8afIBkRdygeCzD ZLTnN/LwuMu38GtiDsz8bi9nh61aYevpS5/mKmRFhypIbrJ5Y119EQSMZ0FULbIBiwEuESwhJmySC RaSwoFeXJKncbDnA3pQ9nIqd08ECvz97at17PYDAAsW1mbzOjqNyqEuMiVW5GYWiMO8pkVHXJMq6P QkWreFcA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kHnSk-0003SL-1q; Mon, 14 Sep 2020 12:20:02 +0000 Received: from mars.blocktrron.ovh ([2001:41d0:401:3000::cbd] helo=mail.blocktrron.ovh) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kHnSe-0003Qx-Sm for openwrt-devel@lists.openwrt.org; Mon, 14 Sep 2020 12:19:59 +0000 Received: from localhost.localdomain (p200300e53f0b260029a2f56ff7bbb2a7.dip0.t-ipconnect.de [IPv6:2003:e5:3f0b:2600:29a2:f56f:f7bb:b2a7]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.blocktrron.ovh (Postfix) with ESMTPSA id 3A19227F4C for ; Mon, 14 Sep 2020 14:19:51 +0200 (CEST) From: David Bauer To: openwrt-devel@lists.openwrt.org Subject: [PATCH] ath79: add support for Ubiquiti UniFi AP Pro Date: Mon, 14 Sep 2020 14:19:44 +0200 Message-Id: <20200914121944.114046-1-mail@david-bauer.net> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200914_081957_126273_CE0F610E X-CRM114-Status: GOOD ( 20.68 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org 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 --- .../ath79/dts/ar9344_ubnt_unifi-ap-pro.dts | 153 ++++++++++++++++++ .../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, 183 insertions(+) create mode 100644 target/linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts 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..8b6e1bfd6d --- /dev/null +++ b/target/linux/ath79/dts/ar9344_ubnt_unifi-ap-pro.dts @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#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 = ; + 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 = "kernel"; + reg = <0x50000 0x300000>; + /* Can be resized w/o issues. + * U-Boot canload kernel from the + * entirety of the "firmware" partition space. + */ + }; + + partition@350000 { + label = "rootfs"; + reg = <0x350000 0xc60000>; + }; + + firmware-partition@50000 { + label = "firmware"; + reg = <0x50000 0xf60000>; + }; + + partition@fb0000 { + label = "cfg"; + reg = <0xfb0000 0x40000>; + read-only; + }; + + art: partition@f0000 { + 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 f437f7432f..4105b639f0 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 @@ -370,6 +370,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 5ecae96cd1..4da7bfac6c 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..3593f637a6 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_SIZE) + IMAGE/factory.bin := $$(IMAGE/sysupgrade.bin) | mkubntimage2 + SUPPORTED_DEVICES += uap-pro +endef +TARGET_DEVICES += ubnt_unifi-ap-pro