在一般的外设中i2c接口是比较常用的,android驱动设备中,重力感应,光感,ctp等等外设通常都是注册为input设备进行操作的,现在就来
举例注册一个input设备的流程
注册成一个I2C设备驱动
#include <linux/i2c.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
static int i2c_driver_demo_probe(struct i2c_client *client,const struct i2c_device_id * id)
{
struct input_dev *input_dev;
input_dev = input_allocate_device();//分配input设备内存
if(input_dev == NULL)
{
printk(“Failed to allocate input device!!!\n”);
return -ENOMEM;
}
input_dev->name = “input_device_name”;
input_dev->id.bustype = BUS_I2C;
input_dev->dev.parent = &client->dev;
__set_bit(EV_ABS,input_dev->evbit);
__set_bit(EV_KEY,input_dev->evbit);
return 0;
}
static void __devexit i2c_driver_demo_remove(struct i2c_client *client)
{
return 0;
}
static const struct i2c_device_id i2c_driver_demo_id[

本文通过实例详细介绍了如何将I2C设备注册为Input设备,包括分配input设备内存、设置设备属性、检查功能、设备检测及驱动注册等步骤。驱动主要涉及`i2c_driver_demo_probe`、`i2c_driver_demo_remove`和`i2c_driver_demo_detect`函数,用于探测和移除设备,并检测设备是否符合预期。此外,还提到了在detect回调中判断I2C适配器与客户端的绑定情况,以及Input设备上报事件的常见机制如轮询和中断。
最低0.47元/天 解锁文章
744

被折叠的 条评论
为什么被折叠?



