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 !!
解決済! 解決策の投稿を見る。
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,