diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-11 15:11:36 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-11 15:11:36 +0000 | 
| commit | 7a5c327fcf3fe2e411c3934b8feee3d46a00eadc (patch) | |
| tree | d308d99406c69d62eb13569ad5d43bd14d56c8cc /target/linux/ramips/files/arch/mips | |
| parent | d69d16fbbd539eea99007dbd377da48ff8c43c49 (diff) | |
ramips: rt305x: add support for Accton WR6202 / SMCWBR11S-3GN
This patch adds support for the Accton WR6202 Mini 3G broadband router.
Full details for this device are available at
http://www.awbnetworks.com/products03.php?Fullkey=19.
This device is identical to the SMCWBR11S-3GN:
http://www.smc-asia.com/products03.php?Fullkey=210
It's also worth noting that this board has a GPIO line to control the
power to the USB port.
[juhosg:
 - fix checkpatch warnings,
 - reorder Kconfig entry,
 - merge the sysupgrade patch,
 - add GPL header]
Signed-off-by: Johnathan Boyce <jon.boyce@globalreach.eu.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30434 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ramips/files/arch/mips')
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 bec6ff0be..600e8bf90 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 @@ -45,4 +45,5 @@ enum ramips_mach_type {  	RAMIPS_MACH_WL341V3,		/* Sitecom WL-341 v3 */  	RAMIPS_MACH_WL351,		/* Sitecom WL-351 v1 002 */  	RAMIPS_MACH_WR512_3GN,		/* SH-WR512NU/WS-WR512N1-like 3GN*/ +	RAMIPS_MACH_WR6202,		/* Accton WR6202 */  }; diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig index 826a484fe..550287e34 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig @@ -2,6 +2,11 @@ if RALINK_RT305X  menu "Ralink RT350x machine selection" +config RT305X_MACH_WR6202 +	bool "Accton WR6202" +	select RALINK_DEV_GPIO_BUTTONS +	select RALINK_DEV_GPIO_LEDS +  config RT305X_MACH_ALL0256N  	bool "Allnet ALL0256N support"  	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 743493e80..da1952c0e 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile @@ -32,3 +32,4 @@ obj-$(CONFIG_RT305X_MACH_WHR_G300N)	+= mach-whr-g300n.o  obj-$(CONFIG_RT305X_MACH_WR512_3GN)	+= mach-wr512-3gn.o  obj-$(CONFIG_RT305X_MACH_WL341V3)	+= mach-wl341v3.o  obj-$(CONFIG_RT305X_MACH_WL351)		+= mach-wl351.o +obj-$(CONFIG_RT305X_MACH_WR6202)	+= mach-wr6202.o diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-wr6202.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-wr6202.c new file mode 100644 index 000000000..64ea20113 --- /dev/null +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-wr6202.c @@ -0,0 +1,126 @@ +/* + *  AWB WR6202 board support + * + *  Copyright (C) 2012 Johnathan Boyce<jon.boyce@globalreach.eu.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/mtd/mtd.h> +#include<linux/mtd/partitions.h> +#include<linux/mtd/physmap.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 WR6202_GPIO_BUTTON_RESET     10        /* active low */ +#define WR6202_GPIO_BUTTON_WPS        0        /* active low */ + +#define WR6202_BUTTONS_POLL_INTERVAL 20 + +#define WR6202_GPIO_USB_POWER	     11 + +#define WR6202_GPIO_LED_3G	     13 +#define WR6202_GPIO_LED_WPS	     14 + +#ifdef CONFIG_MTD_PARTITIONS +static struct mtd_partition wr6202_partitions[] = { +	{ +		.name	= "uboot", +		.offset	= 0, +		.size	= 0x030000, +	}, { +		.name	= "uboot-config", +		.offset	= 0x030000, +		.size	= 0x040000, +		.mask_flags = MTD_WRITEABLE, +	}, { +		.name	= "factory", +		.offset	= 0x040000, +		.size	= 0x050000, +		.mask_flags = MTD_WRITEABLE, +	}, { +		.name	= "linux", +		.offset	= 0x050000, +		.size	= 0x100000, +	}, { +		.name	= "rootfs", +		.offset	= 0x150000, +		.size	= 0x6B0000, +	} +}; +#endif /* CONFIG_MTD_PARTITIONS */ + +static struct physmap_flash_data wr6202_flash_data = { +#ifdef CONFIG_MTD_PARTITIONS +	.nr_parts	= ARRAY_SIZE(wr6202_partitions), +	.parts		= wr6202_partitions, +#endif +}; + +static struct gpio_led wr6202_leds_gpio[] __initdata = { +	{ +		.name           = "wr6202:blue:wps", +		.gpio           = WR6202_GPIO_LED_WPS, +		.active_low     = 1, +	}, { +		.name           = "wr6202:blue:3g", +		.gpio           = WR6202_GPIO_LED_3G, +		.active_low     = 1, +	} +}; + +static struct gpio_button wr6202_gpio_buttons[] __initdata = { +	{ +		.desc           = "reset", +		.type           = EV_KEY, +		.code           = KEY_RESTART, +		.threshold      = 3, +		.gpio           = WR6202_GPIO_BUTTON_RESET, +		.active_low     = 1, +	}, { +		.desc           = "wps", +		.type           = EV_KEY, +		.code           = KEY_WPS_BUTTON, +		.threshold      = 3, +		.gpio           = WR6202_GPIO_BUTTON_WPS, +		.active_low     = 1, +	} +}; + +static void __init wr6202_init(void) +{ +	rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_WLLLL; + +	rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT); + +	ramips_register_gpio_leds(-1, ARRAY_SIZE(wr6202_leds_gpio), +				wr6202_leds_gpio); +	ramips_register_gpio_buttons(-1, WR6202_BUTTONS_POLL_INTERVAL, +				ARRAY_SIZE(wr6202_gpio_buttons), +				wr6202_gpio_buttons); + +	/* Power to the USB port is controlled by GPIO line */ +	gpio_request(WR6202_GPIO_USB_POWER, "WR6202_GPIO_USB_POWER"); +	gpio_direction_output(WR6202_GPIO_USB_POWER, 0); +	gpio_free(WR6202_GPIO_USB_POWER); + +	rt305x_register_flash(0, &wr6202_flash_data); +	rt305x_register_ethernet(); +	rt305x_register_wifi(); +	rt305x_register_wdt(); +	rt305x_register_usb(); +} + +MIPS_MACHINE(RAMIPS_MACH_WR6202, "WR6202", "AWB WR6202", +	     wr6202_init);  | 
