Lines Matching +full:hdmi +full:- +full:connector
3 * Copyright © 2006-2009 Intel Corporation
30 #include <linux/hdmi.h>
62 return hdmi_to_dig_port(intel_hdmi)->base.base.dev; in intel_hdmi_to_dev()
75 intel_de_read(dev_priv, intel_hdmi->hdmi_reg) & enabled_bits, in assert_hdmi_port_disabled()
76 "HDMI port enabled, expecting disabled\n"); in assert_hdmi_port_disabled()
83 drm_WARN(&dev_priv->drm, in assert_hdmi_transcoder_func_disabled()
86 "HDMI transcoder function enabled, expecting disabled\n"); in assert_hdmi_transcoder_func_disabled()
92 container_of(&encoder->base, struct intel_digital_port, in enc_to_intel_hdmi()
94 return &dig_port->hdmi; in enc_to_intel_hdmi()
97 static struct intel_hdmi *intel_attached_hdmi(struct intel_connector *connector) in intel_attached_hdmi() argument
99 return enc_to_intel_hdmi(intel_attached_encoder(connector)); in intel_attached_hdmi()
218 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in g4x_write_infoframe()
222 drm_WARN(&dev_priv->drm, !(val & VIDEO_DIP_ENABLE), in g4x_write_infoframe()
253 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in g4x_read_infoframe()
271 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in g4x_infoframes_enabled()
277 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in g4x_infoframes_enabled()
290 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in ibx_write_infoframe()
291 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in ibx_write_infoframe()
292 i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); in ibx_write_infoframe()
296 drm_WARN(&dev_priv->drm, !(val & VIDEO_DIP_ENABLE), in ibx_write_infoframe()
307 intel_de_write(dev_priv, TVIDEO_DIP_DATA(intel_crtc->pipe), in ibx_write_infoframe()
313 intel_de_write(dev_priv, TVIDEO_DIP_DATA(intel_crtc->pipe), 0); in ibx_write_infoframe()
328 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in ibx_read_infoframe()
329 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in ibx_read_infoframe()
333 val = intel_de_read(dev_priv, TVIDEO_DIP_CTL(crtc->pipe)); in ibx_read_infoframe()
338 intel_de_write(dev_priv, TVIDEO_DIP_CTL(crtc->pipe), val); in ibx_read_infoframe()
341 *data++ = intel_de_read(dev_priv, TVIDEO_DIP_DATA(crtc->pipe)); in ibx_read_infoframe()
347 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in ibx_infoframes_enabled()
348 enum pipe pipe = to_intel_crtc(pipe_config->uapi.crtc)->pipe; in ibx_infoframes_enabled()
355 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in ibx_infoframes_enabled()
369 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in cpt_write_infoframe()
370 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in cpt_write_infoframe()
371 i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); in cpt_write_infoframe()
375 drm_WARN(&dev_priv->drm, !(val & VIDEO_DIP_ENABLE), in cpt_write_infoframe()
389 intel_de_write(dev_priv, TVIDEO_DIP_DATA(intel_crtc->pipe), in cpt_write_infoframe()
395 intel_de_write(dev_priv, TVIDEO_DIP_DATA(intel_crtc->pipe), 0); in cpt_write_infoframe()
410 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in cpt_read_infoframe()
411 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in cpt_read_infoframe()
415 val = intel_de_read(dev_priv, TVIDEO_DIP_CTL(crtc->pipe)); in cpt_read_infoframe()
420 intel_de_write(dev_priv, TVIDEO_DIP_CTL(crtc->pipe), val); in cpt_read_infoframe()
423 *data++ = intel_de_read(dev_priv, TVIDEO_DIP_DATA(crtc->pipe)); in cpt_read_infoframe()
429 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in cpt_infoframes_enabled()
430 enum pipe pipe = to_intel_crtc(pipe_config->uapi.crtc)->pipe; in cpt_infoframes_enabled()
447 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in vlv_write_infoframe()
448 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in vlv_write_infoframe()
449 i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); in vlv_write_infoframe()
453 drm_WARN(&dev_priv->drm, !(val & VIDEO_DIP_ENABLE), in vlv_write_infoframe()
465 VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); in vlv_write_infoframe()
471 VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); in vlv_write_infoframe()
486 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in vlv_read_infoframe()
487 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in vlv_read_infoframe()
491 val = intel_de_read(dev_priv, VLV_TVIDEO_DIP_CTL(crtc->pipe)); in vlv_read_infoframe()
496 intel_de_write(dev_priv, VLV_TVIDEO_DIP_CTL(crtc->pipe), val); in vlv_read_infoframe()
500 VLV_TVIDEO_DIP_DATA(crtc->pipe)); in vlv_read_infoframe()
506 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in vlv_infoframes_enabled()
507 enum pipe pipe = to_intel_crtc(pipe_config->uapi.crtc)->pipe; in vlv_infoframes_enabled()
513 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in vlv_infoframes_enabled()
527 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_write_infoframe()
528 enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; in hsw_write_infoframe()
536 drm_WARN_ON(&dev_priv->drm, len > data_size); in hsw_write_infoframe()
563 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_read_infoframe()
564 enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; in hsw_read_infoframe()
578 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_infoframes_enabled()
580 HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder)); in hsw_infoframes_enabled()
618 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_infoframes_enabled()
623 val = dig_port->infoframes_enabled(encoder, crtc_state); in intel_hdmi_infoframes_enabled()
643 * HDMI infoframe size because of an ECC/reserved byte at position 3 (starting
654 * The hdmi pack() functions don't know about that hardware specific hole so we
667 if ((crtc_state->infoframes.enable & in intel_write_infoframe()
671 if (drm_WARN_ON(encoder->base.dev, frame->any.type != type)) in intel_write_infoframe()
675 len = hdmi_infoframe_pack_only(frame, buffer + 1, sizeof(buffer) - 1); in intel_write_infoframe()
676 if (drm_WARN_ON(encoder->base.dev, len < 0)) in intel_write_infoframe()
684 dig_port->write_infoframe(encoder, crtc_state, type, buffer, len); in intel_write_infoframe()
696 if ((crtc_state->infoframes.enable & in intel_read_infoframe()
700 dig_port->read_infoframe(encoder, crtc_state, in intel_read_infoframe()
707 ret = hdmi_infoframe_unpack(frame, buffer + 1, sizeof(buffer) - 1); in intel_read_infoframe()
709 drm_dbg_kms(encoder->base.dev, in intel_read_infoframe()
714 if (frame->any.type != type) in intel_read_infoframe()
715 drm_dbg_kms(encoder->base.dev, in intel_read_infoframe()
717 frame->any.type, type); in intel_read_infoframe()
725 struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi; in intel_hdmi_compute_avi_infoframe()
727 &crtc_state->hw.adjusted_mode; in intel_hdmi_compute_avi_infoframe()
728 struct drm_connector *connector = conn_state->connector; in intel_hdmi_compute_avi_infoframe() local
731 if (!crtc_state->has_infoframe) in intel_hdmi_compute_avi_infoframe()
734 crtc_state->infoframes.enable |= in intel_hdmi_compute_avi_infoframe()
737 ret = drm_hdmi_avi_infoframe_from_display_mode(frame, connector, in intel_hdmi_compute_avi_infoframe()
742 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) in intel_hdmi_compute_avi_infoframe()
743 frame->colorspace = HDMI_COLORSPACE_YUV420; in intel_hdmi_compute_avi_infoframe()
744 else if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR444) in intel_hdmi_compute_avi_infoframe()
745 frame->colorspace = HDMI_COLORSPACE_YUV444; in intel_hdmi_compute_avi_infoframe()
747 frame->colorspace = HDMI_COLORSPACE_RGB; in intel_hdmi_compute_avi_infoframe()
752 drm_WARN_ON(encoder->base.dev, crtc_state->limited_color_range && in intel_hdmi_compute_avi_infoframe()
753 crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB); in intel_hdmi_compute_avi_infoframe()
755 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) { in intel_hdmi_compute_avi_infoframe()
756 drm_hdmi_avi_infoframe_quant_range(frame, connector, in intel_hdmi_compute_avi_infoframe()
758 crtc_state->limited_color_range ? in intel_hdmi_compute_avi_infoframe()
762 frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT; in intel_hdmi_compute_avi_infoframe()
763 frame->ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED; in intel_hdmi_compute_avi_infoframe()
771 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_avi_infoframe()
782 struct hdmi_spd_infoframe *frame = &crtc_state->infoframes.spd.spd; in intel_hdmi_compute_spd_infoframe()
785 if (!crtc_state->has_infoframe) in intel_hdmi_compute_spd_infoframe()
788 crtc_state->infoframes.enable |= in intel_hdmi_compute_spd_infoframe()
792 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_spd_infoframe()
795 frame->sdi = HDMI_SPD_SDI_PC; in intel_hdmi_compute_spd_infoframe()
798 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_spd_infoframe()
810 &crtc_state->infoframes.hdmi.vendor.hdmi; in intel_hdmi_compute_hdmi_infoframe()
812 &conn_state->connector->display_info; in intel_hdmi_compute_hdmi_infoframe()
815 if (!crtc_state->has_infoframe || !info->has_hdmi_infoframe) in intel_hdmi_compute_hdmi_infoframe()
818 crtc_state->infoframes.enable |= in intel_hdmi_compute_hdmi_infoframe()
822 conn_state->connector, in intel_hdmi_compute_hdmi_infoframe()
823 &crtc_state->hw.adjusted_mode); in intel_hdmi_compute_hdmi_infoframe()
824 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_hdmi_infoframe()
828 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_hdmi_infoframe()
839 struct hdmi_drm_infoframe *frame = &crtc_state->infoframes.drm.drm; in intel_hdmi_compute_drm_infoframe()
840 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_compute_drm_infoframe()
846 if (!crtc_state->has_infoframe) in intel_hdmi_compute_drm_infoframe()
849 if (!conn_state->hdr_output_metadata) in intel_hdmi_compute_drm_infoframe()
852 crtc_state->infoframes.enable |= in intel_hdmi_compute_drm_infoframe()
857 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_compute_drm_infoframe()
863 if (drm_WARN_ON(&dev_priv->drm, ret)) in intel_hdmi_compute_drm_infoframe()
874 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in g4x_set_infoframes()
876 struct intel_hdmi *intel_hdmi = &dig_port->hdmi; in g4x_set_infoframes()
879 u32 port = VIDEO_DIP_PORT(encoder->port); in g4x_set_infoframes()
898 drm_dbg_kms(&dev_priv->drm, in g4x_set_infoframes()
912 drm_dbg_kms(&dev_priv->drm, in g4x_set_infoframes()
930 &crtc_state->infoframes.avi); in g4x_set_infoframes()
933 &crtc_state->infoframes.spd); in g4x_set_infoframes()
936 &crtc_state->infoframes.hdmi); in g4x_set_infoframes()
942 * From HDMI specification 1.4a:
943 * - The first pixel of each Video Data Period shall always have a pixel packing phase of 0
944 * - The first pixel following each Video Data Period shall have a pixel packing phase of 0
945 * - The PP bits shall be constant for all GCPs and will be equal to the last packing phase
946 * - The first pixel following every transition of HSYNC or VSYNC shall have a pixel packing
972 return mode->crtc_hdisplay % pixels_per_group == 0 && in gcp_default_phase_possible()
973 mode->crtc_htotal % pixels_per_group == 0 && in gcp_default_phase_possible()
974 mode->crtc_hblank_start % pixels_per_group == 0 && in gcp_default_phase_possible()
975 mode->crtc_hblank_end % pixels_per_group == 0 && in gcp_default_phase_possible()
976 mode->crtc_hsync_start % pixels_per_group == 0 && in gcp_default_phase_possible()
977 mode->crtc_hsync_end % pixels_per_group == 0 && in gcp_default_phase_possible()
978 ((mode->flags & DRM_MODE_FLAG_INTERLACE) == 0 || in gcp_default_phase_possible()
979 mode->crtc_htotal/2 % pixels_per_group == 0); in gcp_default_phase_possible()
986 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_set_gcp_infoframe()
987 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in intel_hdmi_set_gcp_infoframe()
990 if ((crtc_state->infoframes.enable & in intel_hdmi_set_gcp_infoframe()
995 reg = HSW_TVIDEO_DIP_GCP(crtc_state->cpu_transcoder); in intel_hdmi_set_gcp_infoframe()
997 reg = VLV_TVIDEO_DIP_GCP(crtc->pipe); in intel_hdmi_set_gcp_infoframe()
999 reg = TVIDEO_DIP_GCP(crtc->pipe); in intel_hdmi_set_gcp_infoframe()
1003 intel_de_write(dev_priv, reg, crtc_state->infoframes.gcp); in intel_hdmi_set_gcp_infoframe()
1011 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_read_gcp_infoframe()
1012 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in intel_hdmi_read_gcp_infoframe()
1015 if ((crtc_state->infoframes.enable & in intel_hdmi_read_gcp_infoframe()
1020 reg = HSW_TVIDEO_DIP_GCP(crtc_state->cpu_transcoder); in intel_hdmi_read_gcp_infoframe()
1022 reg = VLV_TVIDEO_DIP_GCP(crtc->pipe); in intel_hdmi_read_gcp_infoframe()
1024 reg = TVIDEO_DIP_GCP(crtc->pipe); in intel_hdmi_read_gcp_infoframe()
1028 crtc_state->infoframes.gcp = intel_de_read(dev_priv, reg); in intel_hdmi_read_gcp_infoframe()
1035 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_compute_gcp_infoframe()
1037 if (IS_G4X(dev_priv) || !crtc_state->has_infoframe) in intel_hdmi_compute_gcp_infoframe()
1040 crtc_state->infoframes.enable |= in intel_hdmi_compute_gcp_infoframe()
1044 if (crtc_state->pipe_bpp > 24) in intel_hdmi_compute_gcp_infoframe()
1045 crtc_state->infoframes.gcp |= GCP_COLOR_INDICATION; in intel_hdmi_compute_gcp_infoframe()
1048 if (gcp_default_phase_possible(crtc_state->pipe_bpp, in intel_hdmi_compute_gcp_infoframe()
1049 &crtc_state->hw.adjusted_mode)) in intel_hdmi_compute_gcp_infoframe()
1050 crtc_state->infoframes.gcp |= GCP_DEFAULT_PHASE_ENABLE; in intel_hdmi_compute_gcp_infoframe()
1058 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in ibx_set_infoframes()
1059 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in ibx_set_infoframes()
1061 struct intel_hdmi *intel_hdmi = &dig_port->hdmi; in ibx_set_infoframes()
1062 i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); in ibx_set_infoframes()
1064 u32 port = VIDEO_DIP_PORT(encoder->port); in ibx_set_infoframes()
1083 drm_WARN(&dev_priv->drm, val & VIDEO_DIP_ENABLE, in ibx_set_infoframes()
1103 &crtc_state->infoframes.avi); in ibx_set_infoframes()
1106 &crtc_state->infoframes.spd); in ibx_set_infoframes()
1109 &crtc_state->infoframes.hdmi); in ibx_set_infoframes()
1117 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in cpt_set_infoframes()
1118 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in cpt_set_infoframes()
1120 i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); in cpt_set_infoframes()
1152 &crtc_state->infoframes.avi); in cpt_set_infoframes()
1155 &crtc_state->infoframes.spd); in cpt_set_infoframes()
1158 &crtc_state->infoframes.hdmi); in cpt_set_infoframes()
1166 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in vlv_set_infoframes()
1167 struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->uapi.crtc); in vlv_set_infoframes()
1169 i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); in vlv_set_infoframes()
1171 u32 port = VIDEO_DIP_PORT(encoder->port); in vlv_set_infoframes()
1190 drm_WARN(&dev_priv->drm, val & VIDEO_DIP_ENABLE, in vlv_set_infoframes()
1210 &crtc_state->infoframes.avi); in vlv_set_infoframes()
1213 &crtc_state->infoframes.spd); in vlv_set_infoframes()
1216 &crtc_state->infoframes.hdmi); in vlv_set_infoframes()
1224 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_set_infoframes()
1225 i915_reg_t reg = HSW_TVIDEO_DIP_CTL(crtc_state->cpu_transcoder); in hsw_set_infoframes()
1229 crtc_state->cpu_transcoder); in hsw_set_infoframes()
1250 &crtc_state->infoframes.avi); in hsw_set_infoframes()
1253 &crtc_state->infoframes.spd); in hsw_set_infoframes()
1256 &crtc_state->infoframes.hdmi); in hsw_set_infoframes()
1259 &crtc_state->infoframes.drm); in hsw_set_infoframes()
1262 void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable) in intel_dp_dual_mode_set_tmds_output() argument
1264 struct drm_i915_private *dev_priv = to_i915(intel_hdmi_to_dev(hdmi)); in intel_dp_dual_mode_set_tmds_output()
1266 intel_gmbus_get_adapter(dev_priv, hdmi->ddc_bus); in intel_dp_dual_mode_set_tmds_output()
1268 if (hdmi->dp_dual_mode.type < DRM_DP_DUAL_MODE_TYPE2_DVI) in intel_dp_dual_mode_set_tmds_output()
1271 drm_dbg_kms(&dev_priv->drm, "%s DP dual mode adaptor TMDS output\n", in intel_dp_dual_mode_set_tmds_output()
1274 drm_dp_dual_mode_set_tmds_output(hdmi->dp_dual_mode.type, in intel_dp_dual_mode_set_tmds_output()
1281 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read()
1282 struct intel_hdmi *hdmi = &dig_port->hdmi; in intel_hdmi_hdcp_read() local
1284 hdmi->ddc_bus); in intel_hdmi_hdcp_read()
1304 return ret >= 0 ? -EIO : ret; in intel_hdmi_hdcp_read()
1310 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_write()
1311 struct intel_hdmi *hdmi = &dig_port->hdmi; in intel_hdmi_hdcp_write() local
1313 hdmi->ddc_bus); in intel_hdmi_hdcp_write()
1320 return -ENOMEM; in intel_hdmi_hdcp_write()
1334 ret = -EIO; in intel_hdmi_hdcp_write()
1344 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_write_an_aksv()
1345 struct intel_hdmi *hdmi = &dig_port->hdmi; in intel_hdmi_hdcp_write_an_aksv() local
1347 hdmi->ddc_bus); in intel_hdmi_hdcp_write_an_aksv()
1353 drm_dbg_kms(&i915->drm, "Write An over DDC failed (%d)\n", in intel_hdmi_hdcp_write_an_aksv()
1360 drm_dbg_kms(&i915->drm, "Failed to output aksv (%d)\n", ret); in intel_hdmi_hdcp_write_an_aksv()
1369 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_bksv()
1375 drm_dbg_kms(&i915->drm, "Read Bksv over DDC failed (%d)\n", in intel_hdmi_hdcp_read_bksv()
1384 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_bstatus()
1390 drm_dbg_kms(&i915->drm, "Read bstatus over DDC failed (%d)\n", in intel_hdmi_hdcp_read_bstatus()
1399 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_repeater_present()
1405 drm_dbg_kms(&i915->drm, "Read bcaps over DDC failed (%d)\n", in intel_hdmi_hdcp_repeater_present()
1417 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_ri_prime()
1423 drm_dbg_kms(&i915->drm, "Read Ri' over DDC failed (%d)\n", in intel_hdmi_hdcp_read_ri_prime()
1432 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_ksv_ready()
1438 drm_dbg_kms(&i915->drm, "Read bcaps over DDC failed (%d)\n", in intel_hdmi_hdcp_read_ksv_ready()
1450 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_ksv_fifo()
1455 drm_dbg_kms(&i915->drm, in intel_hdmi_hdcp_read_ksv_fifo()
1466 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_read_v_prime_part()
1470 return -EINVAL; in intel_hdmi_hdcp_read_v_prime_part()
1475 drm_dbg_kms(&i915->drm, "Read V'[%d] over DDC failed (%d)\n", in intel_hdmi_hdcp_read_v_prime_part()
1480 static int kbl_repositioning_enc_en_signal(struct intel_connector *connector, in kbl_repositioning_enc_en_signal() argument
1483 struct drm_i915_private *dev_priv = to_i915(connector->base.dev); in kbl_repositioning_enc_en_signal()
1484 struct intel_digital_port *dig_port = intel_attached_dig_port(connector); in kbl_repositioning_enc_en_signal()
1485 struct drm_crtc *crtc = connector->base.state->crtc; in kbl_repositioning_enc_en_signal()
1492 scanline = intel_de_read(dev_priv, PIPEDSL(intel_crtc->pipe)); in kbl_repositioning_enc_en_signal()
1498 ret = intel_ddi_toggle_hdcp_signalling(&dig_port->base, cpu_transcoder, in kbl_repositioning_enc_en_signal()
1501 drm_err(&dev_priv->drm, in kbl_repositioning_enc_en_signal()
1505 ret = intel_ddi_toggle_hdcp_signalling(&dig_port->base, cpu_transcoder, in kbl_repositioning_enc_en_signal()
1508 drm_err(&dev_priv->drm, in kbl_repositioning_enc_en_signal()
1521 struct intel_hdmi *hdmi = &dig_port->hdmi; in intel_hdmi_hdcp_toggle_signalling() local
1522 struct intel_connector *connector = hdmi->attached_connector; in intel_hdmi_hdcp_toggle_signalling() local
1523 struct drm_i915_private *dev_priv = to_i915(connector->base.dev); in intel_hdmi_hdcp_toggle_signalling()
1529 ret = intel_ddi_toggle_hdcp_signalling(&dig_port->base, cpu_transcoder, in intel_hdmi_hdcp_toggle_signalling()
1532 drm_err(&dev_priv->drm, "%s HDCP signalling failed (%d)\n", in intel_hdmi_hdcp_toggle_signalling()
1542 return kbl_repositioning_enc_en_signal(connector, in intel_hdmi_hdcp_toggle_signalling()
1550 struct intel_connector *connector) in intel_hdmi_hdcp_check_link_once() argument
1552 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_check_link_once()
1553 enum port port = dig_port->base.port; in intel_hdmi_hdcp_check_link_once()
1554 enum transcoder cpu_transcoder = connector->hdcp.cpu_transcoder; in intel_hdmi_hdcp_check_link_once()
1571 drm_dbg_kms(&i915->drm, "Ri' mismatch detected (%x)\n", in intel_hdmi_hdcp_check_link_once()
1581 struct intel_connector *connector) in intel_hdmi_hdcp_check_link() argument
1583 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp_check_link()
1587 if (intel_hdmi_hdcp_check_link_once(dig_port, connector)) in intel_hdmi_hdcp_check_link()
1590 drm_err(&i915->drm, "Link check failed\n"); in intel_hdmi_hdcp_check_link()
1633 return -EINVAL; in get_hdcp2_msg_timeout()
1641 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in hdcp2_detect_msg_availability()
1647 drm_dbg_kms(&i915->drm, "rx_status read failed. Err %d\n", in hdcp2_detect_msg_availability()
1668 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp2_wait_for_msg()
1683 drm_dbg_kms(&i915->drm, "msg_id: %d, ret: %d, timeout: %d\n", in intel_hdmi_hdcp2_wait_for_msg()
1703 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); in intel_hdmi_hdcp2_read_msg()
1704 struct intel_hdmi *hdmi = &dig_port->hdmi; in intel_hdmi_hdcp2_read_msg() local
1705 struct intel_hdcp *hdcp = &hdmi->attached_connector->hdcp; in intel_hdmi_hdcp2_read_msg()
1710 hdcp->is_paired); in intel_hdmi_hdcp2_read_msg()
1719 drm_dbg_kms(&i915->drm, in intel_hdmi_hdcp2_read_msg()
1722 return -1; in intel_hdmi_hdcp2_read_msg()
1728 drm_dbg_kms(&i915->drm, "Failed to read msg_id: %d(%zd)\n", in intel_hdmi_hdcp2_read_msg()
1745 * Re-auth request and Link Integrity Failures are represented by in intel_hdmi_hdcp2_check_link()
1793 struct drm_device *dev = encoder->base.dev; in intel_hdmi_prepare()
1795 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in intel_hdmi_prepare()
1797 const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; in intel_hdmi_prepare()
1803 if (!HAS_PCH_SPLIT(dev_priv) && crtc_state->limited_color_range) in intel_hdmi_prepare()
1805 if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) in intel_hdmi_prepare()
1807 if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) in intel_hdmi_prepare()
1810 if (crtc_state->pipe_bpp > 24) in intel_hdmi_prepare()
1815 if (crtc_state->has_hdmi_sink) in intel_hdmi_prepare()
1819 hdmi_val |= SDVO_PIPE_SEL_CPT(crtc->pipe); in intel_hdmi_prepare()
1821 hdmi_val |= SDVO_PIPE_SEL_CHV(crtc->pipe); in intel_hdmi_prepare()
1823 hdmi_val |= SDVO_PIPE_SEL(crtc->pipe); in intel_hdmi_prepare()
1825 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, hdmi_val); in intel_hdmi_prepare()
1826 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in intel_hdmi_prepare()
1832 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_get_hw_state()
1838 encoder->power_domain); in intel_hdmi_get_hw_state()
1842 ret = intel_sdvo_port_enabled(dev_priv, intel_hdmi->hdmi_reg, pipe); in intel_hdmi_get_hw_state()
1844 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_hdmi_get_hw_state()
1853 struct drm_device *dev = encoder->base.dev; in intel_hdmi_get_config()
1858 pipe_config->output_types |= BIT(INTEL_OUTPUT_HDMI); in intel_hdmi_get_config()
1860 tmp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg); in intel_hdmi_get_config()
1873 pipe_config->has_hdmi_sink = true; in intel_hdmi_get_config()
1875 pipe_config->infoframes.enable |= in intel_hdmi_get_config()
1878 if (pipe_config->infoframes.enable) in intel_hdmi_get_config()
1879 pipe_config->has_infoframe = true; in intel_hdmi_get_config()
1882 pipe_config->has_audio = true; in intel_hdmi_get_config()
1886 pipe_config->limited_color_range = true; in intel_hdmi_get_config()
1888 pipe_config->hw.adjusted_mode.flags |= flags; in intel_hdmi_get_config()
1891 dotclock = pipe_config->port_clock * 2 / 3; in intel_hdmi_get_config()
1893 dotclock = pipe_config->port_clock; in intel_hdmi_get_config()
1895 if (pipe_config->pixel_multiplier) in intel_hdmi_get_config()
1896 dotclock /= pipe_config->pixel_multiplier; in intel_hdmi_get_config()
1898 pipe_config->hw.adjusted_mode.crtc_clock = dotclock; in intel_hdmi_get_config()
1900 pipe_config->lane_count = 4; in intel_hdmi_get_config()
1906 &pipe_config->infoframes.avi); in intel_hdmi_get_config()
1909 &pipe_config->infoframes.spd); in intel_hdmi_get_config()
1912 &pipe_config->infoframes.hdmi); in intel_hdmi_get_config()
1919 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_enable_hdmi_audio()
1920 struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); in intel_enable_hdmi_audio()
1922 drm_WARN_ON(&i915->drm, !pipe_config->has_hdmi_sink); in intel_enable_hdmi_audio()
1923 drm_dbg_kms(&i915->drm, "Enabling HDMI audio on pipe %c\n", in intel_enable_hdmi_audio()
1924 pipe_name(crtc->pipe)); in intel_enable_hdmi_audio()
1933 struct drm_device *dev = encoder->base.dev; in g4x_enable_hdmi()
1938 temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg); in g4x_enable_hdmi()
1941 if (pipe_config->has_audio) in g4x_enable_hdmi()
1944 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in g4x_enable_hdmi()
1945 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in g4x_enable_hdmi()
1947 if (pipe_config->has_audio) in g4x_enable_hdmi()
1956 struct drm_device *dev = encoder->base.dev; in ibx_enable_hdmi()
1961 temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1964 if (pipe_config->has_audio) in ibx_enable_hdmi()
1971 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in ibx_enable_hdmi()
1972 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1973 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in ibx_enable_hdmi()
1974 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1983 if (pipe_config->pipe_bpp > 24 && in ibx_enable_hdmi()
1984 pipe_config->pixel_multiplier > 1) { in ibx_enable_hdmi()
1985 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, in ibx_enable_hdmi()
1987 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1993 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in ibx_enable_hdmi()
1994 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1995 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in ibx_enable_hdmi()
1996 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in ibx_enable_hdmi()
1999 if (pipe_config->has_audio) in ibx_enable_hdmi()
2008 struct drm_device *dev = encoder->base.dev; in cpt_enable_hdmi()
2010 struct intel_crtc *crtc = to_intel_crtc(pipe_config->uapi.crtc); in cpt_enable_hdmi()
2012 enum pipe pipe = crtc->pipe; in cpt_enable_hdmi()
2015 temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg); in cpt_enable_hdmi()
2018 if (pipe_config->has_audio) in cpt_enable_hdmi()
2025 * 1. disable HDMI clock gating in cpt_enable_hdmi()
2026 * 2. enable HDMI with 8bpc in cpt_enable_hdmi()
2027 * 3. enable HDMI with 12bpc in cpt_enable_hdmi()
2028 * 4. enable HDMI clock gating in cpt_enable_hdmi()
2031 if (pipe_config->pipe_bpp > 24) { in cpt_enable_hdmi()
2039 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in cpt_enable_hdmi()
2040 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in cpt_enable_hdmi()
2042 if (pipe_config->pipe_bpp > 24) { in cpt_enable_hdmi()
2046 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in cpt_enable_hdmi()
2047 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in cpt_enable_hdmi()
2053 if (pipe_config->has_audio) in cpt_enable_hdmi()
2069 struct drm_device *dev = encoder->base.dev; in intel_disable_hdmi()
2074 struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->uapi.crtc); in intel_disable_hdmi()
2077 temp = intel_de_read(dev_priv, intel_hdmi->hdmi_reg); in intel_disable_hdmi()
2080 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in intel_disable_hdmi()
2081 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in intel_disable_hdmi()
2088 if (HAS_PCH_IBX(dev_priv) && crtc->pipe == PIPE_B) { in intel_disable_hdmi()
2102 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in intel_disable_hdmi()
2103 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in intel_disable_hdmi()
2104 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in intel_disable_hdmi()
2105 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in intel_disable_hdmi()
2108 intel_de_write(dev_priv, intel_hdmi->hdmi_reg, temp); in intel_disable_hdmi()
2109 intel_de_posting_read(dev_priv, intel_hdmi->hdmi_reg); in intel_disable_hdmi()
2116 dig_port->set_infoframes(encoder, in intel_disable_hdmi()
2128 if (old_crtc_state->has_audio) in g4x_disable_hdmi()
2140 if (old_crtc_state->has_audio) in pch_disable_hdmi()
2155 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_source_max_tmds_clock()
2174 static bool intel_has_hdmi_sink(struct intel_hdmi *hdmi, in intel_has_hdmi_sink() argument
2177 return hdmi->has_hdmi_sink && in intel_has_hdmi_sink()
2178 READ_ONCE(to_intel_digital_connector_state(conn_state)->force_audio) != HDMI_AUDIO_OFF_DVI; in intel_has_hdmi_sink()
2181 static int hdmi_port_clock_limit(struct intel_hdmi *hdmi, in hdmi_port_clock_limit() argument
2185 struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; in hdmi_port_clock_limit()
2189 struct intel_connector *connector = hdmi->attached_connector; in hdmi_port_clock_limit() local
2190 const struct drm_display_info *info = &connector->base.display_info; in hdmi_port_clock_limit()
2192 if (hdmi->dp_dual_mode.max_tmds_clock) in hdmi_port_clock_limit()
2194 hdmi->dp_dual_mode.max_tmds_clock); in hdmi_port_clock_limit()
2196 if (info->max_tmds_clock) in hdmi_port_clock_limit()
2198 info->max_tmds_clock); in hdmi_port_clock_limit()
2207 hdmi_port_clock_valid(struct intel_hdmi *hdmi, in hdmi_port_clock_valid() argument
2211 struct drm_i915_private *dev_priv = to_i915(intel_hdmi_to_dev(hdmi)); in hdmi_port_clock_valid()
2215 if (clock > hdmi_port_clock_limit(hdmi, respect_downstream_limits, in hdmi_port_clock_valid()
2219 /* BXT DPLL can't generate 223-240 MHz */ in hdmi_port_clock_valid()
2223 /* CHV DPLL can't generate 216-240 MHz */ in hdmi_port_clock_valid()
2231 intel_hdmi_mode_valid(struct drm_connector *connector, in intel_hdmi_mode_valid() argument
2234 struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_mode_valid() local
2235 struct drm_device *dev = intel_hdmi_to_dev(hdmi); in intel_hdmi_mode_valid()
2238 int clock = mode->clock; in intel_hdmi_mode_valid()
2239 int max_dotclk = to_i915(connector->dev)->max_dotclk_freq; in intel_hdmi_mode_valid()
2240 bool has_hdmi_sink = intel_has_hdmi_sink(hdmi, connector->state); in intel_hdmi_mode_valid()
2242 if (mode->flags & DRM_MODE_FLAG_DBLSCAN) in intel_hdmi_mode_valid()
2245 if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING) in intel_hdmi_mode_valid()
2251 if (mode->flags & DRM_MODE_FLAG_DBLCLK) { in intel_hdmi_mode_valid()
2257 if (drm_mode_is_420_only(&connector->display_info, mode)) in intel_hdmi_mode_valid()
2261 status = hdmi_port_clock_valid(hdmi, clock, true, has_hdmi_sink); in intel_hdmi_mode_valid()
2266 status = hdmi_port_clock_valid(hdmi, clock * 3 / 2, in intel_hdmi_mode_valid()
2271 status = hdmi_port_clock_valid(hdmi, clock * 5 / 4, in intel_hdmi_mode_valid()
2283 struct drm_atomic_state *state = crtc_state->uapi.state; in intel_hdmi_deep_color_possible()
2285 struct drm_connector *connector; in intel_hdmi_deep_color_possible() local
2288 if (crtc_state->pipe_bpp < bpc * 3) in intel_hdmi_deep_color_possible()
2294 for_each_new_connector_in_state(state, connector, connector_state, i) { in intel_hdmi_deep_color_possible()
2295 const struct drm_display_info *info = &connector->display_info; in intel_hdmi_deep_color_possible()
2297 if (connector_state->crtc != crtc_state->uapi.crtc) in intel_hdmi_deep_color_possible()
2301 const struct drm_hdmi_info *hdmi = &info->hdmi; in intel_hdmi_deep_color_possible() local
2303 if (bpc == 12 && !(hdmi->y420_dc_modes & in intel_hdmi_deep_color_possible()
2306 else if (bpc == 10 && !(hdmi->y420_dc_modes & in intel_hdmi_deep_color_possible()
2310 if (bpc == 12 && !(info->edid_hdmi_dc_modes & in intel_hdmi_deep_color_possible()
2313 else if (bpc == 10 && !(info->edid_hdmi_dc_modes & in intel_hdmi_deep_color_possible()
2326 to_i915(crtc_state->uapi.crtc->dev); in hdmi_deep_color_possible()
2328 &crtc_state->hw.adjusted_mode; in hdmi_deep_color_possible()
2337 * HDMI deep color affects the clocks, so it's only possible in hdmi_deep_color_possible()
2340 if (crtc_state->output_types != BIT(INTEL_OUTPUT_HDMI)) in hdmi_deep_color_possible()
2344 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 && in hdmi_deep_color_possible()
2346 (adjusted_mode->crtc_hblank_end - in hdmi_deep_color_possible()
2347 adjusted_mode->crtc_hblank_start) % 8 == 2) in hdmi_deep_color_possible()
2351 crtc_state->has_hdmi_sink, in hdmi_deep_color_possible()
2352 crtc_state->output_format == in hdmi_deep_color_possible()
2360 struct drm_connector *connector = conn_state->connector; in intel_hdmi_ycbcr420_config() local
2361 struct drm_i915_private *i915 = to_i915(connector->dev); in intel_hdmi_ycbcr420_config()
2363 &crtc_state->hw.adjusted_mode; in intel_hdmi_ycbcr420_config()
2365 if (!drm_mode_is_420_only(&connector->display_info, adjusted_mode)) in intel_hdmi_ycbcr420_config()
2368 if (!connector->ycbcr_420_allowed) { in intel_hdmi_ycbcr420_config()
2369 drm_err(&i915->drm, in intel_hdmi_ycbcr420_config()
2371 return -EINVAL; in intel_hdmi_ycbcr420_config()
2374 crtc_state->output_format = INTEL_OUTPUT_FORMAT_YCBCR420; in intel_hdmi_ycbcr420_config()
2396 for (bpc = 12; bpc >= 10; bpc -= 2) { in intel_hdmi_compute_bpc()
2400 true, crtc_state->has_hdmi_sink) == MODE_OK) in intel_hdmi_compute_bpc()
2410 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_hdmi_compute_clock()
2413 &crtc_state->hw.adjusted_mode; in intel_hdmi_compute_clock()
2414 int bpc, clock = adjusted_mode->crtc_clock; in intel_hdmi_compute_clock()
2416 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) in intel_hdmi_compute_clock()
2420 if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) in intel_hdmi_compute_clock()
2425 crtc_state->port_clock = intel_hdmi_port_clock(clock, bpc); in intel_hdmi_compute_clock()
2432 if (crtc_state->pipe_bpp > bpc * 3) in intel_hdmi_compute_clock()
2433 crtc_state->pipe_bpp = bpc * 3; in intel_hdmi_compute_clock()
2435 drm_dbg_kms(&i915->drm, in intel_hdmi_compute_clock()
2436 "picking %d bpc for HDMI output (pipe bpp: %d)\n", in intel_hdmi_compute_clock()
2437 bpc, crtc_state->pipe_bpp); in intel_hdmi_compute_clock()
2439 if (hdmi_port_clock_valid(intel_hdmi, crtc_state->port_clock, in intel_hdmi_compute_clock()
2440 false, crtc_state->has_hdmi_sink) != MODE_OK) { in intel_hdmi_compute_clock()
2441 drm_dbg_kms(&i915->drm, in intel_hdmi_compute_clock()
2442 "unsupported HDMI clock (%d kHz), rejecting mode\n", in intel_hdmi_compute_clock()
2443 crtc_state->port_clock); in intel_hdmi_compute_clock()
2444 return -EINVAL; in intel_hdmi_compute_clock()
2456 &crtc_state->hw.adjusted_mode; in intel_hdmi_limited_color_range()
2460 * crtc_state->limited_color_range only applies to RGB, in intel_hdmi_limited_color_range()
2465 if (crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB) in intel_hdmi_limited_color_range()
2468 if (intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_AUTO) { in intel_hdmi_limited_color_range()
2469 /* See CEA-861-E - 5.1 Default Encoding Parameters */ in intel_hdmi_limited_color_range()
2470 return crtc_state->has_hdmi_sink && in intel_hdmi_limited_color_range()
2474 return intel_conn_state->broadcast_rgb == INTEL_BROADCAST_RGB_LIMITED; in intel_hdmi_limited_color_range()
2486 if (!crtc_state->has_hdmi_sink) in intel_hdmi_has_audio()
2489 if (intel_conn_state->force_audio == HDMI_AUDIO_AUTO) in intel_hdmi_has_audio()
2490 return intel_hdmi->has_audio; in intel_hdmi_has_audio()
2492 return intel_conn_state->force_audio == HDMI_AUDIO_ON; in intel_hdmi_has_audio()
2500 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_compute_config()
2501 struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; in intel_hdmi_compute_config()
2502 struct drm_connector *connector = conn_state->connector; in intel_hdmi_compute_config() local
2503 struct drm_scdc *scdc = &connector->display_info.hdmi.scdc; in intel_hdmi_compute_config()
2506 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN) in intel_hdmi_compute_config()
2507 return -EINVAL; in intel_hdmi_compute_config()
2509 pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB; in intel_hdmi_compute_config()
2510 pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi, in intel_hdmi_compute_config()
2513 if (pipe_config->has_hdmi_sink) in intel_hdmi_compute_config()
2514 pipe_config->has_infoframe = true; in intel_hdmi_compute_config()
2516 if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) in intel_hdmi_compute_config()
2517 pipe_config->pixel_multiplier = 2; in intel_hdmi_compute_config()
2523 pipe_config->limited_color_range = in intel_hdmi_compute_config()
2527 pipe_config->has_pch_encoder = true; in intel_hdmi_compute_config()
2529 pipe_config->has_audio = in intel_hdmi_compute_config()
2536 if (conn_state->picture_aspect_ratio) in intel_hdmi_compute_config()
2537 adjusted_mode->picture_aspect_ratio = in intel_hdmi_compute_config()
2538 conn_state->picture_aspect_ratio; in intel_hdmi_compute_config()
2540 pipe_config->lane_count = 4; in intel_hdmi_compute_config()
2542 if (scdc->scrambling.supported && (INTEL_GEN(dev_priv) >= 10 || in intel_hdmi_compute_config()
2544 if (scdc->scrambling.low_rates) in intel_hdmi_compute_config()
2545 pipe_config->hdmi_scrambling = true; in intel_hdmi_compute_config()
2547 if (pipe_config->port_clock > 340000) { in intel_hdmi_compute_config()
2548 pipe_config->hdmi_scrambling = true; in intel_hdmi_compute_config()
2549 pipe_config->hdmi_high_tmds_clock_ratio = true; in intel_hdmi_compute_config()
2557 drm_dbg_kms(&dev_priv->drm, "bad AVI infoframe\n"); in intel_hdmi_compute_config()
2558 return -EINVAL; in intel_hdmi_compute_config()
2562 drm_dbg_kms(&dev_priv->drm, "bad SPD infoframe\n"); in intel_hdmi_compute_config()
2563 return -EINVAL; in intel_hdmi_compute_config()
2567 drm_dbg_kms(&dev_priv->drm, "bad HDMI infoframe\n"); in intel_hdmi_compute_config()
2568 return -EINVAL; in intel_hdmi_compute_config()
2572 drm_dbg_kms(&dev_priv->drm, "bad DRM infoframe\n"); in intel_hdmi_compute_config()
2573 return -EINVAL; in intel_hdmi_compute_config()
2580 intel_hdmi_unset_edid(struct drm_connector *connector) in intel_hdmi_unset_edid() argument
2582 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_unset_edid()
2584 intel_hdmi->has_hdmi_sink = false; in intel_hdmi_unset_edid()
2585 intel_hdmi->has_audio = false; in intel_hdmi_unset_edid()
2587 intel_hdmi->dp_dual_mode.type = DRM_DP_DUAL_MODE_NONE; in intel_hdmi_unset_edid()
2588 intel_hdmi->dp_dual_mode.max_tmds_clock = 0; in intel_hdmi_unset_edid()
2590 kfree(to_intel_connector(connector)->detect_edid); in intel_hdmi_unset_edid()
2591 to_intel_connector(connector)->detect_edid = NULL; in intel_hdmi_unset_edid()
2595 intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid) in intel_hdmi_dp_dual_mode_detect() argument
2597 struct drm_i915_private *dev_priv = to_i915(connector->dev); in intel_hdmi_dp_dual_mode_detect()
2598 struct intel_hdmi *hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_dp_dual_mode_detect() local
2599 enum port port = hdmi_to_dig_port(hdmi)->base.port; in intel_hdmi_dp_dual_mode_detect()
2601 intel_gmbus_get_adapter(dev_priv, hdmi->ddc_bus); in intel_hdmi_dp_dual_mode_detect()
2620 if (has_edid && !connector->override_edid && in intel_hdmi_dp_dual_mode_detect()
2622 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_dp_dual_mode_detect()
2633 hdmi->dp_dual_mode.type = type; in intel_hdmi_dp_dual_mode_detect()
2634 hdmi->dp_dual_mode.max_tmds_clock = in intel_hdmi_dp_dual_mode_detect()
2637 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_dp_dual_mode_detect()
2640 hdmi->dp_dual_mode.max_tmds_clock); in intel_hdmi_dp_dual_mode_detect()
2644 intel_hdmi_set_edid(struct drm_connector *connector) in intel_hdmi_set_edid() argument
2646 struct drm_i915_private *dev_priv = to_i915(connector->dev); in intel_hdmi_set_edid()
2647 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_set_edid()
2655 i2c = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus); in intel_hdmi_set_edid()
2657 edid = drm_get_edid(connector, i2c); in intel_hdmi_set_edid()
2660 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_set_edid()
2661 "HDMI GMBUS EDID read failed, retry using GPIO bit-banging\n"); in intel_hdmi_set_edid()
2663 edid = drm_get_edid(connector, i2c); in intel_hdmi_set_edid()
2667 intel_hdmi_dp_dual_mode_detect(connector, edid != NULL); in intel_hdmi_set_edid()
2671 to_intel_connector(connector)->detect_edid = edid; in intel_hdmi_set_edid()
2672 if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) { in intel_hdmi_set_edid()
2673 intel_hdmi->has_audio = drm_detect_monitor_audio(edid); in intel_hdmi_set_edid()
2674 intel_hdmi->has_hdmi_sink = drm_detect_hdmi_monitor(edid); in intel_hdmi_set_edid()
2679 cec_notifier_set_phys_addr_from_edid(intel_hdmi->cec_notifier, edid); in intel_hdmi_set_edid()
2685 intel_hdmi_detect(struct drm_connector *connector, bool force) in intel_hdmi_detect() argument
2688 struct drm_i915_private *dev_priv = to_i915(connector->dev); in intel_hdmi_detect()
2689 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_detect()
2690 struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base; in intel_hdmi_detect()
2693 drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s]\n", in intel_hdmi_detect()
2694 connector->base.id, connector->name); in intel_hdmi_detect()
2705 intel_hdmi_unset_edid(connector); in intel_hdmi_detect()
2707 if (intel_hdmi_set_edid(connector)) in intel_hdmi_detect()
2714 cec_notifier_phys_addr_invalidate(intel_hdmi->cec_notifier); in intel_hdmi_detect()
2726 intel_hdmi_force(struct drm_connector *connector) in intel_hdmi_force() argument
2728 struct drm_i915_private *i915 = to_i915(connector->dev); in intel_hdmi_force()
2730 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n", in intel_hdmi_force()
2731 connector->base.id, connector->name); in intel_hdmi_force()
2733 intel_hdmi_unset_edid(connector); in intel_hdmi_force()
2735 if (connector->status != connector_status_connected) in intel_hdmi_force()
2738 intel_hdmi_set_edid(connector); in intel_hdmi_force()
2741 static int intel_hdmi_get_modes(struct drm_connector *connector) in intel_hdmi_get_modes() argument
2745 edid = to_intel_connector(connector)->detect_edid; in intel_hdmi_get_modes()
2749 return intel_connector_update_modes(connector, edid); in intel_hdmi_get_modes()
2762 dig_port->set_infoframes(encoder, in intel_hdmi_pre_enable()
2763 pipe_config->has_infoframe, in intel_hdmi_pre_enable()
2773 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in vlv_hdmi_pre_enable()
2777 /* HDMI 1.0V-2dB */ in vlv_hdmi_pre_enable()
2781 dig_port->set_infoframes(encoder, in vlv_hdmi_pre_enable()
2782 pipe_config->has_infoframe, in vlv_hdmi_pre_enable()
2823 /* Reset lanes to avoid HDMI flicker (VLV w/a) */ in vlv_hdmi_post_disable()
2832 struct drm_device *dev = encoder->base.dev; in chv_hdmi_post_disable()
2849 struct drm_device *dev = encoder->base.dev; in chv_hdmi_pre_enable()
2854 /* FIXME: Program the support xxx V-dB */ in chv_hdmi_pre_enable()
2855 /* Use 800mV-0dB */ in chv_hdmi_pre_enable()
2858 dig_port->set_infoframes(encoder, in chv_hdmi_pre_enable()
2859 pipe_config->has_infoframe, in chv_hdmi_pre_enable()
2871 intel_hdmi_get_i2c_adapter(struct drm_connector *connector) in intel_hdmi_get_i2c_adapter() argument
2873 struct drm_i915_private *dev_priv = to_i915(connector->dev); in intel_hdmi_get_i2c_adapter()
2874 struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector)); in intel_hdmi_get_i2c_adapter()
2876 return intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus); in intel_hdmi_get_i2c_adapter()
2879 static void intel_hdmi_create_i2c_symlink(struct drm_connector *connector) in intel_hdmi_create_i2c_symlink() argument
2881 struct drm_i915_private *i915 = to_i915(connector->dev); in intel_hdmi_create_i2c_symlink()
2882 struct i2c_adapter *adapter = intel_hdmi_get_i2c_adapter(connector); in intel_hdmi_create_i2c_symlink()
2883 struct kobject *i2c_kobj = &adapter->dev.kobj; in intel_hdmi_create_i2c_symlink()
2884 struct kobject *connector_kobj = &connector->kdev->kobj; in intel_hdmi_create_i2c_symlink()
2887 ret = sysfs_create_link(connector_kobj, i2c_kobj, i2c_kobj->name); in intel_hdmi_create_i2c_symlink()
2889 drm_err(&i915->drm, "Failed to create i2c symlink (%d)\n", ret); in intel_hdmi_create_i2c_symlink()
2892 static void intel_hdmi_remove_i2c_symlink(struct drm_connector *connector) in intel_hdmi_remove_i2c_symlink() argument
2894 struct i2c_adapter *adapter = intel_hdmi_get_i2c_adapter(connector); in intel_hdmi_remove_i2c_symlink()
2895 struct kobject *i2c_kobj = &adapter->dev.kobj; in intel_hdmi_remove_i2c_symlink()
2896 struct kobject *connector_kobj = &connector->kdev->kobj; in intel_hdmi_remove_i2c_symlink()
2898 sysfs_remove_link(connector_kobj, i2c_kobj->name); in intel_hdmi_remove_i2c_symlink()
2902 intel_hdmi_connector_register(struct drm_connector *connector) in intel_hdmi_connector_register() argument
2906 ret = intel_connector_register(connector); in intel_hdmi_connector_register()
2910 intel_hdmi_create_i2c_symlink(connector); in intel_hdmi_connector_register()
2915 static void intel_hdmi_connector_unregister(struct drm_connector *connector) in intel_hdmi_connector_unregister() argument
2917 struct cec_notifier *n = intel_attached_hdmi(to_intel_connector(connector))->cec_notifier; in intel_hdmi_connector_unregister()
2921 intel_hdmi_remove_i2c_symlink(connector); in intel_hdmi_connector_unregister()
2922 intel_connector_unregister(connector); in intel_hdmi_connector_unregister()
2949 intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) in intel_hdmi_add_properties() argument
2951 struct drm_i915_private *dev_priv = to_i915(connector->dev); in intel_hdmi_add_properties()
2955 intel_attach_force_audio_property(connector); in intel_hdmi_add_properties()
2956 intel_attach_broadcast_rgb_property(connector); in intel_hdmi_add_properties()
2957 intel_attach_aspect_ratio_property(connector); in intel_hdmi_add_properties()
2964 if (!dig_port->lspcon.active) in intel_hdmi_add_properties()
2965 intel_attach_colorspace_property(connector); in intel_hdmi_add_properties()
2967 drm_connector_attach_content_type_property(connector); in intel_hdmi_add_properties()
2970 drm_object_attach_property(&connector->base, in intel_hdmi_add_properties()
2971 connector->dev->mode_config.hdr_output_metadata_property, 0); in intel_hdmi_add_properties()
2974 drm_connector_attach_max_bpc_property(connector, 8, 12); in intel_hdmi_add_properties()
2980 * @connector: drm_connector
2986 * This function handles scrambling on HDMI 2.0 capable sinks.
2988 * it enables scrambling. This should be called before enabling the HDMI
2996 struct drm_connector *connector, in intel_hdmi_handle_sink_scrambling() argument
3000 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_handle_sink_scrambling()
3003 &connector->display_info.hdmi.scdc.scrambling; in intel_hdmi_handle_sink_scrambling()
3005 intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus); in intel_hdmi_handle_sink_scrambling()
3007 if (!sink_scrambling->supported) in intel_hdmi_handle_sink_scrambling()
3010 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_handle_sink_scrambling()
3011 "[CONNECTOR:%d:%s] scrambling=%s, TMDS bit clock ratio=1/%d\n", in intel_hdmi_handle_sink_scrambling()
3012 connector->base.id, connector->name, in intel_hdmi_handle_sink_scrambling()
3097 drm_WARN(&dev_priv->drm, 1, "Unknown port:%c\n", port_name(port)); in icl_port_to_ddc_pin()
3132 * final two outputs use type-c pins, even though they're actually in rkl_port_to_ddc_pin()
3133 * combo outputs. With CMP, the traditional DDI A-D pins are used for in rkl_port_to_ddc_pin()
3137 return GMBUS_PIN_9_TC1_ICP + phy - PHY_C; in rkl_port_to_ddc_pin()
3167 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_ddc_pin()
3168 enum port port = encoder->port; in intel_hdmi_ddc_pin()
3173 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_ddc_pin()
3194 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_ddc_pin()
3204 to_i915(dig_port->base.base.dev); in intel_infoframe_init()
3207 dig_port->write_infoframe = vlv_write_infoframe; in intel_infoframe_init()
3208 dig_port->read_infoframe = vlv_read_infoframe; in intel_infoframe_init()
3209 dig_port->set_infoframes = vlv_set_infoframes; in intel_infoframe_init()
3210 dig_port->infoframes_enabled = vlv_infoframes_enabled; in intel_infoframe_init()
3212 dig_port->write_infoframe = g4x_write_infoframe; in intel_infoframe_init()
3213 dig_port->read_infoframe = g4x_read_infoframe; in intel_infoframe_init()
3214 dig_port->set_infoframes = g4x_set_infoframes; in intel_infoframe_init()
3215 dig_port->infoframes_enabled = g4x_infoframes_enabled; in intel_infoframe_init()
3217 if (dig_port->lspcon.active) { in intel_infoframe_init()
3218 dig_port->write_infoframe = lspcon_write_infoframe; in intel_infoframe_init()
3219 dig_port->read_infoframe = lspcon_read_infoframe; in intel_infoframe_init()
3220 dig_port->set_infoframes = lspcon_set_infoframes; in intel_infoframe_init()
3221 dig_port->infoframes_enabled = lspcon_infoframes_enabled; in intel_infoframe_init()
3223 dig_port->write_infoframe = hsw_write_infoframe; in intel_infoframe_init()
3224 dig_port->read_infoframe = hsw_read_infoframe; in intel_infoframe_init()
3225 dig_port->set_infoframes = hsw_set_infoframes; in intel_infoframe_init()
3226 dig_port->infoframes_enabled = hsw_infoframes_enabled; in intel_infoframe_init()
3229 dig_port->write_infoframe = ibx_write_infoframe; in intel_infoframe_init()
3230 dig_port->read_infoframe = ibx_read_infoframe; in intel_infoframe_init()
3231 dig_port->set_infoframes = ibx_set_infoframes; in intel_infoframe_init()
3232 dig_port->infoframes_enabled = ibx_infoframes_enabled; in intel_infoframe_init()
3234 dig_port->write_infoframe = cpt_write_infoframe; in intel_infoframe_init()
3235 dig_port->read_infoframe = cpt_read_infoframe; in intel_infoframe_init()
3236 dig_port->set_infoframes = cpt_set_infoframes; in intel_infoframe_init()
3237 dig_port->infoframes_enabled = cpt_infoframes_enabled; in intel_infoframe_init()
3244 struct drm_connector *connector = &intel_connector->base; in intel_hdmi_init_connector() local
3245 struct intel_hdmi *intel_hdmi = &dig_port->hdmi; in intel_hdmi_init_connector()
3246 struct intel_encoder *intel_encoder = &dig_port->base; in intel_hdmi_init_connector()
3247 struct drm_device *dev = intel_encoder->base.dev; in intel_hdmi_init_connector()
3250 enum port port = intel_encoder->port; in intel_hdmi_init_connector()
3253 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_init_connector()
3254 "Adding HDMI connector on [ENCODER:%d:%s]\n", in intel_hdmi_init_connector()
3255 intel_encoder->base.base.id, intel_encoder->base.name); in intel_hdmi_init_connector()
3260 if (drm_WARN(dev, dig_port->max_lanes < 4, in intel_hdmi_init_connector()
3261 "Not enough lanes (%d) for HDMI on [ENCODER:%d:%s]\n", in intel_hdmi_init_connector()
3262 dig_port->max_lanes, intel_encoder->base.base.id, in intel_hdmi_init_connector()
3263 intel_encoder->base.name)) in intel_hdmi_init_connector()
3266 intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(intel_encoder); in intel_hdmi_init_connector()
3267 ddc = intel_gmbus_get_adapter(dev_priv, intel_hdmi->ddc_bus); in intel_hdmi_init_connector()
3269 drm_connector_init_with_ddc(dev, connector, in intel_hdmi_init_connector()
3273 drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); in intel_hdmi_init_connector()
3275 connector->interlace_allowed = 1; in intel_hdmi_init_connector()
3276 connector->doublescan_allowed = 0; in intel_hdmi_init_connector()
3277 connector->stereo_allowed = 1; in intel_hdmi_init_connector()
3280 connector->ycbcr_420_allowed = true; in intel_hdmi_init_connector()
3282 intel_connector->polled = DRM_CONNECTOR_POLL_HPD; in intel_hdmi_init_connector()
3285 intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; in intel_hdmi_init_connector()
3287 intel_connector->get_hw_state = intel_connector_get_hw_state; in intel_hdmi_init_connector()
3289 intel_hdmi_add_properties(intel_hdmi, connector); in intel_hdmi_init_connector()
3292 intel_hdmi->attached_connector = intel_connector; in intel_hdmi_init_connector()
3298 drm_dbg_kms(&dev_priv->drm, in intel_hdmi_init_connector()
3312 cec_fill_conn_info_from_drm(&conn_info, connector); in intel_hdmi_init_connector()
3314 intel_hdmi->cec_notifier = in intel_hdmi_init_connector()
3315 cec_notifier_conn_register(dev->dev, port_identifier(port), in intel_hdmi_init_connector()
3317 if (!intel_hdmi->cec_notifier) in intel_hdmi_init_connector()
3318 drm_dbg_kms(&dev_priv->drm, "CEC notifier get failed\n"); in intel_hdmi_init_connector()
3323 struct intel_connector *connector) in intel_hdmi_hotplug() argument
3327 state = intel_encoder_hotplug(encoder, connector); in intel_hdmi_hotplug()
3330 * On many platforms the HDMI live state signal is known to be in intel_hdmi_hotplug()
3336 * connector pins are specified) and so we'll still be able to get a in intel_hdmi_hotplug()
3341 if (state == INTEL_HOTPLUG_UNCHANGED && !connector->hotplug_retries) in intel_hdmi_hotplug()
3364 intel_encoder = &dig_port->base; in intel_hdmi_init()
3366 mutex_init(&dig_port->hdcp_mutex); in intel_hdmi_init()
3368 drm_encoder_init(&dev_priv->drm, &intel_encoder->base, in intel_hdmi_init()
3370 "HDMI %c", port_name(port)); in intel_hdmi_init()
3372 intel_encoder->hotplug = intel_hdmi_hotplug; in intel_hdmi_init()
3373 intel_encoder->compute_config = intel_hdmi_compute_config; in intel_hdmi_init()
3375 intel_encoder->disable = pch_disable_hdmi; in intel_hdmi_init()
3376 intel_encoder->post_disable = pch_post_disable_hdmi; in intel_hdmi_init()
3378 intel_encoder->disable = g4x_disable_hdmi; in intel_hdmi_init()
3380 intel_encoder->get_hw_state = intel_hdmi_get_hw_state; in intel_hdmi_init()
3381 intel_encoder->get_config = intel_hdmi_get_config; in intel_hdmi_init()
3383 intel_encoder->pre_pll_enable = chv_hdmi_pre_pll_enable; in intel_hdmi_init()
3384 intel_encoder->pre_enable = chv_hdmi_pre_enable; in intel_hdmi_init()
3385 intel_encoder->enable = vlv_enable_hdmi; in intel_hdmi_init()
3386 intel_encoder->post_disable = chv_hdmi_post_disable; in intel_hdmi_init()
3387 intel_encoder->post_pll_disable = chv_hdmi_post_pll_disable; in intel_hdmi_init()
3389 intel_encoder->pre_pll_enable = vlv_hdmi_pre_pll_enable; in intel_hdmi_init()
3390 intel_encoder->pre_enable = vlv_hdmi_pre_enable; in intel_hdmi_init()
3391 intel_encoder->enable = vlv_enable_hdmi; in intel_hdmi_init()
3392 intel_encoder->post_disable = vlv_hdmi_post_disable; in intel_hdmi_init()
3394 intel_encoder->pre_enable = intel_hdmi_pre_enable; in intel_hdmi_init()
3396 intel_encoder->enable = cpt_enable_hdmi; in intel_hdmi_init()
3398 intel_encoder->enable = ibx_enable_hdmi; in intel_hdmi_init()
3400 intel_encoder->enable = g4x_enable_hdmi; in intel_hdmi_init()
3403 intel_encoder->type = INTEL_OUTPUT_HDMI; in intel_hdmi_init()
3404 intel_encoder->power_domain = intel_port_to_power_domain(port); in intel_hdmi_init()
3405 intel_encoder->port = port; in intel_hdmi_init()
3408 intel_encoder->pipe_mask = BIT(PIPE_C); in intel_hdmi_init()
3410 intel_encoder->pipe_mask = BIT(PIPE_A) | BIT(PIPE_B); in intel_hdmi_init()
3412 intel_encoder->pipe_mask = ~0; in intel_hdmi_init()
3414 intel_encoder->cloneable = 1 << INTEL_OUTPUT_ANALOG; in intel_hdmi_init()
3415 intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port); in intel_hdmi_init()
3417 * BSpec is unclear about HDMI+HDMI cloning on g4x, but it seems in intel_hdmi_init()
3422 intel_encoder->cloneable |= 1 << INTEL_OUTPUT_HDMI; in intel_hdmi_init()
3424 dig_port->hdmi.hdmi_reg = hdmi_reg; in intel_hdmi_init()
3425 dig_port->dp.output_reg = INVALID_MMIO_REG; in intel_hdmi_init()
3426 dig_port->max_lanes = 4; in intel_hdmi_init()
3430 dig_port->aux_ch = intel_bios_port_aux_ch(dev_priv, port); in intel_hdmi_init()