Need support to Set the primary Display on IMX8QM

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Need support to Set the primary Display on IMX8QM

709 Views
PunitTeksun
Contributor I

Hello Support Portal,

SOC: IMX8QM

We have connected the Dual Channel display on the LDB2 node and the Single Channel display on the LDB1 node. 

Dual Channel Display: 1920X720

Single Channel Display: 1280X800

The android is detecting both the display 

PunitTeksun_0-1681038419466.png

Currently Android considers Single channel 1280X800 Display as a primary display and a Dual channel  1920X720 display as a secondary display. 

What we want : 

Dual channel display - primary 

Single channel display - secondary 

We have tried following things

1) First we connect the Dual channel display and then after some time we connect the single-channel display but still, the single-channel display is considered as a primary display

Note: If we disable the single-channel display node from the device tree then the dual-channel display is considered the primary display. 

 

 

 

0 Kudos
Reply
1 Reply

691 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

This order is decided by the LDB driver probe order. The LDB1 connector should be first and then LDB2 connector.

You can find the display hal code in nxp-opensource/imx/display/display/DisplayManager.cpp

The code will set the first connector as primary device(using setPrimaryDisplay), you can judge the value of  *id to decide which device should be primary.

for (int i = 0; i < res->count_connectors; i++) {
        display = mKmsDisplays[*id];

        if (display->setDrm(drmFd, res->connectors[i]) != 0) {
            continue;
        }

        display->setDisplayLimitation(tileHwLimit);
        display->readType();
        display->readConnection();
        // primary display allow not connected.
        if (!display->connected() && (*foundPrimary || !main)) {
            (*id)++;
            continue;
        }

        if (display->openKms() != 0) {
            display->closeKms();
            (*id)++;
            continue;
        }

        // primary display is fixed by name.
        if (!*foundPrimary && main) {
            ALOGI("%s set %d as primary display", __func__, (*id));
            *foundPrimary = true;
            setPrimaryDisplay(*id);
        }

 

0 Kudos
Reply