1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-29 03:45:31 +02:00
openwrt-xburst/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-w306r-v20.c
juhosg 439a47e380 ramips: W306R V2.0 - GPIO and Network fixes
Fixed: GPIO typos and confirmed GPIO_BUTTON_RESET
Fixed: Lan & Wan reversed: swaped "eth0.2" with "eth0.1" by
       removing a line(default is correct), and reversed the
       Lan/wan layout LLLLW to WLLLL.

Added: image/Makefile now builds -factory.bin files. I am
       unsure of the accepted way to change the makefile but
       the name of the image needs to be 'linkn Kernel Image'
       in order to be accepted by the OEM firmware.

Known issue: eth0 (internal switch i think has mac address:
       00:11:22:33:44:55  but i think it should be same as
       the lan).
Known issue: Pressing the reset button has no noticable effect,
       i would expect the router to boot failsafe if being
       pressed on boot, reboot if short press and reset all
       to default if long press.

[juhosg: remove mtdlayout_W306R and use mtdlayout_4M instead]

Signed-off-by: David Pearce <david_18051985@hotmail.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31557 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-05-02 19:17:59 +00:00

73 lines
1.9 KiB
C

/*
* Tenda W306R V2.0 board support
*
*
* 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/ethtool.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 <asm/mach-ralink/ramips_eth_platform.h>
#include "devices.h"
#define W306R_V20_GPIO_LED_SYS 9
#define W306R_V20_GPIO_LED_WPS 13
#define W306R_V20_GPIO_BUTTON_RESET 10
#define W306R_V20_KEYS_POLL_INTERVAL 20
#define W306R_V20_KEYS_DEBOUNCE_INTERVAL (3 * W306R_V20_KEYS_POLL_INTERVAL)
static struct gpio_led w306r_v20_leds_gpio[] __initdata = {
{
.name = "w306r-v20:green:sys",
.gpio = W306R_V20_GPIO_LED_SYS,
.active_low = 1,
}, {
.name = "w306r-v20:green:wps",
.gpio = W306R_V20_GPIO_LED_WPS,
.active_low = 1,
}
};
static struct gpio_keys_button w306r_v20_gpio_buttons[] __initdata = {
{
.desc = "RESET/WPS",
.type = EV_KEY,
.code = KEY_RESTART,
.debounce_interval = W306R_V20_KEYS_DEBOUNCE_INTERVAL,
.gpio = W306R_V20_GPIO_BUTTON_RESET,
.active_low = 1,
}
};
static void __init w306r_v20_init(void)
{
rt305x_register_flash(0);
rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT);
rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_WLLLL;
rt305x_register_ethernet();
ramips_register_gpio_leds(-1, ARRAY_SIZE(w306r_v20_leds_gpio),
w306r_v20_leds_gpio);
ramips_register_gpio_buttons(-1, W306R_V20_KEYS_POLL_INTERVAL,
ARRAY_SIZE(w306r_v20_gpio_buttons),
w306r_v20_gpio_buttons);
rt305x_register_wifi();
rt305x_register_wdt();
}
MIPS_MACHINE(RAMIPS_MACH_W306R_V20, "W306R_V20", "Tenda W306R V2.0",
w306r_v20_init);