主题 : mini2440touchscreen驱动问题求解 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 56129
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2011-09-29
最后登录: 2012-08-28
楼主  发表于: 2012-05-02 11:30

 mini2440touchscreen驱动问题求解

static void touch_timer_fire(unsigned long data)
{
      unsigned long data0;
      unsigned long data1;
    int updown;

      data0 = ioread32(base_addr+S3C2410_ADCDAT0);
      data1 = ioread32(base_addr+S3C2410_ADCDAT1);

     updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN));

     if (updown) {
         if (count != 0) {
            long tmp;
                                                                                                
            tmp = xp;
            xp = yp;
            yp = tmp;
                                                                                                
                        xp >>= 2;
                        yp >>= 2;
            
input_report_abs(dev, ABS_X, xp);
             input_report_abs(dev, ABS_Y, yp);

             input_report_key(dev, BTN_TOUCH, 1);
             input_report_abs(dev, ABS_PRESSURE, 1);
             input_sync(dev);
         }

         xp = 0;
         yp = 0;
         count = 0;

         iowrite32(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
         iowrite32(ioread32(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
     } else {
         count = 0;

         input_report_key(dev, BTN_TOUCH, 0);
         input_report_abs(dev, ABS_PRESSURE, 0);
         input_sync(dev);

         iowrite32(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
        if (OwnADC) {
            OwnADC = 0;
            up(&ADC_LOCK);
        }
     }
}


请问下红色标注的地方在驱动中起什么作用,为什么要交换变量,为什么要移动2位
级别: 新手上路
UID: 56129
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2011-09-29
最后登录: 2012-08-28
1楼  发表于: 2012-05-02 15:25
没有人回答吗自己顶一下
畅游在知识的海洋...
级别: 论坛版主
UID: 33629
精华: 4
发帖: 554
金钱: 3075 两
威望: 615 点
综合积分: 1188 分
注册时间: 2010-12-03
最后登录: 2015-09-22
2楼  发表于: 2012-05-02 19:05

 回 1楼(shaohua312) 的帖子

代码不完整,猜测是采样4次所以要除以4求平均值
好好学习,天天鲁管
级别: 新手上路
UID: 56129
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
综合积分: 22 分
注册时间: 2011-09-29
最后登录: 2012-08-28
3楼  发表于: 2012-05-03 16:24

 回 2楼(wuweidong) 的帖子

是的,确实是取了4次的值之后,嗯你这么说我就有点理解了,但是为什么要经过变量传递呢,也就是为什么要将xp与yp的值互换呢