資源簡介
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 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 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源程序可以運行
評論
共有 條評論