|
@@ -15,6 +15,7 @@
|
|
|
#include <linux/kernel.h>
|
|
|
#include <linux/platform_device.h>
|
|
|
#include <linux/delay.h>
|
|
|
+#include <linux/gpio_keys.h>
|
|
|
#include <linux/gpio.h>
|
|
|
#include <linux/leds.h>
|
|
|
#include <linux/mtd/physmap.h>
|
|
@@ -375,6 +376,43 @@ static struct platform_device spitzkbd_device = {
|
|
|
};
|
|
|
|
|
|
|
|
|
+static struct gpio_keys_button spitz_gpio_keys[] = {
|
|
|
+ {
|
|
|
+ .type = EV_PWR,
|
|
|
+ .code = KEY_SUSPEND,
|
|
|
+ .gpio = SPITZ_GPIO_ON_KEY,
|
|
|
+ .desc = "On/Off",
|
|
|
+ .wakeup = 1,
|
|
|
+ },
|
|
|
+ /* Two buttons detecting the lid state */
|
|
|
+ {
|
|
|
+ .type = EV_SW,
|
|
|
+ .code = 0,
|
|
|
+ .gpio = SPITZ_GPIO_SWA,
|
|
|
+ .desc = "Display Down",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .type = EV_SW,
|
|
|
+ .code = 1,
|
|
|
+ .gpio = SPITZ_GPIO_SWB,
|
|
|
+ .desc = "Lid Closed",
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct gpio_keys_platform_data spitz_gpio_keys_platform_data = {
|
|
|
+ .buttons = spitz_gpio_keys,
|
|
|
+ .nbuttons = ARRAY_SIZE(spitz_gpio_keys),
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device spitz_gpio_keys_device = {
|
|
|
+ .name = "gpio-keys",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &spitz_gpio_keys_platform_data,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
/*
|
|
|
* Spitz LEDs
|
|
|
*/
|
|
@@ -689,6 +727,7 @@ static struct platform_device sharpsl_rom_device = {
|
|
|
static struct platform_device *devices[] __initdata = {
|
|
|
&spitzscoop_device,
|
|
|
&spitzkbd_device,
|
|
|
+ &spitz_gpio_keys_device,
|
|
|
&spitzled_device,
|
|
|
&sharpsl_nand_device,
|
|
|
&sharpsl_rom_device,
|