aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.26/0098-Fix-the-FIXME-store-the-GPIO-value-for-now.patch
blob: 85c0dc40c0d6be7ae43d1df2a497b8d4d35a52a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From 4b1af3131a97c004c8cdc74b61fbdd00d3ab22e4 Mon Sep 17 00:00:00 2001
From: Holger Freyther <zecke@openmoko.org>
Date: Fri, 25 Jul 2008 23:06:03 +0100
Subject: [PATCH] Fix the FIXME, store the GPIO value for now

Signed-Off-by: Holger Freyther <zecke@openmoko.org>
---
 drivers/input/keyboard/neo1973kbd.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/drivers/input/keyboard/neo1973kbd.c b/drivers/input/keyboard/neo1973kbd.c
index 30f324d..a77d8c0 100644
--- a/drivers/input/keyboard/neo1973kbd.c
+++ b/drivers/input/keyboard/neo1973kbd.c
@@ -23,20 +23,21 @@
 #include <linux/slab.h>
 
 #include <asm/hardware.h>
-#include <asm/arch/gta01.h>
 #include <asm/mach-types.h>
 
 struct neo1973kbd {
 	struct input_dev *input;
 	unsigned int suspended;
+	int gpio_aux;
+	int gpio_hold;
+	int gpio_jack;    
 };
 
 static irqreturn_t neo1973kbd_aux_irq(int irq, void *dev_id)
 {
 	struct neo1973kbd *neo1973kbd_data = dev_id;
 
-	/* FIXME: use GPIO from platform_dev resources */
-	int key_pressed = !s3c2410_gpio_getpin(GTA01_GPIO_AUX_KEY);
+	int key_pressed = !s3c2410_gpio_getpin(neo1973kbd_data->gpio_aux);
 	input_report_key(neo1973kbd_data->input, KEY_PHONE, key_pressed);
 	input_sync(neo1973kbd_data->input);
 
@@ -47,8 +48,7 @@ static irqreturn_t neo1973kbd_hold_irq(int irq, void *dev_id)
 {
 	struct neo1973kbd *neo1973kbd_data = dev_id;
 
-	/* FIXME: use GPIO from platform_dev resources */
-	int key_pressed = 3c2410_gpio_getpin(GTA01_GPIO_HOLD_KEY);
+	int key_pressed = s3c2410_gpio_getpin(neo1973kbd_data->gpio_hold);
 	input_report_key(neo1973kbd_data->input, KEY_PAUSE, key_pressed);
 	input_sync(neo1973kbd_data->input);
 
@@ -59,8 +59,7 @@ static irqreturn_t neo1973kbd_headphone_irq(int irq, void *dev_id)
 {
 	struct neo1973kbd *neo1973kbd_data = dev_id;
 
-	/* FIXME: use GPIO from platform_dev resources */
-	int key_pressed = s3c2410_gpio_getpin(GTA01_GPIO_JACK_INSERT);
+	int key_pressed = s3c2410_gpio_getpin(neo1973kbd_data->gpio_jack);
 	input_report_switch(neo1973kbd_data->input,
 			    SW_HEADPHONE_INSERT, key_pressed);
 	input_sync(neo1973kbd_data->input);
@@ -108,15 +107,19 @@ static int neo1973kbd_probe(struct platform_device *pdev)
 	if (pdev->resource[0].flags != 0)
 		return -EINVAL;
 
-	irq_aux = s3c2410_gpio_getirq(pdev->resource[0].start);
+	neo1973kbd->gpio_aux = pdev->resource[0].start;
+	neo1973kbd->gpio_hold = pdev->resource[1].start;
+	neo1973kbd->gpio_jack = pdev->resource[2].start;
+
+	irq_aux = s3c2410_gpio_getirq(neo1973kbd->gpio_aux);
 	if (irq_aux < 0)
 		return -EINVAL;
 
-	irq_hold = s3c2410_gpio_getirq(pdev->resource[1].start);
+	irq_hold = s3c2410_gpio_getirq(neo1973kbd->gpio_hold);
 	if (irq_hold < 0)
 		return -EINVAL;
 
-	irq_jack = s3c2410_gpio_getirq(pdev->resource[2].start);
+	irq_jack = s3c2410_gpio_getirq(neo1973kbd->gpio_jack);
 	if (irq_jack < 0)
 		return -EINVAL;
 
-- 
1.5.6.3