Message ID | trinity-f32afaf5-70fb-4d23-a24b-b453bf00fa64-1450827302827@3capp-gmx-bs67 |
---|---|
State | Changes Requested |
Headers | show |
On 2015-12-23 00:35, 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> > --- > The UniFi AC series will only be supported, if these patches are > applied first (especially for the QCA956x SoC support): > https://patchwork.ozlabs.org/patch/559284/ > https://patchwork.ozlabs.org/patch/559285/ > https://patchwork.ozlabs.org/patch/559286/ > https://patchwork.ozlabs.org/patch/559287/ > https://patchwork.ozlabs.org/patch/559288/ > Then, 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 > Additional information on https://pwassi.privatedns.org/openwrt/unifiac/ The additions to the mach file in the patch seem to be free of dependencies on definitions from other ubnt boards - please move them to a new mach-*.c file instead of patching them in. - Felix
> On 2016-01-03 22:30, Felix Fietkau wrote: > The additions to the mach file in the patch seem to be free of > dependencies on definitions from other ubnt boards - please move them to > a new mach-*.c file instead of patching them in. > > - Felix > Ah, ok. Then where should the changes to the mach-file go? Is /target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c ok? The intention to include it into the existing one arised, as all ubnt-devices are in just two mach-files. However, I've just noticed that for e.g. TP-Link devices nearly every device has its own mach-file. -- P.Wassi
On 2016-01-05 10:37, p.wassi@gmx.at wrote: >> On 2016-01-03 22:30, Felix Fietkau wrote: >> The additions to the mach file in the patch seem to be free of >> dependencies on definitions from other ubnt boards - please move them to >> a new mach-*.c file instead of patching them in. >> >> - Felix >> > > Ah, ok. Then where should the changes to the mach-file go? > Is /target/linux/ar71xx/files/arch/mips/ath79/mach-ubnt-unifiac.c ok? > The intention to include it into the existing one arised, as all ubnt-devices > are in just two mach-files. However, I've just noticed that for e.g. TP-Link > devices nearly every device has its own mach-file. People just kept adding to the ubnt mach file because there was something there already (and there was some code sharing too), whereas other devices were usually kept separate anyway. I'd like to make sure that all future devices get their own mach files, since that's easier to maintain. At some point, all of this mess is going away anyway when we get proper device tree support. - Felix
diff -rup 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 @@ -357,6 +357,7 @@ tl-wa901nd-v2 |\ tl-wa901nd-v3 |\ tl-wr703n |\ tube2h |\ +unifiac |\ wndap360 |\ mynet-rext |\ wp543) diff -rup 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 @@ -333,7 +333,8 @@ get_status_led() { unifi) status_led="ubnt:green:dome" ;; - uap-pro) + uap-pro | \ + unifiac) status_led="ubnt:white:dome" ;; unifi-outdoor-plus) diff -rup 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 -rup 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 @@ -899,6 +899,9 @@ ar71xx_board_detect() { *UniFi) name="unifi" ;; + *"UniFi-AC") + name="unifiac" + ;; *"UniFi AP Pro") name="uap-pro" ;; diff -rup 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 @@ -261,6 +261,7 @@ platform_check_image() { wlae-ag300n | \ nbg460n_550n_550nh | \ unifi | \ + unifiac | \ unifi-outdoor | \ carambola2 | \ weio ) diff -rup 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 @@ -207,6 +207,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 -rup 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 -rup a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile --- a/target/linux/ar71xx/image/Makefile +++ b/target/linux/ar71xx/image/Makefile @@ -1124,12 +1124,25 @@ define Device/ubnt-unifi DEVICE_PROFILE := UBNT UBNTUNIFI endef +define Device/ubnt-unifiac + DEVICE_PROFILE := UBNT + 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 + UBNT_TYPE := BZ + UBNT_BOARD := XM + UBNT_CHIP := qca956x + IMAGES := sysupgrade.bin + IMAGE/sysupgrade.bin = append-kernel $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | check-size $$$$(IMAGE_SIZE) + BOARDNAME := UBNT-UF-AC + DEVICE_PROFILE := UBNT UBNTUNIFIAC +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 -rup a/target/linux/ar71xx/patches-4.1/608-MIPS-ath79-ubnt-xm-add-more-boards.patch b/target/linux/ar71xx/patches-4.1/608-MIPS-ath79-ubnt-xm-add-more-boards.patch --- a/target/linux/ar71xx/patches-4.1/608-MIPS-ath79-ubnt-xm-add-more-boards.patch +++ b/target/linux/ar71xx/patches-4.1/608-MIPS-ath79-ubnt-xm-add-more-boards.patch @@ -66,7 +66,7 @@ ath79_register_leds_gpio(-1, ARRAY_SIZE(ubnt_xm_leds_gpio), ubnt_xm_leds_gpio); -@@ -79,9 +93,552 @@ static void __init ubnt_xm_init(void) +@@ -79,9 +93,621 @@ static void __init ubnt_xm_init(void) ath79_register_m25p80(NULL); ap91_pci_init(eeprom, NULL); @@ -358,6 +358,75 @@ +MIPS_MACHINE(ATH79_MACH_UBNT_UAP_PRO, "UAP-PRO", "Ubiquiti UniFi AP Pro", + ubnt_uap_pro_setup); + ++ ++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 = 7, ++ .active_low = 0, ++ }, { ++ .name = "ubnt:blue:dome", ++ .gpio = 8, ++ .active_low = 0, ++ } ++}; ++ ++static struct gpio_keys_button ubnt_unifiac_gpio_keys[] __initdata = { ++ { ++ .desc = "reset", ++ .type = EV_KEY, ++ .code = KEY_RESTART, ++ .debounce_interval = UBNT_XM_KEYS_DEBOUNCE_INTERVAL, ++ .gpio = 2, ++ .active_low = 1, ++ } ++}; ++ ++#define UNIFIAC_MAC0_OFFSET 0x0000 ++#define UNIFIAC_WMAC_CALDATA_OFFSET 0x1000 ++#define UNIFIAC_PCI_CALDATA_OFFSET 0x5000 ++ ++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, UBNT_XM_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); ++ ++ +#define UBNT_XW_GPIO_LED_L1 11 +#define UBNT_XW_GPIO_LED_L2 16 +#define UBNT_XW_GPIO_LED_L3 13 diff -rup a/target/linux/ar71xx/patches-4.1/610-MIPS-ath79-UBNT-add-airGateway-pro-support.patch b/target/linux/ar71xx/patches-4.1/610-MIPS-ath79-UBNT-add-airGateway-pro-support.patch --- a/target/linux/ar71xx/patches-4.1/610-MIPS-ath79-UBNT-add-airGateway-pro-support.patch +++ b/target/linux/ar71xx/patches-4.1/610-MIPS-ath79-UBNT-add-airGateway-pro-support.patch @@ -1,6 +1,6 @@ --- a/arch/mips/ath79/mach-ubnt-xm.c +++ b/arch/mips/ath79/mach-ubnt-xm.c -@@ -642,3 +642,59 @@ static void __init ubnt_airgateway_setup +@@ -711,3 +711,59 @@ static void __init ubnt_airgateway_setup MIPS_MACHINE(ATH79_MACH_UBNT_AIRGW, "UBNT-AGW", "Ubiquiti AirGateway", ubnt_airgateway_setup);