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 !!
Solved! Go to Solution.
The problem is solved.
The problem is SPI3.
in struct resource ssp3_resources[] ,must be disable this
{
.start = MXS_DMA_CHANNEL_AHB_APBH_SSP3,
.end = MXS_DMA_CHANNEL_AHB_APBH_SSP3,
.flags = IORESOURCE_DMA,
},
I don't know why??
The problem is solved.
The problem is SPI3.
in struct resource ssp3_resources[] ,must be disable this
{
.start = MXS_DMA_CHANNEL_AHB_APBH_SSP3,
.end = MXS_DMA_CHANNEL_AHB_APBH_SSP3,
.flags = IORESOURCE_DMA,
},
I don't know why??
On the same hardware board,I used the old 2.6.35 kernel,the touch is ok.,and uboot use the same one.
I use 5V only supply,