omap3-pandora-kernel2: update
[openpandora.oe.git] / recipes / linux / omap3-pandora-kernel / keypad / 0006-input-hacks-updates-for-mainline-twl4030-driver.patch
1 From 9416a510c6939bc6da62cf12de665fd11b89a9f6 Mon Sep 17 00:00:00 2001
2 From: Grazvydas Ignotas <notasas@gmail.com>
3 Date: Thu, 5 Nov 2009 12:44:01 +0200
4 Subject: [PATCH 6/7] input: hacks+updates for mainline twl4030 driver
5
6 This includes some differing #includes and col/row swap
7 in the KEY() macro.
8 ---
9  arch/arm/mach-omap2/board-omap3pandora-input.c |   89 ++++++++++++-----------
10  drivers/input/keyboard/twl4030_keypad.c        |    1 +
11  drivers/mfd/twl4030-core.c                     |    8 ++
12  include/linux/i2c/twl4030.h                    |    3 -
13  4 files changed, 55 insertions(+), 46 deletions(-)
14
15 diff --git a/arch/arm/mach-omap2/board-omap3pandora-input.c b/arch/arm/mach-omap2/board-omap3pandora-input.c
16 index 6ca69ce..ce9df0e 100644
17 --- a/arch/arm/mach-omap2/board-omap3pandora-input.c
18 +++ b/arch/arm/mach-omap2/board-omap3pandora-input.c
19 @@ -23,68 +23,71 @@
20  #include <linux/platform_device.h>
21  #include <linux/input.h>
22  #include <linux/gpio_keys.h>
23 +#include <linux/input/matrix_keypad.h>
24  
25  #include <mach/hardware.h>
26 -#include <mach/keypad.h>
27  #include <mach/gpio.h>
28  
29  /* hardware debounce, (value + 1) * 31us */
30  #define GPIO_DEBOUNCE_TIME 0x7f
31  
32  static int omap3pandora_keymap[] = {
33 -       /* col, row, code */
34 +       /* row, col, code */
35         KEY(0, 0, KEY_9),
36 -       KEY(0, 1, KEY_0),
37 -       KEY(0, 2, KEY_BACKSPACE),
38 -       KEY(0, 3, KEY_O),
39 -       KEY(0, 4, KEY_P),
40 -       KEY(0, 5, KEY_K),
41 -       KEY(0, 6, KEY_L),
42 -       KEY(0, 7, KEY_ENTER),
43 -       KEY(1, 0, KEY_8),
44 +       KEY(0, 1, KEY_8),
45 +       KEY(0, 2, KEY_I),
46 +       KEY(0, 3, KEY_J),
47 +       KEY(0, 4, KEY_N),
48 +       KEY(0, 5, KEY_M),
49 +       KEY(1, 0, KEY_0),
50         KEY(1, 1, KEY_7),
51 -       KEY(1, 2, KEY_6),
52 -       KEY(1, 3, KEY_5),
53 -       KEY(1, 4, KEY_4),
54 -       KEY(1, 5, KEY_3),
55 -       KEY(1, 6, KEY_2),
56 -       KEY(1, 7, KEY_1),
57 -       KEY(2, 0, KEY_I),
58 -       KEY(2, 1, KEY_U),
59 +       KEY(1, 2, KEY_U),
60 +       KEY(1, 3, KEY_H),
61 +       KEY(1, 4, KEY_B),
62 +       KEY(1, 5, KEY_SPACE),
63 +       KEY(2, 0, KEY_BACKSPACE),
64 +       KEY(2, 1, KEY_6),
65         KEY(2, 2, KEY_Y),
66 -       KEY(2, 3, KEY_T),
67 -       KEY(2, 4, KEY_R),
68 -       KEY(2, 5, KEY_E),
69 -       KEY(2, 6, KEY_W),
70 -       KEY(2, 7, KEY_Q),
71 -       KEY(3, 0, KEY_J),
72 -       KEY(3, 1, KEY_H),
73 -       KEY(3, 2, KEY_G),
74 +       KEY(2, 3, KEY_G),
75 +       KEY(2, 4, KEY_V),
76 +       KEY(2, 5, KEY_FN),
77 +       KEY(3, 0, KEY_O),
78 +       KEY(3, 1, KEY_5),
79 +       KEY(3, 2, KEY_T),
80         KEY(3, 3, KEY_F),
81 -       KEY(3, 4, KEY_D),
82 -       KEY(3, 5, KEY_S),
83 -       KEY(3, 6, KEY_A),
84 -       KEY(3, 7, KEY_LEFTSHIFT),
85 -       KEY(4, 0, KEY_N),
86 -       KEY(4, 1, KEY_B),
87 -       KEY(4, 2, KEY_V),
88 -       KEY(4, 3, KEY_C),
89 +       KEY(3, 4, KEY_C),
90 +       KEY(4, 0, KEY_P),
91 +       KEY(4, 1, KEY_4),
92 +       KEY(4, 2, KEY_R),
93 +       KEY(4, 3, KEY_D),
94         KEY(4, 4, KEY_X),
95 -       KEY(4, 5, KEY_Z),
96 -       KEY(4, 6, KEY_DOT),
97 -       KEY(4, 7, KEY_COMMA),
98 -       KEY(5, 0, KEY_M),
99 -       KEY(5, 1, KEY_SPACE),
100 -       KEY(5, 2, KEY_FN),
101 +       KEY(5, 0, KEY_K),
102 +       KEY(5, 1, KEY_3),
103 +       KEY(5, 2, KEY_E),
104 +       KEY(5, 3, KEY_S),
105 +       KEY(5, 4, KEY_Z),
106 +       KEY(6, 0, KEY_L),
107 +       KEY(6, 1, KEY_2),
108 +       KEY(6, 2, KEY_W),
109 +       KEY(6, 3, KEY_A),
110 +       KEY(6, 4, KEY_DOT),
111 +       KEY(7, 0, KEY_ENTER),
112 +       KEY(7, 1, KEY_1),
113 +       KEY(7, 2, KEY_Q),
114 +       KEY(7, 3, KEY_LEFTSHIFT),
115 +       KEY(7, 4, KEY_COMMA),
116 +};
117 +
118 +static struct matrix_keymap_data board_map_data = {
119 +       .keymap         = omap3pandora_keymap,
120 +       .keymap_size    = ARRAY_SIZE(omap3pandora_keymap),
121  };
122  
123  struct twl4030_keypad_data omap3pandora_kp_data = {
124 +       .keymap_data    = &board_map_data,
125         .rows           = 8,
126         .cols           = 6,
127 -       .keymap         = omap3pandora_keymap,
128 -       .keymapsize     = ARRAY_SIZE(omap3pandora_keymap),
129         .rep            = 1,
130 -       .irq            = TWL4030_MODIRQ_KEYPAD,
131  };
132  
133  static struct gpio_keys_button gpio_buttons[] = {
134 diff --git a/drivers/input/keyboard/twl4030_keypad.c b/drivers/input/keyboard/twl4030_keypad.c
135 index 9a2977c..99bb58d 100644
136 --- a/drivers/input/keyboard/twl4030_keypad.c
137 +++ b/drivers/input/keyboard/twl4030_keypad.c
138 @@ -32,6 +32,7 @@
139  #include <linux/input.h>
140  #include <linux/platform_device.h>
141  #include <linux/i2c/twl4030.h>
142 +#include <linux/input/matrix_keypad.h>
143  
144  
145  /*
146 diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c
147 index dd843c4..4c502d7 100644
148 --- a/drivers/mfd/twl4030-core.c
149 +++ b/drivers/mfd/twl4030-core.c
150 @@ -468,7 +468,15 @@ static int add_children(struct twl4030_platform_data *pdata)
151                                         status);
152                                 platform_device_put(pdev);
153                                 goto err;
154 +                       } else {
155 +                               struct resource r = {
156 +                                       .start = pdata->irq_base + 1,
157 +                                       .flags = IORESOURCE_IRQ,
158 +                               };
159 +
160 +                               status = platform_device_add_resources(pdev, &r, 1);
161                         }
162 +
163                         status = platform_device_add(pdev);
164                         if (status < 0) {
165                                 platform_device_put(pdev);
166 diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h
167 index 3d6321e..4a31016 100644
168 --- a/include/linux/i2c/twl4030.h
169 +++ b/include/linux/i2c/twl4030.h
170 @@ -25,9 +25,6 @@
171  #ifndef __TWL4030_H_
172  #define __TWL4030_H_
173  
174 -#include <linux/types.h>
175 -#include <linux/input/matrix_keypad.h>
176 -
177  /*
178   * Using the twl4030 core we address registers using a pair
179   *     { module id, relative register offset }
180 -- 
181 1.6.3.1
182