aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--drivers/gpu/drm/i915/intel_crt.c2
-rw-r--r--drivers/gpu/drm/i915/intel_display.c34
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c11
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_dvo.c2
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c6
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c2
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c36
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c2
-rw-r--r--drivers/gpu/drm/i915/intel_tv.c2
10 files changed, 56 insertions, 43 deletions
diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
index 019c4cea7bb0..0263629332d0 100644
--- a/drivers/gpu/drm/i915/intel_crt.c
+++ b/drivers/gpu/drm/i915/intel_crt.c
@@ -117,7 +117,7 @@ static void intel_crt_get_config(struct intel_encoder *encoder,
117 if (HAS_PCH_SPLIT(dev)) 117 if (HAS_PCH_SPLIT(dev))
118 ironlake_check_encoder_dotclock(pipe_config, dotclock); 118 ironlake_check_encoder_dotclock(pipe_config, dotclock);
119 119
120 pipe_config->adjusted_mode.clock = dotclock; 120 pipe_config->adjusted_mode.crtc_clock = dotclock;
121} 121}
122 122
123static void hsw_crt_get_config(struct intel_encoder *encoder, 123static void hsw_crt_get_config(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 282d83a2a73a..3085da1487c2 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -739,14 +739,14 @@ bool intel_crtc_active(struct drm_crtc *crtc)
739 /* Be paranoid as we can arrive here with only partial 739 /* Be paranoid as we can arrive here with only partial
740 * state retrieved from the hardware during setup. 740 * state retrieved from the hardware during setup.
741 * 741 *
742 * We can ditch the adjusted_mode.clock check as soon 742 * We can ditch the adjusted_mode.crtc_clock check as soon
743 * as Haswell has gained clock readout/fastboot support. 743 * as Haswell has gained clock readout/fastboot support.
744 * 744 *
745 * We can ditch the crtc->fb check as soon as we can 745 * We can ditch the crtc->fb check as soon as we can
746 * properly reconstruct framebuffers. 746 * properly reconstruct framebuffers.
747 */ 747 */
748 return intel_crtc->active && crtc->fb && 748 return intel_crtc->active && crtc->fb &&
749 intel_crtc->config.adjusted_mode.clock; 749 intel_crtc->config.adjusted_mode.crtc_clock;
750} 750}
751 751
752enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, 752enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
@@ -2913,7 +2913,7 @@ static void lpt_program_iclkip(struct drm_crtc *crtc)
2913{ 2913{
2914 struct drm_device *dev = crtc->dev; 2914 struct drm_device *dev = crtc->dev;
2915 struct drm_i915_private *dev_priv = dev->dev_private; 2915 struct drm_i915_private *dev_priv = dev->dev_private;
2916 int clock = to_intel_crtc(crtc)->config.adjusted_mode.clock; 2916 int clock = to_intel_crtc(crtc)->config.adjusted_mode.crtc_clock;
2917 u32 divsel, phaseinc, auxdiv, phasedir = 0; 2917 u32 divsel, phaseinc, auxdiv, phasedir = 0;
2918 u32 temp; 2918 u32 temp;
2919 2919
@@ -2937,8 +2937,8 @@ static void lpt_program_iclkip(struct drm_crtc *crtc)
2937 phaseinc = 0x20; 2937 phaseinc = 0x20;
2938 } else { 2938 } else {
2939 /* The iCLK virtual clock root frequency is in MHz, 2939 /* The iCLK virtual clock root frequency is in MHz,
2940 * but the adjusted_mode->clock in in KHz. To get the divisors, 2940 * but the adjusted_mode->crtc_clock in in KHz. To get the
2941 * it is necessary to divide one by another, so we 2941 * divisors, it is necessary to divide one by another, so we
2942 * convert the virtual clock precision to KHz here for higher 2942 * convert the virtual clock precision to KHz here for higher
2943 * precision. 2943 * precision.
2944 */ 2944 */
@@ -4148,7 +4148,7 @@ retry:
4148 */ 4148 */
4149 link_bw = intel_fdi_link_freq(dev) * MHz(100)/KHz(1)/10; 4149 link_bw = intel_fdi_link_freq(dev) * MHz(100)/KHz(1)/10;
4150 4150
4151 fdi_dotclock = adjusted_mode->clock; 4151 fdi_dotclock = adjusted_mode->crtc_clock;
4152 4152
4153 lane = ironlake_get_lanes_required(fdi_dotclock, link_bw, 4153 lane = ironlake_get_lanes_required(fdi_dotclock, link_bw,
4154 pipe_config->pipe_bpp); 4154 pipe_config->pipe_bpp);
@@ -4204,12 +4204,12 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
4204 * otherwise pipe A only. 4204 * otherwise pipe A only.
4205 */ 4205 */
4206 if ((crtc->pipe == PIPE_A || IS_I915G(dev)) && 4206 if ((crtc->pipe == PIPE_A || IS_I915G(dev)) &&
4207 adjusted_mode->clock > clock_limit * 9 / 10) { 4207 adjusted_mode->crtc_clock > clock_limit * 9 / 10) {
4208 clock_limit *= 2; 4208 clock_limit *= 2;
4209 pipe_config->double_wide = true; 4209 pipe_config->double_wide = true;
4210 } 4210 }
4211 4211
4212 if (adjusted_mode->clock > clock_limit * 9 / 10) 4212 if (adjusted_mode->crtc_clock > clock_limit * 9 / 10)
4213 return -EINVAL; 4213 return -EINVAL;
4214 } 4214 }
4215 4215
@@ -4869,7 +4869,7 @@ static void intel_crtc_mode_from_pipe_config(struct intel_crtc *intel_crtc,
4869 4869
4870 crtc->mode.flags = pipe_config->adjusted_mode.flags; 4870 crtc->mode.flags = pipe_config->adjusted_mode.flags;
4871 4871
4872 crtc->mode.clock = pipe_config->adjusted_mode.clock; 4872 crtc->mode.clock = pipe_config->adjusted_mode.crtc_clock;
4873 crtc->mode.flags |= pipe_config->adjusted_mode.flags; 4873 crtc->mode.flags |= pipe_config->adjusted_mode.flags;
4874} 4874}
4875 4875
@@ -7473,7 +7473,7 @@ static void i9xx_crtc_clock_get(struct intel_crtc *crtc,
7473 7473
7474 /* 7474 /*
7475 * This value includes pixel_multiplier. We will use 7475 * This value includes pixel_multiplier. We will use
7476 * port_clock to compute adjusted_mode.clock in the 7476 * port_clock to compute adjusted_mode.crtc_clock in the
7477 * encoder's get_config() function. 7477 * encoder's get_config() function.
7478 */ 7478 */
7479 pipe_config->port_clock = clock.dot; 7479 pipe_config->port_clock = clock.dot;
@@ -7508,11 +7508,11 @@ static void ironlake_pch_clock_get(struct intel_crtc *crtc,
7508 7508
7509 /* 7509 /*
7510 * This value does not include pixel_multiplier. 7510 * This value does not include pixel_multiplier.
7511 * We will check that port_clock and adjusted_mode.clock 7511 * We will check that port_clock and adjusted_mode.crtc_clock
7512 * agree once we know their relationship in the encoder's 7512 * agree once we know their relationship in the encoder's
7513 * get_config() function. 7513 * get_config() function.
7514 */ 7514 */
7515 pipe_config->adjusted_mode.clock = 7515 pipe_config->adjusted_mode.crtc_clock =
7516 intel_dotclock_calculate(intel_fdi_link_freq(dev) * 10000, 7516 intel_dotclock_calculate(intel_fdi_link_freq(dev) * 10000,
7517 &pipe_config->fdi_m_n); 7517 &pipe_config->fdi_m_n);
7518} 7518}
@@ -8489,8 +8489,8 @@ encoder_retry:
8489 /* Set default port clock if not overwritten by the encoder. Needs to be 8489 /* Set default port clock if not overwritten by the encoder. Needs to be
8490 * done afterwards in case the encoder adjusts the mode. */ 8490 * done afterwards in case the encoder adjusts the mode. */
8491 if (!pipe_config->port_clock) 8491 if (!pipe_config->port_clock)
8492 pipe_config->port_clock = pipe_config->adjusted_mode.clock * 8492 pipe_config->port_clock = pipe_config->adjusted_mode.crtc_clock
8493 pipe_config->pixel_multiplier; 8493 * pipe_config->pixel_multiplier;
8494 8494
8495 ret = intel_crtc_compute_config(to_intel_crtc(crtc), pipe_config); 8495 ret = intel_crtc_compute_config(to_intel_crtc(crtc), pipe_config);
8496 if (ret < 0) { 8496 if (ret < 0) {
@@ -8820,7 +8820,7 @@ intel_pipe_config_compare(struct drm_device *dev,
8820 PIPE_CONF_CHECK_I(pipe_bpp); 8820 PIPE_CONF_CHECK_I(pipe_bpp);
8821 8821
8822 if (!IS_HASWELL(dev)) { 8822 if (!IS_HASWELL(dev)) {
8823 PIPE_CONF_CHECK_CLOCK_FUZZY(adjusted_mode.clock); 8823 PIPE_CONF_CHECK_CLOCK_FUZZY(adjusted_mode.crtc_clock);
8824 PIPE_CONF_CHECK_CLOCK_FUZZY(port_clock); 8824 PIPE_CONF_CHECK_CLOCK_FUZZY(port_clock);
8825 } 8825 }
8826 8826
@@ -9042,9 +9042,9 @@ void ironlake_check_encoder_dotclock(const struct intel_crtc_config *pipe_config
9042 * FDI already provided one idea for the dotclock. 9042 * FDI already provided one idea for the dotclock.
9043 * Yell if the encoder disagrees. 9043 * Yell if the encoder disagrees.
9044 */ 9044 */
9045 WARN(!intel_fuzzy_clock_check(pipe_config->adjusted_mode.clock, dotclock), 9045 WARN(!intel_fuzzy_clock_check(pipe_config->adjusted_mode.crtc_clock, dotclock),
9046 "FDI dotclock and encoder dotclock mismatch, fdi: %i, encoder: %i\n", 9046 "FDI dotclock and encoder dotclock mismatch, fdi: %i, encoder: %i\n",
9047 pipe_config->adjusted_mode.clock, dotclock); 9047 pipe_config->adjusted_mode.crtc_clock, dotclock);
9048} 9048}
9049 9049
9050static int __intel_set_mode(struct drm_crtc *crtc, 9050static int __intel_set_mode(struct drm_crtc *crtc,
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index a5e4e612d8f9..95a31598feda 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -811,7 +811,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
811 811
812 DRM_DEBUG_KMS("DP link computation with max lane count %i " 812 DRM_DEBUG_KMS("DP link computation with max lane count %i "
813 "max bw %02x pixel clock %iKHz\n", 813 "max bw %02x pixel clock %iKHz\n",
814 max_lane_count, bws[max_clock], adjusted_mode->clock); 814 max_lane_count, bws[max_clock],
815 adjusted_mode->crtc_clock);
815 816
816 /* Walk through all bpp values. Luckily they're all nicely spaced with 2 817 /* Walk through all bpp values. Luckily they're all nicely spaced with 2
817 * bpc in between. */ 818 * bpc in between. */
@@ -823,7 +824,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
823 } 824 }
824 825
825 for (; bpp >= 6*3; bpp -= 2*3) { 826 for (; bpp >= 6*3; bpp -= 2*3) {
826 mode_rate = intel_dp_link_required(adjusted_mode->clock, bpp); 827 mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock,
828 bpp);
827 829
828 for (clock = 0; clock <= max_clock; clock++) { 830 for (clock = 0; clock <= max_clock; clock++) {
829 for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { 831 for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {
@@ -868,7 +870,8 @@ found:
868 mode_rate, link_avail); 870 mode_rate, link_avail);
869 871
870 intel_link_compute_m_n(bpp, lane_count, 872 intel_link_compute_m_n(bpp, lane_count,
871 adjusted_mode->clock, pipe_config->port_clock, 873 adjusted_mode->crtc_clock,
874 pipe_config->port_clock,
872 &pipe_config->dp_m_n); 875 &pipe_config->dp_m_n);
873 876
874 intel_dp_set_clock(encoder, pipe_config, intel_dp->link_bw); 877 intel_dp_set_clock(encoder, pipe_config, intel_dp->link_bw);
@@ -1483,7 +1486,7 @@ static void intel_dp_get_config(struct intel_encoder *encoder,
1483 if (HAS_PCH_SPLIT(dev_priv->dev) && port != PORT_A) 1486 if (HAS_PCH_SPLIT(dev_priv->dev) && port != PORT_A)
1484 ironlake_check_encoder_dotclock(pipe_config, dotclock); 1487 ironlake_check_encoder_dotclock(pipe_config, dotclock);
1485 1488
1486 pipe_config->adjusted_mode.clock = dotclock; 1489 pipe_config->adjusted_mode.crtc_clock = dotclock;
1487} 1490}
1488 1491
1489static bool is_edp_psr(struct intel_dp *intel_dp) 1492static bool is_edp_psr(struct intel_dp *intel_dp)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 8c3cb3e30527..a17a86ac4e40 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -217,7 +217,7 @@ struct intel_crtc_config {
217 * preferred input timings. */ 217 * preferred input timings. */
218 struct drm_display_mode requested_mode; 218 struct drm_display_mode requested_mode;
219 /* Actual pipe timings ie. what we program into the pipe timing 219 /* Actual pipe timings ie. what we program into the pipe timing
220 * registers. adjusted_mode.clock is the pipe pixel clock. */ 220 * registers. adjusted_mode.crtc_clock is the pipe pixel clock. */
221 struct drm_display_mode adjusted_mode; 221 struct drm_display_mode adjusted_mode;
222 222
223 /* Pipe source size (ie. panel fitter input size) 223 /* Pipe source size (ie. panel fitter input size)
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index 6305433797ac..91287d1d3059 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -154,7 +154,7 @@ static void intel_dvo_get_config(struct intel_encoder *encoder,
154 154
155 pipe_config->adjusted_mode.flags |= flags; 155 pipe_config->adjusted_mode.flags |= flags;
156 156
157 pipe_config->adjusted_mode.clock = pipe_config->port_clock; 157 pipe_config->adjusted_mode.crtc_clock = pipe_config->port_clock;
158} 158}
159 159
160static void intel_disable_dvo(struct intel_encoder *encoder) 160static void intel_disable_dvo(struct intel_encoder *encoder)
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index a6310ca444cf..1a57758e5bf8 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -737,7 +737,7 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
737 if (HAS_PCH_SPLIT(dev_priv->dev)) 737 if (HAS_PCH_SPLIT(dev_priv->dev))
738 ironlake_check_encoder_dotclock(pipe_config, dotclock); 738 ironlake_check_encoder_dotclock(pipe_config, dotclock);
739 739
740 pipe_config->adjusted_mode.clock = dotclock; 740 pipe_config->adjusted_mode.crtc_clock = dotclock;
741} 741}
742 742
743static void intel_enable_hdmi(struct intel_encoder *encoder) 743static void intel_enable_hdmi(struct intel_encoder *encoder)
@@ -873,7 +873,7 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
873 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); 873 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
874 struct drm_device *dev = encoder->base.dev; 874 struct drm_device *dev = encoder->base.dev;
875 struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode; 875 struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode;
876 int clock_12bpc = pipe_config->adjusted_mode.clock * 3 / 2; 876 int clock_12bpc = pipe_config->adjusted_mode.crtc_clock * 3 / 2;
877 int portclock_limit = hdmi_portclock_limit(intel_hdmi); 877 int portclock_limit = hdmi_portclock_limit(intel_hdmi);
878 int desired_bpp; 878 int desired_bpp;
879 879
@@ -915,7 +915,7 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
915 pipe_config->pipe_bpp = desired_bpp; 915 pipe_config->pipe_bpp = desired_bpp;
916 } 916 }
917 917
918 if (adjusted_mode->clock > portclock_limit) { 918 if (adjusted_mode->crtc_clock > portclock_limit) {
919 DRM_DEBUG_KMS("too high HDMI clock, rejecting mode\n"); 919 DRM_DEBUG_KMS("too high HDMI clock, rejecting mode\n");
920 return false; 920 return false;
921 } 921 }
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 67a4a8fd5f89..fb3f8efcc6e2 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -123,7 +123,7 @@ static void intel_lvds_get_config(struct intel_encoder *encoder,
123 if (HAS_PCH_SPLIT(dev_priv->dev)) 123 if (HAS_PCH_SPLIT(dev_priv->dev))
124 ironlake_check_encoder_dotclock(pipe_config, dotclock); 124 ironlake_check_encoder_dotclock(pipe_config, dotclock);
125 125
126 pipe_config->adjusted_mode.clock = dotclock; 126 pipe_config->adjusted_mode.crtc_clock = dotclock;
127} 127}
128 128
129/* The LVDS pin pair needs to be on before the DPLLs are enabled. 129/* The LVDS pin pair needs to be on before the DPLLs are enabled.
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;
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index 606e03279201..5e59d64cfd95 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1369,7 +1369,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder,
1369 if (HAS_PCH_SPLIT(dev)) 1369 if (HAS_PCH_SPLIT(dev))
1370 ironlake_check_encoder_dotclock(pipe_config, dotclock); 1370 ironlake_check_encoder_dotclock(pipe_config, dotclock);
1371 1371
1372 pipe_config->adjusted_mode.clock = dotclock; 1372 pipe_config->adjusted_mode.crtc_clock = dotclock;
1373 1373
1374 /* Cross check the port pixel multiplier with the sdvo encoder state. */ 1374 /* Cross check the port pixel multiplier with the sdvo encoder state. */
1375 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_CLOCK_RATE_MULT, 1375 if (intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_CLOCK_RATE_MULT,
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 11c15fbf9e55..75925a1ab351 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -912,7 +912,7 @@ intel_tv_compute_config(struct intel_encoder *encoder,
912 if (!tv_mode) 912 if (!tv_mode)
913 return false; 913 return false;
914 914
915 pipe_config->adjusted_mode.clock = tv_mode->clock; 915 pipe_config->adjusted_mode.crtc_clock = tv_mode->clock;
916 DRM_DEBUG_KMS("forcing bpc to 8 for TV\n"); 916 DRM_DEBUG_KMS("forcing bpc to 8 for TV\n");
917 pipe_config->pipe_bpp = 8*3; 917 pipe_config->pipe_bpp = 8*3;
918 918