ramips: add support for unbranded XDX-RN502J board
This patch adds support for routers using a PCB marked XDX-RN502J V2.0, such as some unbranded routers like this: http://www.mediafire.com/?8acv87h6snn9fj6 http://www.mediafire.com/?do7xonw7scor4kn http://www.mediafire.com/?1ad49zvx3e7jyix http://www.mediafire.com/?i46cqiq66maa197 http://www.aliexpress.com/product-fm/516397994-Free-Shipping-300M-3G-WAN-Wireless-N-WiFi-USB-AP-Router-2-Antennas-wholesalers.html some reports also state the Aceex 22Y uses the same board. more information can be found in the following openwrt forum post https://forum.openwrt.org/viewtopic.php?id=34878 [juhosg: fix checkpatch warnings, use the GENERIC_4M template] Signed-off-by: bruno schwander <bruno@tinkerbox.org> SVN-Revision: 30809
This commit is contained in:
		| @@ -99,6 +99,9 @@ get_status_led() { | ||||
| 	wr512-3gn) | ||||
| 		status_led="wr512:green:wps" | ||||
| 		;; | ||||
| 	xdxrn502j) | ||||
| 		status_led="xdxrn502j:green:power" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -70,7 +70,8 @@ case "$FIRMWARE" in | ||||
| 	wl-351 | \ | ||||
| 	wli-tx4-ag300n | \ | ||||
| 	wr512-3gn | \ | ||||
| 	wr6202) | ||||
| 	wr6202 | \ | ||||
| 	xdxrn502j) | ||||
| 		rt2x00_eeprom_extract "factory" 0 272 | ||||
| 		;; | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,8 @@ preinit_set_mac_address() { | ||||
| 	nbg-419n |\ | ||||
| 	omni-emb |\ | ||||
| 	w502u    |\ | ||||
| 	wr6202) | ||||
| 	wr6202 |\ | ||||
| 	xdxrn502j) | ||||
| 		mac=$(ramips_get_mac_binary factory 40) | ||||
| 		ifconfig eth0 hw ether $mac 2>/dev/null | ||||
| 		;; | ||||
|   | ||||
| @@ -143,6 +143,9 @@ ramips_board_name() { | ||||
| 	*"AWB WR6202") | ||||
| 		name="wr6202" | ||||
| 		;; | ||||
| 	*"XDX RN502J") | ||||
| 		name="xdxrn502j" | ||||
| 		;; | ||||
| 	*) | ||||
| 		name="generic" | ||||
| 		;; | ||||
|   | ||||
| @@ -49,6 +49,7 @@ enum ramips_mach_type { | ||||
| 	RAMIPS_MACH_WL351,		/* Sitecom WL-351 v1 002 */ | ||||
| 	RAMIPS_MACH_WR512_3GN,		/* SH-WR512NU/WS-WR512N1-like 3GN*/ | ||||
| 	RAMIPS_MACH_WR6202,		/* Accton WR6202 */ | ||||
| 	RAMIPS_MACH_XDXRN502J,          /* unknown XDX-RN502J */ | ||||
|  | ||||
| 	/* RT3662 based machines */ | ||||
| 	RAMIPS_MACH_RT_N56U,		/* Asus RT-N56U */ | ||||
|   | ||||
| @@ -121,6 +121,11 @@ config RT305X_MACH_NBG_419N | ||||
| 	select RALINK_DEV_GPIO_BUTTONS | ||||
| 	select RALINK_DEV_GPIO_LEDS | ||||
|  | ||||
| config RT305X_MACH_XDX_RN502J | ||||
| 	bool "Unknown board XDX-RN502J" | ||||
| 	select RALINK_DEV_GPIO_BUTTONS | ||||
| 	select RALINK_DEV_GPIO_LEDS | ||||
|  | ||||
| endmenu | ||||
|  | ||||
| endif | ||||
|   | ||||
| @@ -35,3 +35,4 @@ 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 | ||||
| obj-$(CONFIG_RT305X_MACH_XDX_RN502J)    += mach-xdx-rn502j.o | ||||
|   | ||||
| @@ -0,0 +1,79 @@ | ||||
| /* | ||||
|  *  Unknown router name/model, PCB marked with XDX-RN502J | ||||
|  * | ||||
|  *  Copyright (C) 2011 Bruno Schwander bruno@tinkerbox.org | ||||
|  * | ||||
|  *  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 <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 XDXRN502J_GPIO_BUTTON_RESET	12 | ||||
| #define XDXRN502J_GPIO_LED_WIFI		7 | ||||
| #define XDXRN502J_GPIO_LED_POWER	9 | ||||
|  | ||||
| #define XDXRN502J_BUTTONS_POLL_INTERVAL	20 | ||||
| #define XDXRN502J_BUTTONS_DEBOUNCE_INTERVAL (3 * XDXRN502J_BUTTONS_POLL_INTERVAL) | ||||
|  | ||||
|  | ||||
| static struct gpio_led xdxrn502j_leds_gpio[] __initdata = { | ||||
| 	{ | ||||
| 		.name		= "xdxrn502j:green:wifi", | ||||
| 		.gpio		= XDXRN502J_GPIO_LED_WIFI, | ||||
| 		.active_low	= 1, | ||||
| 	}, { | ||||
| 		.name		= "xdxrn502j:green:power", | ||||
| 		.gpio		= XDXRN502J_GPIO_LED_POWER, | ||||
| 		.active_low	= 1, | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| static struct gpio_keys_button xdxrn502j_gpio_buttons[] __initdata = { | ||||
| 	{ | ||||
| 		.desc		= "reset", | ||||
| 		.type		= EV_KEY, | ||||
| 		.code		= KEY_RESTART, | ||||
| 		.debounce_interval = XDXRN502J_BUTTONS_DEBOUNCE_INTERVAL, | ||||
| 		.gpio		= XDXRN502J_GPIO_BUTTON_RESET, | ||||
| 		.active_low	= 1, | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| #define XDXRN502J_GPIO_MODE \ | ||||
| 	((RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT) | \ | ||||
| 	 RT305X_GPIO_MODE_MDIO) | ||||
|  | ||||
| static void __init xdxrn502j_init(void) | ||||
| { | ||||
| 	rt305x_gpio_init(XDXRN502J_GPIO_MODE); | ||||
|  | ||||
| 	rt305x_register_flash(0); | ||||
|  | ||||
| 	rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_WLLLL; | ||||
| 	rt305x_register_ethernet(); | ||||
|  | ||||
| 	ramips_register_gpio_leds(-1, ARRAY_SIZE(xdxrn502j_leds_gpio), | ||||
| 				  xdxrn502j_leds_gpio); | ||||
|  | ||||
| 	ramips_register_gpio_buttons(-1, XDXRN502J_BUTTONS_POLL_INTERVAL, | ||||
| 				     ARRAY_SIZE(xdxrn502j_gpio_buttons), | ||||
| 				     xdxrn502j_gpio_buttons); | ||||
|  | ||||
| 	rt305x_register_wifi(); | ||||
| 	rt305x_register_wdt(); | ||||
| 	rt305x_register_usb(); | ||||
| } | ||||
|  | ||||
| MIPS_MACHINE(RAMIPS_MACH_XDXRN502J, "XDXRN502J", "XDX RN502J", | ||||
| 	     xdxrn502j_init); | ||||
| @@ -391,6 +391,10 @@ define Image/Build/Profile/WR6202 | ||||
| 	$(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_8M,wr6202,WR6202,ttyS1,115200,phys) | ||||
| endef | ||||
|  | ||||
| define Image/Build/Profile/XDXRN502J | ||||
| 	$(call Image/Build/Template/$(fs_squash)/$(1),GENERIC_4M,xdxrn502j,XDXRN502J,ttyS1,57600,phys) | ||||
| endef | ||||
|  | ||||
| ifeq ($(CONFIG_RALINK_RT305X),y) | ||||
| define Image/Build/Profile/Default | ||||
| 	$(call Image/Build/Profile/ALL0256N,$(1)) | ||||
| @@ -417,6 +421,7 @@ define Image/Build/Profile/Default | ||||
| 	$(call Image/Build/Profile/WL351,$(1)) | ||||
| 	$(call Image/Build/Profile/WR5123GN,$(1)) | ||||
| 	$(call Image/Build/Profile/WR6202,$(1)) | ||||
| 	$(call Image/Build/Profile/XDXRN502J,$(1)) | ||||
| endef | ||||
| endif | ||||
|  | ||||
|   | ||||
| @@ -117,6 +117,7 @@ CONFIG_RT305X_MACH_WL341V3=y | ||||
| CONFIG_RT305X_MACH_WL351=y | ||||
| CONFIG_RT305X_MACH_WR512_3GN=y | ||||
| CONFIG_RT305X_MACH_WR6202=y | ||||
| CONFIG_RT305X_MACH_XDX_RN502J=y | ||||
| # CONFIG_SCSI_DMA is not set | ||||
| CONFIG_SERIAL_8250_NR_UARTS=4 | ||||
| CONFIG_SERIAL_8250_RT288X=y | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Gabor Juhos
					Gabor Juhos