电容式触摸屏Linux驱动(1)----驱动整体框架

公司开发平板电脑平板电脑,更换触摸屏----七寸电容式触摸屏。我在博客中与大家分享一下写触摸屏驱动的过程,希望对大家有用

开发环境中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");


由于时间问题,未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值