• Archit Taneja's avatar
    drm/msm: Call pm_runtime_enable/disable for newly created devices · cd792726
    Archit Taneja authored
    With the new device hierarchy for MDP5, we need to enable runtime PM
    for both the toplevel MDSS device and the MDP5 device itself. Enable
    runtime PM for the new devices.
    
    Since MDP4 and MDP5 now have different places where runtime PM is
    enabled, remove the previous pm_runtime_enable/disable calls, and
    squash them in the respective kms drivers.
    
    The new device hierarchy (as expressed in the DT bindings) has the GDSC
    tied only to the MDSS wrapper device. This GDSC needs to be enabled for
    accessing any register in the MDSS sub-blocks. Once every driver is
    runtime adapted, the GDSC will be enabled when any sub-block device
    calls runtime_get because of the parent-child relationship with MDSS.
    
    Until then, we call pm_runtime_get_sync() once for the MDSS device to
    ensure the GDSC is never disabled. This will be removed once all the
    drivers are runtime PM adapted.
    
    The error handling paths become a bit tricky when we call these runtime
    PM funcs. There doesn't seem to be any helper that checks if runtime PM
    is enabled already. Add bool variables in mdp4_kms/mdp5_kms structs to
    check if the driver had managed to call pm_runtime_enable before bailing
    out.
    Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    cd792726
msm_drv.c 21.4 KB