Two parallel RGB interfaces on imx6 with OE

Hello,
In my project, I need to setup two displays on parallel RGB bus using IPU. I modified DTS to use 24bpp and added definition of pinout from datasheet ([DTS file][1])
When I compile kernel and flash it, display does not work and in log I see this

root@colibri-imx6:~# dmesg | grep fb
[    0.000000] Kernel command line: enable_wait_mode=off galcore.contiguousSize=50331648 ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 rootwait fec_mac=00:14:2d:4a:58:ba consoleblank=0 no_console_suspend=1 console=tty1 console=ttymxc0,115200n8 video=mxcfb0:dev=lcd,1024x600M@60,if=RGB24 video=mxcfb1:dev=lcd,1024x600M@60,if=RGB24 fbmem=64M
[    0.139929] fbcvt: Aspect ratio not CVT standard
[    0.139963] fbcvt: 1024x600@60: CVT Name - Not a CVT standard - 0.614 Mega Pixel Image
[    0.140008] mxc_sdc_fb fb.18: registered mxc display driver lcd
[    0.145167] mxc_sdc_fb fb.18: 1024x600 h_sync,r,l: 104,40,144  v_sync,l,u: 10,11,3 pixclock=49000000 Hz
[    0.196849] mxc_sdc_fb fb.18: 1024x600 h_sync,r,l: 104,40,144  v_sync,l,u: 10,11,3 pixclock=49000000 Hz
[    0.254817] fbcvt: Aspect ratio not CVT standard
[    0.257061] fbcvt: 1024x600@60: CVT Name - Not a CVT standard - 0.614 Mega Pixel Image
[    0.261582] mxc_sdc_fb fb.19: registered mxc display driver lcd
[    0.263928] mxc_sdc_fb fb.19: ipu0-di0 already in use
[    0.266212] mxc_sdc_fb: probe of fb.19 failed with error -16
[    4.070499] platform caam_sm: [0016] a1 87 2f b9 ae 30 fb 6e

It looks like Linux tries to setup the second display, but it uses some wrong pin(s). Maybe I forgot to remove some pins from other definitions? Why it says ipu0-di0 should not there be ipu0-di1? Is it possible to have two parallel RGBs one one IPU?
[1]: https://share.toradex.com/tlkgb614fk7rxy2?direct

Hi

The HW is capable to drive two parallel RGB displays. However the current implementation in the Linux kernel does not allow for a more than one instance of a IPU output driver as it uses the driver name (and not a driver instance name) to match a framebuffer with an output. That is also the reason for the ipu0-di0 error message.

The attached patch works around the issue in a rather hackish way but I guess it at least works.


While trying that out I found that your device-tree is having for most (if not all) pins for the second display pinmux conflicts.

This is the toplevel device-tree file which I ended up with. With that I get output on the first LCD. As I don’t have a relevant HW to connect a second LCD I used an oscilloscope to at least sanity test some pins.

Max

Hi Max,
thank you for your answer it helped me a lot. I did not know that I have to change the source of a kernel that way. Also thanks for correcting the DTS file. It was not worknig from start but now I noticed that the DE pin was not present in definition but when I added it display started to work. So thank you a lot for your help.
Best wishes,
Tomáš