aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hdmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdmi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index f9fb47cd1779..08f2b63d740a 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -151,6 +151,9 @@ static void g4x_write_infoframe(struct drm_encoder *encoder,
151 I915_WRITE(VIDEO_DIP_DATA, *data); 151 I915_WRITE(VIDEO_DIP_DATA, *data);
152 data++; 152 data++;
153 } 153 }
154 /* Write every possible data byte to force correct ECC calculation. */
155 for (; i < VIDEO_DIP_DATA_SIZE; i += 4)
156 I915_WRITE(VIDEO_DIP_DATA, 0);
154 mmiowb(); 157 mmiowb();
155 158
156 val |= g4x_infoframe_enable(frame); 159 val |= g4x_infoframe_enable(frame);
@@ -186,6 +189,9 @@ static void ibx_write_infoframe(struct drm_encoder *encoder,
186 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 189 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data);
187 data++; 190 data++;
188 } 191 }
192 /* Write every possible data byte to force correct ECC calculation. */
193 for (; i < VIDEO_DIP_DATA_SIZE; i += 4)
194 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0);
189 mmiowb(); 195 mmiowb();
190 196
191 val |= g4x_infoframe_enable(frame); 197 val |= g4x_infoframe_enable(frame);
@@ -224,6 +230,9 @@ static void cpt_write_infoframe(struct drm_encoder *encoder,
224 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 230 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data);
225 data++; 231 data++;
226 } 232 }
233 /* Write every possible data byte to force correct ECC calculation. */
234 for (; i < VIDEO_DIP_DATA_SIZE; i += 4)
235 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0);
227 mmiowb(); 236 mmiowb();
228 237
229 val |= g4x_infoframe_enable(frame); 238 val |= g4x_infoframe_enable(frame);
@@ -259,6 +268,9 @@ static void vlv_write_infoframe(struct drm_encoder *encoder,
259 I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 268 I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data);
260 data++; 269 data++;
261 } 270 }
271 /* Write every possible data byte to force correct ECC calculation. */
272 for (; i < VIDEO_DIP_DATA_SIZE; i += 4)
273 I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0);
262 mmiowb(); 274 mmiowb();
263 275
264 val |= g4x_infoframe_enable(frame); 276 val |= g4x_infoframe_enable(frame);
@@ -292,6 +304,9 @@ static void hsw_write_infoframe(struct drm_encoder *encoder,
292 I915_WRITE(data_reg + i, *data); 304 I915_WRITE(data_reg + i, *data);
293 data++; 305 data++;
294 } 306 }
307 /* Write every possible data byte to force correct ECC calculation. */
308 for (; i < VIDEO_DIP_DATA_SIZE; i += 4)
309 I915_WRITE(data_reg + i, 0);
295 mmiowb(); 310 mmiowb();
296 311
297 val |= hsw_infoframe_enable(frame); 312 val |= hsw_infoframe_enable(frame);