AnsweredAssumed Answered

i.MX6Q Dual channel LVDS output in kernel 3.10.53 / 3.14.52

Question asked by Marc Chapdelaine on May 3, 2016
Latest reply on May 5, 2016 by fulin chen

I have a custom board with two 1920x1080 60Hz screens, one is using the parallel display and the other one is using the two LVDS channels outputs.

 

The board is working fine with the 3.10.17 kernel version. In the 3.10.53 and 3.14.52, I recreated the device tree (one for each kernel version). The parallel display is working properly. But the LVDS screen is working only at 1920x1080 25Hz.

 

In the "ldb" section of the device tree, I added the "split-mode" to use both LVDS outputs for a single display as documented inside the "Documentation/devicetree/bindings/video/fsl,ldb.txt" file. In the kernel logs, I have a line " ldb ldb.14: LVDS channel1 is not online" but if I define it I got a message telling me that lvds_channel1 is ignored in split-mode.

 

I'm providing traces and device tree sections for the LVDS video output:

 

Kernel version, kernel command line, output video mode and kernel trace

# uname -a

Linux NeoTrans 3.14.52-135322-g5f6f0a5-dirty #3 SMP PREEMPT Mon May 2 15:37:10 EDT 2016 armv7l GNU/Linux

# cat /proc/cmdline

console=ttymxc3,115200 mtdparts=gpmi-nand:15m(kernel_a),1m(dtb_a),15m(kernel_b),1m(dtb_b),128k(startup_a),128k(startup_b),16m(ramdisk),-(free);spi32765.0:768k(uboot),64k(ubenv_a),64k(ubenv_b),-(free) rdinit=/linuxrc rootfstype=ext4 rw rootwait root=/dev/mmcblk2p3 video=mxcfb2:dev=ldb,1920x1080M@60,if=RGB24,bpp=24 video=mxcfb0:dev=lcd,1920x1080M@60,if=RGB24,bpp=24 ldb=spl0 consoleblank=0 fbmem=48M

# cat /sys/class/graphics/fb2/fsl_disp_dev_property

ldb

# cat /sys/class/graphics/fb2/mode

# cat /sys/class/graphics/fb2/modes

U:1920x1080p-25

#

# dmesg | grep ldb

Kernel command line: console=ttymxc3,115200 mtdparts=gpmi-nand:15m(kernel_a),1m(dtb_a),15m(kernel_b),1m(dtb_b),128k(startup_a),128k(startup_b),16m(ramdisk),-(free);spi32765.0:768k(uboot),64k(ubenv_a),64k(ubenv_b),-(free) rdinit=/linuxrc rootfstype=ext4 rw rootwait root=/dev/mmcblk2p3 video=mxcfb2:dev=ldb,1920x1080M@60,if=RGB24,bpp=24 video=mxcfb0:dev=lcd,1920x1080M@60,if=RGB24,bpp=24 ldb=spl0 consoleblank=0 fbmem=48M

ldb ldb.14: split mode

ldb ldb.14: split mode or dual mode, ignoring second output

mxc_sdc_fb fb.19: registered mxc display driver ldb

ldb ldb.14: LVDS channel1 is not online

Device tree sections for kernel 3.14.52

/ {

        aliases {

                mxcfb0 = &mxcfb1;

                mxcfb1 = &mxcfb2;

                mxcfb2 = &mxcfb3;

                mxcfb3 = &mxcfb4;

        };

 

        mxcfb1: fb@0 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

 

        mxcfb2: fb@1 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "hdmi";

                interface_pix_fmt = "RGB24";

                mode_str ="1920x1080M@60";

                default_bpp = <24>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

        mxcfb3: fb@2 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "lcd";

                interface_pix_fmt = "RGB565";

                mode_str ="CLAA-WVGA";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

 

        mxcfb4: fb@3 {

                compatible = "fsl,mxc_sdc_fb";

                disp_dev = "ldb";

                interface_pix_fmt = "RGB666";

                default_bpp = <16>;

                int_clk = <0>;

                late_init = <0>;

                status = "disabled";

        };

        lcd@0 {

                compatible = "fsl,lcd";

                ipu_id = <0>;

                disp_id = <0>;

                default_ifmt = "RGB24";

                pinctrl-names = "default";

                pinctrl-0 = <&pinctrl_ipu1_1>;

                status = "okay";

        };

};

 

&ldb {

        status = "okay";

        split-mode;

 

        lvds-channel@0 {

                fsl,data-mapping = "spwg";

                fsl,data-width = <24>;

                primary;

                status = "okay";

 

                display-timings {

                        native-mode = <&timing0>;

                        timing0: hsd100pxn1 {

                                clock-frequency = <65000000>;

                                hactive = <1920>;

                                vactive = <1080>;

                                hback-porch = <220>;

                                hfront-porch = <40>;

                                vback-porch = <21>;

                                vfront-porch = <7>;

                                hsync-len = <60>;

                                vsync-len = <10>;

                        };

                };

        };

};

Outcomes