This document is aimed to introduce seamless switch on rear view camera function in android P9 auto, and this can also be referenced for sharing dpu(display process unit) between A core and m4 core on imx8qxp/qm platform.
OS:
- Android p9 auto beta. (linux needs some modifies).
- SDK_2.5.1_MEK-MIMX8QX for m4 core.
Hardware platform:
- imx8qxp/qm mek board
- IT6263 lvds to hdmi cable.
- max9286 deserializer board.
- ov16035 camera.
Hardware block:

Imx8qxp dpu block, for imx8qm there are two dpus:

Android/Linux and M4 shared dpu path:

The switch function is done by framegen0 unit in dpu, framegen unit can select 7 modes:
- primary src only
- second src only
- primary on second
- second on primary
- .....etc.
for more details, please refer to the kernel codes at include/video/dpu.h, fgdm_t type.
Seamless switch booting flow:

Patches contain three main parts:
- Linux kernel: remove init or configure codes of dpu units and lvds used by m4 core, add ui ready rpmsg pipe.
- M4 code: modify dpu pipes, add ui ready rpmsg handle.
- AOSP init.rc scripts: add sending ui ready message scripts.