From patchwork Sat May 9 16:26:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris X-Patchwork-Id: 470332 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id D4C7814007F for ; Sun, 10 May 2015 02:27:22 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=Sk8IkFmu; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 489C728B794; Sat, 9 May 2015 18:25:56 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, HTML_MESSAGE, MIME_HTML_MOSTLY, T_DKIM_INVALID autolearn=no version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 8342028BC27 for ; Sat, 9 May 2015 18:25:47 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_HELO_IP=-2 (check from: .gmail. - helo: .mail-qc0-f182.google. - helo-domain: .google.) FROM/MX_MATCHES_HELO(DOMAIN)=-2; rate: -8.5 Received: from mail-qc0-f182.google.com (mail-qc0-f182.google.com [209.85.216.182]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Sat, 9 May 2015 18:25:46 +0200 (CEST) Received: by qcbgu10 with SMTP id gu10so50873391qcb.2 for ; Sat, 09 May 2015 09:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=KmMKcIGpVb3aWxIZYSRVDuR0ZfUXMsoqj8FGshqhKpU=; b=Sk8IkFmueUowSnUbykQknsiS6CHnkEAGqRJz1UbfgfUUOniq3vXIuwcfXkI5Gi3WB9 5GgKV7KXK2al1Z+IRqQiPBeit06ld5IqF+pBzJs2cKgPSEkEGyv7PlkSpbdsCTTI2cLh vgiDYSlJ402DhnCarKXnBePDkD8w0DUjSgjhSaKzvo3yJPGPo6kHcWC+qaL0BV9msMb6 9F+loBy60h5+fpyvC6m9pfwAokeubPYgPJz1X8Kk5Q5DfrStPurcAW0BWEENyT4uHTIZ GrRivBEUq5YHS65nNfisccDbnuJBF6TibR6egiyJn7zpEAQ+FpMSPzDPuE62xEkLTPe7 wfOA== MIME-Version: 1.0 X-Received: by 10.140.145.88 with SMTP id 85mr4370961qhr.39.1431188818266; Sat, 09 May 2015 09:26:58 -0700 (PDT) Received: by 10.140.93.66 with HTTP; Sat, 9 May 2015 09:26:58 -0700 (PDT) Date: Sat, 9 May 2015 11:26:58 -0500 Message-ID: From: Chris Blake To: openwrt-devel@lists.openwrt.org Subject: [OpenWrt-Devel] [PATCH] ar71xx: Add support for the Meraki MR12 & MR16 X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" This patch is to add support for the Meraki MR12 and MR16 Access Points. Currently everything is working, minus the 2nd NIC interface on the MR12 which is built into the SoC. Signed-off-by: Chris R Blake --- diff -Naur ./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 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/base-files/etc/diag.sh 2015-05-09 09:57:42.356000000 -0500 @@ -109,6 +109,12 @@ mc-mac1200r) status_led="mercury:green:system" ;; + mr12) + status_led="mr12:green:power" + ;; + mr16) + status_led="mr16:green:power" + ;; mr600) status_led="mr600:orange:power" ;; diff -Naur ./a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds ./b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds --- ./a/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/base-files/etc/uci-defaults/01_leds 2015-05-09 09:57:42.356000000 -0500 @@ -178,6 +178,22 @@ ucidef_set_led_wlan "wlan5g" "WLAN5G" "mercury:green:wlan5g" "phy0tpt" ;; +mr12) + ucidef_set_led_netdev "wan" "WAN" "mr12:green:wan" "eth0" + ucidef_set_led_wlan "wlan1" "WLAN1" "mr12:green:wifi1" "phy0assoc" + ucidef_set_led_wlan "wlan2" "WLAN2" "mr12:green:wifi2" "phy0assoc" + ucidef_set_led_wlan "wlan3" "WLAN3" "mr12:green:wifi3" "phy0assoc" + ucidef_set_led_wlan "wlan4" "WLAN4" "mr12:green:wifi4" "phy0tpt" + ;; + +mr16) + ucidef_set_led_netdev "wan" "WAN" "mr16:green:wan" "eth0" + ucidef_set_led_wlan "wlan1" "WLAN1" "mr16:green:wifi1" "phy0assoc" + ucidef_set_led_wlan "wlan2" "WLAN2" "mr16:green:wifi2" "phy0assoc" + ucidef_set_led_wlan "wlan3" "WLAN3" "mr16:green:wifi3" "phy0assoc" + ucidef_set_led_wlan "wlan4" "WLAN4" "mr16:green:wifi4" "phy0tpt" + ;; + mr600) ucidef_set_led_wlan "wlan58" "WLAN58" "mr600:green:wlan58" "phy0tpt" ;; diff -Naur ./a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration ./b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration --- ./a/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/base-files/etc/uci-defaults/03_network-switchX-migration 2015-05-09 09:57:42.356000000 -0500 @@ -61,6 +61,8 @@ dir-615-e1|\ dir-615-e4|\ ja76pf|\ +mr-12|\ +mr-16|\ rb-750|\ rb-751|\ tew-632brp|\ diff -Naur ./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 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/base-files/lib/ar71xx.sh 2015-05-09 09:57:42.360000000 -0500 @@ -471,6 +471,12 @@ *"MAC1200R") name="mc-mac1200r" ;; + *MR12) + name="mr12" + ;; + *MR16) + name="mr16" + ;; *MR600v2) name="mr600v2" ;; diff -Naur ./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 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh 2015-05-09 09:57:42.360000000 -0500 @@ -184,6 +184,8 @@ db120 | \ f9k1115v2 |\ hornet-ub | \ + mr12 | \ + mr16 | \ wpj558 | \ zcn-1523h-2 | \ zcn-1523h-5) diff -Naur ./a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c ./b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c --- ./a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c 1969-12-31 18:00:00.000000000 -0600 +++ ./b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr12.c 2015-05-09 09:57:42.364000000 -0500 @@ -0,0 +1,115 @@ +/* + * Cisco Meraki MR12 board support + * + * Copyright (C) 2014-2015 Chris Blake + * + * Based on Atheros AP96 board support configuration + * + * Copyright (C) 2009 Marco Porsch + * Copyright (C) 2009-2012 Gabor Juhos + * Copyright (C) 2010 Atheros Communications + * + * 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 +#include + +#include + +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "machtypes.h" + +#define MR12_GPIO_LED_W4_GREEN 14 +#define MR12_GPIO_LED_W3_GREEN 13 +#define MR12_GPIO_LED_W2_GREEN 12 +#define MR12_GPIO_LED_W1_GREEN 11 + +#define MR12_GPIO_LED_WAN 15 + +#define MR12_GPIO_LED_POWER_ORANGE 16 +#define MR12_GPIO_LED_POWER_GREEN 17 + +#define MR12_GPIO_BTN_RESET 8 +#define MR12_KEYS_POLL_INTERVAL 20 /* msecs */ +#define MR12_KEYS_DEBOUNCE_INTERVAL (3 * MR12_KEYS_POLL_INTERVAL) + +#define MR12_WAN_PHYMASK BIT(4) + +#define MR12_WMAC0_MAC_OFFSET 0x120c +#define MR12_CALDATA0_OFFSET 0x1000 + +static struct gpio_led MR12_leds_gpio[] __initdata = { + { + .name = "mr12:green:wan", + .gpio = MR12_GPIO_LED_WAN, + .active_low = 1, + }, { + .name = "mr12:orange:power", + .gpio = MR12_GPIO_LED_POWER_ORANGE, + .active_low = 1, + }, { + .name = "mr12:green:power", + .gpio = MR12_GPIO_LED_POWER_GREEN, + .active_low = 1, + }, { + .name = "mr12:green:wifi4", + .gpio = MR12_GPIO_LED_W4_GREEN, + .active_low = 1, + }, { + .name = "mr12:green:wifi3", + .gpio = MR12_GPIO_LED_W3_GREEN, + .active_low = 1, + }, { + .name = "mr12:green:wifi2", + .gpio = MR12_GPIO_LED_W2_GREEN, + .active_low = 1, + }, { + .name = "mr12:green:wifi1", + .gpio = MR12_GPIO_LED_W1_GREEN, + .active_low = 1, + } +}; + +static struct gpio_keys_button MR12_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = MR12_KEYS_DEBOUNCE_INTERVAL, + .gpio = MR12_GPIO_BTN_RESET, + .active_low = 1, + } +}; + +static void __init MR12_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0xbfff0000); + + ath79_register_mdio(0,0x0); + + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = MR12_WAN_PHYMASK; + ath79_register_eth(0); + + ath79_register_m25p80(NULL); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(MR12_leds_gpio), + MR12_leds_gpio); + ath79_register_gpio_keys_polled(-1, MR12_KEYS_POLL_INTERVAL, + ARRAY_SIZE(MR12_gpio_keys), + MR12_gpio_keys); + + ap91_pci_init(mac + MR12_CALDATA0_OFFSET, + mac + MR12_WMAC0_MAC_OFFSET); + +} + +MIPS_MACHINE(ATH79_MACH_MR12, "MR12", "Meraki MR12", MR12_setup); \ No newline at end of file diff -Naur ./a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c ./b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c --- ./a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c 1969-12-31 18:00:00.000000000 -0600 +++ ./b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr16.c 2015-05-09 09:57:42.364000000 -0500 @@ -0,0 +1,118 @@ +/* + * Cisco Meraki MR16 board support + * + * Copyright (C) 2015 Chris Blake + * + * Based on Atheros AP96 board support configuration + * + * Copyright (C) 2009 Marco Porsch + * Copyright (C) 2009-2012 Gabor Juhos + * Copyright (C) 2010 Atheros Communications + * + * 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 +#include + +#include + +#include "dev-ap9x-pci.h" +#include "dev-eth.h" +#include "dev-gpio-buttons.h" +#include "dev-leds-gpio.h" +#include "dev-m25p80.h" +#include "machtypes.h" + +#define MR16_GPIO_LED_W4_GREEN 3 +#define MR16_GPIO_LED_W3_GREEN 2 +#define MR16_GPIO_LED_W2_GREEN 1 +#define MR16_GPIO_LED_W1_GREEN 0 + +#define MR16_GPIO_LED_WAN 4 + +#define MR16_GPIO_LED_POWER_ORANGE 5 +#define MR16_GPIO_LED_POWER_GREEN 6 + +#define MR16_GPIO_BTN_RESET 7 +#define MR16_KEYS_POLL_INTERVAL 20 /* msecs */ +#define MR16_KEYS_DEBOUNCE_INTERVAL (3 * MR16_KEYS_POLL_INTERVAL) + +#define MR16_WAN_PHYMASK BIT(0) + +#define MR16_WMAC0_MAC_OFFSET 0x120c +#define MR16_WMAC1_MAC_OFFSET 0x520c +#define MR16_CALDATA0_OFFSET 0x1000 +#define MR16_CALDATA1_OFFSET 0x5000 + +static struct gpio_led MR16_leds_gpio[] __initdata = { + { + .name = "mr16:green:wan", + .gpio = MR16_GPIO_LED_WAN, + .active_low = 1, + }, { + .name = "mr16:orange:power", + .gpio = MR16_GPIO_LED_POWER_ORANGE, + .active_low = 1, + }, { + .name = "mr16:green:power", + .gpio = MR16_GPIO_LED_POWER_GREEN, + .active_low = 1, + }, { + .name = "mr16:green:wifi4", + .gpio = MR16_GPIO_LED_W4_GREEN, + .active_low = 1, + }, { + .name = "mr16:green:wifi3", + .gpio = MR16_GPIO_LED_W3_GREEN, + .active_low = 1, + }, { + .name = "mr16:green:wifi2", + .gpio = MR16_GPIO_LED_W2_GREEN, + .active_low = 1, + }, { + .name = "mr16:green:wifi1", + .gpio = MR16_GPIO_LED_W1_GREEN, + .active_low = 1, + } +}; + +static struct gpio_keys_button MR16_gpio_keys[] __initdata = { + { + .desc = "reset", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = MR16_KEYS_DEBOUNCE_INTERVAL, + .gpio = MR16_GPIO_BTN_RESET, + .active_low = 1, + } +}; + +static void __init MR16_setup(void) +{ + u8 *mac = (u8 *) KSEG1ADDR(0xbfff0000); + + ath79_register_mdio(0,0x0); + + ath79_init_mac(ath79_eth0_data.mac_addr, mac, 0); + ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; + ath79_eth0_data.phy_mask = MR16_WAN_PHYMASK; + ath79_register_eth(0); + + ath79_register_m25p80(NULL); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(MR16_leds_gpio), + MR16_leds_gpio); + ath79_register_gpio_keys_polled(-1, MR16_KEYS_POLL_INTERVAL, + ARRAY_SIZE(MR16_gpio_keys), + MR16_gpio_keys); + + ap94_pci_init(mac + MR16_CALDATA0_OFFSET, + mac + MR16_WMAC0_MAC_OFFSET, + mac + MR16_CALDATA1_OFFSET, + mac + MR16_WMAC1_MAC_OFFSET); +} + +MIPS_MACHINE(ATH79_MACH_MR16, "MR16", "Meraki MR16", MR16_setup); \ No newline at end of file diff -Naur ./a/target/linux/ar71xx/generic/profiles/meraki.mk ./b/target/linux/ar71xx/generic/profiles/meraki.mk --- ./a/target/linux/ar71xx/generic/profiles/meraki.mk 1969-12-31 18:00:00.000000000 -0600 +++ ./b/target/linux/ar71xx/generic/profiles/meraki.mk 2015-05-09 09:57:42.372000000 -0500 @@ -0,0 +1,27 @@ +# +# Copyright (C) 2014-2015 Chris Blake (chrisrblake93@gmail.com) +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/MR12 + NAME:=Meraki MR12 + PACKAGES:=kmod-spi-gpio kmod-ath9k +endef + +define Profile/MR12/description + Package set optimized for the Cisco Meraki MR12 Access Point. +endef + +define Profile/MR16 + NAME:=Meraki MR16 + PACKAGES:=kmod-spi-gpio kmod-ath9k +endef + +define Profile/MR16/description + Package set optimized for the Cisco Meraki MR16 Access Point. +endef + +$(eval $(call Profile,MR12)) +$(eval $(call Profile,MR16)) \ No newline at end of file diff -Naur ./a/target/linux/ar71xx/image/Makefile ./b/target/linux/ar71xx/image/Makefile --- ./a/target/linux/ar71xx/image/Makefile 2015-05-09 09:46:44.432000000 -0500 +++ ./b/target/linux/ar71xx/image/Makefile 2015-05-09 09:57:42.372000000 -0500 @@ -833,6 +833,8 @@ dlrtdev_mtdlayout_fat=mtdparts=spi0.0:256k(uboot)ro,64k(config)ro,7168k(firmware),640k(certs),64k(caldata)ro,64k@0x660000 (caldata_orig),6208k@0x50000(firmware_orig) dragino2_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,16000k(firmware),64k(config)ro,64k(art)ro hiwifi_hc6361_mtdlayout=mtdparts=spi0.0:64k(u-boot)ro,64k(bdinfo)ro,1280k(kernel),14848k(rootfs),64k(backup)ro,64k(art)ro,16128k@0x20000 (firmware) +mr12_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2304k(kernel),128k(art)ro,15744k@0x80000 (firmware) +mr16_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,256k(u-boot-env)ro,13440k(rootfs),2304k(kernel),128k(art)ro,15744k@0x80000 (firmware) pb92_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,2752k(rootfs),896k(kernel),64k(nvram),64k(art)ro,3648k@0x50000 (firmware) planex_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7744k(firmware),128k(art)ro ubntxm_mtdlayout=mtdparts=spi0.0:256k(u-boot)ro,64k(u-boot-env)ro,7552k(firmware),256k(cfg)ro,64k(EEPROM)ro @@ -1710,6 +1712,8 @@ $(eval $(call SingleProfile,AthLzma,64k,EWDORINRT,ew-dorin-router,EW-DORIN-ROUTER,ttyATH0,115200,$$(ew-dorin_mtdlayout_4M),KRuImage,65536)) $(eval $(call SingleProfile,AthLzma,64k,EWDORIN16M,ew-dorin-16M,EW-DORIN,ttyATH0,115200,$$(ew-dorin_mtdlayout_16M),KRuImage,65536)) $(eval $(call SingleProfile,AthLzma,64k,HORNETUBx2,hornet-ub-x2,HORNET-UB,ttyATH0,115200,$$(alfa_mtdlayout_16M),KRuImage,65536)) +$(eval $(call SingleProfile,AthLzma,64k,MR12,mr12,MR12,ttyS0,115200,$$(mr12_mtdlayout),RKuImage)) +$(eval $(call SingleProfile,AthLzma,64k,MR16,mr16,MR16,ttyS0,115200,$$(mr16_mtdlayout),RKuImage)) $(eval $(call SingleProfile,AthLzma,64k,PB92,pb92,PB92,ttyS0,115200,$$(pb92_mtdlayout),KRuImage)) $(eval $(call SingleProfile,AthLzma,64k,TUBE2H16M,tube2h-16M,TUBE2H,ttyATH0,115200,$$(alfa_mtdlayout_16M),KRuImage,65536)) $(eval $(call SingleProfile,AthLzma,64k,WLR8100,wlr8100,WLR8100,ttyS0,115200,$$(wlr8100_mtdlayout),KRuImage)) diff -Naur ./a/target/linux/ar71xx/patches-3.18/738-MIPS-ath79-add-meraki-mr12-mr16-support.patch ./b/target/linux/ar71xx/patches-3.18/738-MIPS-ath79-add-meraki-mr12-mr16-support.patch --- ./a/target/linux/ar71xx/patches-3.18/738-MIPS-ath79-add-meraki-mr12-mr16-support.patch 1969-12-31 18:00:00.000000000 -0600 +++ ./b/target/linux/ar71xx/patches-3.18/738-MIPS-ath79-add-meraki-mr12-mr16-support.patch 2015-05-09 09:57:42.380000000 -0500 @@ -0,0 +1,51 @@ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -694,6 +694,26 @@ config ATH79_MACH_OM5P + select ATH79_DEV_M25P80 + select ATH79_DEV_WMAC + ++config ATH79_MACH_MR12 ++ bool "Meraki MR12 board support" ++ select SOC_AR724X ++ 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_MR16 ++ bool "Meraki MR16 board support" ++ select SOC_AR71XX ++ 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_MR600 + bool "OpenMesh MR600 board support" + select SOC_AR934X +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -78,6 +78,8 @@ obj-$(CONFIG_ATH79_MACH_JA76PF) + + obj-$(CONFIG_ATH79_MACH_JWAP003) += mach-jwap003.o + obj-$(CONFIG_ATH79_MACH_HORNET_UB) += mach-hornet-ub.o + obj-$(CONFIG_ATH79_MACH_MC_MAC1200R) += mach-mc-mac1200r.o ++obj-$(CONFIG_ATH79_MACH_MR12) += mach-mr12.o ++obj-$(CONFIG_ATH79_MACH_MR16) += mach-mr16.o + obj-$(CONFIG_ATH79_MACH_MR600) += mach-mr600.o + obj-$(CONFIG_ATH79_MACH_MR900) += mach-mr900.o + obj-$(CONFIG_ATH79_MACH_MYNET_N600) += mach-mynet-n600.o +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -67,6 +67,8 @@ enum ath79_mach_type { + ATH79_MACH_JA76PF2, /* jjPlus JA76PF2 */ + ATH79_MACH_JWAP003, /* jjPlus JWAP003 */ + ATH79_MACH_HORNET_UB, /* ALFA Networks Hornet-UB */ ++ ATH79_MACH_MR12, /* Cisco Meraki MR12 */ ++ ATH79_MACH_MR16, /* Cisco Meraki MR16 */ + ATH79_MACH_MR600V2, /* OpenMesh MR600v2 */ + ATH79_MACH_MR600, /* OpenMesh MR600 */ + ATH79_MACH_MR900, /* OpenMesh MR900 */ diff -Naur ./a/target/linux/ar71xx/config-3.18 ./b/target/linux/ar71xx/config-3.18 --- ./a/target/linux/ar71xx/config-3.18 2015-05-09 09:46:44.416000000 -0500 +++ ./b/target/linux/ar71xx/config-3.18 2015-05-09 09:57:42.360000000 -0500 @@ -68,6 +68,8 @@ CONFIG_ATH79_MACH_JA76PF=y CONFIG_ATH79_MACH_JWAP003=y CONFIG_ATH79_MACH_MC_MAC1200R=y +CONFIG_ATH79_MACH_MR16=y +CONFIG_ATH79_MACH_MR12=y CONFIG_ATH79_MACH_MR600=y CONFIG_ATH79_MACH_MR900=y CONFIG_ATH79_MACH_MYNET_N600=y