2. dws配中断脚和使能脚
(根据原理图中“09_CAMERA_SENSOR”页中, “HALL”部分【OUT】引脚所连接 - 使能脚GPIO12)
v666为例
dws配置pin脚: - 由于硬件上拉-》dws也要配成上拉
EintMode|Def.Mode M0|M1|M2|M3|M4|M5|M6|M7|InPull En|InPull SelHigh|Def.Dir|In|Out|OutHigh|VarName1
GPIO12 1 0:GPIO12 1 1 IN GPIO_HALL_1_PIN
dws配置EINT:
EINTVar|Debounce Time(ms)|Polarity|Sensitive_Level|Debounce En
EINT12 HALL_1 0 Low Level Disable
dts:
* HALL GPIO standardization */
&pio {
hall_pin_default: halldefaultcfg {
};
hall_pin_as_int: hallint@12 {
pins_cmd_dat {
pins = 《PINMUX_GPIO12__FUNC_GPIO12》;
slew-rate = 《0》;
bias-pull-up = 《00》;
};
};
};
&keypad {
pinctrl-names = “default”, “hall_pin_as_int”;
pinctrl-0 = 《&hall_pin_default》;
pinctrl-1 = 《&hall_pin_as_int》;
status = “okay”;
};
/* HALL GPIO end */
一、 查看是否有键值上报
getevent -i
add device 8: /dev/input/event1
bus: 0019
vendor 2454
product 6500
version 0010
name: “mtk-kpd” // 与音量加减键、电源键、hall同一个event
location: “”
id: “”
version: 1.0.1
getevent -t /dev/input/event1 // 打印出来的是16进制
[70.169911] 0001 0085 00000001 // 85 -》 133 远离
[70.169911] 0000 0000 00000000
[70.352126] 0001 0085 00000000
[70.352126] 0000 0000 00000000
二、查看代码确定上报键值
1. alps\kernel-3.18\drivers\input\keyboard\mediatek\kpd.c
#define KEY_HALL_F3 133 //for hall eint report key far // 磁铁远离
#define KEY_HALL_F4 134 //for hall eint report key close // 磁铁靠近
2. alps/device/magcomm/magc6580_we_c_m/mtk-kpd.kl , 映射给上层
key 114 0x72 VOLUME_DOWN // 侧键
key 115 0x73 VOLUME_UP
key 116 0x74 POWER
+ key 133 F3 // 霍尔
+ key 134 F4
注:修改此文件,可以用push的方式先试验
find /system -name mtk-kpd.kl
/system/usr/keylayout/mtk-kpd.kl
adb push 。.. /system/usr/keylayout/
三、添加权限
alps/device/mediatek/common/sepolicy/basic/system_app.te
# add permission for hall
allow system_app sysfs_keypad_file:dir { search read write };
allow system_app sysfs_keypad_file:file { read write getattr setattr open create };
alps/device/mediatek/common/sepolicy/full/platform_app.te
# add permission for hall
allow platform_app sysfs_keypad_file:dir { search read write };
allow platform_app sysfs_keypad_file:file { read write getattr setattr open create };
alps/device/mediatek/common/sepolicy/full/priv_app.te
# add permission for hall
allow priv_app sysfs_keypad_file:dir { search read write };
allow priv_app sysfs_keypad_file:file { read write getattr setattr open create };
四、手写笔插入与拔出 - 用hall来实现,手写笔尖有磁性(以80 5.1为例)
1. 修改alps/device/haocheng/hct6580_weg_a_l/mtk-kpd.kl ,映射给上层
key 133 F3
key 134 F4
+ key 136 F6
+ key 137 F7
2. 修改alps\kernel-3.10\drivers\misc\mediatek\keypad\kpd.c,仿造hall_1添加hall_2的代码:
+ #ifdef GPIO_HALL_2_PIN
#define