• Imre Deak's avatar
    drm/i915: vlv: add runtime PM support · ddeea5b0
    Imre Deak authored
    Add runtime PM support for VLV, but leave it disabled. The next patch
    enables it.
    
    The suspend/resume sequence used is based on [1] and [2]. In practice we
    depend on the GT RC6 mechanism to save the HW context depending on the
    render and media power wells. By the time we run the runtime suspend
    callback the display side is also off and the HW context for that is
    managed by the display power domain framework.
    
    Besides the above there are Gunit registers that depend on a system-wide
    power well. This power well goes off once the device enters any of the
    S0i[R123] states. To handle this scenario, save/restore these Gunit
    registers. Note that this is not the complete register set dictated by
    [2], to remove some overhead, registers that are known not to be used are
    ignored. Also some registers are fully setup by initialization functions
    called during resume, these are not saved either. The list of registers
    can be further reduced, see the TODO note in the code.
    
    [1] VLV_gfx_clocking_PM_reset_y12w21d3 / "Driver D3 entry/exit"
    [2] VLV2_S0IXRegs
    
    v2:
    - unchanged
    v3:
    - fix s/GEN6_PMIIR/GEN6_PMIMR/ typo when saving/restoring registers
      (Ville)
    v4:
    - rebased on the previous patch fixing GEN register prefixes
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    [ rebased (according to v4) ]
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    ddeea5b0
i915_drv.h 81.8 KB