From 0e486d2fd297d28ddfc34d4adb4eae7050f0d138 Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Sun, 4 Mar 2012 16:09:13 +0000 Subject: [PATCH] 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 SVN-Revision: 30809 --- target/linux/ramips/base-files/etc/diag.sh | 3 + .../etc/hotplug.d/firmware/10-rt2x00-eeprom | 3 +- .../base-files/lib/preinit/06_set_iface_mac | 3 +- target/linux/ramips/base-files/lib/ramips.sh | 3 + .../mips/include/asm/mach-ralink/machine.h | 1 + .../files/arch/mips/ralink/rt305x/Kconfig | 5 ++ .../files/arch/mips/ralink/rt305x/Makefile | 1 + .../arch/mips/ralink/rt305x/mach-xdx-rn502j.c | 79 +++++++++++++++++++ target/linux/ramips/image/Makefile | 5 ++ target/linux/ramips/rt305x/config-3.2 | 1 + 10 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 target/linux/ramips/files/arch/mips/ralink/rt305x/mach-xdx-rn502j.c diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh index 0a13ddb8c6..f8dac497d6 100755 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -99,6 +99,9 @@ get_status_led() { wr512-3gn) status_led="wr512:green:wps" ;; + xdxrn502j) + status_led="xdxrn502j:green:power" + ;; esac } 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 148fda20ce..bc23208575 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 @@ -70,7 +70,8 @@ case "$FIRMWARE" in wl-351 | \ wli-tx4-ag300n | \ wr512-3gn | \ - wr6202) + wr6202 | \ + xdxrn502j) rt2x00_eeprom_extract "factory" 0 272 ;; 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 cb9c7abd1b..97cacfa5ee 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 @@ -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 ;; diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh index 35672092b7..faa2485365 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -143,6 +143,9 @@ ramips_board_name() { *"AWB WR6202") name="wr6202" ;; + *"XDX RN502J") + name="xdxrn502j" + ;; *) name="generic" ;; 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 cfb6bc61aa..8234164424 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 @@ -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 */ diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig index ae05190ec4..1bf960f7eb 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Kconfig @@ -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 diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile index ce1d568237..aec57a0116 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/Makefile @@ -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 diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-xdx-rn502j.c b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-xdx-rn502j.c new file mode 100644 index 0000000000..f7ef353262 --- /dev/null +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-xdx-rn502j.c @@ -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 +#include + +#include +#include +#include +#include +#include + +#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); diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile index bb6124c9ab..90bbff95b3 100644 --- a/target/linux/ramips/image/Makefile +++ b/target/linux/ramips/image/Makefile @@ -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 diff --git a/target/linux/ramips/rt305x/config-3.2 b/target/linux/ramips/rt305x/config-3.2 index 09355ddbfe..cd25acc2af 100644 --- a/target/linux/ramips/rt305x/config-3.2 +++ b/target/linux/ramips/rt305x/config-3.2 @@ -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 -- 2.30.2