diff options
Diffstat (limited to 'target/linux/ramips/files/arch')
4 files changed, 133 insertions, 0 deletions
| diff --git a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h index bc183ab6a..384a4662e 100644 --- a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h +++ b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/machine.h @@ -37,6 +37,7 @@ enum ramips_mach_type {  	RAMIPS_MACH_WL_330N3G,		/* Asus WL-330N3G */  	/* RT3052 based machines */ +	RAMIPS_MACH_3G300M,		/* Tenda 3G300M */  	RAMIPS_MACH_ALL0239_3G,		/* ALL0239-3G */  	RAMIPS_MACH_ARGUS_ATP52B,	/* Argus ATP-52B */  	RAMIPS_MACH_BC2,		/* NexAira BC2 */ diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig index 4eb946ee4..97258de47 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig @@ -12,6 +12,11 @@ config RT305X_MACH_3G_6200N  	select RALINK_DEV_GPIO_BUTTONS  	select RALINK_DEV_GPIO_LEDS +config RT305X_MACH_3G300M +	bool "Tenda 3G300M board support" +	select RALINK_DEV_GPIO_BUTTONS +	select RALINK_DEV_GPIO_LEDS +  config RT305X_MACH_WR6202  	bool "Accton WR6202"  	select RALINK_DEV_GPIO_BUTTONS diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile index 8fa75352b..d38765cba 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile @@ -12,6 +12,7 @@ obj-y	:= irq.o setup.o devices.o rt305x.o clock.o  obj-$(CONFIG_EARLY_PRINTK)		+= early_printk.o  obj-$(CONFIG_RT305X_MACH_3G_6200N)	+= mach-3g-6200n.o +obj-$(CONFIG_RT305X_MACH_3G300M)	+= mach-3g300m.o  obj-$(CONFIG_RT305X_MACH_ARGUS_ATP52B)	+= mach-argus-atp52b.o  obj-$(CONFIG_RT305X_MACH_BC2)		+= mach-bc2.o  obj-$(CONFIG_RT305X_MACH_AIR3GII)	+= mach-air3gii.o diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-3g300m.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-3g300m.c new file mode 100644 index 000000000..e4993b303 --- /dev/null +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-3g300m.c @@ -0,0 +1,126 @@ +/* + *  Tenda 3G300M board support + * + *  Copyright (C) 2013 Cezary Jackiewicz <cezary.jackiewicz@gmail.com> + * + *  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/platform_device.h> +#include <linux/spi/spi.h> +#include <linux/spi/flash.h> +#include <linux/gpio.h> + +#include <asm/mach-ralink/machine.h> +#include <asm/mach-ralink/dev-gpio-buttons.h> +#include <asm/mach-ralink/dev-gpio-leds.h> +#include <asm/mach-ralink/rt305x.h> +#include <asm/mach-ralink/rt305x_regs.h> + +#include "devices.h" + +#define TENDA_3G300M_GPIO_BUTTON_RESET		0 +#define TENDA_3G300M_GPIO_BUTTON_MODE		10 + +#define TENDA_3G300M_GPIO_LED_3GROUTER		11 +#define TENDA_3G300M_GPIO_LED_AP		12 +#define TENDA_3G300M_GPIO_LED_WISPROUTER	9 +#define TENDA_3G300M_GPIO_LED_WIRELESSROUTER	13 +#define TENDA_3G300M_GPIO_LED_3G		7 +#define TENDA_3G300M_GPIO_LED_WPSRESET		14 + +#define TENDA_3G300M_KEYS_POLL_INTERVAL	20 +#define TENDA_3G300M_KEYS_DEBOUNCE_INTERVAL	(3 * TENDA_3G300M_KEYS_POLL_INTERVAL) + +const struct flash_platform_data tenda_3g300m_flash = { +	.type		= "mx25l3205d", +}; + +struct spi_board_info tenda_3g300m_spi_slave_info[] __initdata = { +	{ +		.modalias	= "m25p80", +		.platform_data	= &tenda_3g300m_flash, +		.irq		= -1, +		.max_speed_hz	= 10000000, +		.bus_num	= 0, +		.chip_select	= 0, +	} +}; + +static struct gpio_led tenda_3g300m_leds_gpio[] __initdata = { +        { +		.name		= "tenda:blue:3grouter", +		.gpio		= TENDA_3G300M_GPIO_LED_3GROUTER, +		.active_low	= 1, +	},{ +		.name		= "tenda:blue:ap", +		.gpio		= TENDA_3G300M_GPIO_LED_AP, +		.active_low	= 1, +	},{ +		.name		= "tenda:blue:wisprouter", +		.gpio		= TENDA_3G300M_GPIO_LED_WISPROUTER, +		.active_low	= 1, +	},{ +		.name		= "tenda:blue:wirelessrouter", +		.gpio		= TENDA_3G300M_GPIO_LED_WIRELESSROUTER, +		.active_low	= 1, +	},{ +		.name		= "tenda:blue:3g", +		.gpio		= TENDA_3G300M_GPIO_LED_3G, +		.active_low	= 1, +	},{ +		.name		= "tenda:blue:wpsreset", +		.gpio		= TENDA_3G300M_GPIO_LED_WPSRESET, +		.active_low	= 1, +	} +}; + +static struct gpio_keys_button tenda_3g300m_gpio_buttons[] __initdata = { +	{ +		.desc		= "reset", +		.type		= EV_KEY, +		.code		= KEY_RESTART, +		.debounce_interval = TENDA_3G300M_KEYS_DEBOUNCE_INTERVAL, +		.gpio		= TENDA_3G300M_GPIO_BUTTON_RESET, +		.active_low	= 1, +	},{ +		.desc		= "mode", +		.type		= EV_KEY, +		.code		= BTN_0, +		.debounce_interval = TENDA_3G300M_KEYS_DEBOUNCE_INTERVAL, +		.gpio		= TENDA_3G300M_GPIO_BUTTON_MODE, +		.active_low	= 1, +	} +}; + +static void __init tenda_3g300m_init(void) +{ +	rt305x_gpio_init((RT305X_GPIO_MODE_GPIO << +			 RT305X_GPIO_MODE_UART0_SHIFT) | +			 RT305X_GPIO_MODE_JTAG); + +	rt305x_register_spi(tenda_3g300m_spi_slave_info, +			ARRAY_SIZE(tenda_3g300m_spi_slave_info)); + +	ramips_register_gpio_leds(-1, ARRAY_SIZE(tenda_3g300m_leds_gpio), +			tenda_3g300m_leds_gpio); + +	ramips_register_gpio_buttons(-1, TENDA_3G300M_KEYS_POLL_INTERVAL, +			ARRAY_SIZE(tenda_3g300m_gpio_buttons), +			tenda_3g300m_gpio_buttons); + +	rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW; +	rt305x_register_ethernet(); + +	rt305x_register_wifi(); + +	rt305x_register_wdt(); + +	rt305x_register_usb(); +} + +MIPS_MACHINE(RAMIPS_MACH_3G300M, "3G300M", "Tenda 3G300M", +		tenda_3g300m_init); | 
