131 lines
3.7 KiB
Diff
131 lines
3.7 KiB
Diff
|
>From 9c5fa914202d20756c56e0c4fd76035ed8f8ced8 Mon Sep 17 00:00:00 2001
|
||
|
From: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
|
||
|
Date: Mon, 6 Aug 2007 08:31:14 +0200
|
||
|
Subject: [PATCH 1/1] Add gpio_mouse board setup to atstk1000 board
|
||
|
|
||
|
This patch adds a gpio_mouse_platform_data to the atstk1000 board code and
|
||
|
registers a gpio_mouse platform_device. This will enable a GPIO mouse on header
|
||
|
J1 on GPIO of the ATSTK1000 development kit. The board code is enabled/disabled
|
||
|
in menuconfig.
|
||
|
|
||
|
By connecting J1 (GPIO) to J25 (SWITCH) you can use the following keys to
|
||
|
simulate a mouse:
|
||
|
|
||
|
SW0: right
|
||
|
SW1: down
|
||
|
SW2: up
|
||
|
SW3: left
|
||
|
SW5: right button
|
||
|
SW6: middle button
|
||
|
SW7: left button
|
||
|
|
||
|
Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
|
||
|
---
|
||
|
arch/avr32/boards/atstk1000/Kconfig | 16 ++++++++++
|
||
|
arch/avr32/boards/atstk1000/atstk1002.c | 48 +++++++++++++++++++++++++++++++
|
||
|
2 files changed, 64 insertions(+), 0 deletions(-)
|
||
|
|
||
|
diff --git a/arch/avr32/boards/atstk1000/Kconfig b/arch/avr32/boards/atstk1000/Kconfig
|
||
|
index 718578f..d99d4bd 100644
|
||
|
--- a/arch/avr32/boards/atstk1000/Kconfig
|
||
|
+++ b/arch/avr32/boards/atstk1000/Kconfig
|
||
|
@@ -52,6 +52,22 @@ config BOARD_ATSTK100X_SPI1
|
||
|
GPIO lines and accessed through the J1 jumper block. Say "y"
|
||
|
here to configure that SPI controller.
|
||
|
|
||
|
+config BOARD_ATSTK1002_GPIO_MOUSE
|
||
|
+ bool "Configure gpio_mouse on GPIO J1 header"
|
||
|
+ depends on !BOARD_ATSTK1002_SW4_CUSTOM
|
||
|
+ help
|
||
|
+ Enable gpio_mouse board configuration on GPIO 0 to 7. Connecting a
|
||
|
+ 10-pin flat cable from J1 (GPIO) to J25 (SWITCH) will let a user give
|
||
|
+ mouse inputs using the the switches SW0 to SW7.
|
||
|
+
|
||
|
+ SW0: right
|
||
|
+ SW1: down
|
||
|
+ SW2: up
|
||
|
+ SW3: left
|
||
|
+ SW5: right button
|
||
|
+ SW6: middle button
|
||
|
+ SW7: left button
|
||
|
+
|
||
|
config BOARD_ATSTK1000_J2_LED
|
||
|
bool
|
||
|
default BOARD_ATSTK1000_J2_LED8 || BOARD_ATSTK1000_J2_RGB
|
||
|
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
|
||
|
index c958fd4..c7560e5 100644
|
||
|
--- a/arch/avr32/boards/atstk1000/atstk1002.c
|
||
|
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
|
||
|
@@ -16,6 +16,7 @@
|
||
|
#include <linux/types.h>
|
||
|
#include <linux/spi/spi.h>
|
||
|
#include <linux/spi/at73c213.h>
|
||
|
+#include <linux/gpio_mouse.h>
|
||
|
|
||
|
#include <video/atmel_lcdc.h>
|
||
|
|
||
|
@@ -100,6 +101,49 @@ static struct mci_platform_data __initdata mci0_data = {
|
||
|
.cs = 4,
|
||
|
};
|
||
|
|
||
|
+#ifdef CONFIG_BOARD_ATSTK1002_GPIO_MOUSE
|
||
|
+static struct gpio_mouse_platform_data gpio_mouse0_data = {
|
||
|
+ .polarity = GPIO_MOUSE_POLARITY_ACT_LOW,
|
||
|
+ {
|
||
|
+ {
|
||
|
+ .up = GPIO_PIN_PB(2),
|
||
|
+ .down = GPIO_PIN_PB(1),
|
||
|
+ .left = GPIO_PIN_PB(3),
|
||
|
+ .right = GPIO_PIN_PB(0),
|
||
|
+ .bleft = GPIO_PIN_PB(7),
|
||
|
+ .bmiddle = GPIO_PIN_PB(6),
|
||
|
+ .bright = GPIO_PIN_PB(5),
|
||
|
+ },
|
||
|
+ },
|
||
|
+ .scan_ms = 10,
|
||
|
+};
|
||
|
+
|
||
|
+static struct platform_device gpio_mouse0_device = {
|
||
|
+ .name = "gpio_mouse",
|
||
|
+ .id = 0,
|
||
|
+ .dev = {
|
||
|
+ .platform_data = &gpio_mouse0_data,
|
||
|
+ },
|
||
|
+};
|
||
|
+
|
||
|
+static void __init add_device_gpio_mouse0(void)
|
||
|
+{
|
||
|
+ struct platform_device *pdev = &gpio_mouse0_device;
|
||
|
+ struct gpio_mouse_platform_data *data = pdev->dev.platform_data;
|
||
|
+
|
||
|
+ at32_select_gpio(data->up, 0);
|
||
|
+ at32_select_gpio(data->down, 0);
|
||
|
+ at32_select_gpio(data->left, 0);
|
||
|
+ at32_select_gpio(data->right, 0);
|
||
|
+
|
||
|
+ at32_select_gpio(data->bleft, 0);
|
||
|
+ at32_select_gpio(data->bmiddle, 0);
|
||
|
+ at32_select_gpio(data->bright, 0);
|
||
|
+
|
||
|
+ platform_device_register(pdev);
|
||
|
+}
|
||
|
+#endif
|
||
|
+
|
||
|
/*
|
||
|
* The next two functions should go away as the boot loader is
|
||
|
* supposed to initialize the macb address registers with a valid
|
||
|
@@ -269,6 +313,10 @@ static int __init atstk1002_init(void)
|
||
|
atstk1000_setup_j2_leds();
|
||
|
atstk1002_setup_extdac();
|
||
|
|
||
|
+#ifdef CONFIG_BOARD_ATSTK1002_GPIO_MOUSE
|
||
|
+ add_device_gpio_mouse0();
|
||
|
+#endif
|
||
|
+
|
||
|
return 0;
|
||
|
}
|
||
|
postcore_initcall(atstk1002_init);
|
||
|
--
|
||
|
1.5.2.3
|
||
|
|