|
25 | 25 | #include <linux/err.h> |
26 | 26 | #include <linux/clk.h> |
27 | 27 | #include <linux/io.h> |
| 28 | +#include <linux/input/matrix_keypad.h> |
28 | 29 |
|
29 | 30 | #include <mach/hardware.h> |
30 | 31 | #include <asm/mach-types.h> |
|
34 | 35 | #include <plat/usb.h> |
35 | 36 | #include <plat/board.h> |
36 | 37 | #include <plat/common.h> |
37 | | -#include <plat/keypad.h> |
38 | 38 | #include <plat/menelaus.h> |
39 | 39 | #include <plat/dma.h> |
40 | 40 | #include <plat/gpmc.h> |
|
50 | 50 |
|
51 | 51 | #define H4_ETHR_GPIO_IRQ 92 |
52 | 52 |
|
53 | | -static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 }; |
54 | | -static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 }; |
55 | | - |
56 | | -static const unsigned int h4_keymap[] = { |
| 53 | +#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE) |
| 54 | +static const uint32_t board_matrix_keys[] = { |
57 | 55 | KEY(0, 0, KEY_LEFT), |
58 | 56 | KEY(1, 0, KEY_RIGHT), |
59 | 57 | KEY(2, 0, KEY_A), |
@@ -86,6 +84,71 @@ static const unsigned int h4_keymap[] = { |
86 | 84 | KEY(4, 5, KEY_ENTER), |
87 | 85 | }; |
88 | 86 |
|
| 87 | +static const struct matrix_keymap_data board_keymap_data = { |
| 88 | + .keymap = board_matrix_keys, |
| 89 | + .keymap_size = ARRAY_SIZE(board_matrix_keys), |
| 90 | +}; |
| 91 | + |
| 92 | +static unsigned int board_keypad_row_gpios[] = { |
| 93 | + 88, 89, 124, 11, 6, 96 |
| 94 | +}; |
| 95 | + |
| 96 | +static unsigned int board_keypad_col_gpios[] = { |
| 97 | + 90, 91, 100, 36, 12, 97, 98 |
| 98 | +}; |
| 99 | + |
| 100 | +static struct matrix_keypad_platform_data board_keypad_platform_data = { |
| 101 | + .keymap_data = &board_keymap_data, |
| 102 | + .row_gpios = board_keypad_row_gpios, |
| 103 | + .num_row_gpios = ARRAY_SIZE(board_keypad_row_gpios), |
| 104 | + .col_gpios = board_keypad_col_gpios, |
| 105 | + .num_col_gpios = ARRAY_SIZE(board_keypad_col_gpios), |
| 106 | + .active_low = 1, |
| 107 | + |
| 108 | + .debounce_ms = 20, |
| 109 | + .col_scan_delay_us = 5, |
| 110 | +}; |
| 111 | + |
| 112 | +static struct platform_device board_keyboard = { |
| 113 | + .name = "matrix-keypad", |
| 114 | + .id = -1, |
| 115 | + .dev = { |
| 116 | + .platform_data = &board_keypad_platform_data, |
| 117 | + }, |
| 118 | +}; |
| 119 | +static void __init board_mkp_init(void) |
| 120 | +{ |
| 121 | + omap_mux_init_gpio(88, OMAP_PULL_ENA | OMAP_PULL_UP); |
| 122 | + omap_mux_init_gpio(89, OMAP_PULL_ENA | OMAP_PULL_UP); |
| 123 | + omap_mux_init_gpio(124, OMAP_PULL_ENA | OMAP_PULL_UP); |
| 124 | + omap_mux_init_signal("mcbsp2_dr.gpio_11", OMAP_PULL_ENA | OMAP_PULL_UP); |
| 125 | + if (omap_has_menelaus()) { |
| 126 | + omap_mux_init_signal("sdrc_a14.gpio0", |
| 127 | + OMAP_PULL_ENA | OMAP_PULL_UP); |
| 128 | + omap_mux_init_signal("vlynq_rx0.gpio_15", 0); |
| 129 | + omap_mux_init_signal("gpio_98", 0); |
| 130 | + board_keypad_row_gpios[5] = 0; |
| 131 | + board_keypad_col_gpios[2] = 15; |
| 132 | + board_keypad_col_gpios[6] = 18; |
| 133 | + } else { |
| 134 | + omap_mux_init_signal("gpio_96", OMAP_PULL_ENA | OMAP_PULL_UP); |
| 135 | + omap_mux_init_signal("gpio_100", 0); |
| 136 | + omap_mux_init_signal("gpio_98", 0); |
| 137 | + } |
| 138 | + omap_mux_init_signal("gpio_90", 0); |
| 139 | + omap_mux_init_signal("gpio_91", 0); |
| 140 | + omap_mux_init_signal("gpio_36", 0); |
| 141 | + omap_mux_init_signal("mcbsp2_clkx.gpio_12", 0); |
| 142 | + omap_mux_init_signal("gpio_97", 0); |
| 143 | + |
| 144 | + platform_device_register(&board_keyboard); |
| 145 | +} |
| 146 | +#else |
| 147 | +static inline void board_mkp_init(void) |
| 148 | +{ |
| 149 | +} |
| 150 | +#endif |
| 151 | + |
89 | 152 | static struct mtd_partition h4_partitions[] = { |
90 | 153 | /* bootloader (U-Boot, etc) in first sector */ |
91 | 154 | { |
@@ -137,31 +200,8 @@ static struct platform_device h4_flash_device = { |
137 | 200 | .resource = &h4_flash_resource, |
138 | 201 | }; |
139 | 202 |
|
140 | | -static const struct matrix_keymap_data h4_keymap_data = { |
141 | | - .keymap = h4_keymap, |
142 | | - .keymap_size = ARRAY_SIZE(h4_keymap), |
143 | | -}; |
144 | | - |
145 | | -static struct omap_kp_platform_data h4_kp_data = { |
146 | | - .rows = 6, |
147 | | - .cols = 7, |
148 | | - .keymap_data = &h4_keymap_data, |
149 | | - .rep = true, |
150 | | - .row_gpios = row_gpios, |
151 | | - .col_gpios = col_gpios, |
152 | | -}; |
153 | | - |
154 | | -static struct platform_device h4_kp_device = { |
155 | | - .name = "omap-keypad", |
156 | | - .id = -1, |
157 | | - .dev = { |
158 | | - .platform_data = &h4_kp_data, |
159 | | - }, |
160 | | -}; |
161 | | - |
162 | 203 | static struct platform_device *h4_devices[] __initdata = { |
163 | 204 | &h4_flash_device, |
164 | | - &h4_kp_device, |
165 | 205 | }; |
166 | 206 |
|
167 | 207 | static struct panel_generic_dpi_data h4_panel_data = { |
@@ -336,31 +376,7 @@ static void __init omap_h4_init(void) |
336 | 376 | * if not needed. |
337 | 377 | */ |
338 | 378 |
|
339 | | -#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE) |
340 | | - omap_mux_init_gpio(88, OMAP_PULL_ENA | OMAP_PULL_UP); |
341 | | - omap_mux_init_gpio(89, OMAP_PULL_ENA | OMAP_PULL_UP); |
342 | | - omap_mux_init_gpio(124, OMAP_PULL_ENA | OMAP_PULL_UP); |
343 | | - omap_mux_init_signal("mcbsp2_dr.gpio_11", OMAP_PULL_ENA | OMAP_PULL_UP); |
344 | | - if (omap_has_menelaus()) { |
345 | | - omap_mux_init_signal("sdrc_a14.gpio0", |
346 | | - OMAP_PULL_ENA | OMAP_PULL_UP); |
347 | | - omap_mux_init_signal("vlynq_rx0.gpio_15", 0); |
348 | | - omap_mux_init_signal("gpio_98", 0); |
349 | | - row_gpios[5] = 0; |
350 | | - col_gpios[2] = 15; |
351 | | - col_gpios[6] = 18; |
352 | | - } else { |
353 | | - omap_mux_init_signal("gpio_96", OMAP_PULL_ENA | OMAP_PULL_UP); |
354 | | - omap_mux_init_signal("gpio_100", 0); |
355 | | - omap_mux_init_signal("gpio_98", 0); |
356 | | - } |
357 | | - omap_mux_init_signal("gpio_90", 0); |
358 | | - omap_mux_init_signal("gpio_91", 0); |
359 | | - omap_mux_init_signal("gpio_36", 0); |
360 | | - omap_mux_init_signal("mcbsp2_clkx.gpio_12", 0); |
361 | | - omap_mux_init_signal("gpio_97", 0); |
362 | | -#endif |
363 | | - |
| 379 | + board_mkp_init(); |
364 | 380 | i2c_register_board_info(1, h4_i2c_board_info, |
365 | 381 | ARRAY_SIZE(h4_i2c_board_info)); |
366 | 382 |
|
|
0 commit comments