荣品四核S5P4418开发板之按键驱动调试分析
1、按键设备是平台设备,在按键驱动被注册时,系统调用probe函数,驱动将获得平台设备数据:在nxp_io_key.c
struct nxp_key_plat_data * plat = pdev->dev.platform_data;
平台设备数据:在device.c

2、按键对应的gpio和按键码定义在cfg_main.h 中
通过修改按键码可以可以实现按键不同的功能,当然还需要在按键驱动中断处理做适当的修改。

3、 按键驱动使用了input输入子系统,必须要定义 struct input_dev *input, 为其分配空间并且初始化,然后注册input

4、按键驱动,所以input事件类型一定支持按键类事件,设置按键类型的事件码。
input ->evbit[0] = BIT_MASK(EV_KEY);
上报事件后要同步,以确保系统收到上报的事件。

5、 还要完成android按键映射,这样系统才能识别到硬件按键在系统中按键,文件位置:
lollipop_2nd_release\device\nexell\s5p4418_drone\keypad_ s5p4418_drone.kl
key 114 VOLUME_DOWN WAKE
key 115 VOLUME_UP WAKE
key 116 POWER WAKE
关于android按键映射,可以自行百度了解。