diff options
Diffstat (limited to 'target/linux')
| -rw-r--r-- | target/linux/ar71xx/config-3.3 | 1 | ||||
| -rw-r--r-- | target/linux/ar71xx/config-3.6 | 1 | ||||
| -rw-r--r-- | target/linux/ar71xx/files/arch/mips/ath79/mach-mr600.c | 128 | ||||
| -rw-r--r-- | target/linux/ar71xx/patches-3.3/614-MIPS-ath79-MR600-support.patch | 39 | ||||
| -rw-r--r-- | target/linux/ar71xx/patches-3.6/614-MIPS-ath79-MR600-support.patch | 39 | 
5 files changed, 208 insertions, 0 deletions
| diff --git a/target/linux/ar71xx/config-3.3 b/target/linux/ar71xx/config-3.3 index 45e589ede..446f202b3 100644 --- a/target/linux/ar71xx/config-3.3 +++ b/target/linux/ar71xx/config-3.3 @@ -44,6 +44,7 @@ CONFIG_ATH79_MACH_MZK_W04NU=y  CONFIG_ATH79_MACH_MZK_W300NH=y  CONFIG_ATH79_MACH_NBG460N=y  CONFIG_ATH79_MACH_OM2P=y +CONFIG_ATH79_MACH_MR600=y  CONFIG_ATH79_MACH_PB42=y  CONFIG_ATH79_MACH_PB44=y  CONFIG_ATH79_MACH_PB92=y diff --git a/target/linux/ar71xx/config-3.6 b/target/linux/ar71xx/config-3.6 index 80f06981f..54cca35a5 100644 --- a/target/linux/ar71xx/config-3.6 +++ b/target/linux/ar71xx/config-3.6 @@ -43,6 +43,7 @@ CONFIG_ATH79_MACH_EW_DORIN=y  CONFIG_ATH79_MACH_HORNET_UB=y  CONFIG_ATH79_MACH_JA76PF=y  CONFIG_ATH79_MACH_JWAP003=y +CONFIG_ATH79_MACH_MR600=y  CONFIG_ATH79_MACH_MZK_W04NU=y  CONFIG_ATH79_MACH_MZK_W300NH=y  CONFIG_ATH79_MACH_NBG460N=y diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-mr600.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr600.c new file mode 100644 index 000000000..b05df6676 --- /dev/null +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-mr600.c @@ -0,0 +1,128 @@ +/* + * OpenMesh OM2P board support + * + * Copyright (C) 2012 Marek Lindner <marek@open-mesh.com> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#include <linux/pci.h> +#include <linux/phy.h> +#include <linux/platform_device.h> +#include <linux/ath9k_platform.h> + +#include <asm/mach-ath79/ar71xx_regs.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-spi.h" +#include "dev-wmac.h" +#include "machtypes.h" + +#define MR600_GPIO_LED_WLAN58		12 +#define MR600_GPIO_LED_WPS		13 +#define MR600_GPIO_LED_POWER		14 +#define MR600_GPIO_LED_WLAN24		15 +#define MR600_GPIO_LED_LAN		16 + +#define MR600_GPIO_BTN_RESET		17 + +#define MR600_KEYS_POLL_INTERVAL	20	/* msecs */ +#define MR600_KEYS_DEBOUNCE_INTERVAL (3 * MR600_KEYS_POLL_INTERVAL) + +#define MR600_MAC_OFFSET		0 +#define MR600_WMAC_CALDATA_OFFSET	0x1000 +#define MR600_PCIE_CALDATA_OFFSET	0x5000 + +static struct gpio_led mr600_leds_gpio[] __initdata = { +	{ +		.name		= "mr600:orange:power", +		.gpio		= MR600_GPIO_LED_POWER, +		.active_low	= 1, +	}, +	{ +		.name		= "mr600:blue:wps", +		.gpio		= MR600_GPIO_LED_WPS, +		.active_low	= 1, +	}, +	{ +		.name		= "mr600:green:wlan24", +		.gpio		= MR600_GPIO_LED_WLAN24, +		.active_low	= 1, +	}, +	{ +		.name		= "mr600:green:wlan58", +		.gpio		= MR600_GPIO_LED_WLAN58, +		.active_low	= 1, +	}, +	{ +		.name		= "mr600:blue:lan", +		.gpio		= MR600_GPIO_LED_LAN, +		.active_low	= 1, +	}, +}; + +static struct gpio_keys_button mr600_gpio_keys[] __initdata = { +	{ +		.desc		= "Reset button", +		.type		= EV_KEY, +		.code		= KEY_RESTART, +		.debounce_interval = MR600_KEYS_DEBOUNCE_INTERVAL, +		.gpio		= MR600_GPIO_BTN_RESET, +		.active_low	= 1, +	}, +}; + +static void __init mr600_setup(void) +{ +	u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); +	u8 mac[6]; + +	ath79_gpio_output_select(MR600_GPIO_LED_LAN, AR934X_GPIO_OUT_GPIO); +	ath79_gpio_output_select(MR600_GPIO_LED_WLAN24, AR934X_GPIO_OUT_GPIO); + +	ath79_register_m25p80(NULL); + +	ath79_register_leds_gpio(-1, ARRAY_SIZE(mr600_leds_gpio), +				 mr600_leds_gpio); +	ath79_register_gpio_keys_polled(-1, MR600_KEYS_POLL_INTERVAL, +					ARRAY_SIZE(mr600_gpio_keys), +					mr600_gpio_keys); + +	ath79_init_mac(mac, art + MR600_MAC_OFFSET, -1); +	ath79_register_wmac(art + MR600_WMAC_CALDATA_OFFSET, mac); + +	ath79_init_mac(mac, art + MR600_MAC_OFFSET, -2); +	ap91_pci_init(art + MR600_PCIE_CALDATA_OFFSET, mac); + +	ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_RGMII_GMAC0 | +				   AR934X_ETH_CFG_SW_ONLY_MODE); + +	ath79_register_mdio(0, 0x0); + +	ath79_init_mac(ath79_eth0_data.mac_addr, art + MR600_MAC_OFFSET, -2); + +	/* GMAC0 is connected to an external PHY */ +	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; +	ath79_eth0_data.phy_mask = BIT(0); +	ath79_eth0_data.mii_bus_dev = &ath79_mdio0_device.dev; +	ath79_eth0_pll_data.pll_1000 = 0x06000000; +	ath79_register_eth(0); +} + +MIPS_MACHINE(ATH79_MACH_MR600, "MR600", "OpenMesh MR600", mr600_setup); diff --git a/target/linux/ar71xx/patches-3.3/614-MIPS-ath79-MR600-support.patch b/target/linux/ar71xx/patches-3.3/614-MIPS-ath79-MR600-support.patch new file mode 100644 index 000000000..f56fd7496 --- /dev/null +++ b/target/linux/ar71xx/patches-3.3/614-MIPS-ath79-MR600-support.patch @@ -0,0 +1,39 @@ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -374,6 +374,16 @@ config ATH79_MACH_OM2P + 	select ATH79_DEV_M25P80 + 	select ATH79_DEV_WMAC +  ++config ATH79_MACH_MR600 ++	bool "OpenMesh MR600 board support" ++	select SOC_AR934X ++	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_MZK_W04NU + 	bool "Planex MZK-W04NU board support" + 	select SOC_AR913X +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -43,6 +43,7 @@ enum ath79_mach_type { + 	ATH79_MACH_JA76PF2,		/* jjPlus JA76PF2 */ + 	ATH79_MACH_JWAP003,		/* jjPlus JWAP003 */ + 	ATH79_MACH_HORNET_UB,		/* ALFA Networks Hornet-UB */ ++	ATH79_MACH_MR600,		/* OpenMesh MR600 */ + 	ATH79_MACH_MZK_W04NU,		/* Planex MZK-W04NU */ + 	ATH79_MACH_MZK_W300NH,		/* Planex MZK-W300NH */ + 	ATH79_MACH_NBG460N,		/* Zyxel NBG460N/550N/550NH */ +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -59,6 +59,7 @@ obj-$(CONFIG_ATH79_MACH_EAP7660D)	+= mac + obj-$(CONFIG_ATH79_MACH_JA76PF)		+= mach-ja76pf.o + obj-$(CONFIG_ATH79_MACH_JWAP003)	+= mach-jwap003.o + obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= mach-hornet-ub.o ++obj-$(CONFIG_ATH79_MACH_MR600)		+= mach-mr600.o + obj-$(CONFIG_ATH79_MACH_MZK_W04NU)	+= mach-mzk-w04nu.o + obj-$(CONFIG_ATH79_MACH_MZK_W300NH)	+= mach-mzk-w300nh.o + obj-$(CONFIG_ATH79_MACH_NBG460N)	+= mach-nbg460n.o diff --git a/target/linux/ar71xx/patches-3.6/614-MIPS-ath79-MR600-support.patch b/target/linux/ar71xx/patches-3.6/614-MIPS-ath79-MR600-support.patch new file mode 100644 index 000000000..f56fd7496 --- /dev/null +++ b/target/linux/ar71xx/patches-3.6/614-MIPS-ath79-MR600-support.patch @@ -0,0 +1,39 @@ +--- a/arch/mips/ath79/Kconfig ++++ b/arch/mips/ath79/Kconfig +@@ -374,6 +374,16 @@ config ATH79_MACH_OM2P + 	select ATH79_DEV_M25P80 + 	select ATH79_DEV_WMAC +  ++config ATH79_MACH_MR600 ++	bool "OpenMesh MR600 board support" ++	select SOC_AR934X ++	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_MZK_W04NU + 	bool "Planex MZK-W04NU board support" + 	select SOC_AR913X +--- a/arch/mips/ath79/machtypes.h ++++ b/arch/mips/ath79/machtypes.h +@@ -43,6 +43,7 @@ enum ath79_mach_type { + 	ATH79_MACH_JA76PF2,		/* jjPlus JA76PF2 */ + 	ATH79_MACH_JWAP003,		/* jjPlus JWAP003 */ + 	ATH79_MACH_HORNET_UB,		/* ALFA Networks Hornet-UB */ ++	ATH79_MACH_MR600,		/* OpenMesh MR600 */ + 	ATH79_MACH_MZK_W04NU,		/* Planex MZK-W04NU */ + 	ATH79_MACH_MZK_W300NH,		/* Planex MZK-W300NH */ + 	ATH79_MACH_NBG460N,		/* Zyxel NBG460N/550N/550NH */ +--- a/arch/mips/ath79/Makefile ++++ b/arch/mips/ath79/Makefile +@@ -59,6 +59,7 @@ obj-$(CONFIG_ATH79_MACH_EAP7660D)	+= mac + obj-$(CONFIG_ATH79_MACH_JA76PF)		+= mach-ja76pf.o + obj-$(CONFIG_ATH79_MACH_JWAP003)	+= mach-jwap003.o + obj-$(CONFIG_ATH79_MACH_HORNET_UB)	+= mach-hornet-ub.o ++obj-$(CONFIG_ATH79_MACH_MR600)		+= mach-mr600.o + obj-$(CONFIG_ATH79_MACH_MZK_W04NU)	+= mach-mzk-w04nu.o + obj-$(CONFIG_ATH79_MACH_MZK_W300NH)	+= mach-mzk-w300nh.o + obj-$(CONFIG_ATH79_MACH_NBG460N)	+= mach-nbg460n.o | 
