ARM: OMAP2: Fix H4 matrix keyboard warning
Convert to use matrix keyboard to remove the warning "Please update the board to use matrix-keypad driver". Based on similar setup in palmtc.c. Note that this patch is compile tested only because of lack of working hardware. Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
98e541ffaa
commit
41eb2d813f
1 changed files with 69 additions and 53 deletions
|
@ -25,6 +25,7 @@
|
|||
#include <linux/err.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/input/matrix_keypad.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
@ -34,7 +35,6 @@
|
|||
#include <plat/usb.h>
|
||||
#include <plat/board.h>
|
||||
#include <plat/common.h>
|
||||
#include <plat/keypad.h>
|
||||
#include <plat/menelaus.h>
|
||||
#include <plat/dma.h>
|
||||
#include <plat/gpmc.h>
|
||||
|
@ -50,10 +50,8 @@
|
|||
|
||||
#define H4_ETHR_GPIO_IRQ 92
|
||||
|
||||
static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 };
|
||||
static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 };
|
||||
|
||||
static const unsigned int h4_keymap[] = {
|
||||
#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
|
||||
static const uint32_t board_matrix_keys[] = {
|
||||
KEY(0, 0, KEY_LEFT),
|
||||
KEY(1, 0, KEY_RIGHT),
|
||||
KEY(2, 0, KEY_A),
|
||||
|
@ -86,6 +84,71 @@ static const unsigned int h4_keymap[] = {
|
|||
KEY(4, 5, KEY_ENTER),
|
||||
};
|
||||
|
||||
static const struct matrix_keymap_data board_keymap_data = {
|
||||
.keymap = board_matrix_keys,
|
||||
.keymap_size = ARRAY_SIZE(board_matrix_keys),
|
||||
};
|
||||
|
||||
static unsigned int board_keypad_row_gpios[] = {
|
||||
88, 89, 124, 11, 6, 96
|
||||
};
|
||||
|
||||
static unsigned int board_keypad_col_gpios[] = {
|
||||
90, 91, 100, 36, 12, 97, 98
|
||||
};
|
||||
|
||||
static struct matrix_keypad_platform_data board_keypad_platform_data = {
|
||||
.keymap_data = &board_keymap_data,
|
||||
.row_gpios = board_keypad_row_gpios,
|
||||
.num_row_gpios = ARRAY_SIZE(board_keypad_row_gpios),
|
||||
.col_gpios = board_keypad_col_gpios,
|
||||
.num_col_gpios = ARRAY_SIZE(board_keypad_col_gpios),
|
||||
.active_low = 1,
|
||||
|
||||
.debounce_ms = 20,
|
||||
.col_scan_delay_us = 5,
|
||||
};
|
||||
|
||||
static struct platform_device board_keyboard = {
|
||||
.name = "matrix-keypad",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &board_keypad_platform_data,
|
||||
},
|
||||
};
|
||||
static void __init board_mkp_init(void)
|
||||
{
|
||||
omap_mux_init_gpio(88, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_gpio(89, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_gpio(124, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("mcbsp2_dr.gpio_11", OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
if (omap_has_menelaus()) {
|
||||
omap_mux_init_signal("sdrc_a14.gpio0",
|
||||
OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("vlynq_rx0.gpio_15", 0);
|
||||
omap_mux_init_signal("gpio_98", 0);
|
||||
board_keypad_row_gpios[5] = 0;
|
||||
board_keypad_col_gpios[2] = 15;
|
||||
board_keypad_col_gpios[6] = 18;
|
||||
} else {
|
||||
omap_mux_init_signal("gpio_96", OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("gpio_100", 0);
|
||||
omap_mux_init_signal("gpio_98", 0);
|
||||
}
|
||||
omap_mux_init_signal("gpio_90", 0);
|
||||
omap_mux_init_signal("gpio_91", 0);
|
||||
omap_mux_init_signal("gpio_36", 0);
|
||||
omap_mux_init_signal("mcbsp2_clkx.gpio_12", 0);
|
||||
omap_mux_init_signal("gpio_97", 0);
|
||||
|
||||
platform_device_register(&board_keyboard);
|
||||
}
|
||||
#else
|
||||
static inline void board_mkp_init(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct mtd_partition h4_partitions[] = {
|
||||
/* bootloader (U-Boot, etc) in first sector */
|
||||
{
|
||||
|
@ -137,31 +200,8 @@ static struct platform_device h4_flash_device = {
|
|||
.resource = &h4_flash_resource,
|
||||
};
|
||||
|
||||
static const struct matrix_keymap_data h4_keymap_data = {
|
||||
.keymap = h4_keymap,
|
||||
.keymap_size = ARRAY_SIZE(h4_keymap),
|
||||
};
|
||||
|
||||
static struct omap_kp_platform_data h4_kp_data = {
|
||||
.rows = 6,
|
||||
.cols = 7,
|
||||
.keymap_data = &h4_keymap_data,
|
||||
.rep = true,
|
||||
.row_gpios = row_gpios,
|
||||
.col_gpios = col_gpios,
|
||||
};
|
||||
|
||||
static struct platform_device h4_kp_device = {
|
||||
.name = "omap-keypad",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &h4_kp_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *h4_devices[] __initdata = {
|
||||
&h4_flash_device,
|
||||
&h4_kp_device,
|
||||
};
|
||||
|
||||
static struct panel_generic_dpi_data h4_panel_data = {
|
||||
|
@ -336,31 +376,7 @@ static void __init omap_h4_init(void)
|
|||
* if not needed.
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
|
||||
omap_mux_init_gpio(88, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_gpio(89, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_gpio(124, OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("mcbsp2_dr.gpio_11", OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
if (omap_has_menelaus()) {
|
||||
omap_mux_init_signal("sdrc_a14.gpio0",
|
||||
OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("vlynq_rx0.gpio_15", 0);
|
||||
omap_mux_init_signal("gpio_98", 0);
|
||||
row_gpios[5] = 0;
|
||||
col_gpios[2] = 15;
|
||||
col_gpios[6] = 18;
|
||||
} else {
|
||||
omap_mux_init_signal("gpio_96", OMAP_PULL_ENA | OMAP_PULL_UP);
|
||||
omap_mux_init_signal("gpio_100", 0);
|
||||
omap_mux_init_signal("gpio_98", 0);
|
||||
}
|
||||
omap_mux_init_signal("gpio_90", 0);
|
||||
omap_mux_init_signal("gpio_91", 0);
|
||||
omap_mux_init_signal("gpio_36", 0);
|
||||
omap_mux_init_signal("mcbsp2_clkx.gpio_12", 0);
|
||||
omap_mux_init_signal("gpio_97", 0);
|
||||
#endif
|
||||
|
||||
board_mkp_init();
|
||||
i2c_register_board_info(1, h4_i2c_board_info,
|
||||
ARRAY_SIZE(h4_i2c_board_info));
|
||||
|
||||
|
|
Loading…
Reference in a new issue