Message ID | trinity-6f7120e1-85e9-4874-80fb-503af96ff54d-1453280719983@3capp-gmx-bs14 |
---|---|
State | Changes Requested |
Headers | show |
Hello, It seems that whitespace is broken in this patch. Can you resend it, please? Thank you, Vittorio G On 20/01/2016 10:05:20 CET, p.wassi@gmx.at wrote: > From: P.Wassi <p.wassi at gmx.at> > > Add support for the Ubiquiti UniFi AP AC LITE > Signed-off-by: P.Wassi <p.wassi at gmx.at> > --- > This patch adds: > * New machine type > * Code for device setup > * Proper image configuration > * New target for the build system > * Network setup as LAN-only > * Diagnostic LED > * Sysupgrade Support > * ath10k firmware extraction > * Board detection > > base-files/etc/board.d/02_network | 1 > base-files/etc/diag.sh | 3 > base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 3 > base-files/lib/ar71xx.sh | 3 > base-files/lib/upgrade/platform.sh | 1 > config-4.1 | 1 > files/arch/mips/ath79/Kconfig.openwrt | 10 + > files/arch/mips/ath79/Makefile | 1 > files/arch/mips/ath79/mach-ubnt-unifiac.c | 109 ++++++++++++++++++++ > files/arch/mips/ath79/machtypes.h | 1 > generic/profiles/ubnt.mk | 11 ++ > image/Makefile | 11 +- > mikrotik/config-default | 1 > nand/config-default | 1 > 14 files changed, 155 insertions(+), 2 deletions(-) > > diff -rupN a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network > --- a/target/linux/ar71xx/base-files/etc/board.d/02_network > +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network > @@ -359,6 +359,7 @@ tl-wa901nd-v2 |\ > tl-wa901nd-v3 |\ > tl-wr703n |\ > tube2h |\ > +unifiac |\ > wndap360 |\ > mynet-rext |\ > wp543) > diff -rupN a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh > --- a/target/linux/ar71xx/base-files/etc/diag.sh > +++ b/target/linux/ar71xx/base-files/etc/diag.sh > @@ -339,7 +339,8 @@ get_status_led() { > unifi) > status_led="ubnt:green:dome" > ;; > - uap-pro) > + uap-pro | \ > + unifiac) > status_led="ubnt:white:dome" > ;; > unifi-outdoor-plus) > diff -rupN a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata > --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata > +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata > @@ -75,6 +75,9 @@ case "$FIRMWARE" in > ath10kcal_extract "ART" 20480 2116 > ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) > ;; > + unifiac) > + ath10kcal_extract "EEPROM" 20480 2116 > + ;; > esac > ;; > "ath10k/cal-pci-0000:01:00.0.bin") > diff -rupN a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh > --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh > +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh > @@ -905,6 +905,9 @@ ar71xx_board_detect() { > *UniFi) > name="unifi" > ;; > + *"UniFi-AC") > + name="unifiac" > + ;; > *"UniFi AP Pro") > name="uap-pro" > ;; > diff -rupN a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh > @@ -262,6 +262,7 @@ platform_check_image() { > wlae-ag300n | \ > nbg460n_550n_550nh | \ > unifi | \ > + unifiac | \ > unifi-outdoor | \ > carambola2 | \ > weio ) > diff -rupN a/target/linux/ar71xx/config-4.1 b/target/linux/ar71xx/config-4.1 > --- a/target/linux/ar71xx/config-4.1 > +++ b/target/linux/ar71xx/config-4.1 > CONFIG_ATH79_MACH_TUBE2H=y > CONFIG_ATH79_MACH_UBNT=y > CONFIG_ATH79_MACH_UBNT_XM=y > +CONFIG_ATH79_MACH_UBNT_UNIFIAC=y > CONFIG_ATH79_MACH_WEIO=y > CONFIG_ATH79_MACH_WHR_HP_G300N=y > CONFIG_ATH79_MACH_WLAE_AG300N=y > diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt > @@ -1349,6 +1349,16 @@ config ATH79_MACH_UBNT > select ATH79_DEV_M25P80 > select ATH79_DEV_USB > > +config ATH79_MACH_UBNT_UNIFIAC > + bool "Ubiquiti UniFi AC (LITE) support" > + select SOC_QCA956X > + select ATH79_DEV_AP9X_PCI if PCI > + select ATH79_DEV_ETH > + select ATH79_DEV_GPIO_BUTTONS > + select ATH79_DEV_LEDS_GPIO > + select ATH79_DEV_M25P80 > + select ATH79_DEV_WMAC > + > config ATH79_MACH_WEIO > bool "WeIO board" > select SOC_AR933X > diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h > @@ -209,6 +209,7 @@ enum ath79_mach_type { > ATH79_MACH_UBNT_RS, /* Ubiquiti RouterStation */ > ATH79_MACH_UBNT_UAP_PRO, /* Ubiquiti UniFi AP Pro */ > ATH79_MACH_UBNT_UNIFI, /* Ubiquiti Unifi */ > + ATH79_MACH_UBNT_UNIFIAC, /* Ubiquiti Unifi AC */ > ATH79_MACH_UBNT_UNIFI_OUTDOOR, /* Ubiquiti UnifiAP Outdoor */ > ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS, /* Ubiquiti UnifiAP Outdoor+ */ > ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */ > diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c > --- /dev/null > +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c > @@ -0,0 +1,109 @@ > +/* > + * Ubiquiti UniFi AC (LITE) board support > + * > + * Copyright (C) 2015-2016 P. Wassi <p.wassi@gmx.at> > + * > + * Derived from: mach-ubnt-xm.c > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License version 2 as published > + * by the Free Software Foundation. > + */ > + > +#include <linux/init.h> > +#include <linux/pci.h> > +#include <linux/platform_device.h> > +#include <linux/ath9k_platform.h> > +#include <linux/etherdevice.h> > + > +#include <asm/mach-ath79/ath79.h> > +#include <asm/mach-ath79/irq.h> > +#include <asm/mach-ath79/ar71xx_regs.h> > + > +#include <linux/platform_data/phy-at803x.h> > + > +#include "common.h" > +#include "dev-ap9x-pci.h" > +#include "dev-eth.h" > +#include "dev-gpio-buttons.h" > +#include "dev-leds-gpio.h" > +#include "dev-m25p80.h" > +#include "dev-wmac.h" > +#include "machtypes.h" > + > + > +#define UNIFIAC_KEYS_POLL_INTERVAL 20 > +#define UNIFIAC_KEYS_DEBOUNCE_INTERVAL (3 * UNIFIAC_KEYS_POLL_INTERVAL) > + > +#define UNIFIAC_GPIO_LED_WHITE 7 > +#define UNIFIAC_GPIO_LED_BLUE 8 > + > +#define UNIFIAC_GPIO_BTN_RESET 2 > + > +#define UNIFIAC_MAC0_OFFSET 0x0000 > +#define UNIFIAC_WMAC_CALDATA_OFFSET 0x1000 > +#define UNIFIAC_PCI_CALDATA_OFFSET 0x5000 > + > + > +static struct flash_platform_data ubnt_unifiac_flash_data = { > + /* mx25l12805d and mx25l12835f have the same JEDEC ID */ > + .type = "mx25l12805d", > +}; > + > +static struct gpio_led ubnt_unifiac_leds_gpio[] __initdata = { > + { > + .name = "ubnt:white:dome", > + .gpio = UNIFIAC_GPIO_LED_WHITE, > + .active_low = 0, > + }, { > + .name = "ubnt:blue:dome", > + .gpio = UNIFIAC_GPIO_LED_BLUE, > + .active_low = 0, > + } > +}; > + > +static struct gpio_keys_button ubnt_unifiac_gpio_keys[] __initdata = { > + { > + .desc = "reset", > + .type = EV_KEY, > + .code = KEY_RESTART, > + .debounce_interval = UNIFIAC_KEYS_DEBOUNCE_INTERVAL, > + .gpio = UNIFIAC_GPIO_BTN_RESET, > + .active_low = 1, > + } > +}; > + > +static void __init ubnt_unifiac_setup(void) > +{ > + u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff0000); > + > + ath79_register_m25p80(&ubnt_unifiac_flash_data); > + > + > + ath79_init_mac(ath79_eth0_data.mac_addr, > + eeprom + UNIFIAC_MAC0_OFFSET, 0); > + > + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII; > + ath79_eth0_data.phy_mask = BIT(4); > + ath79_eth0_pll_data.pll_10 = 0x00001313; > + > + ath79_register_mdio(0, ~BIT(4)); > + ath79_register_eth(0); > + > + > + ath79_register_wmac(eeprom + UNIFIAC_WMAC_CALDATA_OFFSET, NULL); > + > + > + ap91_pci_init(eeprom + UNIFIAC_PCI_CALDATA_OFFSET, NULL); > + > + > + ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_unifiac_leds_gpio), > + ubnt_unifiac_leds_gpio); > + > + ath79_register_gpio_keys_polled(-1, UNIFIAC_KEYS_POLL_INTERVAL, > + ARRAY_SIZE(ubnt_unifiac_gpio_keys), > + ubnt_unifiac_gpio_keys); > +} > + > +MIPS_MACHINE(ATH79_MACH_UBNT_UNIFIAC, "UBNT-UF-AC", "Ubiquiti UniFi-AC", > + ubnt_unifiac_setup); > diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile > --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile > +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile > @@ -165,6 +165,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WR720N_V3) += > obj-$(CONFIG_ATH79_MACH_TUBE2H) += mach-tube2h.o > obj-$(CONFIG_ATH79_MACH_UBNT) += mach-ubnt.o > obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o > +obj-$(CONFIG_ATH79_MACH_UBNT_UNIFIAC) += mach-ubnt-unifiac.o > obj-$(CONFIG_ATH79_MACH_WEIO) += mach-weio.o > obj-$(CONFIG_ATH79_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o > obj-$(CONFIG_ATH79_MACH_WLAE_AG300N) += mach-wlae-ag300n.o > diff -rupN a/target/linux/ar71xx/generic/profiles/ubnt.mk b/target/linux/ar71xx/generic/profiles/ubnt.mk > --- a/target/linux/ar71xx/generic/profiles/ubnt.mk > +++ b/target/linux/ar71xx/generic/profiles/ubnt.mk > @@ -38,6 +38,17 @@ endef > > $(eval $(call Profile,UBNTUNIFI)) > > +define Profile/UBNTUNIFIAC > + NAME:=Ubiquiti UniFi AP AC > + PACKAGES:=kmod-ath10k ath10k-firmware-qca988x > +endef > + > +define Profile/UBNTUNIFIAC/Description > + Package set optimized for the Ubiquiti UniFi AP AC. > +endef > + > +$(eval $(call Profile,UBNTUNIFIAC)) > + > define Profile/UBNTUNIFIOUTDOOR > NAME:=Ubiquiti UniFiAP Outdoor > PACKAGES:= > diff -rupN a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile > --- a/target/linux/ar71xx/image/Makefile > +++ b/target/linux/ar71xx/image/Makefile > @@ -1132,12 +1132,21 @@ define Device/ubnt-unifi > DEVICE_PROFILE := UBNT UBNTUNIFI > endef > > +define Device/ubnt-unifiac > + DEVICE_PROFILE := UBNT UBNTUNIFIAC > + IMAGE_SIZE := 7744k > + MTDPARTS = spi0.0:384k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),7744k(ubnt-airos)ro,128k(bs)ro,256k(cfg)ro,64k(EEPROM)ro > + IMAGES := sysupgrade.bin > + IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) > + BOARDNAME := UBNT-UF-AC > +endef > + > define Device/ubnt-unifi-outdoor > $(Device/ubnt-bz) > BOARDNAME := UBNT-U20 > DEVICE_PROFILE := UBNT UBNTUNIFIOUTDOOR > endef > -TARGET_DEVICES += ubnt-unifi ubnt-unifi-outdoor > +TARGET_DEVICES += ubnt-unifi ubnt-unifiac ubnt-unifi-outdoor > > define Device/ubnt-nano-m-xw > $(Device/ubnt-xw) > diff -rupN a/target/linux/ar71xx/mikrotik/config-default b/target/linux/ar71xx/mikrotik/config-default > --- a/target/linux/ar71xx/mikrotik/config-default > +++ b/target/linux/ar71xx/mikrotik/config-default > @@ -104,6 +104,7 @@ CONFIG_ATH79_MACH_RBSXTLITE=y > # CONFIG_ATH79_MACH_TUBE2H is not set > # CONFIG_ATH79_MACH_UBNT is not set > # CONFIG_ATH79_MACH_UBNT_XM is not set > +# CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set > # CONFIG_ATH79_MACH_WHR_HP_G300N is not set > # CONFIG_ATH79_MACH_WLAE_AG300N is not set > # CONFIG_ATH79_MACH_WLR8100 is not set > diff -rupN a/target/linux/ar71xx/nand/config-default b/target/linux/ar71xx/nand/config-default > --- a/target/linux/ar71xx/nand/config-default > +++ b/target/linux/ar71xx/nand/config-default > @@ -63,6 +63,7 @@ > # CONFIG_ATH79_MACH_TL_WR941ND is not set > # CONFIG_ATH79_MACH_UBNT is not set > # CONFIG_ATH79_MACH_UBNT_XM is not set > +# CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set > # CONFIG_ATH79_MACH_WHR_HP_G300N is not set > # CONFIG_ATH79_MACH_WLAE_AG300N is not set > # CONFIG_ATH79_MACH_WNDAP360 is not set > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Hi Vittorio, sorry, what is broken with the patch? Which things should be changed? P.Wassi > Hello, > > It seems that whitespace is broken in this patch. > > Can you resend it, please? > > Thank you, > Vittorio G >
Hi P.Wassi, The code itself does not seem to be broken. But the whitespace on the beginning of every line is missing. It is possible that your email client has mangled it. So the patch cannot be applied with the "patch" tool, since that whitespace is essential in diff files. Also, on your site you don't escape the < and > (less than and greater than) signs in the patch inside the "pre" tags, so the code inbetween is parsed as HTML tags (at least here with Firefox). Try using a combination of "pre" and "code" tags to avoid that. Cheers, Vittorio On 11/02/2016 10:44:33 CET, p.wassi@gmx.at wrote: > Hi Vittorio, > > sorry, what is broken with the patch? > Which things should be changed? > > P.Wassi > >> Hello, >> >> It seems that whitespace is broken in this patch. >> >> Can you resend it, please? >> >> Thank you, >> Vittorio G >>
diff -rupN a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network --- a/target/linux/ar71xx/base-files/etc/board.d/02_network +++ b/target/linux/ar71xx/base-files/etc/board.d/02_network @@ -359,6 +359,7 @@ tl-wa901nd-v2 |\ tl-wa901nd-v3 |\ tl-wr703n |\ tube2h |\ +unifiac |\ wndap360 |\ mynet-rext |\ wp543) diff -rupN a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh --- a/target/linux/ar71xx/base-files/etc/diag.sh +++ b/target/linux/ar71xx/base-files/etc/diag.sh @@ -339,7 +339,8 @@ get_status_led() { unifi) status_led="ubnt:green:dome" ;; - uap-pro) + uap-pro | \ + unifiac) status_led="ubnt:white:dome" ;; unifi-outdoor-plus) diff -rupN a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -75,6 +75,9 @@ case "$FIRMWARE" in ath10kcal_extract "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ;; + unifiac) + ath10kcal_extract "EEPROM" 20480 2116 + ;; esac ;; "ath10k/cal-pci-0000:01:00.0.bin") diff -rupN a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh --- a/target/linux/ar71xx/base-files/lib/ar71xx.sh +++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh @@ -905,6 +905,9 @@ ar71xx_board_detect() { *UniFi) name="unifi" ;; + *"UniFi-AC") + name="unifiac" + ;; *"UniFi AP Pro") name="uap-pro" ;; diff -rupN a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh --- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh @@ -262,6 +262,7 @@ platform_check_image() { wlae-ag300n | \ nbg460n_550n_550nh | \ unifi | \ + unifiac | \ unifi-outdoor | \ carambola2 | \ weio ) diff -rupN a/target/linux/ar71xx/config-4.1 b/target/linux/ar71xx/config-4.1 --- a/target/linux/ar71xx/config-4.1 +++ b/target/linux/ar71xx/config-4.1 CONFIG_ATH79_MACH_TUBE2H=y CONFIG_ATH79_MACH_UBNT=y CONFIG_ATH79_MACH_UBNT_XM=y +CONFIG_ATH79_MACH_UBNT_UNIFIAC=y CONFIG_ATH79_MACH_WEIO=y CONFIG_ATH79_MACH_WHR_HP_G300N=y CONFIG_ATH79_MACH_WLAE_AG300N=y diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt @@ -1349,6 +1349,16 @@ config ATH79_MACH_UBNT select ATH79_DEV_M25P80 select ATH79_DEV_USB +config ATH79_MACH_UBNT_UNIFIAC + bool "Ubiquiti UniFi AC (LITE) support" + select SOC_QCA956X + select ATH79_DEV_AP9X_PCI if PCI + select ATH79_DEV_ETH + select ATH79_DEV_GPIO_BUTTONS + select ATH79_DEV_LEDS_GPIO + select ATH79_DEV_M25P80 + select ATH79_DEV_WMAC + config ATH79_MACH_WEIO bool "WeIO board" select SOC_AR933X diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -209,6 +209,7 @@ enum ath79_mach_type { ATH79_MACH_UBNT_RS, /* Ubiquiti RouterStation */ ATH79_MACH_UBNT_UAP_PRO, /* Ubiquiti UniFi AP Pro */ ATH79_MACH_UBNT_UNIFI, /* Ubiquiti Unifi */ + ATH79_MACH_UBNT_UNIFIAC, /* Ubiquiti Unifi AC */ ATH79_MACH_UBNT_UNIFI_OUTDOOR, /* Ubiquiti UnifiAP Outdoor */ ATH79_MACH_UBNT_UNIFI_OUTDOOR_PLUS, /* Ubiquiti UnifiAP Outdoor+ */ ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */ diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c @@ -0,0 +1,109 @@ +/* + * Ubiquiti UniFi AC (LITE) board support + * + * Copyright (C) 2015-2016 P. Wassi <p.wassi@gmx.at> + * + * Derived from: mach-ubnt-xm.c + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include <linux/init.h> +#include <linux/pci.h> +#include <linux/platform_device.h> +#include <linux/ath9k_platform.h> +#include <linux/etherdevice.h> + +#include <asm/mach-ath79/ath79.h> +#include <asm/mach-ath79/irq.h> +#include <asm/mach-ath79/ar71xx_regs.h> + +#include <linux/platform_data/phy-at803x.h> + +#include "common.h" +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "dev-wmac.h" +#include "machtypes.h" + + +#define UNIFIAC_KEYS_POLL_INTERVAL 20 +#define UNIFIAC_KEYS_DEBOUNCE_INTERVAL (3 * UNIFIAC_KEYS_POLL_INTERVAL) + +#define UNIFIAC_GPIO_LED_WHITE 7 +#define UNIFIAC_GPIO_LED_BLUE 8 + +#define UNIFIAC_GPIO_BTN_RESET 2 + +#define UNIFIAC_MAC0_OFFSET 0x0000 +#define UNIFIAC_WMAC_CALDATA_OFFSET 0x1000 +#define UNIFIAC_PCI_CALDATA_OFFSET 0x5000 + + +static struct flash_platform_data ubnt_unifiac_flash_data = { + /* mx25l12805d and mx25l12835f have the same JEDEC ID */ + .type = "mx25l12805d", +}; + +static struct gpio_led ubnt_unifiac_leds_gpio[] __initdata = { + { + .name = "ubnt:white:dome", + .gpio = UNIFIAC_GPIO_LED_WHITE, + .active_low = 0, + }, { + .name = "ubnt:blue:dome", + .gpio = UNIFIAC_GPIO_LED_BLUE, + .active_low = 0, + } +}; + +static struct gpio_keys_button ubnt_unifiac_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = UNIFIAC_KEYS_DEBOUNCE_INTERVAL, + .gpio = UNIFIAC_GPIO_BTN_RESET, + .active_low = 1, + } +}; + +static void __init ubnt_unifiac_setup(void) +{ + u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff0000); + + ath79_register_m25p80(&ubnt_unifiac_flash_data); + + + ath79_init_mac(ath79_eth0_data.mac_addr, + eeprom + UNIFIAC_MAC0_OFFSET, 0); + + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_SGMII; + ath79_eth0_data.phy_mask = BIT(4); + ath79_eth0_pll_data.pll_10 = 0x00001313; + + ath79_register_mdio(0, ~BIT(4)); + ath79_register_eth(0); + + + ath79_register_wmac(eeprom + UNIFIAC_WMAC_CALDATA_OFFSET, NULL); + + + ap91_pci_init(eeprom + UNIFIAC_PCI_CALDATA_OFFSET, NULL); + + + ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_unifiac_leds_gpio), + ubnt_unifiac_leds_gpio); + + ath79_register_gpio_keys_polled(-1, UNIFIAC_KEYS_POLL_INTERVAL, + ARRAY_SIZE(ubnt_unifiac_gpio_keys), + ubnt_unifiac_gpio_keys); +} + +MIPS_MACHINE(ATH79_MACH_UBNT_UNIFIAC, "UBNT-UF-AC", "Ubiquiti UniFi-AC", + ubnt_unifiac_setup); diff -rupN a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile --- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile +++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile @@ -165,6 +165,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WR720N_V3) += obj-$(CONFIG_ATH79_MACH_TUBE2H) += mach-tube2h.o obj-$(CONFIG_ATH79_MACH_UBNT) += mach-ubnt.o obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o +obj-$(CONFIG_ATH79_MACH_UBNT_UNIFIAC) += mach-ubnt-unifiac.o obj-$(CONFIG_ATH79_MACH_WEIO) += mach-weio.o obj-$(CONFIG_ATH79_MACH_WHR_HP_G300N) += mach-whr-hp-g300n.o obj-$(CONFIG_ATH79_MACH_WLAE_AG300N) += mach-wlae-ag300n.o diff -rupN a/target/linux/ar71xx/generic/profiles/ubnt.mk b/target/linux/ar71xx/generic/profiles/ubnt.mk --- a/target/linux/ar71xx/generic/profiles/ubnt.mk +++ b/target/linux/ar71xx/generic/profiles/ubnt.mk @@ -38,6 +38,17 @@ endef $(eval $(call Profile,UBNTUNIFI)) +define Profile/UBNTUNIFIAC + NAME:=Ubiquiti UniFi AP AC + PACKAGES:=kmod-ath10k ath10k-firmware-qca988x +endef + +define Profile/UBNTUNIFIAC/Description + Package set optimized for the Ubiquiti UniFi AP AC. +endef + +$(eval $(call Profile,UBNTUNIFIAC)) + define Profile/UBNTUNIFIOUTDOOR NAME:=Ubiquiti UniFiAP Outdoor PACKAGES:= diff -rupN a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1132,12 +1132,21 @@ define Device/ubnt-unifi DEVICE_PROFILE := UBNT UBNTUNIFI endef +define Device/ubnt-unifiac + DEVICE_PROFILE := UBNT UBNTUNIFIAC + IMAGE_SIZE := 7744k + MTDPARTS = spi0.0:384k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),7744k(ubnt-airos)ro,128k(bs)ro,256k(cfg)ro,64k(EEPROM)ro + IMAGES := sysupgrade.bin + IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) + BOARDNAME := UBNT-UF-AC +endef + define Device/ubnt-unifi-outdoor $(Device/ubnt-bz) BOARDNAME := UBNT-U20 DEVICE_PROFILE := UBNT UBNTUNIFIOUTDOOR endef -TARGET_DEVICES += ubnt-unifi ubnt-unifi-outdoor +TARGET_DEVICES += ubnt-unifi ubnt-unifiac ubnt-unifi-outdoor define Device/ubnt-nano-m-xw $(Device/ubnt-xw) diff -rupN a/target/linux/ar71xx/mikrotik/config-default b/target/linux/ar71xx/mikrotik/config-default --- a/target/linux/ar71xx/mikrotik/config-default +++ b/target/linux/ar71xx/mikrotik/config-default @@ -104,6 +104,7 @@ CONFIG_ATH79_MACH_RBSXTLITE=y # CONFIG_ATH79_MACH_TUBE2H is not set # CONFIG_ATH79_MACH_UBNT is not set # CONFIG_ATH79_MACH_UBNT_XM is not set +# CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set # CONFIG_ATH79_MACH_WHR_HP_G300N is not set # CONFIG_ATH79_MACH_WLAE_AG300N is not set # CONFIG_ATH79_MACH_WLR8100 is not set diff -rupN a/target/linux/ar71xx/nand/config-default b/target/linux/ar71xx/nand/config-default --- a/target/linux/ar71xx/nand/config-default +++ b/target/linux/ar71xx/nand/config-default @@ -63,6 +63,7 @@ # CONFIG_ATH79_MACH_TL_WR941ND is not set # CONFIG_ATH79_MACH_UBNT is not set # CONFIG_ATH79_MACH_UBNT_XM is not set +# CONFIG_ATH79_MACH_UBNT_UNIFIAC is not set # CONFIG_ATH79_MACH_WHR_HP_G300N is not set # CONFIG_ATH79_MACH_WLAE_AG300N is not set # CONFIG_ATH79_MACH_WNDAP360 is not set