Ticket #11883: mach-dir-615-revd.c

File mach-dir-615-revd.c, 2.6 KB (added by juanjo@…, 6 years ago)
Line 
1/*
2 *  D-Link DIR-615 rev D board support
3 *
4 *  Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
5 *
6 *  This program is free software; you can redistribute it and/or modify it
7 *  under the terms of the GNU General Public License version 2 as published
8 *  by the Free Software Foundation.
9 */
10
11#include <linux/init.h>
12#include <linux/platform_device.h>
13
14#include <asm/mach-ralink/machine.h>
15#include <asm/mach-ralink/dev-gpio-buttons.h>
16#include <asm/mach-ralink/dev-gpio-leds.h>
17#include <asm/mach-ralink/rt305x.h>
18#include <asm/mach-ralink/rt305x_regs.h>
19
20#include "devices.h"
21
22#define 615D_GPIO_LED_STATUS_AMBER      8
23#define 615D_GPIO_LED_STATUS_GREEN      9
24#define 615D_GPIO_LED_WPS               11
25/*
26 * NOTE: The wan led is also connected to the switch, both
27 * switch and gpio must be active to make it light up
28 */
29#define 615D_GPIO_LED_WAN_GREEN 12
30#define 615D_GPIO_LED_WAN_AMBER 14
31
32#define 615D_GPIO_BUTTON_WPS    0       /* active low */
33#define 615D_GPIO_BUTTON_RESET  10      /* active low */
34
35#define 615D_KEYS_POLL_INTERVAL 20
36#define 615D_KEYS_DEBOUNCE_INTERVAL     (3 * DIR_615D_KEYS_POLL_INTERVAL)
37
38static struct gpio_led dir_615d_leds_gpio[] __initdata = {
39        {
40                .name           = "d-link:amber:status",
41                .gpio           = 615D_GPIO_LED_STATUS_AMBER,
42                .active_low     = 1,
43        }, {
44                .name           = "d-link:green:status",
45                .gpio           = 615D_GPIO_LED_STATUS_GREEN,
46                .active_low     = 1,
47        }, {
48                .name           = "d-link:amber:wan",
49                .gpio           = 615D_GPIO_LED_WAN_AMBER,
50                .active_low     = 1,
51        }, {
52                .name           = "d-link:green:wan",
53                .gpio           = 615D_GPIO_LED_WAN_GREEN,
54                .active_low     = 1,
55        }, {
56                .name           = "d-link:blue:wps",
57                .gpio           = 615D_GPIO_LED_WPS,
58                .active_low     = 1,
59        }
60};
61
62static struct gpio_keys_button dir_615d_gpio_buttons[] __initdata = {
63        {
64                .desc           = "reset",
65                .type           = EV_KEY,
66                .code           = KEY_RESTART,
67                .debounce_interval = 615D_KEYS_DEBOUNCE_INTERVAL,
68                .gpio           = 615D_GPIO_BUTTON_RESET,
69                .active_low     = 1,
70        }, {
71                .desc           = "wps",
72                .type           = EV_KEY,
73                .code           = KEY_WPS_BUTTON,
74                .debounce_interval = 615D_KEYS_DEBOUNCE_INTERVAL,
75                .gpio           = 615D_GPIO_BUTTON_WPS,
76                .active_low     = 1,
77        }
78};
79
80static void __init dir_615d_init(void)
81{
82        rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT);
83
84        rt305x_register_flash(0);
85
86        rt305x_esw_data.vlan_config = RT305X_ESW_VLAN_CONFIG_LLLLW;
87        rt305x_register_ethernet();
88        ramips_register_gpio_leds(-1, ARRAY_SIZE(dir_615d_leds_gpio),
89                                  dir_615d_leds_gpio);
90        ramips_register_gpio_buttons(-1, 615D_KEYS_POLL_INTERVAL,
91                                     ARRAY_SIZE(dir_615d_gpio_buttons),
92                                     dir_615d_gpio_buttons);
93        rt305x_register_wifi();
94        rt305x_register_wdt();
95}
96
97MIPS_MACHINE(RAMIPS_MACH_DIR_615_D, "DIR-615-D", "D-Link DIR-615 D",
98             dir_615d_init);