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 | |
| 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
11 files changed, 155 insertions, 3 deletions
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom index ac97d037c..ace012acc 100644 --- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom +++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom @@ -64,7 +64,8 @@ case "$FIRMWARE" in  	whr-g300n | \  	wl-351 | \  	wli-tx4-ag300n | \ -	wr512-3gn) +	wr512-3gn | \ +	wr6202)  		rt2x00_eeprom_extract "factory" 0 272  		;; diff --git a/target/linux/ramips/base-files/etc/uci-defaults/network b/target/linux/ramips/base-files/etc/uci-defaults/network index 65c49e0eb..174383405 100755 --- a/target/linux/ramips/base-files/etc/uci-defaults/network +++ b/target/linux/ramips/base-files/etc/uci-defaults/network @@ -23,7 +23,8 @@ ramips_setup_interfaces()  	argus-atp52b | \  	b2c | \  	nw718 | \ -	w502u) +	w502u | \ +	wr6202)  		ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"  		;; diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac index f6884c847..121b471f4 100644 --- a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac +++ b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac @@ -25,7 +25,8 @@ preinit_set_mac_address() {  	hw550-3g |\  	nbg-419n |\  	omni-emb |\ -	w502u) +	w502u    |\ +	wr6202)  		mac=$(ramips_get_mac_binary factory 40)  		ifconfig eth0 hw ether $mac 2>/dev/null  		;; diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index b3c54e82d..5204820fb 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -128,6 +128,9 @@ ramips_board_name() {  	*"WR512-3GN-like router")  		name="wr512-3gn"  		;; +	*"AWB WR6202") +		name="wr6202" +		;;  	*)  		name="generic"  		;; diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh index 494e774ef..2751fdda2 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -29,6 +29,7 @@ platform_check_image() {  	rt-g32-b1 | \  	rt-n15 | \  	w502u |\ +	wr6202 |\  	v22rw-2x2 | \  	wl341v3 | \  	wli-tx4-ag300n | \ 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); diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index 745edefba..76f14ca41 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -167,6 +167,16 @@ define Image/Build/Template/NW718  	$(call BuildFirmware/NW718,$(1),$(2),board=$(3),mtdlayout_nw718,851968,2949120)  endef +console_WR6202=ttyS1,115200 +mtdlayout_WR6202=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,1024k(kernel),6848k(rootfs),7872k@0x50000(firmware) +define Image/Build/Template/WR6202 +	$(call BuildFirmware/Generic,$(1),$(2),board=$(3) console=$(console_WR6202),mtdlayout_WR6202,1048576,7012352) +endef + +define Image/Build/Profile/WR6202 +	$(call Image/Build/Template/WR6202,$(1),wr6202,WR6202) +endef +  console_OMNIEMB=ttyS1,57600  mtdlayout_ONMIEMB=mtdparts=physmap-flash.0:192k(u-boot)ro,64k(u-boot-env)ro,64k(factory)ro,1024k(kernel),6848k(rootfs),7872k@0x50000(firmware)  define Image/Build/Template/OMNIEMB @@ -328,6 +338,7 @@ define Image/Build/Profile/Default  	$(call Image/Build/Profile/WR5123GN,$(1))  	$(call Image/Build/Profile/WL341V3,$(1))  	$(call Image/Build/Profile/WL351,$(1)) +	$(call Image/Build/Profile/WR6202,$(1))  endef  endif diff --git a/target/linux/ramips/rt305x/config-2.6.39 b/target/linux/ramips/rt305x/config-2.6.39 index e9ef379c0..0aa7670a8 100644 --- a/target/linux/ramips/rt305x/config-2.6.39 +++ b/target/linux/ramips/rt305x/config-2.6.39 @@ -112,6 +112,7 @@ CONFIG_RT305X_MACH_WHR_G300N=y  CONFIG_RT305X_MACH_WL341V3=y  CONFIG_RT305X_MACH_WL351=y  CONFIG_RT305X_MACH_WR512_3GN=y +CONFIG_RT305X_MACH_WR6202=y  # CONFIG_SCSI_DMA is not set  CONFIG_SERIAL_8250_NR_UARTS=4  CONFIG_SERIAL_8250_RT288X=y  | 
