免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4265 | 回复: 8
打印 上一主题 下一主题

mini2440触摸屏驱动问题(2.6.26内核) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-05 21:23 |只看该作者 |倒序浏览
s3c2410_ts.c 内容

  1. #include <linux/errno.h>
  2. #include <linux/kernel.h>
  3. #include <linux/module.h>
  4. #include <linux/slab.h>
  5. #include <linux/input.h>
  6. #include <linux/init.h>
  7. #include <linux/serio.h>
  8. #include <linux/delay.h>
  9. #include <linux/clk.h>
  10. #include <linux/platform_device.h>
  11. #include <asm/io.h>
  12. #include <asm/irq.h>

  13. //#include <asm/plat-s3c/regs-adc.h>
  14. #include <asm/arch/regs-adc.h>
  15. #include <asm/arch/regs-gpio.h>
  16. #include <asm/arch/ts.h>

  17. /* For ts.dev.id.version */
  18. #define S3C2410TSVERSION    0x0101

  19. #define TSC_SLEEP  (S3C2410_ADCTSC_PULL_UP_DISABLE | S3C2410_ADCTSC_XY_PST(0))
  20. #define WAIT4INT(x)  (((x)<<8) | S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | S3C2410_ADCTSC_XY_PST(3))

  21. #define AUTOPST         (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0))
  22. #define DEBUG_LVL    KERN_DEBUG

  23. MODULE_AUTHOR("Arnaud Patard <[email=arnaud.patard@rtp-net.org]arnaud.patard@rtp-net.org[/email]>");
  24. MODULE_DESCRIPTION("s3c2410 touchscreen driver");
  25. MODULE_LICENSE("GPL");

  26. /*
  27. * Definitions & global arrays.
  28. */


  29. static char *s3c2410ts_name = "s3c2410 TouchScreen";

  30. /*
  31. * Per-touchscreen data.
  32. */

  33. struct s3c2410ts {
  34.     struct input_dev *dev;
  35.     long xp;
  36.     long yp;
  37.     int count;
  38.     int shift;
  39.     char phys[32];
  40. };

  41. static struct s3c2410ts ts;
  42. static void __iomem *base_addr;

  43. static inline void s3c2410_ts_connect(void)
  44. {
  45.     s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON);
  46.     s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON);
  47.     s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON);
  48.     s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON);
  49. }

  50. static void touch_timer_fire(unsigned long data)
  51. {
  52.       unsigned long data0;
  53.       unsigned long data1;
  54.     int updown;

  55.       data0 = readl(base_addr+S3C2410_ADCDAT0);
  56.       data1 = readl(base_addr+S3C2410_ADCDAT1);

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

  58.      if (updown) {
  59.          if (ts.count != 0) {
  60.                 long tmp;
  61.                     tmp = ts.xp;
  62.                 ts.xp = ts.yp;
  63.             ts.yp = tmp;

  64.              ts.xp >>= ts.shift;
  65.              ts.yp >>= ts.shift;

  66. #ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
  67.              {
  68.                  struct timeval tv;
  69.                  do_gettimeofday(&tv);
  70.                  printk(DEBUG_LVL "T: %06d, X: %03ld, Y: %03ld\n", (int)tv.tv_usec, ts.xp, ts.yp);
  71.              }
  72. #endif

  73.              input_report_abs(ts.dev, ABS_X, ts.xp);
  74.              input_report_abs(ts.dev, ABS_Y, ts.yp);

  75.              input_report_key(ts.dev, BTN_TOUCH, 1);
  76.              input_report_abs(ts.dev, ABS_PRESSURE, 1);
  77.              input_sync(ts.dev);
  78.          }

  79.          ts.xp = 0;
  80.          ts.yp = 0;
  81.          ts.count = 0;

  82.          writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
  83.          writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
  84.      } else {
  85.          ts.count = 0;

  86.          input_report_key(ts.dev, BTN_TOUCH, 0);
  87.          input_report_abs(ts.dev, ABS_PRESSURE, 0);
  88.          input_sync(ts.dev);

  89.          writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);
  90.      }
  91. }

  92. static struct timer_list touch_timer =
  93.         TIMER_INITIALIZER(touch_timer_fire, 0, 0);

  94. static irqreturn_t stylus_updown(int irq, void *dev_id)
  95. {
  96.     unsigned long data0;
  97.     unsigned long data1;
  98.     int updown;

  99.     data0 = readl(base_addr+S3C2410_ADCDAT0);
  100.     data1 = readl(base_addr+S3C2410_ADCDAT1);

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

  102.     /* TODO we should never get an interrupt with updown set while
  103.      * the timer is running, but maybe we ought to verify that the
  104.      * timer isn't running anyways. */

  105.     if (updown)
  106.         touch_timer_fire(0);

  107.     return IRQ_HANDLED;
  108. }


  109. static irqreturn_t stylus_action(int irq, void *dev_id)
  110. {
  111.     unsigned long data0;
  112.     unsigned long data1;

  113.     data0 = readl(base_addr+S3C2410_ADCDAT0);
  114.     data1 = readl(base_addr+S3C2410_ADCDAT1);

  115.     ts.xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK;
  116.     ts.yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK;
  117.     ts.count++;

  118.         if (ts.count < (1<<ts.shift)) {
  119.         writel(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC);
  120.         writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON);
  121.     } else {
  122.         mod_timer(&touch_timer, jiffies+1);
  123.         writel(WAIT4INT(1), base_addr+S3C2410_ADCTSC);
  124.     }

  125.     return IRQ_HANDLED;
  126. }

  127. static struct clk    *adc_clock;

  128. /*
  129. * The functions for inserting/removing us as a module.
  130. */

  131. static int __init s3c2410ts_probe(struct platform_device *pdev)
  132. {
  133.     int rc;
  134.     struct s3c2410_ts_mach_info *info;
  135.     struct input_dev *input_dev;

  136.     info = ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;

  137.     if (!info)
  138.     {
  139.         printk(KERN_ERR "Hm... too bad : no platform data for ts\n");
  140.         return -EINVAL;
  141.     }

  142. #ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
  143.     printk(DEBUG_LVL "Entering s3c2410ts_init\n");
  144. #endif

  145.     adc_clock = clk_get(NULL, "adc");
  146.     if (!adc_clock) {
  147.         printk(KERN_ERR "failed to get adc clock source\n");
  148.         return -ENOENT;
  149.     }
  150.     clk_enable(adc_clock);

  151. #ifdef CONFIG_TOUCHSCREEN_S3C2410_DEBUG
  152.     printk(DEBUG_LVL "got and enabled clock\n");
  153. #endif

  154.     base_addr=ioremap(S3C2410_PA_ADC,0x20);
  155.     if (base_addr == NULL) {
  156.         printk(KERN_ERR "Failed to remap register block\n");
  157.         return -ENOMEM;
  158.     }


  159.     /* Configure GPIOs */
  160.     s3c2410_ts_connect();

  161.     if ((info->presc&0xff) > 0)
  162.         writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),\
  163.                  base_addr+S3C2410_ADCCON);
  164.     else
  165.         writel(0,base_addr+S3C2410_ADCCON);


  166.     /* Initialise registers */
  167.     if ((info->delay&0xffff) > 0)
  168.         writel(info->delay & 0xffff,  base_addr+S3C2410_ADCDLY);

  169.     writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);

  170.     /* Initialise input stuff */
  171.     memset(&ts, 0, sizeof(struct s3c2410ts));
  172.     input_dev = input_allocate_device();
  173.     if (!input_dev) {
  174.         printk(KERN_ERR "Unable to allocate the input device !!\n");
  175.         return -ENOMEM;
  176.     }
  177.     sprintf(ts.phys, "ts0");
  178.     ts.dev=input_dev;

  179.     ts.dev->evbit[0] = BIT_MASK(EV_SYN) | BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
  180.     ts.dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
  181.     input_set_abs_params(ts.dev, ABS_X, 0, 0x3FF, 0, 0);
  182.     input_set_abs_params(ts.dev, ABS_Y, 0, 0x3FF, 0, 0);
  183.     input_set_abs_params(ts.dev, ABS_PRESSURE, 0, 1, 0, 0);

  184.     ts.dev->name = s3c2410ts_name;
  185.     ts.dev->id.bustype = BUS_RS232;
  186.     ts.dev->id.vendor = 0xDEAD;
  187.     ts.dev->id.product = 0xBEEF;
  188.     ts.dev->id.version = S3C2410TSVERSION;

  189.     ts.shift = info->oversampling_shift;

  190.     /* Get irqs */
  191.     if (request_irq(IRQ_ADC, stylus_action,IRQF_SAMPLE_RANDOM, "s3c2410_action", ts.dev))
  192.       {
  193.         printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_ADC !\n");
  194.         iounmap(base_addr);
  195.         return -EIO;
  196.       }
  197.     if (request_irq(IRQ_TC, stylus_updown,IRQF_SAMPLE_RANDOM, "s3c2410_action", ts.dev))
  198.       {
  199.         printk(KERN_ERR "s3c2410_ts.c: Could not allocate ts IRQ_TC !\n");
  200.         iounmap(base_addr);
  201.         return -EIO;
  202.       }

  203.     printk(KERN_INFO "%s successfully loaded\n", s3c2410ts_name);

  204.     /* All went ok, so register to the input system */
  205.     rc=input_register_device(ts.dev);
  206.     if (rc)
  207.     {
  208.         free_irq(IRQ_TC, ts.dev);
  209.         free_irq(IRQ_ADC, ts.dev);
  210.         clk_disable(adc_clock);
  211.         iounmap(base_addr);
  212.         return -EIO;
  213.     }
  214.     return 0;
  215. }

  216. static int s3c2410ts_remove(struct platform_device *pdev)
  217. {
  218.     disable_irq(IRQ_ADC);
  219.     disable_irq(IRQ_TC);
  220.     free_irq(IRQ_TC,ts.dev);
  221.     free_irq(IRQ_ADC,ts.dev);

  222.     if (adc_clock) {
  223.         clk_disable(adc_clock);
  224.         clk_put(adc_clock);
  225.         adc_clock = NULL;
  226.     }

  227.     input_unregister_device(ts.dev);
  228.     iounmap(base_addr);

  229.     return 0;
  230. }

  231. #ifdef CONFIG_PM
  232. static int s3c2410ts_suspend(struct platform_device *pdev, pm_message_t state)
  233. {
  234.     writel(TSC_SLEEP, base_addr+S3C2410_ADCTSC);
  235.     writel(readl(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_STDBM,base_addr+S3C2410_ADCCON);
  236.     disable_irq(IRQ_ADC);
  237.     disable_irq(IRQ_TC);
  238.     clk_disable(adc_clock);
  239.     return 0;
  240. }

  241. static int s3c2410ts_resume(struct platform_device *pdev)
  242. {
  243.     struct s3c2410_ts_mach_info *info =
  244.         ( struct s3c2410_ts_mach_info *)pdev->dev.platform_data;

  245.         clk_enable(adc_clock);
  246.     msleep(1);

  247.         enable_irq(IRQ_ADC);
  248.     enable_irq(IRQ_TC);

  249.         if ((info->presc&0xff) > 0)
  250.             writel(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(info->presc&0xFF),base_addr+S3C2410_ADCCON);
  251.     else
  252.         writel(0,base_addr+S3C2410_ADCCON);

  253.         /* Initialise registers */
  254.         if ((info->delay&0xffff) > 0)
  255.             writel(info->delay & 0xffff,  base_addr+S3C2410_ADCDLY);

  256.         writel(WAIT4INT(0), base_addr+S3C2410_ADCTSC);

  257.     return 0;
  258. }

  259. #else
  260. #define s3c2410ts_suspend NULL
  261. #define s3c2410ts_resume  NULL
  262. #endif


  263. static struct platform_driver s3c2410ts_driver = {
  264.     .driver        ={
  265.                    .name           = "s3c2410-ts",
  266.             .owner          = THIS_MODULE,
  267.     },
  268.        .probe          = s3c2410ts_probe,
  269.        .remove         = s3c2410ts_remove,
  270.        .suspend        = s3c2410ts_suspend,
  271.        .resume         = s3c2410ts_resume,

  272. };



  273. int __init s3c2410ts_init(void)
  274. {
  275.     return platform_driver_register(&s3c2410ts_driver);
  276. }

  277. void __exit s3c2410ts_exit(void)
  278. {
  279.     platform_driver_unregister(&s3c2410ts_driver);
  280. }

  281. module_init(s3c2410ts_init);
  282. module_exit(s3c2410ts_exit);
复制代码

[ 本帖最后由 lovesaka 于 2009-1-5 22:32 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-01-05 22:32 |只看该作者
regs-adc.h 内容

  1. #ifndef __ASM_ARCH_REGS_ADC_H
  2. #define __ASM_ARCH_REGS_ADC_H "regs-adc.h"

  3. #define S3C2410_ADCREG(x) (x)

  4. #define S3C2410_ADCCON     S3C2410_ADCREG(0x00)
  5. #define S3C2410_ADCTSC     S3C2410_ADCREG(0x04)
  6. #define S3C2410_ADCDLY     S3C2410_ADCREG(0x08)
  7. #define S3C2410_ADCDAT0    S3C2410_ADCREG(0x0C)
  8. #define S3C2410_ADCDAT1    S3C2410_ADCREG(0x10)


  9. /* ADCCON Register Bits */
  10. #define S3C2410_ADCCON_ECFLG            (1<<15)
  11. #define S3C2410_ADCCON_PRSCEN           (1<<14)
  12. #define S3C2410_ADCCON_PRSCVL(x)        (((x)&0xFF)<<6)
  13. #define S3C2410_ADCCON_PRSCVLMASK       (0xFF<<6)
  14. #define S3C2410_ADCCON_SELMUX(x)        (((x)&0x7)<<3)
  15. #define S3C2410_ADCCON_MUXMASK          (0x7<<3)
  16. #define S3C2410_ADCCON_STDBM            (1<<2)
  17. #define S3C2410_ADCCON_READ_START       (1<<1)
  18. #define S3C2410_ADCCON_ENABLE_START     (1<<0)
  19. #define S3C2410_ADCCON_STARTMASK        (0x3<<0)


  20. /* ADCTSC Register Bits */
  21. #define S3C2410_ADCTSC_UD_SEN           (1<<8) /* ghcstop add for s3c2440a */
  22. #define S3C2410_ADCTSC_YM_SEN           (1<<7)
  23. #define S3C2410_ADCTSC_YP_SEN           (1<<6)
  24. #define S3C2410_ADCTSC_XM_SEN           (1<<5)
  25. #define S3C2410_ADCTSC_XP_SEN           (1<<4)
  26. #define S3C2410_ADCTSC_PULL_UP_DISABLE  (1<<3)
  27. #define S3C2410_ADCTSC_AUTO_PST         (1<<2)
  28. #define S3C2410_ADCTSC_XY_PST(x)        (((x)&0x3)<<0)

  29. /* ADCDAT0 Bits */
  30. #define S3C2410_ADCDAT0_UPDOWN          (1<<15)
  31. #define S3C2410_ADCDAT0_AUTO_PST        (1<<14)
  32. #define S3C2410_ADCDAT0_XY_PST          (0x3<<12)
  33. #define S3C2410_ADCDAT0_XPDATA_MASK     (0x03FF)

  34. /* ADCDAT1 Bits */
  35. #define S3C2410_ADCDAT1_UPDOWN          (1<<15)
  36. #define S3C2410_ADCDAT1_AUTO_PST        (1<<14)
  37. #define S3C2410_ADCDAT1_XY_PST          (0x3<<12)
  38. #define S3C2410_ADCDAT1_YPDATA_MASK     (0x03FF)

  39. #endif /* __ASM_ARCH_REGS_ADC_H */
复制代码

论坛徽章:
0
3 [报告]
发表于 2009-01-05 22:33 |只看该作者
最近成功的移植qtopia-opensource-src-4.2.3到开发板上
lcd驱动和触摸屏也移植好了(没有报错触摸屏调试输出的坐标和开发板光盘的2.6.13内核输出的坐标差不多)
qtopia的环境也设了,可是就是没有响应,不知道那出了问题
也试过用tslib管理触摸屏,但输出结果很奇怪
不知道有没有人弄过这方面的驱动

论坛徽章:
0
4 [报告]
发表于 2009-01-05 22:39 |只看该作者
/etc/profile 内容

  1. PATH=/bin:/sbin:/usr/sbin:/usr/bin:/qtopia/bin:/tslib/bin
  2. LD_LIBRARY_PATH=/lib:/usr/lib:/qtopia/lib:/tslib/lib
  3. QWS_DISPLAY="LinuxFb:mmWidth35:mmHeight45:0"
  4. QWS_MOUSE_PROTO="LinuxTP:/dev/mouse0"

  5. TSLIB_CONSOLEDEVICE=none
  6. TSLIB_FBDEVICE=/dev/fb0
  7. TSLIB_TSDEVICE=/dev/mouse0
  8. TSLIB_CALIBFILE=/tslib/etc/pointercal
  9. TSLIB_CONFFILE=/tslib/etc/ts.conf
  10. TSLIB_PLUGINDIR=/tslib/share/ts/plugins

  11. export PS1 PATH USER LOGNAME HOSTNAME LD_LIBRARY_PATH QWS_DISPLAY QWS_MOUSE_PROTO TSLIB_TSEVENTTYPE TSLIB_CONSOLEDEVICE TSLIB_FBDEVICE TSLIB_TSDEVICE TSLIB_CALIBFILE TSLIB_CONFFILE TSLIB_PLUGINDIR

  12. QWS_MOUSE_PROTO怎么换也不行
  13. /dev/mouse0 是mdev生成触摸屏设备文件/dev下面还有个event0的也换过
  14. [root@Mini2440 bin]# ./ts_test
  15. 1073884492.1074015556:      0      0      0
  16. 1073884492.1074015556:      0      0      0
  17. 1073884492.1074015556:      0      0      0
  18. 1073884492.1074015556:      0      0      0
  19. 1073884492.1074015556:      0      0      0
  20. 1073884492.1074015556:      0      0      0
  21. 1073884492.1074015556:      0      0      0
  22. 1073884492.1074015556:      0      0      0
  23. 1073884492.1074015556:      0      0      0
  24. 1073884492.1074015556:      0      0      0
  25. 1073884492.1074015556:      0      0      0
  26. 1073884492.1074015556:      0      0      0
  27. 1073884492.1074015556:      0      0      0
  28. 1073884492.1074015556:      0      0      0
  29. 1073884492.1074015556:      0      0      0
  30. 1073884492.1074015556:      0      0      0
  31. 1073884492.1074015556:      0      0      0
  32. 1073884492.1074015556:      0      0      0
  33. 1073884492.1074015556:      0      0      0
  34. 1073884492.1074015556:      0      0      0
  35. 1073884492.1074015556:      0      0      0
  36. 1073884492.1074015556:      0      0      0
  37. 1073884492.1074015556:      0      0      0
  38. 1073884492.1074015556:      0      0      0
  39. 1073884492.1074015556:      0      0      0
  40. 1073884492.1074015556:      0      0      0
  41. 1073884492.1074015556:      0      0      0
  42. 1073884492.1074015556:      0      0      0
  43. 1073884492.1074015556:      0      0      0
  44. 1073884492.1074015556:      0      0      0
  45. 1073884492.1074015556:      0      0      0
  46. 1073884492.1074015556:      0      0      0
  47. 1073884492.1074015556:      0      0      0
  48. 1073884492.1074015556:      0      0      0
  49. 1073884492.1074015556:      0      0      0
  50. .........................
  51. [root@Mini2440 bin]# ./ts_print
  52. 1073884492.1074015556:      0      0      0
  53. 1073884492.1074015556:      0      0      0
  54. 1073884492.1074015556:      0      0      0
  55. 1073884492.1074015556:      0      0      0
  56. 1073884492.1074015556:      0      0      0
  57. 1073884492.1074015556:      0      0      0
  58. 1073884492.1074015556:      0      0      0
  59. 1073884492.1074015556:      0      0      0
  60. 1073884492.1074015556:      0      0      0
  61. 1073884492.1074015556:      0      0      0
  62. 1073884492.1074015556:      0      0      0
  63. 1073884492.1074015556:      0      0      0
  64. 1073884492.1074015556:      0      0      0
  65. 1073884492.1074015556:      0      0      0
  66. 1073884492.1074015556:      0      0      0
  67. 1073884492.1074015556:      0      0      0
  68. 1073884492.1074015556:      0      0      0
  69. 1073884492.1074015556:      0      0      0
  70. 1073884492.1074015556:      0      0      0
  71. 1073884492.1074015556:      0      0      0
  72. 1073884492.1074015556:      0      0      0
  73. 1073884492.1074015556:      0      0      0
  74. 1073884492.1074015556:      0      0      0
  75. 1073884492.1074015556:      0      0      0
  76. 1073884492.1074015556:      0      0      0
  77. ................................................
  78. [root@Mini2440 bin]# ./ts_print_raw
  79. 1073884492.1074015556:      1      0 1073877936
  80. 1073884492.1074015556:      1      0 1073877936
  81. 1073884492.1074015556:      1      0 1073877936
  82. 1073884492.1074015556:      1      0 1073877936
  83. 1073884492.1074015556:      1      0 1073877936
  84. 1073884492.1074015556:      1      0 1073877936
  85. 1073884492.1074015556:      1      0 1073877936
  86. 1073884492.1074015556:      1      0 1073877936
  87. 1073884492.1074015556:      1      0 1073877936
  88. 1073884492.1074015556:      1      0 1073877936
  89. 1073884492.1074015556:      1      0 1073877936
  90. 1073884492.1074015556:      1      0 1073877936
  91. 1073884492.1074015556:      1      0 1073877936
  92. 1073884492.1074015556:      1      0 1073877936
  93. 1073884492.1074015556:      1      0 1073877936
  94. 1073884492.1074015556:      1      0 1073877936
  95. 1073884492.1074015556:      1      0 1073877936
  96. 1073884492.1074015556:      1      0 1073877936
  97. 1073884492.1074015556:      1      0 1073877936
  98. 1073884492.1074015556:      1      0 1073877936
  99. 1073884492.1074015556:      1      0 1073877936
  100. 1073884492.1074015556:      1      0 1073877936
  101. 1073884492.1074015556:      1      0 1073877936
  102. 1073884492.1074015556:      1      0 1073877936
  103. 1073884492.1074015556:      1      0 1073877936
  104. 1073884492.1074015556:      1      0 1073877936
  105. 1073884492.1074015556:      1      0 1073877936
  106. 1073884492.1074015556:      1      0 1073877936
  107. 1073884492.1074015556:      1      0 1073877936
  108. 1073884492.1074015556:      1      0 1073877936
  109. 1073884492.1074015556:      1      0 1073877936
  110. 1073884492.1074015556:      1      0 1073877936
  111. 1073884492.1074015556:      1      0 1073877936
  112. 1073884492.1074015556:      1      0 1073877936
  113. 1073884492.1074015556:      1      0 1073877936
  114. 1073884492.1074015556:      1      0 1073877936
  115. 1073884492.1074015556:      1      0 1073877936
  116. 1073884492.1074015556:      1      0 1073877936
  117. 1073884492.1074015556:      1      0 1073877936
  118. 1073884492.1074015556:      1      0 1073877936
  119. 1073884492.1074015556:      1      0 1073877936
  120. 1073884492.1074015556:      1      0 1073877936
  121. 1073884492.1074015556:      1      0 1073877936
  122. 1073884492.1074015556:      1      0 1073877936
  123. 1073884492.1074015556:      1      0 1073877936
  124. 1073884492.1074015556:      1      0 1073877936
  125. 1073884492.1074015556:      1      0 1073877936
  126. 1073884492.1074015556:      1      0 1073877936
  127. 1073884492.1074015556:      1      0 1073877936
  128. 1073884492.1074015556:      1      0 1073877936
  129. 1073884492.1074015556:      1      0 1073877936
  130. 1073884492.1074015556:      1      0 1073877936
  131. 1073884492.1074015556:      1      0 1073877936
  132. 1073884492.1074015556:      1      0 1073877936
  133. 1073884492.1074015556:      1      0 1073877936
  134. 1073884492.1074015556:      1      0 1073877936
  135. 1073884492.1074015556:      1      0 1073877936
  136. 1073884492.1074015556:      1      0 1073877936
  137. .......................
  138. [root@Mini2440 bin]#dmesg
  139. T: 700047, X: 569, Y: 728
  140. T: 705046, X: 433, Y: 727
  141. T: 710046, X: 371, Y: 729
  142. T: 715048, X: 511, Y: 725
  143. T: 720047, X: 616, Y: 723
  144. T: 725048, X: 615, Y: 722
  145. T: 730047, X: 617, Y: 721
  146. T: 735009, X: 623, Y: 721
  147. T: 740048, X: 632, Y: 721
  148. T: 745043, X: 643, Y: 720
  149. T: 750048, X: 681, Y: 719
  150. T: 755047, X: 707, Y: 718
  151. T: 760050, X: 706, Y: 720
  152. T: 765049, X: 703, Y: 725
  153. T: 770048, X: 704, Y: 726
  154. T: 775051, X: 694, Y: 728
  155. T: 885011, X: 570, Y: 755
  156. T: 890046, X: 400, Y: 754
  157. T: 895046, X: 572, Y: 747
  158. T: 900048, X: 573, Y: 746
  159. T: 905010, X: 573, Y: 746
  160. T: 910009, X: 573, Y: 746
  161. T: 915010, X: 572, Y: 747
  162. T: 920009, X: 572, Y: 748
  163. T: 925009, X: 570, Y: 750
  164. T: 930048, X: 568, Y: 757
  165. T: 935050, X: 567, Y: 761
  166. T: 020013, X: 511, Y: 795
  167. T: 025047, X: 510, Y: 794
  168. T: 030010, X: 510, Y: 795
  169. T: 035009, X: 510, Y: 793
  170. T: 040009, X: 509, Y: 793
  171. T: 045009, X: 507, Y: 792
  172. T: 050047, X: 493, Y: 791
  173. T: 055045, X: 507, Y: 791
  174. T: 060047, X: 507, Y: 793
  175. T: 065046, X: 507, Y: 796
  176. T: 070010, X: 505, Y: 793
  177. T: 075009, X: 504, Y: 793
  178. T: 080009, X: 504, Y: 792
  179. T: 085047, X: 504, Y: 796
  180. T: 090046, X: 502, Y: 795
  181. T: 095046, X: 501, Y: 802
  182. T: 100046, X: 497, Y: 809
  183. T: 415023, X: 384, Y: 891
  184. T: 420069, X: 390, Y: 886
  185. T: 425055, X: 391, Y: 887
  186. T: 430011, X: 393, Y: 888
  187. T: 435059, X: 395, Y: 888
  188. T: 440013, X: 394, Y: 888
  189. T: 445009, X: 394, Y: 887
  190. T: 450009, X: 395, Y: 887
  191. T: 455009, X: 394, Y: 888
  192. T: 460009, X: 393, Y: 887
  193. T: 465009, X: 393, Y: 886
  194. T: 470009, X: 393, Y: 888
  195. T: 535013, X: 377, Y: 884
  196. T: 540054, X: 375, Y: 883
  197. T: 545059, X: 367, Y: 880
  198. T: 550061, X: 367, Y: 878
  199. T: 555059, X: 366, Y: 878
  200. T: 560058, X: 361, Y: 878
  201. T: 565059, X: 359, Y: 878
  202. T: 570010, X: 357, Y: 878
  203. T: 575064, X: 355, Y: 878
  204. T: 580011, X: 354, Y: 878
  205. T: 585009, X: 353, Y: 876
  206. T: 590060, X: 351, Y: 876
  207. T: 595011, X: 348, Y: 876
  208. T: 600059, X: 345, Y: 879
  209. T: 605059, X: 342, Y: 877
  210. T: 610011, X: 340, Y: 877
  211. T: 615060, X: 338, Y: 877
  212. T: 620011, X: 336, Y: 879
  213. T: 625062, X: 334, Y: 879
  214. T: 630011, X: 332, Y: 879
  215. T: 635059, X: 329, Y: 881
  216. T: 640060, X: 325, Y: 883
  217. T: 645058, X: 323, Y: 885
  218. T: 835017, X: 222, Y: 848
  219. T: 850014, X: 228, Y: 841
  220. T: 855060, X: 226, Y: 840
  221. T: 860059, X: 225, Y: 839
  222. T: 865059, X: 225, Y: 839
  223. T: 870011, X: 222, Y: 838
  224. T: 875009, X: 220, Y: 837
  225. T: 880061, X: 218, Y: 837
  226. T: 885011, X: 216, Y: 837
  227. T: 890054, X: 215, Y: 837
  228. T: 895011, X: 213, Y: 837
  229. T: 900059, X: 213, Y: 838
  230. T: 905060, X: 213, Y: 839
  231. T: 910011, X: 212, Y: 835
  232. T: 915059, X: 211, Y: 839
  233. T: 920060, X: 209, Y: 841
  234. T: 925060, X: 213, Y: 839
  235. ..............................
复制代码

论坛徽章:
0
5 [报告]
发表于 2009-01-05 22:46 |只看该作者
添加设备代码
  1. struct s3c2410_ts_mach_info mini2440_ts_cfg __initdata = {
  2.         .delay = 20000,
  3.         .presc = 55,
  4.         .oversampling_shift = 2,
  5. };


  6. struct platform_device s3c_device_ts={
  7.         .name             = "s3c2410-ts",
  8.         .id               = -1,
  9.         .dev              ={
  10.                            .platform_data = &mini2440_ts_cfg,
  11.                            }
  12. };

  13. static struct platform_device *smdk2440_devices[] __initdata = {
  14.         ..............
  15.         &s3c_device_ts,
  16. };
复制代码

论坛徽章:
0
6 [报告]
发表于 2009-01-06 22:47 |只看该作者
有谁的驱动移植成功了
可以共享参考一下吗?
我在这里先谢谢了啊!

论坛徽章:
0
7 [报告]
发表于 2009-01-06 23:11 |只看该作者
刚看了一个跟我遇到类似问题的贴,可能问题出在校准屏幕上

论坛徽章:
0
8 [报告]
发表于 2009-01-06 23:36 |只看该作者
贴的太多了吧 ,看着晕了

论坛徽章:
0
9 [报告]
发表于 2009-01-07 00:15 |只看该作者
终于搞定了,升级了一下tslib就可以了
驱动也都不用改
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP