aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
diff options
context:
space:
mode:
authorSiddarth Gore <gores@marvell.com>2009-05-05 05:22:09 -0400
committerNicolas Pitre <nico@cam.org>2009-06-08 13:04:55 -0400
commit96e7d211b46ce838ceca5d9734d6e166cfafdef4 (patch)
treecacb5303ace61d4c87fd97cb1eb6e62ea2e9a027 /arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
parent91af7bb2f48e14892c5c961bca1fae5c7886532e (diff)
[ARM] Kirkwood: enable gpio leds/buttons for the mv88f6281gtw_ge board
Signed-off-by: Siddarth Gore <gores@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Diffstat (limited to 'arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c')
-rw-r--r--arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
index 4fb03f4d3f4a..0358f45766cb 100644
--- a/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
+++ b/arch/arm/mach-kirkwood/mv88f6281gtw_ge-setup.c
@@ -17,6 +17,10 @@
17#include <linux/timer.h> 17#include <linux/timer.h>
18#include <linux/mv643xx_eth.h> 18#include <linux/mv643xx_eth.h>
19#include <linux/ethtool.h> 19#include <linux/ethtool.h>
20#include <linux/gpio.h>
21#include <linux/leds.h>
22#include <linux/input.h>
23#include <linux/gpio_keys.h>
20#include <linux/spi/flash.h> 24#include <linux/spi/flash.h>
21#include <linux/spi/spi.h> 25#include <linux/spi/spi.h>
22#include <linux/spi/orion_spi.h> 26#include <linux/spi/orion_spi.h>
@@ -26,6 +30,7 @@
26#include <asm/mach/pci.h> 30#include <asm/mach/pci.h>
27#include <mach/kirkwood.h> 31#include <mach/kirkwood.h>
28#include "common.h" 32#include "common.h"
33#include "mpp.h"
29 34
30static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = { 35static struct mv643xx_eth_platform_data mv88f6281gtw_ge_ge00_data = {
31 .phy_addr = MV643XX_ETH_PHY_NONE, 36 .phy_addr = MV643XX_ETH_PHY_NONE,
@@ -62,12 +67,79 @@ static struct spi_board_info __initdata mv88f6281gtw_ge_spi_slave_info[] = {
62 }, 67 },
63}; 68};
64 69
70static struct gpio_keys_button mv88f6281gtw_ge_button_pins[] = {
71 {
72 .code = KEY_RESTART,
73 .gpio = 47,
74 .desc = "SWR Button",
75 .active_low = 1,
76 }, {
77 .code = KEY_F1,
78 .gpio = 46,
79 .desc = "WPS Button(F1)",
80 .active_low = 1,
81 },
82};
83
84static struct gpio_keys_platform_data mv88f6281gtw_ge_button_data = {
85 .buttons = mv88f6281gtw_ge_button_pins,
86 .nbuttons = ARRAY_SIZE(mv88f6281gtw_ge_button_pins),
87};
88
89static struct platform_device mv88f6281gtw_ge_buttons = {
90 .name = "gpio-keys",
91 .id = -1,
92 .num_resources = 0,
93 .dev = {
94 .platform_data = &mv88f6281gtw_ge_button_data,
95 },
96};
97
98static struct gpio_led mv88f6281gtw_ge_led_pins[] = {
99 {
100 .name = "gtw:green:Status",
101 .gpio = 20,
102 .active_low = 0,
103 }, {
104 .name = "gtw:red:Status",
105 .gpio = 21,
106 .active_low = 0,
107 }, {
108 .name = "gtw:green:USB",
109 .gpio = 12,
110 .active_low = 0,
111 },
112};
113
114static struct gpio_led_platform_data mv88f6281gtw_ge_led_data = {
115 .leds = mv88f6281gtw_ge_led_pins,
116 .num_leds = ARRAY_SIZE(mv88f6281gtw_ge_led_pins),
117};
118
119static struct platform_device mv88f6281gtw_ge_leds = {
120 .name = "leds-gpio",
121 .id = -1,
122 .dev = {
123 .platform_data = &mv88f6281gtw_ge_led_data,
124 },
125};
126
127static unsigned int mv88f6281gtw_ge_mpp_config[] __initdata = {
128 MPP12_GPO, /* Status#_USB pin */
129 MPP20_GPIO, /* Status#_GLED pin */
130 MPP21_GPIO, /* Status#_RLED pin */
131 MPP46_GPIO, /* WPS_Switch pin */
132 MPP47_GPIO, /* SW_Init pin */
133 0
134};
135
65static void __init mv88f6281gtw_ge_init(void) 136static void __init mv88f6281gtw_ge_init(void)
66{ 137{
67 /* 138 /*
68 * Basic setup. Needs to be called early. 139 * Basic setup. Needs to be called early.
69 */ 140 */
70 kirkwood_init(); 141 kirkwood_init();
142 kirkwood_mpp_conf(mv88f6281gtw_ge_mpp_config);
71 143
72 kirkwood_ehci_init(); 144 kirkwood_ehci_init();
73 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data); 145 kirkwood_ge00_init(&mv88f6281gtw_ge_ge00_data);
@@ -76,6 +148,8 @@ static void __init mv88f6281gtw_ge_init(void)
76 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info)); 148 ARRAY_SIZE(mv88f6281gtw_ge_spi_slave_info));
77 kirkwood_spi_init(); 149 kirkwood_spi_init();
78 kirkwood_uart0_init(); 150 kirkwood_uart0_init();
151 platform_device_register(&mv88f6281gtw_ge_leds);
152 platform_device_register(&mv88f6281gtw_ge_buttons);
79} 153}
80 154
81static int __init mv88f6281gtw_ge_pci_init(void) 155static int __init mv88f6281gtw_ge_pci_init(void)