Dear all,
i am using double LVDS in a similar sabre-auto board. Upgrading from 3.10.17 to 3.14.28, double (using separate fb's) LVDS (one fb for each LVDS) seems corrupted.
In particular
1) seems kernel bootargs as
setenv bootargs 'console=ttymxc3,115200 rootwait root=/dev/sda2 \
video=mxcfb0:dev=ldb,1024x768,if=RGB666,bpp=16 \
video=mxcfb1:off video=mxcfb2:dev=ldb,1280x800,if=RGB666,bpp=16'
are not taking effect.
2) Even if i used different IPU for each LVDS channel, LVDS1 at Kernel init phase, seems to impact previously inited LVDS0 destroying the image content, and adding flickering.
There are no errors in dmesg, /sys/class/graphic/fb modes seems correct.
[user@localhost ~]$ cat /sys/class/graphics/fb0/mode
U:1024x768p-65
[user@localhost ~]$ cat /sys/class/graphics/fb2/mode
U:1280x800p-52
Is there any known issue with ldb and kernel 3.14 ?
Thanks,
Best regards
angelo
Hi Alejandro,
well, yes, something seems changed at clock level, can't check right now, my solution works and had no time to go deeper. Will check eventually/hopefully in the near future.
Angelo,
there are boolean properties (see ldb.c):
dual-mode
split-mode
default should separate mode.
See also the new "display-timings" entries in the device tree, they allow to assign a display to a lvds port, setting proper display options.
Hello,
I'm using 3.14.28 too and I noticed that single/separate mode are no more supported.
I mean, in ldb.c there's no more references to these operational modes - how did you configure 2 lvds ports to display 2 different images?
Thanks in advance.
Regards,
Angelo
Hi,
some more info:
blanking one of the LVDS displays impact and distort the other LVDS display. This the effects:
LVDS0 is on IPU1-DI1, uses fb0 and fb1(overlay)
LVDS1 is on IPU2-DI1, uses fb2 and fb3(overlay)
1) blank and unblank LVDS0 (mapped to fb0), produces blank on both displays when blanking, correct image on fb0 and stretch second display to a double width image (on fb2 / LVDS1) when unblanking.
bash-3.2# echo 1 > /sys/class/graphics/fb0/blank
bash-3.2# echo 0 > /sys/class/graphics/fb0/blank
mxc_sdc_fb fb.25: 1024x768 h_sync,r,l: 60,220,40 v_sync,l,u: 10,21,7 pixclock=65002000 Hz
angelo: ipu_init_sync_panel(), rem = 19984000
angelo: ipu_init_sync_panel(), rem = 19984000
angelo: ipu_init_sync_panel(), ldb_di0_clk bc028780, ldb_di1_clk bc028800, di_parent bc028780
imx-ipuv3 2400000.ipu: use special clk parent
imx-ipuv3 2400000.ipu: disp=1, pixel_clk=65002000 75428571 parent=75428571 div=1
angelo: ldb_enable() : what mode we are ? ldb->spl_mode 0, ldb->dual_mode 0, chno 0
2) blank and unblank LVDS1 (mapped to fb2), produces sometime a warning on unblank :
echo 1 > /sys/class/graphics/fb2/blank
mxc_sdc_fb fb.26: MXCFB_WAIT_FOR_VSYNC: timeout 0
And sometime correct image on fb2 (correct width now) but corrupt first display with garbage and horizontal and vertical lines (on fb2 / LVDS1).
bash-3.2# echo 0 > /sys/class/graphics/fb2/blank
mxc_sdc_fb fb.26: 1280x800 h_sync,r,l: 156,2,2 v_sync,l,u: 19,2,2 pixclock=71103000 Hz
angelo: ipu_init_sync_panel(), rem1 = 42279000
angelo: ipu_init_sync_panel(), rem2 = 42279000
angelo: ipu_init_sync_panel(), ldb_di0_clk bc028780, ldb_di1_clk bc028800, di_parent bc028800
imx-ipuv3 2800000.ipu: use special clk parent
imx-ipuv3 2800000.ipu: disp=1, pixel_clk=71103000 75428571 parent=75428571 div=1
angelo: ldb_enable() : what mode we are ? ldb->spl_mode 0, ldb->dual_mode 0, chno 1
I finally found a way to avoid the issue, that seems related to the clocks applied to the ldb serializer interface.
For some reason, skipping this line for first display, allow to have applications
displayed correctly ion both displays.
linux-imx6/drivers/video/mxc/ldb.c (kernel 3.14.28)
serial_clk = ldb->spl_mode ? chan.vm.pixelclock * 7 / 2 :
chan.vm.pixelclock * 7;
clk_set_rate(ldb_di_sel_parent, serial_clk); // <<<
I am investigating further.
Regards
angelo
Hi Angelo,
Thanks for sharing your solution. It seems that the clock parent or divider is changed making one of the lvds panels to fail.
Have you checked that the frequency remains with no change after that line in both displays?
/Alejandro