aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_drv.h
diff options
context:
space:
mode:
authorPaulo Zanoni <paulo.r.zanoni@intel.com>2012-05-28 15:42:48 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-30 15:36:58 -0400
commit687f4d06dbb1cf3c8f9f6050cd7aad24dc0ce978 (patch)
tree695bb1149bf925ec3bc47409fcdf7a5a5013f6ce /drivers/gpu/drm/i915/intel_drv.h
parenteeafaaca763408c099d2ade3a69e0716f296a97b (diff)
drm/i915: add set_infoframes to struct intel_hdmi
We need a function that is able to fully 'set' the state of the DIP registers to a known state. Currently, we have the write_infoframe function that is called twice: once for AVI and once for SPD. The problem is that write_infoframe tries to keep the state of the DIP register as it is, changing only the minimum necessary bits. The second problem is that write_infoframe does twice (once for each time it is called) some work that should be done only once (like waiting for vblank and setting the port). If we add even more DIPs, it will do even more repeated work. This patch only adds the infrastructure keeping the code behavior the same as before. v2: add static keywords Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_drv.h')
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 3e0918834e7e..39d7b07c1e8b 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -301,6 +301,8 @@ struct intel_hdmi {
301 enum hdmi_force_audio force_audio; 301 enum hdmi_force_audio force_audio;
302 void (*write_infoframe)(struct drm_encoder *encoder, 302 void (*write_infoframe)(struct drm_encoder *encoder,
303 struct dip_infoframe *frame); 303 struct dip_infoframe *frame);
304 void (*set_infoframes)(struct drm_encoder *encoder,
305 struct drm_display_mode *adjusted_mode);
304}; 306};
305 307
306static inline struct drm_crtc * 308static inline struct drm_crtc *
@@ -343,9 +345,6 @@ extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector)
343extern void intel_crt_init(struct drm_device *dev); 345extern void intel_crt_init(struct drm_device *dev);
344extern void intel_hdmi_init(struct drm_device *dev, int sdvox_reg); 346extern void intel_hdmi_init(struct drm_device *dev, int sdvox_reg);
345extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); 347extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder);
346extern void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
347 struct drm_display_mode *adjusted_mode);
348extern void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder);
349extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); 348extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if);
350extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, 349extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg,
351 bool is_sdvob); 350 bool is_sdvob);