Hi team,
We are working with an i.MX 95 19x19 EVK and are trying to implement an LVDS display handover between the M7 and A55/Linux, with the following intended architecture:
- M7: Initially owns and drives the LVDS display.
- A55/Linux: Subsequently takes control of the display after Linux boots.
Current Implementation
As an initial phase of development, we have configured the LVDS display to be initialized and controlled by the M7. The M7 successfully initializes the display and fills the framebuffer with a blue color, which is correctly displayed on the LVDS panel.
We modified the following resources from their default A55 ownership to M7 ownership, while providing access to A55:
- DC
- DC0
- DC1
- DC_CMDSEQ
- DC_DISPENG
- DC_DISPENG_INT
- DC_FL0
- DC_FL1
- DC_INT_CTL
- DC_PIXENGINE
- DC_XPC
- DC_YUV0
- DC_YUV1
- DC_YUV2
- DC_YUV3
- BLK_CTRL_DISPLAYMIX
- LVDS
- MIPI_PHY
- LDB_PLL
- CLOCK_DISP1PIX
- VIDEO_PLL1
- PIN_I2C2_SCL
- PIN_I2C2_SDA
- LPI2C2
Observed Behavior
The behavior is currently as follows:
- The M7 boots and successfully initializes the display.
- The blue-filled framebuffer is displayed correctly on the LVDS panel.
- The display remains visible while the M7 is running.
- The A55/Linux boot process then starts.
- After the Linux kernel starts, the display goes blank.
- When using the following device tree:fdtfile imx95-19x19-evk-it6263-lvds1.dtb Linux consistently stops progressing during kernel boot.
We do not observe an obvious kernel panic or a clear error message on the console. The boot process simply stops progressing.
Resource Ownership Investigation
Based on our understanding, resource ownership is statically configured through the System Manager configuration, and ownership cannot be dynamically transferred between Logical Machines through an SCMI message.
We therefore investigated whether the display resources could be assigned to both the M7 and A55.
However, some of the critical DC resources do not appear to support dual ownership, particularly:
- DC
- DC_XPC
- DC_YUV0
- DC_YUV1
- DC_YUV2
- DC_YUV3
- DC_FL0
- DC_FL1
- DC_2DBLIT
This raises the possibility that Linux may be attempting to access one or more display resources that are exclusively owned by the M7 during its DRM/DPU or IT6263/LVDS initialization.
Questions
Could you please help us clarify the following?
1. Is it expected for Linux to hang if resources such as DC, DC_XPC, DC_YUV*, DC_FL*, or DC_2DBLIT are exclusively owned by the M7?
2. Which display resources are accessed by A55/Linux during Linux boot and during DRM/DPU and IT6263/LVDS initialization?
In particular, we would like to understand the exact resources accessed by:
- Linux DRM/DPU
- Display Controller (DC)
- IT6263 driver
- LVDS/LDB driver
- Display clock/PLL configuration
3. Is there a supported System Manager resource ownership configuration that allows the following sequence?
- M7 initializes and drives the LVDS display.
- A55/Linux boots normally.
- A55/Linux subsequently takes control of the display.
- Both Logical Machines can access the resources required for the handover.
4. If the DC resources cannot be shared between the M7 and A55, what is the recommended architecture for M7 display and A55/Linux coexistence or display handover?
5. Does A55/Linux require ownership of the complete DC resource hierarchy even if Linux is not intended to actively drive the display during the initial stage of boot?
6. Are any additional configuration changes required in the following areas for this use case?
- System Manager resource configuration
- TRDC permissions
- SCMI configuration
- Linux device tree
- Display/LVDS configuration
7. Could the Linux boot hang be caused by A55/Linux attempting to access a display resource that is owned by the M7, particularly during initialization of the IT6263/LVDS display path?
Our primary objective at this stage is to identify the exact display resources that Linux accesses during early boot and during DRM/DPU and IT6263/LVDS initialization, and determine whether those resources can coexist with M7 ownership.
We have attached the System Manager configuration (.cfg) file and Linux boot log for reference.
Any guidance on the supported resource ownership configuration, display resource dependencies, or recommended architecture for implementing M7/A55 LVDS display handover would be greatly appreciated.
Thank you.