Lines Matching full:encoder
225 static void g4x_write_infoframe(struct intel_encoder *encoder, in g4x_write_infoframe() argument
230 struct intel_display *display = to_intel_display(encoder); in g4x_write_infoframe()
261 static void g4x_read_infoframe(struct intel_encoder *encoder, in g4x_read_infoframe() argument
266 struct intel_display *display = to_intel_display(encoder); in g4x_read_infoframe()
277 static u32 g4x_infoframes_enabled(struct intel_encoder *encoder, in g4x_infoframes_enabled() argument
280 struct intel_display *display = to_intel_display(encoder); in g4x_infoframes_enabled()
286 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in g4x_infoframes_enabled()
293 static void ibx_write_infoframe(struct intel_encoder *encoder, in ibx_write_infoframe() argument
298 struct intel_display *display = to_intel_display(encoder); in ibx_write_infoframe()
332 static void ibx_read_infoframe(struct intel_encoder *encoder, in ibx_read_infoframe() argument
337 struct intel_display *display = to_intel_display(encoder); in ibx_read_infoframe()
349 static u32 ibx_infoframes_enabled(struct intel_encoder *encoder, in ibx_infoframes_enabled() argument
352 struct intel_display *display = to_intel_display(encoder); in ibx_infoframes_enabled()
360 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in ibx_infoframes_enabled()
368 static void cpt_write_infoframe(struct intel_encoder *encoder, in cpt_write_infoframe() argument
373 struct intel_display *display = to_intel_display(encoder); in cpt_write_infoframe()
410 static void cpt_read_infoframe(struct intel_encoder *encoder, in cpt_read_infoframe() argument
415 struct intel_display *display = to_intel_display(encoder); in cpt_read_infoframe()
427 static u32 cpt_infoframes_enabled(struct intel_encoder *encoder, in cpt_infoframes_enabled() argument
430 struct intel_display *display = to_intel_display(encoder); in cpt_infoframes_enabled()
442 static void vlv_write_infoframe(struct intel_encoder *encoder, in vlv_write_infoframe() argument
447 struct intel_display *display = to_intel_display(encoder); in vlv_write_infoframe()
482 static void vlv_read_infoframe(struct intel_encoder *encoder, in vlv_read_infoframe() argument
487 struct intel_display *display = to_intel_display(encoder); in vlv_read_infoframe()
500 static u32 vlv_infoframes_enabled(struct intel_encoder *encoder, in vlv_infoframes_enabled() argument
503 struct intel_display *display = to_intel_display(encoder); in vlv_infoframes_enabled()
510 if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port)) in vlv_infoframes_enabled()
518 void hsw_write_infoframe(struct intel_encoder *encoder, in hsw_write_infoframe() argument
523 struct intel_display *display = to_intel_display(encoder); in hsw_write_infoframe()
562 void hsw_read_infoframe(struct intel_encoder *encoder, in hsw_read_infoframe() argument
566 struct intel_display *display = to_intel_display(encoder); in hsw_read_infoframe()
576 static u32 hsw_infoframes_enabled(struct intel_encoder *encoder, in hsw_infoframes_enabled() argument
579 struct intel_display *display = to_intel_display(encoder); in hsw_infoframes_enabled()
620 u32 intel_hdmi_infoframes_enabled(struct intel_encoder *encoder, in intel_hdmi_infoframes_enabled() argument
623 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_infoframes_enabled()
624 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_hdmi_infoframes_enabled()
628 val = dig_port->infoframes_enabled(encoder, crtc_state); in intel_hdmi_infoframes_enabled()
663 static void intel_write_infoframe(struct intel_encoder *encoder, in intel_write_infoframe() argument
668 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_write_infoframe()
676 if (drm_WARN_ON(encoder->base.dev, frame->any.type != type)) in intel_write_infoframe()
681 if (drm_WARN_ON(encoder->base.dev, len < 0)) in intel_write_infoframe()
689 dig_port->write_infoframe(encoder, crtc_state, type, buffer, len); in intel_write_infoframe()
692 void intel_read_infoframe(struct intel_encoder *encoder, in intel_read_infoframe() argument
697 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_read_infoframe()
705 dig_port->read_infoframe(encoder, crtc_state, in intel_read_infoframe()
714 drm_dbg_kms(encoder->base.dev, in intel_read_infoframe()
720 drm_dbg_kms(encoder->base.dev, in intel_read_infoframe()
726 intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder, in intel_hdmi_compute_avi_infoframe() argument
757 drm_WARN_ON(encoder->base.dev, crtc_state->limited_color_range && in intel_hdmi_compute_avi_infoframe()
776 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_avi_infoframe()
783 intel_hdmi_compute_spd_infoframe(struct intel_encoder *encoder, in intel_hdmi_compute_spd_infoframe() argument
802 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_spd_infoframe()
808 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_spd_infoframe()
815 intel_hdmi_compute_hdmi_infoframe(struct intel_encoder *encoder, in intel_hdmi_compute_hdmi_infoframe() argument
834 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_hdmi_infoframe()
838 if (drm_WARN_ON(encoder->base.dev, ret)) in intel_hdmi_compute_hdmi_infoframe()
845 intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder, in intel_hdmi_compute_drm_infoframe() argument
849 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_compute_drm_infoframe()
879 static void g4x_set_infoframes(struct intel_encoder *encoder, in g4x_set_infoframes() argument
884 struct intel_display *display = to_intel_display(encoder); in g4x_set_infoframes()
885 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in g4x_set_infoframes()
889 u32 port = VIDEO_DIP_PORT(encoder->port); in g4x_set_infoframes()
938 intel_write_infoframe(encoder, crtc_state, in g4x_set_infoframes()
941 intel_write_infoframe(encoder, crtc_state, in g4x_set_infoframes()
944 intel_write_infoframe(encoder, crtc_state, in g4x_set_infoframes()
992 static bool intel_hdmi_set_gcp_infoframe(struct intel_encoder *encoder, in intel_hdmi_set_gcp_infoframe() argument
996 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_set_gcp_infoframe()
1018 void intel_hdmi_read_gcp_infoframe(struct intel_encoder *encoder, in intel_hdmi_read_gcp_infoframe() argument
1021 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_read_gcp_infoframe()
1041 static void intel_hdmi_compute_gcp_infoframe(struct intel_encoder *encoder, in intel_hdmi_compute_gcp_infoframe() argument
1045 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_compute_gcp_infoframe()
1063 static void ibx_set_infoframes(struct intel_encoder *encoder, in ibx_set_infoframes() argument
1068 struct intel_display *display = to_intel_display(encoder); in ibx_set_infoframes()
1070 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in ibx_set_infoframes()
1074 u32 port = VIDEO_DIP_PORT(encoder->port); in ibx_set_infoframes()
1105 if (intel_hdmi_set_gcp_infoframe(encoder, crtc_state, conn_state)) in ibx_set_infoframes()
1111 intel_write_infoframe(encoder, crtc_state, in ibx_set_infoframes()
1114 intel_write_infoframe(encoder, crtc_state, in ibx_set_infoframes()
1117 intel_write_infoframe(encoder, crtc_state, in ibx_set_infoframes()
1122 static void cpt_set_infoframes(struct intel_encoder *encoder, in cpt_set_infoframes() argument
1127 struct intel_display *display = to_intel_display(encoder); in cpt_set_infoframes()
1129 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); in cpt_set_infoframes()
1154 if (intel_hdmi_set_gcp_infoframe(encoder, crtc_state, conn_state)) in cpt_set_infoframes()
1160 intel_write_infoframe(encoder, crtc_state, in cpt_set_infoframes()
1163 intel_write_infoframe(encoder, crtc_state, in cpt_set_infoframes()
1166 intel_write_infoframe(encoder, crtc_state, in cpt_set_infoframes()
1171 static void vlv_set_infoframes(struct intel_encoder *encoder, in vlv_set_infoframes() argument
1176 struct intel_display *display = to_intel_display(encoder); in vlv_set_infoframes()
1178 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); in vlv_set_infoframes()
1181 u32 port = VIDEO_DIP_PORT(encoder->port); in vlv_set_infoframes()
1212 if (intel_hdmi_set_gcp_infoframe(encoder, crtc_state, conn_state)) in vlv_set_infoframes()
1218 intel_write_infoframe(encoder, crtc_state, in vlv_set_infoframes()
1221 intel_write_infoframe(encoder, crtc_state, in vlv_set_infoframes()
1224 intel_write_infoframe(encoder, crtc_state, in vlv_set_infoframes()
1229 void intel_hdmi_fastset_infoframes(struct intel_encoder *encoder, in intel_hdmi_fastset_infoframes() argument
1233 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_fastset_infoframes()
1248 intel_write_infoframe(encoder, crtc_state, in intel_hdmi_fastset_infoframes()
1253 static void hsw_set_infoframes(struct intel_encoder *encoder, in hsw_set_infoframes() argument
1258 struct intel_display *display = to_intel_display(encoder); in hsw_set_infoframes()
1277 if (intel_hdmi_set_gcp_infoframe(encoder, crtc_state, conn_state)) in hsw_set_infoframes()
1283 intel_write_infoframe(encoder, crtc_state, in hsw_set_infoframes()
1286 intel_write_infoframe(encoder, crtc_state, in hsw_set_infoframes()
1289 intel_write_infoframe(encoder, crtc_state, in hsw_set_infoframes()
1292 intel_write_infoframe(encoder, crtc_state, in hsw_set_infoframes()
1824 static int intel_hdmi_source_max_tmds_clock(struct intel_encoder *encoder) in intel_hdmi_source_max_tmds_clock() argument
1826 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_source_max_tmds_clock()
1840 vbt_max_tmds_clock = intel_bios_hdmi_max_tmds_clock(encoder->devdata); in intel_hdmi_source_max_tmds_clock()
1865 struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; in hdmi_port_clock_limit() local
1866 int max_tmds_clock = intel_hdmi_source_max_tmds_clock(encoder); in hdmi_port_clock_limit()
1892 struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; in hdmi_port_clock_valid() local
1914 if (intel_encoder_is_combo(encoder) && clock > 500000 && clock < 533200) in hdmi_port_clock_valid()
1918 if (intel_encoder_is_tc(encoder) && clock > 500000 && clock < 532800) in hdmi_port_clock_valid()
2163 static int intel_hdmi_compute_bpc(struct intel_encoder *encoder, in intel_hdmi_compute_bpc() argument
2167 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_compute_bpc()
2198 static int intel_hdmi_compute_clock(struct intel_encoder *encoder, in intel_hdmi_compute_clock() argument
2202 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_compute_clock()
2210 bpc = intel_hdmi_compute_bpc(encoder, crtc_state, clock, in intel_hdmi_compute_clock()
2260 static bool intel_hdmi_has_audio(struct intel_encoder *encoder, in intel_hdmi_has_audio() argument
2283 static int intel_hdmi_compute_output_format(struct intel_encoder *encoder, in intel_hdmi_compute_output_format() argument
2298 return intel_hdmi_compute_clock(encoder, crtc_state, respect_downstream_limits); in intel_hdmi_compute_output_format()
2301 static int intel_hdmi_compute_formats(struct intel_encoder *encoder, in intel_hdmi_compute_formats() argument
2306 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_compute_formats()
2313 ret = intel_hdmi_compute_output_format(encoder, crtc_state, connector, in intel_hdmi_compute_formats()
2321 ret = intel_hdmi_compute_output_format(encoder, crtc_state, connector, in intel_hdmi_compute_formats()
2326 ret = intel_hdmi_compute_output_format(encoder, crtc_state, connector, in intel_hdmi_compute_formats()
2331 ret = intel_hdmi_compute_output_format(encoder, crtc_state, connector, in intel_hdmi_compute_formats()
2345 static bool source_supports_scrambling(struct intel_encoder *encoder) in source_supports_scrambling() argument
2361 return intel_hdmi_source_max_tmds_clock(encoder) > 340000; in source_supports_scrambling()
2364 bool intel_hdmi_compute_has_hdmi_sink(struct intel_encoder *encoder, in intel_hdmi_compute_has_hdmi_sink() argument
2368 struct intel_hdmi *hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_compute_has_hdmi_sink()
2374 int intel_hdmi_compute_config(struct intel_encoder *encoder, in intel_hdmi_compute_config() argument
2378 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_compute_config()
2403 intel_hdmi_has_audio(encoder, pipe_config, conn_state) && in intel_hdmi_compute_config()
2404 intel_audio_compute_config(encoder, pipe_config, conn_state); in intel_hdmi_compute_config()
2410 ret = intel_hdmi_compute_formats(encoder, pipe_config, conn_state, true); in intel_hdmi_compute_config()
2412 ret = intel_hdmi_compute_formats(encoder, pipe_config, conn_state, false); in intel_hdmi_compute_config()
2433 if (scdc->scrambling.supported && source_supports_scrambling(encoder)) { in intel_hdmi_compute_config()
2445 intel_hdmi_compute_gcp_infoframe(encoder, pipe_config, in intel_hdmi_compute_config()
2448 if (!intel_hdmi_compute_avi_infoframe(encoder, pipe_config, conn_state)) { in intel_hdmi_compute_config()
2453 if (!intel_hdmi_compute_spd_infoframe(encoder, pipe_config, conn_state)) { in intel_hdmi_compute_config()
2458 if (!intel_hdmi_compute_hdmi_infoframe(encoder, pipe_config, conn_state)) { in intel_hdmi_compute_config()
2463 if (!intel_hdmi_compute_drm_infoframe(encoder, pipe_config, conn_state)) { in intel_hdmi_compute_config()
2471 void intel_hdmi_encoder_shutdown(struct intel_encoder *encoder) in intel_hdmi_encoder_shutdown() argument
2473 struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_encoder_shutdown()
2501 struct intel_encoder *encoder = &hdmi_to_dig_port(hdmi)->base; in intel_hdmi_dp_dual_mode_detect() local
2518 intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) { in intel_hdmi_dp_dual_mode_detect()
2541 !intel_bios_encoder_supports_dp_dual_mode(encoder->devdata)) { in intel_hdmi_dp_dual_mode_detect()
2597 struct intel_encoder *encoder = &hdmi_to_dig_port(intel_hdmi)->base; in intel_hdmi_detect() local
2612 !intel_digital_port_connected(encoder)) in intel_hdmi_detect()
2759 * @encoder: intel_encoder
2775 bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder, in intel_hdmi_handle_sink_scrambling() argument
2781 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_handle_sink_scrambling()
2798 static u8 chv_encoder_to_ddc_pin(struct intel_encoder *encoder) in chv_encoder_to_ddc_pin() argument
2800 enum port port = encoder->port; in chv_encoder_to_ddc_pin()
2821 static u8 bxt_encoder_to_ddc_pin(struct intel_encoder *encoder) in bxt_encoder_to_ddc_pin() argument
2823 enum port port = encoder->port; in bxt_encoder_to_ddc_pin()
2841 static u8 cnp_encoder_to_ddc_pin(struct intel_encoder *encoder) in cnp_encoder_to_ddc_pin() argument
2843 enum port port = encoder->port; in cnp_encoder_to_ddc_pin()
2867 static u8 icl_encoder_to_ddc_pin(struct intel_encoder *encoder) in icl_encoder_to_ddc_pin() argument
2869 struct intel_display *display = to_intel_display(encoder); in icl_encoder_to_ddc_pin()
2870 enum port port = encoder->port; in icl_encoder_to_ddc_pin()
2872 if (intel_encoder_is_combo(encoder)) in icl_encoder_to_ddc_pin()
2874 else if (intel_encoder_is_tc(encoder)) in icl_encoder_to_ddc_pin()
2875 return GMBUS_PIN_9_TC1_ICP + intel_encoder_to_tc(encoder); in icl_encoder_to_ddc_pin()
2881 static u8 mcc_encoder_to_ddc_pin(struct intel_encoder *encoder) in mcc_encoder_to_ddc_pin() argument
2883 enum phy phy = intel_encoder_to_phy(encoder); in mcc_encoder_to_ddc_pin()
2904 static u8 rkl_encoder_to_ddc_pin(struct intel_encoder *encoder) in rkl_encoder_to_ddc_pin() argument
2906 struct intel_display *display = to_intel_display(encoder); in rkl_encoder_to_ddc_pin()
2907 enum phy phy = intel_encoder_to_phy(encoder); in rkl_encoder_to_ddc_pin()
2909 WARN_ON(encoder->port == PORT_C); in rkl_encoder_to_ddc_pin()
2923 static u8 gen9bc_tgp_encoder_to_ddc_pin(struct intel_encoder *encoder) in gen9bc_tgp_encoder_to_ddc_pin() argument
2925 struct intel_display *display = to_intel_display(encoder); in gen9bc_tgp_encoder_to_ddc_pin()
2926 enum phy phy = intel_encoder_to_phy(encoder); in gen9bc_tgp_encoder_to_ddc_pin()
2928 drm_WARN_ON(display->drm, encoder->port == PORT_A); in gen9bc_tgp_encoder_to_ddc_pin()
2942 static u8 dg1_encoder_to_ddc_pin(struct intel_encoder *encoder) in dg1_encoder_to_ddc_pin() argument
2944 return intel_encoder_to_phy(encoder) + 1; in dg1_encoder_to_ddc_pin()
2947 static u8 adls_encoder_to_ddc_pin(struct intel_encoder *encoder) in adls_encoder_to_ddc_pin() argument
2949 enum phy phy = intel_encoder_to_phy(encoder); in adls_encoder_to_ddc_pin()
2951 WARN_ON(encoder->port == PORT_B || encoder->port == PORT_C); in adls_encoder_to_ddc_pin()
2963 static u8 g4x_encoder_to_ddc_pin(struct intel_encoder *encoder) in g4x_encoder_to_ddc_pin() argument
2965 enum port port = encoder->port; in g4x_encoder_to_ddc_pin()
2986 static u8 intel_hdmi_default_ddc_pin(struct intel_encoder *encoder) in intel_hdmi_default_ddc_pin() argument
2988 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_default_ddc_pin()
2992 ddc_pin = adls_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
2994 ddc_pin = dg1_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
2996 ddc_pin = rkl_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
2998 ddc_pin = gen9bc_tgp_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3001 ddc_pin = mcc_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3003 ddc_pin = icl_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3005 ddc_pin = cnp_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3007 ddc_pin = bxt_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3009 ddc_pin = chv_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3011 ddc_pin = g4x_encoder_to_ddc_pin(encoder); in intel_hdmi_default_ddc_pin()
3017 get_encoder_by_ddc_pin(struct intel_encoder *encoder, u8 ddc_pin) in get_encoder_by_ddc_pin() argument
3019 struct intel_display *display = to_intel_display(encoder); in get_encoder_by_ddc_pin()
3025 if (other == encoder) in get_encoder_by_ddc_pin()
3040 static u8 intel_hdmi_ddc_pin(struct intel_encoder *encoder) in intel_hdmi_ddc_pin() argument
3042 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_ddc_pin()
3047 ddc_pin = intel_bios_hdmi_ddc_pin(encoder->devdata); in intel_hdmi_ddc_pin()
3051 ddc_pin = intel_hdmi_default_ddc_pin(encoder); in intel_hdmi_ddc_pin()
3057 "[ENCODER:%d:%s] Invalid DDC pin %d\n", in intel_hdmi_ddc_pin()
3058 encoder->base.base.id, encoder->base.name, ddc_pin); in intel_hdmi_ddc_pin()
3062 other = get_encoder_by_ddc_pin(encoder, ddc_pin); in intel_hdmi_ddc_pin()
3065 "[ENCODER:%d:%s] DDC pin %d already claimed by [ENCODER:%d:%s]\n", in intel_hdmi_ddc_pin()
3066 encoder->base.base.id, encoder->base.name, ddc_pin, in intel_hdmi_ddc_pin()
3072 "[ENCODER:%d:%s] Using DDC pin 0x%x (%s)\n", in intel_hdmi_ddc_pin()
3073 encoder->base.base.id, encoder->base.name, in intel_hdmi_ddc_pin()
3131 "Adding HDMI connector on [ENCODER:%d:%s]\n", in intel_hdmi_init_connector()
3138 "Not enough lanes (%d) for HDMI on [ENCODER:%d:%s]\n", in intel_hdmi_init_connector()
3219 * intel_hdmi_dsc_get_num_slices - get no. of dsc slices based on dsc encoder
3223 * @src_max_slices: maximum slices supported by the DSC encoder
3224 * @src_max_slice_width: maximum slice width supported by DSC encoder
3228 * @return: num of dsc slices that can be supported by the dsc encoder
3301 * of PCON encoder and HDMI decoder can support. in intel_hdmi_dsc_get_num_slices()
3357 * fractional bpp, if supported by PCON DSC encoder in intel_hdmi_dsc_get_bpp()
3395 * encoder. For fractional BPP we use bpp_target as a multiple of 16. in intel_hdmi_dsc_get_bpp()