diff options
-rw-r--r-- | arch/arm/mach-omap2/board-4430sdp.c | 67 | ||||
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 3 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/omap4-keypad.h | 3 |
3 files changed, 70 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c index e5e8bbb00359..f6efff5f1650 100644 --- a/arch/arm/mach-omap2/board-4430sdp.c +++ b/arch/arm/mach-omap2/board-4430sdp.c | |||
@@ -129,6 +129,64 @@ static const int sdp4430_keymap[] = { | |||
129 | KEY(7, 6, KEY_OK), | 129 | KEY(7, 6, KEY_OK), |
130 | KEY(7, 7, KEY_DOWN), | 130 | KEY(7, 7, KEY_DOWN), |
131 | }; | 131 | }; |
132 | static struct omap_device_pad keypad_pads[] __initdata = { | ||
133 | { .name = "kpd_col1.kpd_col1", | ||
134 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
135 | }, | ||
136 | { .name = "kpd_col1.kpd_col1", | ||
137 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
138 | }, | ||
139 | { .name = "kpd_col2.kpd_col2", | ||
140 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
141 | }, | ||
142 | { .name = "kpd_col3.kpd_col3", | ||
143 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
144 | }, | ||
145 | { .name = "kpd_col4.kpd_col4", | ||
146 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
147 | }, | ||
148 | { .name = "kpd_col5.kpd_col5", | ||
149 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
150 | }, | ||
151 | { .name = "gpmc_a23.kpd_col7", | ||
152 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
153 | }, | ||
154 | { .name = "gpmc_a22.kpd_col6", | ||
155 | .enable = OMAP_WAKEUP_EN | OMAP_MUX_MODE1, | ||
156 | }, | ||
157 | { .name = "kpd_row0.kpd_row0", | ||
158 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
159 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
160 | }, | ||
161 | { .name = "kpd_row1.kpd_row1", | ||
162 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
163 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
164 | }, | ||
165 | { .name = "kpd_row2.kpd_row2", | ||
166 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
167 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
168 | }, | ||
169 | { .name = "kpd_row3.kpd_row3", | ||
170 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
171 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
172 | }, | ||
173 | { .name = "kpd_row4.kpd_row4", | ||
174 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
175 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
176 | }, | ||
177 | { .name = "kpd_row5.kpd_row5", | ||
178 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
179 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
180 | }, | ||
181 | { .name = "gpmc_a18.kpd_row6", | ||
182 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
183 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
184 | }, | ||
185 | { .name = "gpmc_a19.kpd_row7", | ||
186 | .enable = OMAP_PULL_ENA | OMAP_PULL_UP | OMAP_WAKEUP_EN | | ||
187 | OMAP_MUX_MODE1 | OMAP_INPUT_EN, | ||
188 | }, | ||
189 | }; | ||
132 | 190 | ||
133 | static struct matrix_keymap_data sdp4430_keymap_data = { | 191 | static struct matrix_keymap_data sdp4430_keymap_data = { |
134 | .keymap = sdp4430_keymap, | 192 | .keymap = sdp4430_keymap, |
@@ -140,6 +198,13 @@ static struct omap4_keypad_platform_data sdp4430_keypad_data = { | |||
140 | .rows = 8, | 198 | .rows = 8, |
141 | .cols = 8, | 199 | .cols = 8, |
142 | }; | 200 | }; |
201 | |||
202 | static struct omap_board_data keypad_data = { | ||
203 | .id = 1, | ||
204 | .pads = keypad_pads, | ||
205 | .pads_cnt = ARRAY_SIZE(keypad_pads), | ||
206 | }; | ||
207 | |||
143 | static struct gpio_led sdp4430_gpio_leds[] = { | 208 | static struct gpio_led sdp4430_gpio_leds[] = { |
144 | { | 209 | { |
145 | .name = "omap4:green:debug0", | 210 | .name = "omap4:green:debug0", |
@@ -825,7 +890,7 @@ static void __init omap_4430sdp_init(void) | |||
825 | ARRAY_SIZE(sdp4430_spi_board_info)); | 890 | ARRAY_SIZE(sdp4430_spi_board_info)); |
826 | } | 891 | } |
827 | 892 | ||
828 | status = omap4_keyboard_init(&sdp4430_keypad_data); | 893 | status = omap4_keyboard_init(&sdp4430_keypad_data, &keypad_data); |
829 | if (status) | 894 | if (status) |
830 | pr_err("Keypad initialization failed: %d\n", status); | 895 | pr_err("Keypad initialization failed: %d\n", status); |
831 | 896 | ||
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 5b8ca680ed93..1077ad663f93 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
@@ -230,7 +230,7 @@ struct omap_device_pm_latency omap_keyboard_latency[] = { | |||
230 | }; | 230 | }; |
231 | 231 | ||
232 | int __init omap4_keyboard_init(struct omap4_keypad_platform_data | 232 | int __init omap4_keyboard_init(struct omap4_keypad_platform_data |
233 | *sdp4430_keypad_data) | 233 | *sdp4430_keypad_data, struct omap_board_data *bdata) |
234 | { | 234 | { |
235 | struct omap_device *od; | 235 | struct omap_device *od; |
236 | struct omap_hwmod *oh; | 236 | struct omap_hwmod *oh; |
@@ -257,6 +257,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data | |||
257 | name, oh->name); | 257 | name, oh->name); |
258 | return PTR_ERR(od); | 258 | return PTR_ERR(od); |
259 | } | 259 | } |
260 | oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt); | ||
260 | 261 | ||
261 | return 0; | 262 | return 0; |
262 | } | 263 | } |
diff --git a/arch/arm/plat-omap/include/plat/omap4-keypad.h b/arch/arm/plat-omap/include/plat/omap4-keypad.h index 2b1d9bc1eebb..9fe6c8783236 100644 --- a/arch/arm/plat-omap/include/plat/omap4-keypad.h +++ b/arch/arm/plat-omap/include/plat/omap4-keypad.h | |||
@@ -10,5 +10,6 @@ struct omap4_keypad_platform_data { | |||
10 | u8 cols; | 10 | u8 cols; |
11 | }; | 11 | }; |
12 | 12 | ||
13 | extern int omap4_keyboard_init(struct omap4_keypad_platform_data *); | 13 | extern int omap4_keyboard_init(struct omap4_keypad_platform_data *, |
14 | struct omap_board_data *); | ||
14 | #endif | 15 | #endif |