Seamless switch between Android/Linux and M4 core using dpu on imx8qxp/qm.

Document created by Bert Xu Employee on Mar 4, 2019
Version 1Show Document
  • View in full screen mode

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.



  • 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:

  1. Linux kernel: remove init or configure codes of dpu units and lvds used by m4 core, add ui ready rpmsg pipe.
  2. M4 code: modify dpu pipes, add ui ready rpmsg handle.
  3. AOSP init.rc scripts: add sending ui ready message scripts.
5 people found this helpful