NUC970平台触摸屏驱动移植(4)

程序清单 39

static INT __tsClose (TS_DEV  *ptsDev) { ……             /*              *  Disable Pen Down Event              */             writel(CLEAR_ALL, REG_ADC_IER);             API_ThreadForceDelete(&ptsDev->TS_hThread, LW_NULL);             API_SemaphoreBDelete(&adc_sem);             API_SemaphoreBDelete(&adc_mst); …… }

__tsRead

Read函数得到ADC值并上报。具体实现如程序清单 310所示。

程序清单 310

static ssize_t __tsRead (TS_DEV                        *ptsDev,                          touchscreen_event_notify      *pnotify,                          size_t                         stNbyte) {     INTREG           iregInterLevel;     if (stNbyte == 0) {         return  (ERROR_NONE);     }     LW_SPIN_LOCK_QUICK(&ptsDev->TS_slLock, &iregInterLevel);     pnotify->ctype   = ptsDev->TS_tData.ctype;     pnotify->kstat   = ptsDev->TS_tData.kstat;     pnotify->xanalog = ptsDev->TS_tData.xanalog;     pnotify->yanalog = ptsDev->TS_tData.yanalog;     printk("%d    ix = %d    iy = %d\n", __LINE__, ptsDev->TS_tData.xanalog, ptsDev->TS_tData.yanalog);     if (ptsDev->TS_tData.kstat & MOUSE_LEFT) {                          /*  读取到点击事件              */         ptsDev->TS_bIsReadRel = LW_FALSE;                               /*  需要确保应用读到释放操作    */     } else {         ptsDev->TS_bIsReadRel = LW_TRUE;                                /*  已经读取到释放操作          */     }     LW_SPIN_UNLOCK_QUICK(&ptsDev->TS_slLock, iregInterLevel);     return  (sizeof(touchscreen_event_notify)); }

内核模块加载

当ADC触摸屏驱动完成后,编译生成touch_drv.ko文件,通过tftp服务下载至/lib/modules/路径下,通过执行modulereg touch_drv.ko命令动态加载至内核,如图 34所示:

NUC970平台触摸屏驱动移植

图 34 modulereg touch_drv.ko动态加载

加载成功后,通过执行modules命令可以查看当前已加载.ko模块,如图 35所示:

NUC970平台触摸屏驱动移植

图 35查看当前已加载.ko模块测试

在正常加载的情况下,启动任意一个QT程序,进行触控操作,如果正确响应触控事件,说明基本完成移植。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/60b54a751ee374d2f7b83a966e80b0d2.html