Android使用switch模块进行GPIO口检测(一)-->LINUX驱动部分

来源:互联网 发布:成都网知科技有限公司 编辑:程序博客网 时间:2024/04/27 12:18

费了两天时间将Switch模块熟悉了下并编写了LINUX部分的驱动程序,现在记录下。。。

Switch模块就是LINUX的GPIO口输入监测框架,位于/drivers/switch目录下,默认有switch_class.c与switch_gpio.c两个文件。

switch_class.c作为一个class看看就明白了,switch_gpio.c中在我看来是一个例子,可以仿照该例子自己新建相应的IO口驱动,

我的板子上有四个IO口需要监测,开始我是建立四个相应IO口驱动,然后发现这样做有些重复繁琐的感觉,就决定做一个switch_gpios.c文件,

将几个IO口检测驱动集成到一个文件中,然后就开动吧,主要修改的部分其实就是probe函数部分

过程参考了按键驱动部分,将所有引脚gpio_switch_platform_data结构打包为一个数组传到platform_device的dev.platform_data中,

然后在probe函数中解析出来,申请内存,申请IO中断,默认的IO触发条件为低电平,我按照这样做的结果是当该引脚电平拉低后系统直接卡住了。。。

所以我改成了上升沿与下降沿触发,并添加了工作队列结构,而非直接触发,因为要滤波的么。。。

其他再就没什么要注意的了。。。

0 0
原创粉丝点击