aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-at91
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r--arch/arm/mach-at91/board-sam9261ek.c8
-rw-r--r--arch/arm/mach-at91/board-sam9263ek.c53
2 files changed, 57 insertions, 4 deletions
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
index 594c5c100ef9..aa29ea58ca09 100644
--- a/arch/arm/mach-at91/board-sam9261ek.c
+++ b/arch/arm/mach-at91/board-sam9261ek.c
@@ -404,25 +404,25 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data;
404static struct gpio_keys_button ek_buttons[] = { 404static struct gpio_keys_button ek_buttons[] = {
405 { 405 {
406 .gpio = AT91_PIN_PA27, 406 .gpio = AT91_PIN_PA27,
407 .keycode = BTN_0, 407 .code = BTN_0,
408 .desc = "Button 0", 408 .desc = "Button 0",
409 .active_low = 1, 409 .active_low = 1,
410 }, 410 },
411 { 411 {
412 .gpio = AT91_PIN_PA26, 412 .gpio = AT91_PIN_PA26,
413 .keycode = BTN_1, 413 .code = BTN_1,
414 .desc = "Button 1", 414 .desc = "Button 1",
415 .active_low = 1, 415 .active_low = 1,
416 }, 416 },
417 { 417 {
418 .gpio = AT91_PIN_PA25, 418 .gpio = AT91_PIN_PA25,
419 .keycode = BTN_2, 419 .code = BTN_2,
420 .desc = "Button 2", 420 .desc = "Button 2",
421 .active_low = 1, 421 .active_low = 1,
422 }, 422 },
423 { 423 {
424 .gpio = AT91_PIN_PA24, 424 .gpio = AT91_PIN_PA24,
425 .keycode = BTN_3, 425 .code = BTN_3,
426 .desc = "Button 3", 426 .desc = "Button 3",
427 .active_low = 1, 427 .active_low = 1,
428 } 428 }
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
index 2df0ff25d147..f09347a86e71 100644
--- a/arch/arm/mach-at91/board-sam9263ek.c
+++ b/arch/arm/mach-at91/board-sam9263ek.c
@@ -27,6 +27,8 @@
27#include <linux/spi/spi.h> 27#include <linux/spi/spi.h>
28#include <linux/spi/ads7846.h> 28#include <linux/spi/ads7846.h>
29#include <linux/fb.h> 29#include <linux/fb.h>
30#include <linux/gpio_keys.h>
31#include <linux/input.h>
30 32
31#include <video/atmel_lcdc.h> 33#include <video/atmel_lcdc.h>
32 34
@@ -265,6 +267,55 @@ static struct atmel_lcdfb_info __initdata ek_lcdc_data;
265 267
266 268
267/* 269/*
270 * GPIO Buttons
271 */
272#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
273static struct gpio_keys_button ek_buttons[] = {
274 { /* BP1, "leftclic" */
275 .code = BTN_LEFT,
276 .gpio = AT91_PIN_PC5,
277 .active_low = 1,
278 .desc = "left_click",
279 .wakeup = 1,
280 },
281 { /* BP2, "rightclic" */
282 .code = BTN_RIGHT,
283 .gpio = AT91_PIN_PC4,
284 .active_low = 1,
285 .desc = "right_click",
286 .wakeup = 1,
287 },
288};
289
290static struct gpio_keys_platform_data ek_button_data = {
291 .buttons = ek_buttons,
292 .nbuttons = ARRAY_SIZE(ek_buttons),
293};
294
295static struct platform_device ek_button_device = {
296 .name = "gpio-keys",
297 .id = -1,
298 .num_resources = 0,
299 .dev = {
300 .platform_data = &ek_button_data,
301 }
302};
303
304static void __init ek_add_device_buttons(void)
305{
306 at91_set_GPIO_periph(AT91_PIN_PC5, 0); /* left button */
307 at91_set_deglitch(AT91_PIN_PC5, 1);
308 at91_set_GPIO_periph(AT91_PIN_PC4, 0); /* right button */
309 at91_set_deglitch(AT91_PIN_PC4, 1);
310
311 platform_device_register(&ek_button_device);
312}
313#else
314static void __init ek_add_device_buttons(void) {}
315#endif
316
317
318/*
268 * AC97 319 * AC97
269 */ 320 */
270static struct atmel_ac97_data ek_ac97_data = { 321static struct atmel_ac97_data ek_ac97_data = {
@@ -319,6 +370,8 @@ static void __init ek_board_init(void)
319 at91_add_device_i2c(NULL, 0); 370 at91_add_device_i2c(NULL, 0);
320 /* LCD Controller */ 371 /* LCD Controller */
321 at91_add_device_lcdc(&ek_lcdc_data); 372 at91_add_device_lcdc(&ek_lcdc_data);
373 /* Push Buttons */
374 ek_add_device_buttons();
322 /* AC97 */ 375 /* AC97 */
323 at91_add_device_ac97(&ek_ac97_data); 376 at91_add_device_ac97(&ek_ac97_data);
324 /* LEDs */ 377 /* LEDs */