diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdmi.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 98ad4313d9f2..8363fbd18ee8 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
@@ -467,7 +467,8 @@ static void intel_write_infoframe(struct drm_encoder *encoder, | |||
467 | } | 467 | } |
468 | 468 | ||
469 | static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, | 469 | static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, |
470 | const struct intel_crtc_state *crtc_state) | 470 | const struct intel_crtc_state *crtc_state, |
471 | const struct drm_connector_state *conn_state) | ||
471 | { | 472 | { |
472 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); | 473 | struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); |
473 | const struct drm_display_mode *adjusted_mode = | 474 | const struct drm_display_mode *adjusted_mode = |
@@ -497,6 +498,9 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, | |||
497 | intel_hdmi->rgb_quant_range_selectable, | 498 | intel_hdmi->rgb_quant_range_selectable, |
498 | is_hdmi2_sink); | 499 | is_hdmi2_sink); |
499 | 500 | ||
501 | drm_hdmi_avi_infoframe_content_type(&frame.avi, | ||
502 | conn_state); | ||
503 | |||
500 | /* TODO: handle pixel repetition for YCBCR420 outputs */ | 504 | /* TODO: handle pixel repetition for YCBCR420 outputs */ |
501 | intel_write_infoframe(encoder, crtc_state, &frame); | 505 | intel_write_infoframe(encoder, crtc_state, &frame); |
502 | } | 506 | } |
@@ -592,7 +596,7 @@ static void g4x_set_infoframes(struct drm_encoder *encoder, | |||
592 | I915_WRITE(reg, val); | 596 | I915_WRITE(reg, val); |
593 | POSTING_READ(reg); | 597 | POSTING_READ(reg); |
594 | 598 | ||
595 | intel_hdmi_set_avi_infoframe(encoder, crtc_state); | 599 | intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state); |
596 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); | 600 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); |
597 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); | 601 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); |
598 | } | 602 | } |
@@ -733,7 +737,7 @@ static void ibx_set_infoframes(struct drm_encoder *encoder, | |||
733 | I915_WRITE(reg, val); | 737 | I915_WRITE(reg, val); |
734 | POSTING_READ(reg); | 738 | POSTING_READ(reg); |
735 | 739 | ||
736 | intel_hdmi_set_avi_infoframe(encoder, crtc_state); | 740 | intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state); |
737 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); | 741 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); |
738 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); | 742 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); |
739 | } | 743 | } |
@@ -776,7 +780,7 @@ static void cpt_set_infoframes(struct drm_encoder *encoder, | |||
776 | I915_WRITE(reg, val); | 780 | I915_WRITE(reg, val); |
777 | POSTING_READ(reg); | 781 | POSTING_READ(reg); |
778 | 782 | ||
779 | intel_hdmi_set_avi_infoframe(encoder, crtc_state); | 783 | intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state); |
780 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); | 784 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); |
781 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); | 785 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); |
782 | } | 786 | } |
@@ -829,7 +833,7 @@ static void vlv_set_infoframes(struct drm_encoder *encoder, | |||
829 | I915_WRITE(reg, val); | 833 | I915_WRITE(reg, val); |
830 | POSTING_READ(reg); | 834 | POSTING_READ(reg); |
831 | 835 | ||
832 | intel_hdmi_set_avi_infoframe(encoder, crtc_state); | 836 | intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state); |
833 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); | 837 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); |
834 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); | 838 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); |
835 | } | 839 | } |
@@ -862,7 +866,7 @@ static void hsw_set_infoframes(struct drm_encoder *encoder, | |||
862 | I915_WRITE(reg, val); | 866 | I915_WRITE(reg, val); |
863 | POSTING_READ(reg); | 867 | POSTING_READ(reg); |
864 | 868 | ||
865 | intel_hdmi_set_avi_infoframe(encoder, crtc_state); | 869 | intel_hdmi_set_avi_infoframe(encoder, crtc_state, conn_state); |
866 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); | 870 | intel_hdmi_set_spd_infoframe(encoder, crtc_state); |
867 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); | 871 | intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); |
868 | } | 872 | } |
@@ -2092,6 +2096,7 @@ intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *c | |||
2092 | intel_attach_force_audio_property(connector); | 2096 | intel_attach_force_audio_property(connector); |
2093 | intel_attach_broadcast_rgb_property(connector); | 2097 | intel_attach_broadcast_rgb_property(connector); |
2094 | intel_attach_aspect_ratio_property(connector); | 2098 | intel_attach_aspect_ratio_property(connector); |
2099 | drm_connector_attach_content_type_property(connector); | ||
2095 | connector->state->picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE; | 2100 | connector->state->picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE; |
2096 | } | 2101 | } |
2097 | 2102 | ||