AnsweredAssumed Answered

Two LVDS channels in separate mode on i.MX6Q running Linux v3.14

Question asked by Hector Palacios on Oct 28, 2015
Latest reply on Feb 26, 2016 by Hector Palacios

Hello,

 

I'm running Freescale's BSP for Linux kernel v3.14 (branch imx_3.14.28_1.0.0_ga) and wanted to have two LVDS channels in separate mode:

IPU1:DI0 --> LVDS0

IPU1:DI1 --> LVDS1

 

I have my LVDS display working if I only enable one channel, either LVDS0 or LVDS1.

I also have dual display working if I enable both channels and use the property dual-mode, thus having cloned image on LVDS0 and LVDS1.

However, if I enable both LVDS channels in separate mode (without either property dual-mode or split-mode the kernel hangs.

My device tree (omitting some data) looks like:

&ldb {
    lvds-channel@0 {
        crtc = "ipu1-di0";
        status = "okay";
        primary;
    };

    lvds-channel@1 {
        crtc = "ipu1-di1";
        status = "okay";
    };
};

 

The kernel hangs around the fb_set_var() call in this piece of code in the function mxcfb_register() of mxc_ipuv3_fb.c driver:

if (!mxcfbi->late_init) {
    fbi->var.activate |= FB_ACTIVATE_FORCE;
    console_lock();
    fbi->flags |= FBINFO_MISC_USEREVENT;
    ret = fb_set_var(fbi, &fbi->var);
    fbi->flags &= ~FBINFO_MISC_USEREVENT;
    console_unlock();
    if (ret < 0) {
        dev_err(fbi->device, "Error fb_set_var ret:%d\n", ret);
        goto err3;
    }
    ...

 

Has anybody tested LVDS0 and LVDS1 in separate mode?

Outcomes