Touchscreen activation on i.MX53 QSB

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Touchscreen activation on i.MX53 QSB

3,880 Views
Xavier
Contributor III
Hi,

I am porting a 7" LCD on i.MX53 QSB with capacitive touchscreen. I am under ANDROID. The touchscreen has an USB interface and is recognized during kernel boot :

 

input: eGalax Inc. USB TouchController as /devices/platform/fsl-ehci.1/usb1/1-1/1-1:1.0/input/input0
generic-usb 0003:0EEF:7304.0001: input: USB HID v2.10 Pointer [eGalax Inc. USB TouchController] on usb-fsl-ehci.1-1/input0

 

When i press on the touchscreen there are no movements.

With getevent, all interrupts are detetected :

 

# getevent
could not get driver version for /dev/input/mice, Not a typewriter
add device 1: /dev/input/event0
  name:     "eGalax Inc. USB TouchController"
could not get driver version for /dev/input/mouse0, Not a typewriter
/dev/input/event0: 0003 0002 00000616
/dev/input/event0: 0003 0003 00000492
/dev/input/event0: 0000 0000 00000000
/dev/input/event0: 0004 0004 00090001
/dev/input/event0: 0001 0110 00000001

...

 

Any idea ?

 

Thanks.

Xavier

Tags (1)
0 Kudos
10 Replies

1,475 Views
Xavier
Contributor III

Add a new VENDOR ID and DEVICE ID in the "hid-ids" and a new entry in the "hid-core" (drivers/hid).

Be sure that the egalax module is checked in your kernel config.

Regards,

Xavier

0 Kudos

1,475 Views
SharanK
Contributor II

HI,

 getevent doesn't publish all the event message sequence for every touch. It is getting publish sporadically. I am using eGalax USB TouchController. Is there any configuration required for the events to get publish consistently? Please help.

 Logs are as below:

$ getevent -p

add device 2: /dev/input/event2
  name:     "eGalax Inc. USB TouchController"
  events:
    SYN (0000): 0000  0001  0003
    KEY (0001): 014a*
    ABS (0003): 0000  value 898, min 0, max 2047, fuzz 0 flat 0
                0001  value 633, min 0, max 2047, fuzz 0 flat 0

$ getevent /dev/input/event2


0001 014a 00000000
0003 0001 000004ee
0000 0000 00000000
0001 014a 00000001
0003 0001 0000035b
0000 0000 00000000
0003 0000 000001b0
0003 0001 00000382
0000 0000 00000000

[ These messages are sporadically getting published.]

$ su -- dumpsys window

 Device 0x10001: eGalax Inc. USB TouchController
    Sources: 0x00001002
    KeyboardType: 0
    Motion Ranges:
      X: min=0.000, max=1024.000, flat=0.000, fuzz=0.500
      Y: min=0.000, max=768.000, flat=0.000, fuzz=0.375
      Pressure: min=0.000, max=1.000, flat=0.000, fuzz=0.000
      Size: min=0.000, max=1.000, flat=0.000, fuzz=0.000
      TouchMajor: min=0.000, max=1280.000, flat=0.000, fuzz=0.000
      TouchMinor: min=0.000, max=1280.000, flat=0.000, fuzz=0.000
      ToolMajor: min=0.000, max=1280.000, flat=0.000, fuzz=0.000
      ToolMinor: min=0.000, max=1280.000, flat=0.000, fuzz=0.000
    Touch Input Mapper:
      AssociatedDisplayId: 0
      UseBadTouchFilter: false
      UseAveragingTouchFilter: false
      UseJumpyTouchFilter: false
      Raw Axes:
        X: min=0, max=2047, flat=0, fuzz=0
        Y: min=0, max=2047, flat=0, fuzz=0
        Pressure: unknown range
        TouchMajor: unknown range
        TouchMinor: unknown range
        ToolMajor: unknown range
        ToolMinor: unknown range
        Orientation: unknown range
      Calibration:
        touch.touchSize.calibration: pressure
        touch.toolSize.calibration: linear
        touch.toolSize.linearScale: 10.000
        touch.toolSize.linearBias: 0.000
        touch.toolSize.isSummed: 0
        touch.pressure.calibration: amplitude
        touch.pressure.source: touch
        touch.pressure.scale: 0.010
        touch.size.calibration: normalized
        touch.orientation.calibration: none
      SurfaceWidth: 1024px
      SurfaceHeight: 768px
      SurfaceOrientation: 0
      Translation and Scaling Factors:        XOrigin: 0
        YOrigin: 0
        XScale: 0.500
        YScale: 0.375
        XPrecision: 1.999
        YPrecision: 2.665
        GeometricScale: 0.438
        ToolSizeLinearScale: 10.000
        ToolSizeLinearBias: 0.000
        ToolSizeAreaScale: 0.000
        ToolSizeAreaBias: 0.000
        PressureScale: 0.010
        SizeScale: 0.000
        OrientationSCale: 0.000

Thanks in Advance,

Sharan K

0 Kudos

1,475 Views
Swamy
Contributor III

Hi Xavier,

I am also facing the same problem in Android on IMX53 ARDboard with Egalax touch screen. Could you please share what is the settings you were able to do with touchscreen ID and the driver usbtouchscreen.


Regards,

Swamy


Xavier said:

I have solved the problem.

 

It was a problem of identification between the touchscreen ID and the driver usbtouchscreen.

 

Thanks.

0 Kudos

1,475 Views
daiane_angolini
NXP Employee
NXP Employee
Can you, please, share some patch or some command line (some specific information)? I´m sure you can help someone else. I saw a lot of buzz around eGalaxy touchscreen.. Thanks in advance
0 Kudos

1,475 Views
Xavier
Contributor III

I have solved the problem.

 

It was a problem of identification between the touchscreen ID and the driver usbtouchscreen.

 

Thanks.

0 Kudos

1,475 Views
daiane_angolini
NXP Employee
NXP Employee

I have never worked with this touchscreen, so I´m don´t know.

 

But it looks like you will need to initialize your touchscreen if you want it running.

 

I even know if you can include this initialization on idc file.

0 Kudos

1,475 Views
Xavier
Contributor III
Hi Daiane,

I have tried it. Now, if I put the idc file, I havn't the error, but it doesn't change anything.

Just a precision, the touchscreen is powered by the imx53 card (not by the USB). So if I plug on the touchscreen (D- and D+) on a computer, it is worked (the power is always maintained by imx53_qsb). So if I plug off from the computer, and I plug on the touchscreen on the imx53_qsb, it is detected and all is ok. I can navigate under android screens.

Is there an init sequence that have to be sent to the touchscreen driver ?
0 Kudos

1,475 Views
daiane_angolini
NXP Employee
NXP Employee

It looks like android is missing a configuration file.

I/InputManager-Callbacks( 2061): No input device calibration properties found for device eGalax Inc. USB TouchController.

 

Please, take a look on <my_android>/frameworks/base/libs/ui/EventHub.cpp to see how your source code looks for that file.

 

I attached a sample touchscreen configuration file. You can give it a try. After that, you can configure your touch the way you want.

 

You should place your configuration file here:

/system/user/idc/

 

 

Please, change file name using your vendor ID, your product ID and so on. You can find the info on your logcat:

 

I/EventHub( 2061): New device: path=/dev/input/event1 name=eGalax Inc. USB TouchController id=0x10001 (of 0x2) index=2 fd=106 classes=0x4

I/InputReader( 2061): Device added: id=0x10001, name=eGalax Inc. USB TouchController, sources=00001002

 

 

Give it a try and let me know the results.

0 Kudos

1,475 Views
Xavier
Contributor III

Hi Daiane,

 

It's right, I can see all events with "getevent". The kernel supports and detects my touchscreen, but in Android, it doesn't work.

 

It is a capacitive touchscreen, so I don't think it is necessary to calibrate it.

 

I have joined the log of the kernel and the logcat.

0 Kudos

1,475 Views
daiane_angolini
NXP Employee
NXP Employee

Sorry I did not understand.

 

1 - you can see all "touches" using getenv

2- touchscreen does not work on Android like on home screen or any application

 

Is that rigtht?

 

1 - If you can see events from getenv, your kernel supports your touchscreen, right?

 

2 - Does your touchscreen need to be calibrated?

 

Can you share the logcat? Android can recognize your touchscreen?

0 Kudos