谁有am3359是否有linux的4*4键盘驱动啊??要走input子系统的。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
看看这个是否满足你要求
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 (4x4) device\n");
}
}
4 led set input;4 key set output
"在看看跟硬件相关联的接口,一般在软件里修改修改硬件相关的设置就可以工作了。"请问具体需要设着那些才能初始化成功?
试了根本没有任何反应,硬件初始化接口具体是那些函数?
如果采用修改设备树的方式有参考文档马?
/*
Add matrix keypad device tree data to am335x-evm by adding all the necessary parameters like keymap, row & column gpios and etc.
Signed-off-by: AnilKumar Ch <anil...@ti.com>
--- arch/arm/boot/dts/am335x-evm.dts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts index 9199456..8076e66 100644 --- a/arch/arm/boot/dts/am335x-evm.dts +++ b/arch/arm/boot/dts/am335x-evm.dts @@ -110,6 +110,26 @@ regulator-name = "lis3_reg"; regulator-boot-on; }; + + matrix_keypad: matrix_keypad@0 { + compatible = "gpio-matrix-keypad"; + debounce-delay-ms = <5>; + col-scan-delay-us = <2>; + + row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ + &gpio2 26 0 /* Bank1, pin26 */ + &gpio2 27 0>; /* Bank1, pin27 */ + + col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ + &gpio2 22 0>; /* Bank1, pin22 */ + + linux,keymap = <0x0000008b /* MENU */ + 0x0100009e /* BACK */ + 0x02000069 /* LEFT */ + 0x0001006a /* RIGHT */ + 0x0101001c /* ENTER */ + 0x0201006c>; /* DOWN */ + }; };
/include/ "tps65910.dtsi"
-- 1.7.9.5
-- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majo...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
*/
您最好能自行调试下,这个算是一个定制的驱动了。。。。