AnsweredAssumed Answered

2 LVDS screens on imx6 - How to get one fbdev device per screen?

Question asked by Fabien Pollet on Jan 21, 2020
Latest reply on Jan 27, 2020 by Fabien Pollet

Hello,

I've found many questions that looked similar but still could not find an answer for my problem.

I'm trying to set up 2 screens on imx6q. I want to be able to display different applications on each screen.

 

My current situation is as follows: the system bootsplash is displayed on both screens and there is only one fbdev device (/dev/fb0) which controls both screens.

 

I've read the second buffer must be activated with 'echo 0>/sys/class/graphics/fb2/blank' but there is no /sys/class/graphics/fb2 on my system.

 

Qt applications are displayed on one screen only. When I use QOpenGLContext::setScreen within a Qt test app to select LVDS0 or LVDS1, this has no effect and the application is always displayed on the same screen.

 

Here an extract from my device tree:

 

&ldb {
    status = "okay";

 

    lvds_channel0: lvds-channel@0 {
        crtc = "ipu1-di0";
        fsl,data-mapping = "spwg";
        fsl,data-width = <24>;
        status = "okay";
        primary;

 

        display-timings {
            kyoceratcg121wxlpx {
                clock-frequency = <71100000>;
                hactive = <1280>;
                vactive = <800>;
                hback-porch = <48>;
                hfront-porch = <80>;
                vback-porch = <15>;
                vfront-porch = <2>;
                hsync-len = <32>;
                vsync-len = <6>;
                hsync-active = <0>;
                vsync-active = <0>;
            };
        };
    };

 

    lvds_channel1: lvds-channel@1 {
        crtc = "ipu2-di1";
        fsl,data-mapping = "spwg";
        fsl,data-width = <24>;
        status = "okay";

 

        display-timings {
            kyoceratcg121wxlpx {
                clock-frequency = <71100000>;
                hactive = <1280>;
                vactive = <800>;
                hback-porch = <48>;
                hfront-porch = <80>;
                vback-porch = <15>;
                vfront-porch = <2>;
                hsync-len = <32>;
                vsync-len = <6>;
                hsync-active = <0>;
                vsync-active = <0>;
            };
        };
    };
};

 

And an extract from the system logs:

 

[    0.285717] etnaviv gpu-subsystem: bound 134000.gpu (ops 0x80857108)
[    0.285809] etnaviv gpu-subsystem: bound 130000.gpu (ops 0x80857108)
[    0.285894] etnaviv gpu-subsystem: bound 2204000.gpu (ops 0x80857108)
[    0.285908] etnaviv-gpu 134000.gpu: model: GC320, revision: 5007
[    0.317132] etnaviv-gpu 130000.gpu: model: GC2000, revision: 5108
[    0.347739] etnaviv-gpu 2204000.gpu: model: GC355, revision: 1215
[    0.347754] etnaviv-gpu 2204000.gpu: Ignoring GPU with VG and FE2.0
[    0.348247] [drm] Initialized etnaviv 1.1.0 20151214 for gpu-subsystem on minor 0
[    0.349820] imx-ipuv3 2400000.ipu: IPUv3H probed
[    0.350674] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.350679] [drm] No driver support for vblank timestamp query.
[    0.350811] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops 0x8084efac)
[    0.350906] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops 0x8084efac)
[    0.351005] imx-drm display-subsystem: bound imx-ipuv3-crtc.6 (ops 0x8084efac)
[    0.351104] imx-drm display-subsystem: bound imx-ipuv3-crtc.7 (ops 0x8084efac)
[    0.351589] imx-drm display-subsystem: bound 2000000.aips-bus:ldb (ops 0x8084f3ec)
[    0.364884] bootsplash: Loading splash file (3072160 bytes)
[    0.364925] bootsplash: Loaded (3072160 bytes, 1 pics, 1 blobs).
[    0.523045] Console: switching to colour frame buffer device 160x50
[    0.554466] imx-drm display-subsystem: fb0:  frame buffer device
[    0.555057] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1

 

Thank you!

Outcomes