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
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.
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);
}