aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2013-11-05 01:45:05 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-11-08 12:10:00 -0500
commited8546ac1f99b850879f07b1e9b06b42fb0a36d9 (patch)
treeac9dd66748341d1ea59869d869d631e71e864e4d /drivers/gpu/drm/i915
parent2a114cc1b964ba0208aa6858d01cee82ac026ec6 (diff)
drm/i915/bdw: Support eDP PSR
Broadwell PSR support is a superset of Haswell. With this simple register base calculation, everything that worked on HSW for eDP PSR should work on BDW. Note that Broadwell provides additional PSR support. This is not addressed at this time. v2: Make the HAS_PSR include BDW v3: Use the correct offset (I had incorrectly used one from my faulty brain) (Art!) v4: It helps if you git add v5: Be explicit about not setting min link entry time for BDW. This should be no functional change over v4 (Jani) Reviewed-by: Art Runyan <arthur.j.runyan@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h2
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h4
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c3
3 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5deeb19551a4..9944b261b6a8 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1810,7 +1810,7 @@ struct drm_i915_file_private {
1810#define HAS_DDI(dev) (INTEL_INFO(dev)->has_ddi) 1810#define HAS_DDI(dev) (INTEL_INFO(dev)->has_ddi)
1811#define HAS_POWER_WELL(dev) (IS_HASWELL(dev) || IS_BROADWELL(dev)) 1811#define HAS_POWER_WELL(dev) (IS_HASWELL(dev) || IS_BROADWELL(dev))
1812#define HAS_FPGA_DBG_UNCLAIMED(dev) (INTEL_INFO(dev)->has_fpga_dbg) 1812#define HAS_FPGA_DBG_UNCLAIMED(dev) (INTEL_INFO(dev)->has_fpga_dbg)
1813#define HAS_PSR(dev) (IS_HASWELL(dev)) 1813#define HAS_PSR(dev) (IS_HASWELL(dev) || IS_BROADWELL(dev))
1814 1814
1815#define INTEL_PCH_DEVICE_ID_MASK 0xff00 1815#define INTEL_PCH_DEVICE_ID_MASK 0xff00
1816#define INTEL_PCH_IBX_DEVICE_ID_TYPE 0x3b00 1816#define INTEL_PCH_IBX_DEVICE_ID_TYPE 0x3b00
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index f99c8c5b7bd0..ffe88745898c 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1961,8 +1961,8 @@
1961#define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B) 1961#define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B)
1962#define VSYNCSHIFT(trans) _TRANSCODER(trans, _VSYNCSHIFT_A, _VSYNCSHIFT_B) 1962#define VSYNCSHIFT(trans) _TRANSCODER(trans, _VSYNCSHIFT_A, _VSYNCSHIFT_B)
1963 1963
1964/* HSW eDP PSR registers */ 1964/* HSW+ eDP PSR registers */
1965#define EDP_PSR_BASE(dev) 0x64800 1965#define EDP_PSR_BASE(dev) (IS_HASWELL(dev) ? 0x64800 : 0x6f800)
1966#define EDP_PSR_CTL(dev) (EDP_PSR_BASE(dev) + 0) 1966#define EDP_PSR_CTL(dev) (EDP_PSR_BASE(dev) + 0)
1967#define EDP_PSR_ENABLE (1<<31) 1967#define EDP_PSR_ENABLE (1<<31)
1968#define EDP_PSR_LINK_DISABLE (0<<27) 1968#define EDP_PSR_LINK_DISABLE (0<<27)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f39856e12094..46837a0f6f6f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1611,6 +1611,7 @@ static void intel_edp_psr_enable_source(struct intel_dp *intel_dp)
1611 uint32_t max_sleep_time = 0x1f; 1611 uint32_t max_sleep_time = 0x1f;
1612 uint32_t idle_frames = 1; 1612 uint32_t idle_frames = 1;
1613 uint32_t val = 0x0; 1613 uint32_t val = 0x0;
1614 const uint32_t link_entry_time = EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES;
1614 1615
1615 if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT) { 1616 if (intel_dp->psr_dpcd[1] & DP_PSR_NO_TRAIN_ON_EXIT) {
1616 val |= EDP_PSR_LINK_STANDBY; 1617 val |= EDP_PSR_LINK_STANDBY;
@@ -1621,7 +1622,7 @@ static void intel_edp_psr_enable_source(struct intel_dp *intel_dp)
1621 val |= EDP_PSR_LINK_DISABLE; 1622 val |= EDP_PSR_LINK_DISABLE;
1622 1623
1623 I915_WRITE(EDP_PSR_CTL(dev), val | 1624 I915_WRITE(EDP_PSR_CTL(dev), val |
1624 EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES | 1625 IS_BROADWELL(dev) ? 0 : link_entry_time |
1625 max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT | 1626 max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT |
1626 idle_frames << EDP_PSR_IDLE_FRAME_SHIFT | 1627 idle_frames << EDP_PSR_IDLE_FRAME_SHIFT |
1627 EDP_PSR_ENABLE); 1628 EDP_PSR_ENABLE);