diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2015-03-10 11:02:21 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-03-17 17:30:21 -0400 |
commit | f4998963f2fbd4a22ae77624bc810b21208a8803 (patch) | |
tree | b0ea6be308bdcb941479678b1347804ccd4b5ba8 | |
parent | 15665979ca601f483cd5caca851620d2c2845125 (diff) |
drm/i915: Use FW_WM() macro for older gmch platforms too
Use the FW_WM() macro from the VLV wm code to polish up the wm
code for older gmch platforms.
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 42 |
2 files changed, 24 insertions, 22 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 8ff039d0f546..793ed6364383 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h | |||
@@ -4121,8 +4121,8 @@ enum skl_disp_power_wells { | |||
4121 | #define DSPFW_SPRITEB_MASK_VLV (0xff<<16) /* vlv/chv */ | 4121 | #define DSPFW_SPRITEB_MASK_VLV (0xff<<16) /* vlv/chv */ |
4122 | #define DSPFW_CURSORA_SHIFT 8 | 4122 | #define DSPFW_CURSORA_SHIFT 8 |
4123 | #define DSPFW_CURSORA_MASK (0x3f<<8) | 4123 | #define DSPFW_CURSORA_MASK (0x3f<<8) |
4124 | #define DSPFW_PLANEC_SHIFT_OLD 0 | 4124 | #define DSPFW_PLANEC_OLD_SHIFT 0 |
4125 | #define DSPFW_PLANEC_MASK_OLD (0x7f<<0) /* pre-gen4 sprite C */ | 4125 | #define DSPFW_PLANEC_OLD_MASK (0x7f<<0) /* pre-gen4 sprite C */ |
4126 | #define DSPFW_SPRITEA_SHIFT 0 | 4126 | #define DSPFW_SPRITEA_SHIFT 0 |
4127 | #define DSPFW_SPRITEA_MASK (0x7f<<0) /* g4x */ | 4127 | #define DSPFW_SPRITEA_MASK (0x7f<<0) /* g4x */ |
4128 | #define DSPFW_SPRITEA_MASK_VLV (0xff<<0) /* vlv/chv */ | 4128 | #define DSPFW_SPRITEA_MASK_VLV (0xff<<0) /* vlv/chv */ |
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index ac7777217440..bb359905d805 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -301,6 +301,9 @@ static void chv_set_memory_pm5(struct drm_i915_private *dev_priv, bool enable) | |||
301 | mutex_unlock(&dev_priv->rps.hw_lock); | 301 | mutex_unlock(&dev_priv->rps.hw_lock); |
302 | } | 302 | } |
303 | 303 | ||
304 | #define FW_WM(value, plane) \ | ||
305 | (((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK) | ||
306 | |||
304 | void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable) | 307 | void intel_set_memory_cxsr(struct drm_i915_private *dev_priv, bool enable) |
305 | { | 308 | { |
306 | struct drm_device *dev = dev_priv->dev; | 309 | struct drm_device *dev = dev_priv->dev; |
@@ -661,7 +664,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc) | |||
661 | pixel_size, latency->display_sr); | 664 | pixel_size, latency->display_sr); |
662 | reg = I915_READ(DSPFW1); | 665 | reg = I915_READ(DSPFW1); |
663 | reg &= ~DSPFW_SR_MASK; | 666 | reg &= ~DSPFW_SR_MASK; |
664 | reg |= wm << DSPFW_SR_SHIFT; | 667 | reg |= FW_WM(wm, SR); |
665 | I915_WRITE(DSPFW1, reg); | 668 | I915_WRITE(DSPFW1, reg); |
666 | DRM_DEBUG_KMS("DSPFW1 register is %x\n", reg); | 669 | DRM_DEBUG_KMS("DSPFW1 register is %x\n", reg); |
667 | 670 | ||
@@ -671,7 +674,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc) | |||
671 | pixel_size, latency->cursor_sr); | 674 | pixel_size, latency->cursor_sr); |
672 | reg = I915_READ(DSPFW3); | 675 | reg = I915_READ(DSPFW3); |
673 | reg &= ~DSPFW_CURSOR_SR_MASK; | 676 | reg &= ~DSPFW_CURSOR_SR_MASK; |
674 | reg |= (wm & 0x3f) << DSPFW_CURSOR_SR_SHIFT; | 677 | reg |= FW_WM(wm, CURSOR_SR); |
675 | I915_WRITE(DSPFW3, reg); | 678 | I915_WRITE(DSPFW3, reg); |
676 | 679 | ||
677 | /* Display HPLL off SR */ | 680 | /* Display HPLL off SR */ |
@@ -680,7 +683,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc) | |||
680 | pixel_size, latency->display_hpll_disable); | 683 | pixel_size, latency->display_hpll_disable); |
681 | reg = I915_READ(DSPFW3); | 684 | reg = I915_READ(DSPFW3); |
682 | reg &= ~DSPFW_HPLL_SR_MASK; | 685 | reg &= ~DSPFW_HPLL_SR_MASK; |
683 | reg |= wm & DSPFW_HPLL_SR_MASK; | 686 | reg |= FW_WM(wm, HPLL_SR); |
684 | I915_WRITE(DSPFW3, reg); | 687 | I915_WRITE(DSPFW3, reg); |
685 | 688 | ||
686 | /* cursor HPLL off SR */ | 689 | /* cursor HPLL off SR */ |
@@ -689,7 +692,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc) | |||
689 | pixel_size, latency->cursor_hpll_disable); | 692 | pixel_size, latency->cursor_hpll_disable); |
690 | reg = I915_READ(DSPFW3); | 693 | reg = I915_READ(DSPFW3); |
691 | reg &= ~DSPFW_HPLL_CURSOR_MASK; | 694 | reg &= ~DSPFW_HPLL_CURSOR_MASK; |
692 | reg |= (wm & 0x3f) << DSPFW_HPLL_CURSOR_SHIFT; | 695 | reg |= FW_WM(wm, HPLL_CURSOR); |
693 | I915_WRITE(DSPFW3, reg); | 696 | I915_WRITE(DSPFW3, reg); |
694 | DRM_DEBUG_KMS("DSPFW3 register is %x\n", reg); | 697 | DRM_DEBUG_KMS("DSPFW3 register is %x\n", reg); |
695 | 698 | ||
@@ -835,8 +838,6 @@ static bool g4x_compute_srwm(struct drm_device *dev, | |||
835 | display, cursor); | 838 | display, cursor); |
836 | } | 839 | } |
837 | 840 | ||
838 | #define FW_WM(value, plane) \ | ||
839 | (((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK) | ||
840 | #define FW_WM_VLV(value, plane) \ | 841 | #define FW_WM_VLV(value, plane) \ |
841 | (((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK_VLV) | 842 | (((value) << DSPFW_ ## plane ## _SHIFT) & DSPFW_ ## plane ## _MASK_VLV) |
842 | 843 | ||
@@ -904,7 +905,6 @@ static void vlv_write_wm_values(struct intel_crtc *crtc, | |||
904 | dev_priv->wm.vlv = *wm; | 905 | dev_priv->wm.vlv = *wm; |
905 | } | 906 | } |
906 | 907 | ||
907 | #undef FW_WM | ||
908 | #undef FW_WM_VLV | 908 | #undef FW_WM_VLV |
909 | 909 | ||
910 | static uint8_t vlv_compute_drain_latency(struct drm_crtc *crtc, | 910 | static uint8_t vlv_compute_drain_latency(struct drm_crtc *crtc, |
@@ -1163,17 +1163,17 @@ static void g4x_update_wm(struct drm_crtc *crtc) | |||
1163 | plane_sr, cursor_sr); | 1163 | plane_sr, cursor_sr); |
1164 | 1164 | ||
1165 | I915_WRITE(DSPFW1, | 1165 | I915_WRITE(DSPFW1, |
1166 | (plane_sr << DSPFW_SR_SHIFT) | | 1166 | FW_WM(plane_sr, SR) | |
1167 | (cursorb_wm << DSPFW_CURSORB_SHIFT) | | 1167 | FW_WM(cursorb_wm, CURSORB) | |
1168 | (planeb_wm << DSPFW_PLANEB_SHIFT) | | 1168 | FW_WM(planeb_wm, PLANEB) | |
1169 | (planea_wm << DSPFW_PLANEA_SHIFT)); | 1169 | FW_WM(planea_wm, PLANEA)); |
1170 | I915_WRITE(DSPFW2, | 1170 | I915_WRITE(DSPFW2, |
1171 | (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) | | 1171 | (I915_READ(DSPFW2) & ~DSPFW_CURSORA_MASK) | |
1172 | (cursora_wm << DSPFW_CURSORA_SHIFT)); | 1172 | FW_WM(cursora_wm, CURSORA)); |
1173 | /* HPLL off in SR has some issues on G4x... disable it */ | 1173 | /* HPLL off in SR has some issues on G4x... disable it */ |
1174 | I915_WRITE(DSPFW3, | 1174 | I915_WRITE(DSPFW3, |
1175 | (I915_READ(DSPFW3) & ~(DSPFW_HPLL_SR_EN | DSPFW_CURSOR_SR_MASK)) | | 1175 | (I915_READ(DSPFW3) & ~(DSPFW_HPLL_SR_EN | DSPFW_CURSOR_SR_MASK)) | |
1176 | (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); | 1176 | FW_WM(cursor_sr, CURSOR_SR)); |
1177 | 1177 | ||
1178 | if (cxsr_enabled) | 1178 | if (cxsr_enabled) |
1179 | intel_set_memory_cxsr(dev_priv, true); | 1179 | intel_set_memory_cxsr(dev_priv, true); |
@@ -1239,19 +1239,21 @@ static void i965_update_wm(struct drm_crtc *unused_crtc) | |||
1239 | srwm); | 1239 | srwm); |
1240 | 1240 | ||
1241 | /* 965 has limitations... */ | 1241 | /* 965 has limitations... */ |
1242 | I915_WRITE(DSPFW1, (srwm << DSPFW_SR_SHIFT) | | 1242 | I915_WRITE(DSPFW1, FW_WM(srwm, SR) | |
1243 | (8 << DSPFW_CURSORB_SHIFT) | | 1243 | FW_WM(8, CURSORB) | |
1244 | (8 << DSPFW_PLANEB_SHIFT) | | 1244 | FW_WM(8, PLANEB) | |
1245 | (8 << DSPFW_PLANEA_SHIFT)); | 1245 | FW_WM(8, PLANEA)); |
1246 | I915_WRITE(DSPFW2, (8 << DSPFW_CURSORA_SHIFT) | | 1246 | I915_WRITE(DSPFW2, FW_WM(8, CURSORA) | |
1247 | (8 << DSPFW_PLANEC_SHIFT_OLD)); | 1247 | FW_WM(8, PLANEC_OLD)); |
1248 | /* update cursor SR watermark */ | 1248 | /* update cursor SR watermark */ |
1249 | I915_WRITE(DSPFW3, (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); | 1249 | I915_WRITE(DSPFW3, FW_WM(cursor_sr, CURSOR_SR)); |
1250 | 1250 | ||
1251 | if (cxsr_enabled) | 1251 | if (cxsr_enabled) |
1252 | intel_set_memory_cxsr(dev_priv, true); | 1252 | intel_set_memory_cxsr(dev_priv, true); |
1253 | } | 1253 | } |
1254 | 1254 | ||
1255 | #undef FW_WM | ||
1256 | |||
1255 | static void i9xx_update_wm(struct drm_crtc *unused_crtc) | 1257 | static void i9xx_update_wm(struct drm_crtc *unused_crtc) |
1256 | { | 1258 | { |
1257 | struct drm_device *dev = unused_crtc->dev; | 1259 | struct drm_device *dev = unused_crtc->dev; |