谁有am3359是否有linux的4*4键盘驱动啊??要走input子系统的。
Jason Wang83:
你好,请问你是想用普通GPIO口来做4*4矩阵键盘吗?
joe joe:
回复 Jason Wang83:
是的
joe joe:
回复 Jason Wang83:
是的,要input子系统的。
Jason Wang83:
回复 joe joe:
如果只是普通的GPOI那和单片机是一样的啊,你把你以前写的51的矩阵键盘的程序拿出来看看,然后移植到335上不可以吗?
leo chen:
看看这个是否满足你要求
EE_BeagleBone_Cape之矩阵键盘
http://bbs.eeworld.com.cn/thread-356191-1-1.html
/* Matrix GPIO Keypad Support for profile-0 only: TODO */
/* pinmux for keypad device */
static struct pinmux_config matrix_keypad_pin_mux[] = {
{"uart1_txd.gpio0_15", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},
{"uart1_rxd.gpio0_14", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
{"mcasp0_fsx.gpio3_15", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
{"mcasp0_axr0.gpio3_16", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
{"mcasp0_aclkx.gpio3_14", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
{NULL, 0},
};
/* Keys mapping */
static const uint32_t am335x_evm_matrix_keys[] = {
KEY(0, 0, KEY_A),
KEY(1, 0, KEY_3),
KEY(2, 0, KEY_2),
KEY(3, 0, KEY_1),
KEY(0, 1, KEY_B),
KEY(1, 1, KEY_6),
KEY(2, 1, KEY_5),
KEY(3, 1, KEY_4),
KEY(0, 2, KEY_C),
KEY(1, 2, KEY_9),
KEY(2, 2, KEY_8),
KEY(3, 2, KEY_7),
KEY(0, 3, KEY_D),
KEY(1, 3, KEY_OK),
KEY(2, 3, KEY_0),
KEY(3, 3, KEY_DELETE),
};
const struct matrix_keymap_data am335x_evm_keymap_data = {
.keymap = am335x_evm_matrix_keys,
.keymap_size = ARRAY_SIZE(am335x_evm_matrix_keys),
};
static const unsigned int am335x_evm_keypad_row_gpios[] = {
GPIO_TO_PIN(0, 15), GPIO_TO_PIN(3, 21), GPIO_TO_PIN(0, 14), GPIO_TO_PIN(3, 19)
};
static const unsigned int am335x_evm_keypad_col_gpios[] = {
GPIO_TO_PIN(3, 17), GPIO_TO_PIN(3, 15), GPIO_TO_PIN(3, 16), GPIO_TO_PIN(3, 14)
};
static struct matrix_keypad_platform_data am335x_evm_keypad_platform_data = {
.keymap_data = &am335x_evm_keymap_data,
.row_gpios = am335x_evm_keypad_row_gpios,
.num_row_gpios = ARRAY_SIZE(am335x_evm_keypad_row_gpios),
.col_gpios = am335x_evm_keypad_col_gpios,
.num_col_gpios = ARRAY_SIZE(am335x_evm_keypad_col_gpios),
.active_low = false,
.debounce_ms = 5,
.col_scan_delay_us = 2,
};
static struct platform_device am335x_evm_keyboard = {
.name = "matrix-keypad",
.id = -1,
.dev = {
.platform_data = &am335x_evm_keypad_platform_data,
},
};
static void matrix_keypad_init(int evm_id, int profile)
{
int err;
setup_pin_mux(matrix_keypad_pin_mux);
err = platform_device_register(&am335x_evm_keyboard);
if (err) {
pr_err("failed to register matrix keypad (4×4) device\n");
}
}
joe joe:
回复 leo chen:
ti的和三星的驱动写法有什么区别吗
Jason Wang83:
回复 joe joe:
软件上应该是一样的。建议你先把原理看一看,然后在看看跟硬件相关联的接口,一般在软件里修改修改硬件相关的设置就可以工作了。
leo chen:
回复 Jason Wang83:
这个问题还没解决吗? 上面给出的解决方案是不是已经测试过了
sddsdssd ssdsd:
回复 Jason Wang83:
4 led set input;4 key set output
"在看看跟硬件相关联的接口,一般在软件里修改修改硬件相关的设置就可以工作了。"请问具体需要设着那些才能初始化成功?
leo chen:
回复 sddsdssd ssdsd:
不是已经给出例子了吗?测试一下啊
TI中文支持网