AnsweredAssumed Answered

imx6 sabre-sdb and LCD touchscreen MAX11801

Question asked by steve rathjen on Dec 26, 2013
Latest reply on Jan 22, 2014 by steve rathjen

Has anyone successfully connected a MCIMX28LCD to a iMX6 Sabre-SDB board?  and touchscreen works?

 

I can get video with:

video=mxcfb0:dev=lcd,800x600,if=RGB24

I also try this to get ts working:

video=mxcfb0:dev=lcd,800x600,if=RGB24 tsdev=max11801 calibration

 

I can see a driver loading at boot and dmesg output:

root@imx6qsabresd:~# dmesg |grep input

input: gpio-keys as /devices/platform/gpio-keys/input/input0

input: max11801_ts as /devices/platform/imx-i2c.1/i2c-1/1-0048/input/input1

input: mag3110 as /devices/virtual/input/input2

input: mma845x as /devices/virtual/input/input3

input: WM8962 Beep Generator as /devices/platform/imx-i2c.0/i2c-0/0-001a/input/input4

input: wm8962-audio DMIC as /devices/platform/soc-audio.5/sound/card0/input5

input: wm8962-audio Ext Spk as /devices/platform/soc-audio.5/sound/card0/input6

input: Logitech Trackball as /devices/platform/fsl-ehci.1/usb2/2-1/2-1:1.0/input/input7

generic-usb 0003:046D:C404.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech Trackball] on usb-fsl-ehci.1-1/input0

root@imx6qsabresd:~# cat /dev/input/event1

(Nothing here either)

^C

root@imx6qsabresd:~# cat /dev/input/event7   <--- usb trackball

�R�C� �c ����� �R c   � �R#c� �R��   � �R��� �R �   � �R#�� �RS�   � �Rc�� �R3�    � �R7�    � �Rn�� �RY�   ����� GR

G    � �R G    � �R#G � �R �   � �R �    � �R+� � �R    � �R�� � �R "    � �R!" � �RNA   � �RXA   

^^^^^^^^^^^^^^^ This garbage is DATA coming in from trackball - this is prefect!

 

 

On the board, TS_INT line goes low and TS_SDA goes crazy when screen is touched, so I think the MAX11801 IC is working and something is requesting data on I2C bus.  I see something on the i2c bus lines when the screen is touched, but the OS shows no sign of touch data.

 

xorg.conf.log shows max_11801_ts loading:

From xorg.conf.0.log:

[669885.688] (II) config/udev: Adding input device max11801_ts (/dev/input/event1)

[669885.688] (**) max11801_ts: Applying InputClass "evdev touchscreen catchall"

[669885.688] (II) Using input driver 'evdev' for 'max11801_ts'

[669885.689] (**) max11801_ts: always reports core events

[669885.689] (**) evdev: max11801_ts: Device: "/dev/input/event1"

[669885.689] (--) evdev: max11801_ts: Vendor 0 Product 0

[669885.689] (--) evdev: max11801_ts: Found absolute axes

[669885.689] (--) evdev: max11801_ts: Found x and y absolute axes

[669885.689] (--) evdev: max11801_ts: Found absolute touchscreen

[669885.689] (II) evdev: max11801_ts: Configuring as touchscreen

[669885.689] (**) evdev: max11801_ts: YAxisMapping: buttons 4 and 5

[669885.689] (**) evdev: max11801_ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200

[669885.689] (**) Option "config_info" "udev:/sys/devices/platform/imx-i2c.1/i2c-1/1-0048/input/input1/event1"

[669885.689] (II) XINPUT: Adding extended input device "max11801_ts" (type: TOUCHSCREEN, id 7)

[669885.689] (II) evdev: max11801_ts: initialized for absolute axes.

[669885.690] (**) max11801_ts: (accel) keeping acceleration scheme 1

[669885.690] (**) max11801_ts: (accel) acceleration profile 0

[669885.690] (**) max11801_ts: (accel) acceleration factor: 2.000

[669885.690] (**) max11801_ts: (accel) acceleration threshold: 4

[669885.691] (II) config/udev: Adding input device max11801_ts (/dev/input/mouse0)

[669885.691] (II) No input driver specified, ignoring this device.

[669885.691] (II) This device may have been added with another device file.

 

tslib doesn't seem to do be installed, nor evtest..  using xinput:

root@imx6qsabresd:~# xinput list

Unable to connect to X server

root@imx6qsabresd:~# export DISPLAY=:0

root@imx6qsabresd:~# xinput list

⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                        id=4    [slave  pointer  (2)]

⎜   ↳ max11801_ts                                       id=7    [slave  pointer  (2)]

⎜   ↳ Logitech Trackball                                id=8    [slave  pointer  (2)]

⎣ Virtual core keyboard                         id=3    [master keyboard (2)]

    ↳ Virtual core XTEST keyboard                       id=5    [slave  keyboard (3)]

    ↳ gpio-keys                                         id=6    [slave  keyboard (3)]

 

 

root@imx6qsabresd:~# xinput test 7

(NOTHING!!!!)

^C

root@imx6qsabresd:~# xinput test 8  <-- USB trackball

motion a[0]=178 a[1]=479

motion a[1]=479

motion a[1]=479

motion a[1]=479

...

motion a[0]=427

motion a[0]=428 a[1]=434

motion a[1]=435

motion a[1]=434

motion a[1]=435

^C

trackball works - pointer on screen moves too btw.

 

 

 

Looking at:

/home/scuba/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/3.0.35-r38.14/git/arch/arm/mach-mx6/board-mx6q_sabresd.c

        I2C_BOARD_INFO("max11801", 0x48),

        .platform_data = (void *)&max11801_mode,

        .irq = gpio_to_irq(SABRESD_TS_INT),

what is 0x48?

I2C_BOARD_INFO (dev_type,dev_addr);

Arguments

    dev_type: identifies the device type

    dev_addr: the device's address on the bus.

0x48.. shouldn't that be 0x68?

changed board-mx6q_sabresd.c:

        //I2C_BOARD_INFO("max11801", 0x48),

        //SJR - Max11801 datasheet says responds on 0x68,0x69,0x6a, or 0x6b

        //sabre board default (no pop R101 & R102) = 0x68

        I2C_BOARD_INFO("max11801", 0x68),

        .platform_data = (void *)&max11801_mode,

        .irq = gpio_to_irq(SABRESD_TS_INT),

 

with This change the TS_INT and TS_SDA lines went quiet.  THis must not be the problem.

 

 

there was a patch applied for max11801:

https://bugzilla.yoctoproject.org/show_bug.cgi?id=3573

> On the sources/meta-fsl-arm/recipes-kernel/linux/linux-imx_3.0.35.bb, REMOVE

> the line where this patch is indicated

>

> file://0005-ENGR00271359-Add-Multi-touch-support.patch

>

>

> Bake and test please

 

THis patch creates a mode 1, maybe try mode 0? in:

/home/scuba/fsl-community-bsp/build/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/3.0.35-r38.14/git/arch/arm/mach-mx6/board-mx6q_sabresd.c

static int max11801_mode = 1;    //try 0? there is a patch to max11801, 0 should disable it.

Is this the same as removing the patch?

 

 

ok, I think that's everything I've tried... the easy stuff.  I'm using Yocto and mostly core-image-sato, but have tried others. Linux 3.0.35_4.1 and imx6qsabresd.  I also tried Android on demo SD card and a linux (fsl-gnome?) image from freescale, but I can't run LTIB. 

 

I'm stumped - any ideas are welcome!  I need to test the functionality of the max11801 and its connection to the imx6 ASAP so I can begin my custom PCB layout - this is the last part to test!

 

Thanks,

Steve Rathjen

Outcomes