[PATCH 00/24] drm/msm/mdp5: Mixer virtualization and 4K plane support

Archit Taneja architt at codeaurora.org
Thu Mar 23 10:27:53 UTC 2017


This patchset enables dynamic assignment of Layer Mixer blocks to CRTCs
in order to support wide resolution modes and planes.

The approach is similar to what was done for decoupling MDP5 planes from
the hwpipes (SSPPs). We go further by letting a CRTC comprise of 2 Layer
Mixers, one to scanout the left half of the image, and other the right
half. The same thing is then done for drm_planes. I.e, a plane can be
tied to 2 hwpipes.

Doing this enables us to support wide planes, and support wider modes
(like HDMI 4K modes).

Here's a quick description of what the patches do:

Patches #1 to #7 do mostly preparation/clean-ups to decouple CRTCs and
Layer Mixers.

Patch #8 subclasses CRTC state so that we can add our custom state to
our CRTCs.

Patch #9 adds the method to assign a mixer to a CRTC. We add a global
atomic state object that tracks which mixers are assigned to which
CRTCs.

Patches #10 to #13 moves more things to CRTC state rather than being
assigned to mdp5_crtc.

Patches #14 and #15 update the mdp5_crtc.c and mdp5_ctl.c code to work
with 2 Layer Mixers, but without the support of wide planes.

Patches #16 to #18 updates mdp5_plane so that a drm_plane can comprise
comprise of 2 hwpipes.

Patches #19 to #21 complete the CRTC code to let 2 LMs stage 2 hwpipes.

Patch #22 updates the mixer assignment code so that a CRTC can be assigned
2 LMs.

Patches #23 and #24 make some updates in mdp5_ctl to let a display
pipeline comprise of 2 LMs.

A 4.11 branch on which we can try out the changes on a DB820c:

https://github.com/boddob/linux/tree/mixer_virt_v1_4.11

Archit Taneja (24):
  drm/msm/mdp5: Bring back pipe_lock to mdp5_plane struct
  drm/msm/mdp5: describe LM instances in mdp5_cfg
  drm/msm/mdp5: Add structs for hw Layer Mixers
  drm/msm/mdp5: Start using mdp5_hw_mixer
  drm/msm/mdp5: Simplify LM <-> PP mapping
  drm/msm/mdp5: Clean up interface assignment
  drm/msm/mdp5: Remove the pipeline stuff in mdp5_ctl
  drm/msm/mdp5: subclass CRTC state
  drm/msm/mdp5: Prepare for dynamic assignment of mixers
  drm/msm/mdp5: Assign INTF and CTL in encoder's atomic_check()
  drm/msm/mdp5: Add more stuff to CRTC state
  drm/msm/mdp5: Start using parameters from CRTC state
  drm/msm/mdp5: Remove mixer/intf pointers from mdp5_ctl
  drm/msm/mdp5: Add a CAP for Source Split
  drm/msm/mdp5: Add optional 'right' Layer Mixer in CRTC state
  drm/msm/mdp5: Create mdp5_hwpipe_mode_set
  drm/msm/mdp5: Assign a 'right hwpipe' to plane state
  drm/msm/mdp5: Configure 'right' hwpipe
  drm/msm/mdp5: Prepare Layer Mixers for source split
  drm/msm/mdp5: Stage right side hwpipes on Right-side Layer Mixer
  drm/msm/mdp5: Stage border out on base stage if CRTC has 2 LMs
  drm/msm/mdp5: Assign 'right' mixer to CRTC state
  drm/msm/mdp5: Reset CTL blend registers before configuring them
  drm/msm/mdp5: Enable 3D mux in mdp5_ctl

 drivers/gpu/drm/msm/Makefile                    |   1 +
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.c         |  81 +++++
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_cfg.h         |   8 +
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_cmd_encoder.c |  30 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c        | 454 +++++++++++++++++++-----
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.c         | 192 ++++++----
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_ctl.h         |  21 +-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c     |  66 ++--
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c         | 121 +++++--
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h         |  53 ++-
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.c       | 172 +++++++++
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.h       |  47 +++
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_pipe.c        |   2 -
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_pipe.h        |   1 -
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c       | 340 ++++++++++++------
 drivers/gpu/drm/msm/mdp/mdp_kms.h               |   6 +
 16 files changed, 1256 insertions(+), 339 deletions(-)
 create mode 100644 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.c
 create mode 100644 drivers/gpu/drm/msm/mdp/mdp5/mdp5_mixer.h

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation



More information about the dri-devel mailing list