公司开发平板电脑平板电脑,更换触摸屏----七寸电容式触摸屏。我在博客中与大家分享一下写触摸屏驱动的过程,希望对大家有用
开发环境中I2C总线驱动可用,可以使用总线驱动发送数据
下面是次驱动的框架,就像人体的骨骼一样,支撑整个驱动
(1)首先在mach-xxxxx/smdk-xxxx.c下面添加触摸屏触摸屏设备
由于使用的是电容式触摸屏,使用到了I2C总线,故要在I2C中添加设备,如下:
static struct i2c_board_info i2c_devs0[] __initdata = {
{
.type = "my-ts", //触摸屏设备名称,应和驱动中名称一致,注册时使用它来匹配,否则驱动注册失败
.addr = 0x41, //触摸屏的I2C地址
.irq = IRQ_EINT1,//触摸屏使用的中断
},
};
static void __init xxxx_machine_init(void)
{
i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0)); //这侧触摸屏设备
}
(2)触摸屏驱动框架
//触摸屏探测函数,添加触摸屏驱动后首先调用它
static int ts_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
return 0;
}
//关闭触摸屏
static void ts_i2c_shutdown(struct i2c_client *client)
{
}
//挂起触摸屏
static int ts_i2c_suspend(struct i2c_client *client, pm_message_t mesg)
{
return 0;
}
//恢复触摸屏
static int ts_i2c_resume(struct i2c_client *client)
{
return 0;
}
//移除触摸屏
static int ts_i2c_remove(struct i2c_client *client)
{
return 0;
}
//i2c id表
static const struct i2c_device_id ts_i2c_id[] ={
{TS_I2C_DRIVER_NAME, 0}, {}
};
MODULE_DEVICE_TABLE(i2c, ts_i2c_id);
// i2c驱动结构
static struct i2c_driver ts_i2c_driver = {
.id_table = ts_i2c_id,
.driver = {.name = TS_I2C_DRIVER_NAME},
.resume = ts_i2c_resume,
.suspend = ts_i2c_suspend,
.shutdown = ts_i2c_shutdown,
.probe = ts_i2c_probe,
.remove = ts_i2c_remove,
};
//驱动注册函数
static int ts_init(void)
{
return i2c_add_driver(&ts_i2c_driver);
}
//驱动注销行数
static void ts_exit(void)
{
i2c_del_driver(&ts_i2c_driver);
}
//添加驱动
module_init(ts_init);
//移除驱动
module_exit(ts_exit);
MODULE_AUTHOR("Chris Xin");
MODULE_DESCRIPTION("TS I2C touch driver for Android platform");
MODULE_LICENSE("GPL");
由于时间问题,未完待续
电容式触摸屏Linux驱动(1)----驱动整体框架
最新推荐文章于 2023-04-08 17:19:14 发布