aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hdmi.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-09-15 07:03:59 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2010-09-15 11:45:25 -0400
commit373a3cf744c774478f44921c50011b896ab08f9d (patch)
tree78725e96b9d17190c05baa50a96bf1afdcab0e7f /drivers/gpu/drm/i915/intel_hdmi.c
parent2f551c84563df2bf144a819993b2d729c66583ee (diff)
drm/i915: call drm_encoder_init first
Later initialisation of the encoder often requires that drm_encoder_init() has already been called, for instance, initialiasing the DDC buses. Yet another recent regression, as 819f3fb7 depended upon these fixes which I missed when cherry-picking. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdmi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 93d5b61bf5bd..783924c7682a 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -228,6 +228,9 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
228 } 228 }
229 229
230 intel_encoder = &intel_hdmi->base; 230 intel_encoder = &intel_hdmi->base;
231 drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs,
232 DRM_MODE_ENCODER_TMDS);
233
231 connector = &intel_connector->base; 234 connector = &intel_connector->base;
232 drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, 235 drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
233 DRM_MODE_CONNECTOR_HDMIA); 236 DRM_MODE_CONNECTOR_HDMIA);
@@ -272,8 +275,6 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
272 275
273 intel_hdmi->sdvox_reg = sdvox_reg; 276 intel_hdmi->sdvox_reg = sdvox_reg;
274 277
275 drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs,
276 DRM_MODE_ENCODER_TMDS);
277 drm_encoder_helper_add(&intel_encoder->base, &intel_hdmi_helper_funcs); 278 drm_encoder_helper_add(&intel_encoder->base, &intel_hdmi_helper_funcs);
278 279
279 intel_connector_attach_encoder(intel_connector, intel_encoder); 280 intel_connector_attach_encoder(intel_connector, intel_encoder);
@@ -291,6 +292,7 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
291 return; 292 return;
292 293
293err_connector: 294err_connector:
295 drm_encoder_cleanup(&intel_encoder->base);
294 drm_connector_cleanup(connector); 296 drm_connector_cleanup(connector);
295 kfree(intel_hdmi); 297 kfree(intel_hdmi);
296 kfree(intel_connector); 298 kfree(intel_connector);