tca8418
来源:互联网 发布:linux 内核 视频 编辑:程序博客网 时间:2024/05/22 16:45
驱动位置
kernel_imx/drivers/input/keyboard/tca8418_keypad.c
kernel_imx/Documentation/devicetree/bindings/input/tca8418_keypad.txt
1.硬件i2c2 地址0x34
中断:GPIO_4 MX6QDL_PAD_GPIO_4__GPIO1_IO04
matrix_keypad_parse_of_params会用到
kernel_imx/drivers/input/matrix-keymap.c
keypad,num-rows
keypad,num-columns
linux,keymap
2.调试
打印信息
# getevent -i
add device 1: /dev/input/event6
bus: 0018
vendor 0001
product 0001
version 0001
name: "tca8418"
location: ""
id: ""
version: 1.0.1
events:
KEY (0001): 0005 0006 0007 0008 0009 000a 000b 020a
020b
MSC (0004): 0004
input props:
<none>
根据kernel_imx/arch/metag/boot/dts/include/dt-bindings/input/input.h值
调整铵键映射的值
0,0 KEY_RIGHT 0x6a
0,1 KEY_BACK 0x9e
0,2 KEY_UP 0x67
1,0 KEY_ENTER 0x1C//确认
1,1 KEY_MUSIC 0XD5 //F1
1,2 KEY_DOWN 0x6c
2,0 KEY_BACKSPACE 0xe//删除
2,1 KEY_AUDIO 0xbc
2,2 KEY_LEFT 0X69
3.dtsi
+ tca8418@34{
+ compatible = "ti,tca8418";
+ reg = <0x34>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <4 2>;
+ keypad,num-rows = <3>;
+ keypad,num-columns = <3>;
+ linux,keymap = <
+ 0x0000006a /*KEY_RIGHT*/
+ 0x0001009e /* KEY_BACK 0x9e*/
+ 0x00020067 /*KEY_UP*/
+ 0x0100001c
+ 0x010100d5
+ 0x0102006c
+ 0x0200000e
+ 0x020100bc
+ 0x02020069
+ >;
+ };
pinctrl_hog: hoggrp {
fsl,pins = <
MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x80000000 /*microsd cd pin*/
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /*tca8418 irq pin*/
};
4.修改调用的优先级subsys_initcall比module_init先调用,可能i2c总线还没有走完造成i2c写配置失败
--- a/kernel_imx/drivers/input/keyboard/tca8418_keypad.c
+++ b/kernel_imx/drivers/input/keyboard/tca8418_keypad.c
@@ -415,7 +415,7 @@ static int __init tca8418_keypad_init(void)
{
return i2c_add_driver(&tca8418_keypad_driver);
}
-subsys_initcall(tca8418_keypad_init);
+module_init(tca8418_keypad_init);
kernel_imx/drivers/input/keyboard/tca8418_keypad.c
kernel_imx/Documentation/devicetree/bindings/input/tca8418_keypad.txt
1.硬件i2c2 地址0x34
中断:GPIO_4 MX6QDL_PAD_GPIO_4__GPIO1_IO04
matrix_keypad_parse_of_params会用到
kernel_imx/drivers/input/matrix-keymap.c
keypad,num-rows
keypad,num-columns
linux,keymap
2.调试
打印信息
# getevent -i
add device 1: /dev/input/event6
bus: 0018
vendor 0001
product 0001
version 0001
name: "tca8418"
location: ""
id: ""
version: 1.0.1
events:
KEY (0001): 0005 0006 0007 0008 0009 000a 000b 020a
020b
MSC (0004): 0004
input props:
<none>
根据kernel_imx/arch/metag/boot/dts/include/dt-bindings/input/input.h值
调整铵键映射的值
0,0 KEY_RIGHT 0x6a
0,1 KEY_BACK 0x9e
0,2 KEY_UP 0x67
1,0 KEY_ENTER 0x1C//确认
1,1 KEY_MUSIC 0XD5 //F1
1,2 KEY_DOWN 0x6c
2,0 KEY_BACKSPACE 0xe//删除
2,1 KEY_AUDIO 0xbc
2,2 KEY_LEFT 0X69
3.dtsi
+ tca8418@34{
+ compatible = "ti,tca8418";
+ reg = <0x34>;
+ interrupt-parent = <&gpio1>;
+ interrupts = <4 2>;
+ keypad,num-rows = <3>;
+ keypad,num-columns = <3>;
+ linux,keymap = <
+ 0x0000006a /*KEY_RIGHT*/
+ 0x0001009e /* KEY_BACK 0x9e*/
+ 0x00020067 /*KEY_UP*/
+ 0x0100001c
+ 0x010100d5
+ 0x0102006c
+ 0x0200000e
+ 0x020100bc
+ 0x02020069
+ >;
+ };
pinctrl_hog: hoggrp {
fsl,pins = <
MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x80000000 /*microsd cd pin*/
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /*tca8418 irq pin*/
};
4.修改调用的优先级subsys_initcall比module_init先调用,可能i2c总线还没有走完造成i2c写配置失败
--- a/kernel_imx/drivers/input/keyboard/tca8418_keypad.c
+++ b/kernel_imx/drivers/input/keyboard/tca8418_keypad.c
@@ -415,7 +415,7 @@ static int __init tca8418_keypad_init(void)
{
return i2c_add_driver(&tca8418_keypad_driver);
}
-subsys_initcall(tca8418_keypad_init);
+module_init(tca8418_keypad_init);
阅读全文
0 0
- tca8418
- 小键盘TCA8418驱动调试
- 'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
- ffmpeg关于h264编码提示h264_mp4toannexb的问题
- 学会DataHub服务让您可以轻松构建基于流式数据的分析和应用
- poj 1611 The suspects
- 【C】关于输入输出的报错
- tca8418
- Android 进程和线程关系
- X Error:BadDrawable (individ Pixmap or Window parameter 9)
- /etc/ld.so.conf详解 及 编译寻找动态库路径解析
- ./configure,make,make install的作用
- 数组排序:给定一个数组,将数组中的元素从小到大排序
- VUE(事件处理 v-on)
- Linux下安装Tomcat
- ConfigReader(五十三)—— ReadSkillLeadingConfig