• Archit Taneja's avatar
    drm/msm/mdp5: Set up runtime PM for MDSS · 774e39ee
    Archit Taneja authored
    MDSS represents the top level wrapper that contains MDP5, DSI, HDMI and
    other sub-blocks. W.r.t device heirarchy, it's the parent of all these
    devices. The power domain of this device is actually tied to the GDSC
    hw. When any sub-device enables its PD, MDSS's PD is also enabled.
    
    The suspend/resume ops enable the top level clocks that end at the MDSS
    boundary. For now, we're letting them all be optional, since the child
    devices anyway hold a ref to these clocks.
    
    Until now, we'd called a runtime_get() during probe, which ensured that
    the GDSC was always on. Now that we've set up runtime PM for the children
    devices, we can get rid of this hack.
    
    Note: that the MDSS device is the platform_device in msm_drv.c. The
    msm_runtime_suspend/resume ops call the funcs that enable/disable
    the top level MDSS clocks. This is different from MDP4, where the
    platform device created in msm_drv.c represents MDP4 itself. It would
    have been nicer to hide these differences by adding new kms funcs, but
    runtime PM needs to be enabled before kms is set up (i.e, msm_kms_init
    is called).
    Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    774e39ee
msm_drv.c 27.3 KB