全志平台gpio-keys按键驱动调试

前言

 

1. 按键驱动控制类型

   GPIO控制: OK键    (目前调试这个

   GPADC控制: VOL +/-

   PMU控制:    Power键

 

2. 最开始准备尝试自己写一个简单gpio按键驱动,

后来发现在内核驱动中有现成的通用gpio驱动,直接用就可以了----gpio-keys.c

 

 

查看input设备信息

 

全志平台gpio-keys按键驱动调试_第1张图片

设备位置:

Event节点是按照input驱动注册顺序进行累加的, 不是人为设定的

 

查看内核文档

查看gpio-keys.txt有详细说明

 

配置sysconfig

 

1. 首先参考参考gpio-keys.c中关于解析dts的操作进行添加

全志平台gpio-keys按键驱动调试_第2张图片

 

2. sysconfig配置说明

实际配置如下:

全志平台gpio-keys按键驱动调试_第3张图片

Linux,input-type = <1> 对应EV_KEY

Linux,code = 139 与应用解析的键值对应即可

另外: debounce-interval = 30 , 这个之前是有加上的, 但是后来发现加上后触摸屏不能用了

原因:  debounce-interval = 30 这个配上后,相当于是开启硬件防抖, 而这个KEY的中断控制器可能和触摸 相同, 加上后就修改到了GPIO中断的采样频率,导致触摸用不了;

debounce-interval = 30这个不配上, KEY驱动中会默认开启软件防抖

 

修改结构体变动

注意:  由于平台原因,gpio-keys驱动使用的

          Enum of_gpio_flags flags需要换成 struct gpio_config gpio_flags

gpio_config是全志平台定义的结构体

全志平台gpio-keys按键驱动调试_第4张图片

 

 

支持OK键作为唤醒源

 

唤醒源原理:  当整体系统进入休眠时,SYS电也关了时, 此时CPUS(小cpu)是没关的, 主要是相应中断进行唤  醒系统, 所以想要支持GPIO 唤醒源,

 

条件:

  1. 硬件支持

        主板上需要唤醒源GPIO都需要是在PL口上

     2.相应GPIO驱动向CPUS注册中断源

        注册接口: enable_wakeup_src( CPUS_GPIO_SRC,  button->gpio)

全志平台gpio-keys按键驱动调试_第5张图片

 

 

 

你可能感兴趣的:(allwinner,Linux系统)