资源简介
FT5X06 触摸屏驱动程序,直接替换即可使用 厂家提供的资料 绝对真实可靠 已用在项目当中 资料珍贵 不能用,欢迎举报
代码片段和文件信息
#include
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “focaltech_ctl.h“
static int ft_rw_iic_drv_major = FT_RW_IIC_DRV_MAJOR;
struct ft_rw_i2c_dev {
struct cdev cdev;
struct mutex ft_rw_i2c_mutex;
struct i2c_client *client;
};
struct ft_rw_i2c_dev *ft_rw_i2c_dev_tt;
static struct class *fts_class;
static int ft_rw_iic_drv_myread(struct i2c_client *client u8 *buf int length)
{
int ret = 0;
ret = ft5x0x_i2c_Read(client NULL 0 buf length);
if(ret<0)
dev_err(&client->dev “%s:IIC Read failed\n“
__func__);
return ret;
}
static int ft_rw_iic_drv_mywrite(struct i2c_client *client u8 *buf int length)
{
int ret = 0;
ret = ft5x0x_i2c_Write(client buf length);
if(ret<0)
dev_err(&client->dev “%s:IIC Write failed\n“
__func__);
return ret;
}
static int ft_rw_iic_drv_RDWR(struct i2c_client *client unsigned long arg)
{
struct ft_rw_i2c_queue i2c_rw_queue;
u8 __user **data_ptrs;
struct ft_rw_i2c * i2c_rw_msg;
int ret = 0;
int i;
if (!access_ok(VERIFY_READ (struct ft_rw_i2c_queue *)arg sizeof(struct ft_rw_i2c_queue)))
return -EFAULT;
if (copy_from_user(&i2c_rw_queue
(struct ft_rw_i2c_queue *)arg
sizeof(struct ft_rw_i2c_queue)))
return -EFAULT;
if (i2c_rw_queue.queuenum > FT_I2C_RDWR_MAX_QUEUE)
return -EINVAL;
i2c_rw_msg = (struct ft_rw_i2c*)
kmalloc(i2c_rw_queue.queuenum *sizeof(struct ft_rw_i2c)
GFP_KERNEL);
if (!i2c_rw_msg)
return -ENOMEM;
if (copy_from_user(i2c_rw_msg i2c_rw_queue.i2c_queue
i2c_rw_queue.queuenum*sizeof(struct ft_rw_i2c))) {
kfree(i2c_rw_msg);
return -EFAULT;
}
data_ptrs = kmalloc(i2c_rw_queue.queuenum * sizeof(u8 __user *) GFP_KERNEL);
if (data_ptrs == NULL) {
kfree(i2c_rw_msg);
return -ENOMEM;
}
ret = 0;
for (i=0; i< i2c_rw_queue.queuenum; i++) {
if ((i2c_rw_msg[i].length > 8192)||
(i2c_rw_msg[i].flag & I2C_M_RECV_LEN)) {
ret = -EINVAL;
break;
}
data_ptrs[i] = (u8 __user *)i2c_rw_msg[i].buf;
i2c_rw_msg[i].buf = kmalloc(i2c_rw_msg[i].length GFP_KERNEL);
if (i2c_rw_msg[i].buf == NULL) {
ret = -ENOMEM;
break;
}
if (copy_from_user(i2c_rw_msg[i].buf data_ptrs[i] i2c_rw_msg[i].length)) {
++i;
ret = -EFAULT;
break;
}
}
if (ret < 0) {
int j;
for (j=0; j kfree(i2c_rw_msg[j].buf);
kfree(data_ptrs);
kfree(i2c_rw_msg);
return ret;
}
for (i=0; i< i2c_rw_queue.queuenum; i++) {
if (i2c_rw_msg[i].flag) {
ret = ft_rw_iic_drv_myread(client
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 565 2013-06-21 16:26 ft5336_download_lib.h
文件 6417 2013-06-21 10:03 focaltech_ctl.c
文件 638 2013-06-21 10:03 focaltech_ctl.h
文件 26678 2013-06-26 09:43 ft5x06_ex_fun.c
文件 2210 2013-06-26 09:37 ft5x06_ex_fun.h
文件 15969 2013-06-26 09:38 ft5x06_ts.c
文件 1088 2013-06-22 11:07 ft5x06_ts.h
----------- --------- ---------- ----- ----
53565 7
- 上一篇:sz rz 编译安装源码
- 下一篇:NSGA-2源程序可以运行
评论
共有 条评论