diff options
author | Rodrigo Vivi <rodrigo.vivi@gmail.com> | 2013-07-11 17:44:58 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-07-18 03:59:41 -0400 |
commit | 2b28bb1b6440fadececc4cf8f29c55d510c6db09 (patch) | |
tree | 5c1176d0ef91bb094d3fc432a38d1eb8af19255d /drivers/gpu/drm/i915/intel_drv.h | |
parent | b84a1cf8950ed075c4ab2630514d4caaae504176 (diff) |
drm/i915: Enable/Disable PSR
Adding Enable and Disable PSR functionalities. This includes setting the
PSR configuration over AUX, sending SDP VSC DIP over the eDP PIPE config,
enabling PSR in the sink via DPCD register and finally enabling PSR on
the host.
This patch is based on initial PSR code by Sateesh Kavuri and Kumar Shobhit
but in a different implementation.
v2: * moved functions around and changed its names.
* removed VSC DIP unset from disable.
* remove FBC wa.
* don't mask LSPS anymore.
* incorporate new crtc usage after a rebase.
v3: Make a clear separation between Sink (Panel) and Source (HW) enabling.
v4: Fix identation and other style issues raised by checkpatch (by Paulo).
v5: Changes according to Paulo's review:
static on write_vsc;
avoid using dp_to_dev when already calling dp_to_dig_port;
remove unecessary TP default time setting;
remove unecessary interrupts disabling;
remove unecessary wait_for_vblank when disabling psr;
v6: remove unecessary wait_for_vblank when writing vsc;
v7: adding setup once function to avoid unnecessarily write to vsc
and set debug_ctl every time we enable or disable psr.
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Credits-by: Sateesh Kavuri <sateesh.kavuri@intel.com>
Credits-by: Shobhit Kumar <shobhit.kumar@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: Shobhit Kumar <shobhit.kumar@intel.com>
[danvet: Apply Paulo's suggestion for unconditionally clearing the
control register when writing the DIP.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h index d25726d5307f..ff36a40103eb 100644 --- a/drivers/gpu/drm/i915/intel_drv.h +++ b/drivers/gpu/drm/i915/intel_drv.h | |||
@@ -499,6 +499,7 @@ struct intel_dp { | |||
499 | int backlight_off_delay; | 499 | int backlight_off_delay; |
500 | struct delayed_work panel_vdd_work; | 500 | struct delayed_work panel_vdd_work; |
501 | bool want_panel_vdd; | 501 | bool want_panel_vdd; |
502 | bool psr_setup_done; | ||
502 | struct intel_connector *attached_connector; | 503 | struct intel_connector *attached_connector; |
503 | }; | 504 | }; |
504 | 505 | ||
@@ -834,4 +835,7 @@ extern bool intel_set_pch_fifo_underrun_reporting(struct drm_device *dev, | |||
834 | enum transcoder pch_transcoder, | 835 | enum transcoder pch_transcoder, |
835 | bool enable); | 836 | bool enable); |
836 | 837 | ||
838 | extern void intel_edp_psr_enable(struct intel_dp *intel_dp); | ||
839 | extern void intel_edp_psr_disable(struct intel_dp *intel_dp); | ||
840 | |||
837 | #endif /* __INTEL_DRV_H__ */ | 841 | #endif /* __INTEL_DRV_H__ */ |