]> git.karo-electronics.de Git - mv-sheeva.git/blob - arch/mips/ath79/mach-ap81.c
4e4ccd4f80d90a4ff6b25689688144cd0d60d052
[mv-sheeva.git] / arch / mips / ath79 / mach-ap81.c
1 /*
2  *  Atheros AP81 board support
3  *
4  *  Copyright (C) 2009-2010 Gabor Juhos <juhosg@openwrt.org>
5  *  Copyright (C) 2009 Imre Kaloz <kaloz@openwrt.org>
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 #include "machtypes.h"
13 #include "dev-gpio-buttons.h"
14 #include "dev-leds-gpio.h"
15 #include "dev-spi.h"
16
17 #define AP81_GPIO_LED_STATUS    1
18 #define AP81_GPIO_LED_AOSS      3
19 #define AP81_GPIO_LED_WLAN      6
20 #define AP81_GPIO_LED_POWER     14
21
22 #define AP81_GPIO_BTN_SW4       12
23 #define AP81_GPIO_BTN_SW1       21
24
25 #define AP81_KEYS_POLL_INTERVAL         20      /* msecs */
26 #define AP81_KEYS_DEBOUNCE_INTERVAL     (3 * AP81_KEYS_POLL_INTERVAL)
27
28 static struct gpio_led ap81_leds_gpio[] __initdata = {
29         {
30                 .name           = "ap81:green:status",
31                 .gpio           = AP81_GPIO_LED_STATUS,
32                 .active_low     = 1,
33         }, {
34                 .name           = "ap81:amber:aoss",
35                 .gpio           = AP81_GPIO_LED_AOSS,
36                 .active_low     = 1,
37         }, {
38                 .name           = "ap81:green:wlan",
39                 .gpio           = AP81_GPIO_LED_WLAN,
40                 .active_low     = 1,
41         }, {
42                 .name           = "ap81:green:power",
43                 .gpio           = AP81_GPIO_LED_POWER,
44                 .active_low     = 1,
45         }
46 };
47
48 static struct gpio_keys_button ap81_gpio_keys[] __initdata = {
49         {
50                 .desc           = "sw1",
51                 .type           = EV_KEY,
52                 .code           = BTN_0,
53                 .debounce_interval = AP81_KEYS_DEBOUNCE_INTERVAL,
54                 .gpio           = AP81_GPIO_BTN_SW1,
55                 .active_low     = 1,
56         } , {
57                 .desc           = "sw4",
58                 .type           = EV_KEY,
59                 .code           = BTN_1,
60                 .debounce_interval = AP81_KEYS_DEBOUNCE_INTERVAL,
61                 .gpio           = AP81_GPIO_BTN_SW4,
62                 .active_low     = 1,
63         }
64 };
65
66 static struct spi_board_info ap81_spi_info[] = {
67         {
68                 .bus_num        = 0,
69                 .chip_select    = 0,
70                 .max_speed_hz   = 25000000,
71                 .modalias       = "m25p64",
72         }
73 };
74
75 static struct ath79_spi_platform_data ap81_spi_data = {
76         .bus_num        = 0,
77         .num_chipselect = 1,
78 };
79
80 static void __init ap81_setup(void)
81 {
82         ath79_register_leds_gpio(-1, ARRAY_SIZE(ap81_leds_gpio),
83                                  ap81_leds_gpio);
84         ath79_register_gpio_keys_polled(-1, AP81_KEYS_POLL_INTERVAL,
85                                         ARRAY_SIZE(ap81_gpio_keys),
86                                         ap81_gpio_keys);
87         ath79_register_spi(&ap81_spi_data, ap81_spi_info,
88                            ARRAY_SIZE(ap81_spi_info));
89 }
90
91 MIPS_MACHINE(ATH79_MACH_AP81, "AP81", "Atheros AP81 reference board",
92              ap81_setup);