aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_pm.c
diff options
context:
space:
mode:
authorDamien Lespiau <damien.lespiau@intel.com>2013-09-25 11:45:37 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-10-01 01:45:38 -0400
commit241bfc389111ce4c997430e6cd1532a08b16dc6b (patch)
treeaf1948348209297680a94d3569738ae751cd7430 /drivers/gpu/drm/i915/intel_pm.c
parent1342830c589fca41872b173155bad08b374f7766 (diff)
drm/i915: Use crtc_clock with the adjusted mode
struct drm_mode_display now has a separate crtc_ version of the clock to be used when we're talking about the timings given to the harwadre (was far as the mode is concerned). This commit is really the result of a git grep adjusted_mode.*clock and replacing those by adjusted_mode.crtc_clock. No functional change. v2: Rebased on drm-intel-queued-next Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Acked-by: Dave Airlie <airlied@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index d27eda661548..2ac1c2fd58bb 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -1100,8 +1100,12 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc)
1100 1100
1101 crtc = single_enabled_crtc(dev); 1101 crtc = single_enabled_crtc(dev);
1102 if (crtc) { 1102 if (crtc) {
1103 int clock = to_intel_crtc(crtc)->config.adjusted_mode.clock; 1103 const struct drm_display_mode *adjusted_mode;
1104 int pixel_size = crtc->fb->bits_per_pixel / 8; 1104 int pixel_size = crtc->fb->bits_per_pixel / 8;
1105 int clock;
1106
1107 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1108 clock = adjusted_mode->crtc_clock;
1105 1109
1106 /* Display SR */ 1110 /* Display SR */
1107 wm = intel_calculate_wm(clock, &pineview_display_wm, 1111 wm = intel_calculate_wm(clock, &pineview_display_wm,
@@ -1174,7 +1178,7 @@ static bool g4x_compute_wm0(struct drm_device *dev,
1174 } 1178 }
1175 1179
1176 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode; 1180 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1177 clock = adjusted_mode->clock; 1181 clock = adjusted_mode->crtc_clock;
1178 htotal = adjusted_mode->htotal; 1182 htotal = adjusted_mode->htotal;
1179 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; 1183 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
1180 pixel_size = crtc->fb->bits_per_pixel / 8; 1184 pixel_size = crtc->fb->bits_per_pixel / 8;
@@ -1261,7 +1265,7 @@ static bool g4x_compute_srwm(struct drm_device *dev,
1261 1265
1262 crtc = intel_get_crtc_for_plane(dev, plane); 1266 crtc = intel_get_crtc_for_plane(dev, plane);
1263 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode; 1267 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1264 clock = adjusted_mode->clock; 1268 clock = adjusted_mode->crtc_clock;
1265 htotal = adjusted_mode->htotal; 1269 htotal = adjusted_mode->htotal;
1266 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; 1270 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
1267 pixel_size = crtc->fb->bits_per_pixel / 8; 1271 pixel_size = crtc->fb->bits_per_pixel / 8;
@@ -1302,7 +1306,7 @@ static bool vlv_compute_drain_latency(struct drm_device *dev,
1302 if (!intel_crtc_active(crtc)) 1306 if (!intel_crtc_active(crtc))
1303 return false; 1307 return false;
1304 1308
1305 clock = to_intel_crtc(crtc)->config.adjusted_mode.clock; 1309 clock = to_intel_crtc(crtc)->config.adjusted_mode.crtc_clock;
1306 pixel_size = crtc->fb->bits_per_pixel / 8; /* BPP */ 1310 pixel_size = crtc->fb->bits_per_pixel / 8; /* BPP */
1307 1311
1308 entries = (clock / 1000) * pixel_size; 1312 entries = (clock / 1000) * pixel_size;
@@ -1492,7 +1496,7 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
1492 static const int sr_latency_ns = 12000; 1496 static const int sr_latency_ns = 12000;
1493 const struct drm_display_mode *adjusted_mode = 1497 const struct drm_display_mode *adjusted_mode =
1494 &to_intel_crtc(crtc)->config.adjusted_mode; 1498 &to_intel_crtc(crtc)->config.adjusted_mode;
1495 int clock = adjusted_mode->clock; 1499 int clock = adjusted_mode->crtc_clock;
1496 int htotal = adjusted_mode->htotal; 1500 int htotal = adjusted_mode->htotal;
1497 int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; 1501 int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
1498 int pixel_size = crtc->fb->bits_per_pixel / 8; 1502 int pixel_size = crtc->fb->bits_per_pixel / 8;
@@ -1567,11 +1571,13 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
1567 fifo_size = dev_priv->display.get_fifo_size(dev, 0); 1571 fifo_size = dev_priv->display.get_fifo_size(dev, 0);
1568 crtc = intel_get_crtc_for_plane(dev, 0); 1572 crtc = intel_get_crtc_for_plane(dev, 0);
1569 if (intel_crtc_active(crtc)) { 1573 if (intel_crtc_active(crtc)) {
1574 const struct drm_display_mode *adjusted_mode;
1570 int cpp = crtc->fb->bits_per_pixel / 8; 1575 int cpp = crtc->fb->bits_per_pixel / 8;
1571 if (IS_GEN2(dev)) 1576 if (IS_GEN2(dev))
1572 cpp = 4; 1577 cpp = 4;
1573 1578
1574 planea_wm = intel_calculate_wm(to_intel_crtc(crtc)->config.adjusted_mode.clock, 1579 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1580 planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
1575 wm_info, fifo_size, cpp, 1581 wm_info, fifo_size, cpp,
1576 latency_ns); 1582 latency_ns);
1577 enabled = crtc; 1583 enabled = crtc;
@@ -1581,11 +1587,13 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
1581 fifo_size = dev_priv->display.get_fifo_size(dev, 1); 1587 fifo_size = dev_priv->display.get_fifo_size(dev, 1);
1582 crtc = intel_get_crtc_for_plane(dev, 1); 1588 crtc = intel_get_crtc_for_plane(dev, 1);
1583 if (intel_crtc_active(crtc)) { 1589 if (intel_crtc_active(crtc)) {
1590 const struct drm_display_mode *adjusted_mode;
1584 int cpp = crtc->fb->bits_per_pixel / 8; 1591 int cpp = crtc->fb->bits_per_pixel / 8;
1585 if (IS_GEN2(dev)) 1592 if (IS_GEN2(dev))
1586 cpp = 4; 1593 cpp = 4;
1587 1594
1588 planeb_wm = intel_calculate_wm(to_intel_crtc(crtc)->config.adjusted_mode.clock, 1595 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1596 planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
1589 wm_info, fifo_size, cpp, 1597 wm_info, fifo_size, cpp,
1590 latency_ns); 1598 latency_ns);
1591 if (enabled == NULL) 1599 if (enabled == NULL)
@@ -1614,7 +1622,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
1614 static const int sr_latency_ns = 6000; 1622 static const int sr_latency_ns = 6000;
1615 const struct drm_display_mode *adjusted_mode = 1623 const struct drm_display_mode *adjusted_mode =
1616 &to_intel_crtc(enabled)->config.adjusted_mode; 1624 &to_intel_crtc(enabled)->config.adjusted_mode;
1617 int clock = adjusted_mode->clock; 1625 int clock = adjusted_mode->crtc_clock;
1618 int htotal = adjusted_mode->htotal; 1626 int htotal = adjusted_mode->htotal;
1619 int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; 1627 int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
1620 int pixel_size = enabled->fb->bits_per_pixel / 8; 1628 int pixel_size = enabled->fb->bits_per_pixel / 8;
@@ -1670,6 +1678,7 @@ static void i830_update_wm(struct drm_crtc *unused_crtc)
1670 struct drm_device *dev = unused_crtc->dev; 1678 struct drm_device *dev = unused_crtc->dev;
1671 struct drm_i915_private *dev_priv = dev->dev_private; 1679 struct drm_i915_private *dev_priv = dev->dev_private;
1672 struct drm_crtc *crtc; 1680 struct drm_crtc *crtc;
1681 const struct drm_display_mode *adjusted_mode;
1673 uint32_t fwater_lo; 1682 uint32_t fwater_lo;
1674 int planea_wm; 1683 int planea_wm;
1675 1684
@@ -1677,7 +1686,8 @@ static void i830_update_wm(struct drm_crtc *unused_crtc)
1677 if (crtc == NULL) 1686 if (crtc == NULL)
1678 return; 1687 return;
1679 1688
1680 planea_wm = intel_calculate_wm(to_intel_crtc(crtc)->config.adjusted_mode.clock, 1689 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1690 planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
1681 &i830_wm_info, 1691 &i830_wm_info,
1682 dev_priv->display.get_fifo_size(dev, 0), 1692 dev_priv->display.get_fifo_size(dev, 0),
1683 4, latency_ns); 1693 4, latency_ns);
@@ -1764,7 +1774,7 @@ static bool ironlake_compute_srwm(struct drm_device *dev, int level, int plane,
1764 1774
1765 crtc = intel_get_crtc_for_plane(dev, plane); 1775 crtc = intel_get_crtc_for_plane(dev, plane);
1766 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode; 1776 adjusted_mode = &to_intel_crtc(crtc)->config.adjusted_mode;
1767 clock = adjusted_mode->clock; 1777 clock = adjusted_mode->crtc_clock;
1768 htotal = adjusted_mode->htotal; 1778 htotal = adjusted_mode->htotal;
1769 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; 1779 hdisplay = to_intel_crtc(crtc)->config.pipe_src_w;
1770 pixel_size = crtc->fb->bits_per_pixel / 8; 1780 pixel_size = crtc->fb->bits_per_pixel / 8;
@@ -2112,7 +2122,7 @@ static uint32_t ilk_pipe_pixel_rate(struct drm_device *dev,
2112 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); 2122 struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
2113 uint32_t pixel_rate; 2123 uint32_t pixel_rate;
2114 2124
2115 pixel_rate = intel_crtc->config.adjusted_mode.clock; 2125 pixel_rate = intel_crtc->config.adjusted_mode.crtc_clock;
2116 2126
2117 /* We only use IF-ID interlacing. If we ever use PF-ID we'll need to 2127 /* We only use IF-ID interlacing. If we ever use PF-ID we'll need to
2118 * adjust the pixel_rate here. */ 2128 * adjust the pixel_rate here. */
@@ -2913,7 +2923,7 @@ sandybridge_compute_sprite_wm(struct drm_device *dev, int plane,
2913 return false; 2923 return false;
2914 } 2924 }
2915 2925
2916 clock = to_intel_crtc(crtc)->config.adjusted_mode.clock; 2926 clock = to_intel_crtc(crtc)->config.adjusted_mode.crtc_clock;
2917 2927
2918 /* Use the small buffer method to calculate the sprite watermark */ 2928 /* Use the small buffer method to calculate the sprite watermark */
2919 entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000; 2929 entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000;
@@ -2948,7 +2958,7 @@ sandybridge_compute_sprite_srwm(struct drm_device *dev, int plane,
2948 } 2958 }
2949 2959
2950 crtc = intel_get_crtc_for_plane(dev, plane); 2960 crtc = intel_get_crtc_for_plane(dev, plane);
2951 clock = to_intel_crtc(crtc)->config.adjusted_mode.clock; 2961 clock = to_intel_crtc(crtc)->config.adjusted_mode.crtc_clock;
2952 if (!clock) { 2962 if (!clock) {
2953 *sprite_wm = 0; 2963 *sprite_wm = 0;
2954 return false; 2964 return false;