• Archit Taneja's avatar
    drm/msm/mdp5: Assign 'right' mixer to CRTC state · 8480adac
    Archit Taneja authored
    Dynamically assign a right mixer to mdp5_crtc_state in the CRTC's
    atomic_check path. Assigning the right mixer has some constraints,
    i.e, only a few LMs can be paired together. Update mdp5_mixer_assign
    to handle these constraints.
    
    Firstly, we need to identify whether we need a right mixer or not.
    At the moment, there are 2 scenarios where a right mixer might be
    needed:
    - If any of the planes connected to this CRTC is too wide (i.e, is
      comprised of 2 hwpipes).
    - If the CRTC's mode itself is too wide (i.e, a 4K mode on HDMI).
    
    We implement both these checks in the mdp5_crtc_atomic_check(), and
    pass 'need_right_mixer' to mdp5_setup_pipeline.
    
    If a CRTC is already assigned a single mixer, and a new atomic commit
    brings in a drm_plane that needs 2 hwpipes, we can successfully commit
    this mode without requiring a full modeset, provided that we still use
    the previously assigned mixer as the left mixer. If such an assignment
    isn't possible, we'd need to do a full modeset. This scenario has been
    ignored for now.
    
    The mixer assignment code is a bit messy, considering we have at most
    4 LM instances in hardware. This can probably be re-visited later with
    simplified logic.
    Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    8480adac
mdp5_crtc.c 31.7 KB