1/* 2 * Edimax 3g-6200n board support 3 * 4 * Copyright (C) 2011 Andrzej Hajda <andrzej.hajda@wp.pl> 5 * Copyright (C) 2012 Lukasz Golebiowski <lgolebio@gmail.com> 6 * 7 * This program is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License version 2 as published 9 * by the Free Software Foundation. 10 */ 11 12 13#include <linux/init.h> 14#include <linux/platform_device.h> 15 16#include <asm/mach-ralink/machine.h> 17#include <asm/mach-ralink/dev-gpio-buttons.h> 18#include <asm/mach-ralink/dev-gpio-leds.h> 19#include <asm/mach-ralink/rt305x.h> 20#include <asm/mach-ralink/rt305x_regs.h> 21 22#include "devices.h" 23 24#define EDIMAX_GPIO_BUTTON_WPS 12 25#define EDIMAX_GPIO_BTN_0 13 /* Wifi on/off switch button */ 26 27#define EDIMAX_GPIO_LED_POWER 9 28#define EDIMAX_GPIO_LED_WLAN 14 29#define EDIMAX_GPIO_LED_3G 7 30 31#define EDIMAX_KEYS_POLL_INTERVAL 20 32#define EDIMAX_KEYS_DEBOUNCE_INTERVAL (3 * EDIMAX_KEYS_POLL_INTERVAL) 33 34static struct gpio_led edimax_leds_gpio[] __initdata = { 35 { 36 .name = "edimax:green:power", 37 .gpio = EDIMAX_GPIO_LED_POWER, 38 .active_low = 1, 39 }, { 40 .name = "edimax:amber:wlan", 41 .gpio = EDIMAX_GPIO_LED_WLAN, 42 .active_low = 1, 43 }, { 44 .name = "edimax:blue:3g", 45 .gpio = EDIMAX_GPIO_LED_3G, 46 .active_low = 1, 47 } 48}; 49 50static struct gpio_keys_button edimax_gpio_buttons[] __initdata = { 51 { 52 .desc = "wps", 53 .type = EV_KEY, 54 .code = KEY_WPS_BUTTON, 55 .debounce_interval = EDIMAX_KEYS_DEBOUNCE_INTERVAL, 56 .gpio = EDIMAX_GPIO_BUTTON_WPS, 57 .active_low = 1, 58 }, { 59 .desc = "wlanswitch", 60 .type = EV_KEY, 61 .code = BTN_0, 62 .debounce_interval = EDIMAX_KEYS_DEBOUNCE_INTERVAL, 63 .gpio = EDIMAX_GPIO_BTN_0, 64 .active_low = 1, 65 } 66}; 67 68static void __init edimax_init(void) 69{ 70 rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT); 71 72 rt305x_register_flash(0); 73 rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW; 74 rt305x_register_ethernet(); 75 ramips_register_gpio_leds(-1, ARRAY_SIZE(edimax_leds_gpio), 76 edimax_leds_gpio); 77 ramips_register_gpio_buttons(-1, EDIMAX_KEYS_POLL_INTERVAL, 78 ARRAY_SIZE(edimax_gpio_buttons), 79 edimax_gpio_buttons); 80 rt305x_register_wifi(); 81 rt305x_register_wdt(); 82 rt305x_register_usb(); 83} 84 85MIPS_MACHINE(RAMIPS_MACH_3G_6200N, "3G-6200N", "Edimax 3g-6200n", 86 edimax_init); 87