Hello,
We are using SDK v6AO.1.1, android 8.1, linux kernel 4.4.117, and vision_sdk to manage cameras.
We are not be able to have dual display and cameras working at the same time.
We just can have one android output with cameras or two outputs without them.
In our case, TV (HDMI) output as primary video output, and LCD1 output as external video.
Regarding overlays, VID2 is for cameras, VID3 for logo and VID1 and GFX for android outputs.
I’m going to talk with a specific case:
Android primary display TV → HDMI, externa display LCD1 → DVID
setprop ro.hwc.primary.conn HDMI
setprop ro.hwc.external.conn DVID
In vision_sdk, we just configure the overlays for the camera and the logo, VID2 and VID3 for the TV output.
When we have the dual displays with cameras, we can see in the video output, that we have the cameras, a teared image and this trace in dmesg:
[drm:omap_crtc_error_irq] *ERROR* tv: errors: 00008000
This trace means SYNC lost in TV output.
Debugging, we found that the trigger is the setting to 1 of the register GOLCD bit, the output without cameras.
If I comment the setting of GOLCD bit in omap_crtc_atomic_flush from omap_crtc.c, in the HDMI output I have the cameras and android working perfectly but, logically, the LCD1 display shows nothing.
But at the moment a write manually “devmem 0x58001040 w 0x0000132B” (mask GOLCD 0x00000020), the sync lost appears, the hdmi image turns teared and the LCD diplay shows images.
I don’t know what is the problem and I don’t understand why the GO bit in the other display desyncs the other one without an overlay in common.
Any idea?
Regards,
Miguel