AnsweredAssumed Answered

mx28 2.6.35 touch can not interrupt??

Question asked by Haohua QIN on May 30, 2014
Latest reply on Jun 4, 2014 by Haohua QIN

Hi all,

I'm use L2.6.35,use the EVK CONFIG.Use the mxs-ts touchscreen driver.

Below is the console:

 

[root@qhh /]#cat /proc/bus/input/devices

I: Bus=0000 Vendor=0000 Product=0000 Version=0000

N: Name="MXS touchscreen"

P: Phys=

S: Sysfs=/devices/virtual/input/input0

U: Uniq=

H: Handlers=event0 evbug

B: EV=b

B: KEY=0

B: ABS=1000003

[root@qhh /]#cat /proc/interrupts

           CPU0

  6:          0           -  pswitch

10:          0           -  mxs_ts_touch

21:          0           -  mxs_ts_dev

38:          0           -  fb_irq

39:          0           -  mxs-pxp

41:          0           -  GPMI NFC BCH Interrupt

47:        125           -  DebugUART

48:       5692           -  i.MX/mxs Timer Tick

52:          0           -  dcp

53:          6           -  dcp

68:          2           -  mxs-i2c

69:          0           -  mxs-i2c

82:          0           -  mxs-mmc dma

85:          0           -  mxs-spi.0

88:       3090           -  GPMI NFC DMA Interrupt

92:         29           -  fsl ehci pre interrupt, ehci_hcd:usb2

93:          0           -  fsl-usb2-otg, fsl ehci pre interrupt, ehci_hcd:usb1, fsl-usb2-udc

94:          0           -  usb_wakeup

95:          0           -  usb_wakeup

96:          0           -  mxs-mmc error

99:          0           -  mxs-spi.0

101:       4492           -  fec

102:          0           -  fec

110:          0           -  mxs-i2c

111:          3           -  mxs-i2c

Err:          0

 

when I touch the screen,and cat the event0

[root@qhh /]#cat /dev/input/event0

nothing print.

 

 

So. I use printk function to print the value of mxs-ts.c(the values of ts_handler(),and mxs_ts_probe())

I print the info->touch_irq,info->device_irq,and HW_LRADC register use the following function:

printk("info->touch_irq=%x\n",info->touch_irq);

printk("info->device_irq=%x\n",info->device_irq);

for(i=0;i<0x180;i+=0x10)

{

  printk("info->base3 addr=%x,=%x\n",info->base+i,__raw_readl(info->base+i));

}

 

I also add printk("ts_handler1\n") at the begging of ts_handler().

 

The console print:

input: MXS touchscreen as /devices/virtual/input/input0

info->touch_irq=a (is right )

info->device_irq=15(right)

 

info->base3 addr=f0050000,=800000   

info->base3 addr=f0050010,=1200000

info->base3 addr=f0050020,=8000

info->base3 addr=f0050030,=0

info->base3 addr=f0050040,=1fff0001   (RADC Status Register,the bit "0" ia always 1,I think there is someing is wrong,because I do not touch the thouscreen)

info->base3 addr=f0050050,=0

info->base3 addr=f0050060,=0

info->base3 addr=f0050070,=0

info->base3 addr=f0050080,=0

info->base3 addr=f0050090,=0

info->base3 addr=f00500a0,=0

info->base3 addr=f00500b0,=0

info->base3 addr=f00500c0,=0

info->base3 addr=f00500d0,=0

info->base3 addr=f00500e0,=0

info->base3 addr=f00500f0,=3c000008

info->base3 addr=f0050100,=0

info->base3 addr=f0050110,=43210000

info->base3 addr=f0050120,=0

info->base3 addr=f0050130,=80

info->base3 addr=f0050140,=7a543210

info->base3 addr=f0050150,=0

info->base3 addr=f0050160,=0

info->base3 addr=f0050170,=1030000

 

I find that in function mxs_ts_probe(),when the function enter_state_touch_detect(info) is executed,and then  the RADC Status Register is always 1fff0001,

The function ts_handler() is never be executed in linux boot time,and I touch the touchscreen when cat /dev/input/event0 ,it is also never be executed.

The touchscreen hardware is absolutely ok.

 

Thanks !!

Outcomes