Capacitive Touch Display 7 Inch Parallel with panel-simple driver

I’m trying to use the Capacitive Touch Display 7 Inch Parallel with a Colibri iMX6 DualLite and a mainline kernel.

First I installed the Linux LXDE Image 2.8 and followed the [instructions to set up the display] (First Steps with Capacitive Touch Display 7" Parallel | Toradex Developer Center). Everything works as expected, therefore I assume the hardware is fine.

My ultimate goal is to run this SOM with a custom BSP and in particular with a kernel that is as close to
mainline as possible. I’m currently using mainline kernel 4.14 and added the display timings to the panel-simple driver as in [this commit] (linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules)

I also enabled the panel-simple driver in my kernel config (full config attached), replaced the panel node in imxdl-colibri-eval-v3.dts with

panel_rgb: panel {
	compatible = "logictechno,lt161010-2nhc";
	backlight = <&backlight>;
    power-supply = <&reg_3p3v>;
    
	port {
		lcd_panel_in: endpoint {
			remote-endpoint = <&lcd_display_out>;
		};
	};
};

and added the Atmel maXTouch controller to the device tree as described [here] (First Steps with Capacitive Touch Display 7" Parallel | Toradex Developer Center)

The touch controller works as expected. The display also works but it shows some strange artefacts similar to those reported [here] (Color artifacts appearing on LCD - colibri iMX6 linux eglfs - Technical Support - Toradex Community):

[upload|EpTJjH14xQraBoCxmeX57UKVnrU=]

[upload|2V9eo9Ic1dWLrTjy625Bmr1vChw=]

I checked the timings in [panel-simple.c] (panel-simple.c « panel « drm « gpu « drivers - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules) and they seem to match the [datasheet of the display] (https://docs.toradex.com/104497-7-inch-parallel-capacitive-touch-display-800x480-datasheet.pdf). I also tried many combinations of alternative .flags and .bus_flags without any effect.

Kernel output:

dmesg | grep display
[    1.384201] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops 0xc0845804)
[    1.391766] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops 0xc0845804)
[    1.399181] imx-drm display-subsystem: bound display@di0 (ops 0xc08459e0)
[    1.423735] imx-drm display-subsystem: bound 120000.hdmi (ops 0xc0846170)
[    1.512304] imx-drm display-subsystem: fb0:  frame buffer device
[    1.520760] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1

Kernel version:

4.14.146-rt67

Has anyone ever used the Capacitive Touch Display 7 Inch Parallel with the panel-simple driver (instead of the MXC LCD driver with mode FusionF07A)? Do you have any idea what I need to change in order to get rid of this rendering artefacts?

Thanks,
Tobias

Hi @tobias and Welcome to the Toradex Community!

Could you provide your kernel version ( uname -a ) and your kernel config?

Has anyone ever used the Capacitive Touch Display 7 Inch Parallel with the panel-simple driver (instead of the MXC LCD driver with mode FusionF07A)? Do you have any idea what I need to change in order to get rid of this rendering artefacts?

Why do you want to do this?
What is your application?

Best regards,
Jaski

Hi @jaski.tx

I modified the original post and attached the full kernel config there. The kernel version is 4.14.146-rt67.

Why do you want to do this?
What is your application?

I want to use a mainline kernel (well, as close to mainline as possible) for various reasons and the mxc lcd driver is not part of Linux mainline. Since you [submitted the mentioned patch to upstream] ([PATCH v1 2/2] drm/panel: simple: add display timings for logic technologies displays - Marcel Ziswiler) and [apparently use it for your Vybrid modules] (Display Output, Resolution and Timings (Linux) | Toradex Developer Center), I tought I could also use it for a Colibri iMX6DL.

Best regards,
Tobias

I don’t know about 4.14 but in our mainline 5.4 based kernel that works just fine and is e.g. used in the Toradex Easy Installer 2.0b4.

http://git.toradex.com/cgit/meta-toradex-bsp-common.git/tree/recipes-kernel/linux/linux-toradex-mainline_5.4.bb?h=thud

It was indeed a problem with the pixelclock polarity. The information about the pixelclock polarity (or more generic: the bus flags) is not passed from the panel-simple driver to the imx parallel-display driver. I didn’t test it with a recent 5.x kernel, but it seems that this is not yet fixed in mainline master branch.

To fix it, I changed the imx parallel-display driver so that it reads out the bus_flags from the panel-simple driver in imx_pd_bind(), inspired by [this patch series from @stefan.tx] (LKML: Stefan Agner: [PATCH v2 0/8] drm/bridge: add bus flag support).

I close this question as it is an issue in upstream.

Perfect that you found a solution. Thanks for your feedback.