Lines Matching full:encoder
97 static int intel_ddi_hdmi_level(struct intel_encoder *encoder, in intel_ddi_hdmi_level() argument
102 level = intel_bios_hdmi_level_shift(encoder->devdata); in intel_ddi_hdmi_level()
124 void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_dp_ddi_buffers() argument
127 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_dp_ddi_buffers()
130 enum port port = encoder->port; in hsw_prepare_dp_ddi_buffers()
133 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_dp_ddi_buffers()
139 intel_bios_dp_boost_level(encoder->devdata)) in hsw_prepare_dp_ddi_buffers()
155 static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_hdmi_ddi_buffers() argument
158 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_hdmi_ddi_buffers()
159 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_prepare_hdmi_ddi_buffers()
162 enum port port = encoder->port; in hsw_prepare_hdmi_ddi_buffers()
165 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_hdmi_ddi_buffers()
171 intel_bios_hdmi_boost_level(encoder->devdata)) in hsw_prepare_hdmi_ddi_buffers()
213 static void intel_wait_ddi_buf_active(struct intel_encoder *encoder) in intel_wait_ddi_buf_active() argument
215 struct intel_display *display = to_intel_display(encoder); in intel_wait_ddi_buf_active()
216 enum port port = encoder->port; in intel_wait_ddi_buf_active()
259 static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder, in icl_pll_to_ddi_clk_sel() argument
345 static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder, in intel_ddi_init_dp_buf_reg() argument
348 struct intel_display *display = to_intel_display(encoder); in intel_ddi_init_dp_buf_reg()
349 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_init_dp_buf_reg()
350 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_init_dp_buf_reg()
351 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_init_dp_buf_reg()
369 if (IS_ALDERLAKE_P(i915) && intel_encoder_is_tc(encoder)) { in intel_ddi_init_dp_buf_reg()
375 if (IS_DISPLAY_VER(display, 11, 13) && intel_encoder_is_tc(encoder)) { in intel_ddi_init_dp_buf_reg()
507 intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder, in intel_ddi_transcoder_func_reg_val_get() argument
514 enum port port = encoder->port; in intel_ddi_transcoder_func_reg_val_get()
619 void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_func() argument
644 intel_ddi_transcoder_func_reg_val_get(encoder, in intel_ddi_enable_transcoder_func()
654 intel_ddi_config_transcoder_func(struct intel_encoder *encoder, in intel_ddi_config_transcoder_func() argument
664 ctl = intel_ddi_transcoder_func_reg_val_get(encoder, crtc_state); in intel_ddi_config_transcoder_func()
748 struct intel_encoder *encoder = intel_attached_encoder(intel_connector); in intel_ddi_connector_get_hw_state() local
750 enum port port = encoder->port; in intel_ddi_connector_get_hw_state()
758 encoder->power_domain); in intel_ddi_connector_get_hw_state()
763 if (!encoder->get_hw_state(encoder, &pipe)) { in intel_ddi_connector_get_hw_state()
786 * encoder->get_hw_state() should have bailed out on MST. This in intel_ddi_connector_get_hw_state()
791 /* encoder->get_hw_state() should have bailed out on MST. */ in intel_ddi_connector_get_hw_state()
798 intel_display_power_put(display, encoder->power_domain, wakeref); in intel_ddi_connector_get_hw_state()
803 static void intel_ddi_get_encoder_pipes(struct intel_encoder *encoder, in intel_ddi_get_encoder_pipes() argument
806 struct intel_display *display = to_intel_display(encoder); in intel_ddi_get_encoder_pipes()
808 enum port port = encoder->port; in intel_ddi_get_encoder_pipes()
818 encoder->power_domain); in intel_ddi_get_encoder_pipes()
887 "No pipe for [ENCODER:%d:%s] found\n", in intel_ddi_get_encoder_pipes()
888 encoder->base.base.id, encoder->base.name); in intel_ddi_get_encoder_pipes()
891 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_get_encoder_pipes()
910 "Multiple pipes for [ENCODER:%d:%s] (pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
911 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
918 …"Conflicting MST and non-MST state for [ENCODER:%d:%s] (pipe masks: all %02x, MST %02x, 128b/132b … in intel_ddi_get_encoder_pipes()
919 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
931 "[ENCODER:%d:%s] enabled but PHY powered down? (PHY_CTL %08x)\n", in intel_ddi_get_encoder_pipes()
932 encoder->base.base.id, encoder->base.name, tmp); in intel_ddi_get_encoder_pipes()
935 intel_display_power_put(display, encoder->power_domain, wakeref); in intel_ddi_get_encoder_pipes()
938 bool intel_ddi_get_hw_state(struct intel_encoder *encoder, in intel_ddi_get_hw_state() argument
944 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_get_hw_state()
1015 static void intel_ddi_get_power_domains(struct intel_encoder *encoder, in intel_ddi_get_power_domains() argument
1018 struct intel_display *display = to_intel_display(encoder); in intel_ddi_get_power_domains()
1030 dig_port = enc_to_dig_port(encoder); in intel_ddi_get_power_domains()
1041 void intel_ddi_enable_transcoder_clock(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_clock() argument
1047 enum phy phy = intel_encoder_to_phy(encoder); in intel_ddi_enable_transcoder_clock()
1056 val = TGL_TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_transcoder_clock()
1058 val = TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_transcoder_clock()
1094 static void skl_ddi_set_iboost(struct intel_encoder *encoder, in skl_ddi_set_iboost() argument
1098 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in skl_ddi_set_iboost()
1099 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in skl_ddi_set_iboost()
1103 iboost = intel_bios_hdmi_boost_level(encoder->devdata); in skl_ddi_set_iboost()
1105 iboost = intel_bios_dp_boost_level(encoder->devdata); in skl_ddi_set_iboost()
1111 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in skl_ddi_set_iboost()
1124 _skl_ddi_set_iboost(dev_priv, encoder->port, iboost); in skl_ddi_set_iboost()
1126 if (encoder->port == PORT_A && dig_port->max_lanes == 4) in skl_ddi_set_iboost()
1133 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_dp_voltage_max() local
1134 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_dp_voltage_max()
1137 encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_dp_voltage_max()
1171 static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder, in icl_ddi_combo_vswing_program() argument
1174 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_ddi_combo_vswing_program()
1176 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_vswing_program()
1180 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_ddi_combo_vswing_program()
1185 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in icl_ddi_combo_vswing_program()
1205 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1217 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1228 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1236 static void icl_combo_phy_set_signal_levels(struct intel_encoder *encoder, in icl_combo_phy_set_signal_levels() argument
1239 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_combo_phy_set_signal_levels()
1240 enum phy phy = intel_encoder_to_phy(encoder); in icl_combo_phy_set_signal_levels()
1279 icl_ddi_combo_vswing_program(encoder, crtc_state); in icl_combo_phy_set_signal_levels()
1287 static void icl_mg_phy_set_signal_levels(struct intel_encoder *encoder, in icl_mg_phy_set_signal_levels() argument
1290 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_mg_phy_set_signal_levels()
1291 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_mg_phy_set_signal_levels()
1295 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in icl_mg_phy_set_signal_levels()
1298 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_mg_phy_set_signal_levels()
1313 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1319 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1330 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1339 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1388 static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder, in tgl_dkl_phy_set_signal_levels() argument
1391 struct intel_display *display = to_intel_display(encoder); in tgl_dkl_phy_set_signal_levels()
1392 enum tc_port tc_port = intel_encoder_to_tc(encoder); in tgl_dkl_phy_set_signal_levels()
1396 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in tgl_dkl_phy_set_signal_levels()
1399 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in tgl_dkl_phy_set_signal_levels()
1408 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in tgl_dkl_phy_set_signal_levels()
1418 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in tgl_dkl_phy_set_signal_levels()
1489 int intel_ddi_level(struct intel_encoder *encoder, in intel_ddi_level() argument
1493 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_level()
1497 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_level()
1502 level = intel_ddi_hdmi_level(encoder, trans); in intel_ddi_level()
1504 level = intel_ddi_dp_level(enc_to_intel_dp(encoder), crtc_state, in intel_ddi_level()
1514 hsw_set_signal_levels(struct intel_encoder *encoder, in hsw_set_signal_levels() argument
1517 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_set_signal_levels()
1518 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_set_signal_levels()
1519 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_set_signal_levels()
1520 enum port port = encoder->port; in hsw_set_signal_levels()
1524 skl_ddi_set_iboost(encoder, crtc_state, level); in hsw_set_signal_levels()
1585 static void adls_ddi_enable_clock(struct intel_encoder *encoder, in adls_ddi_enable_clock() argument
1588 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_enable_clock()
1590 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_enable_clock()
1601 static void adls_ddi_disable_clock(struct intel_encoder *encoder) in adls_ddi_disable_clock() argument
1603 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_disable_clock()
1604 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_disable_clock()
1610 static bool adls_ddi_is_clock_enabled(struct intel_encoder *encoder) in adls_ddi_is_clock_enabled() argument
1612 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_is_clock_enabled()
1613 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_is_clock_enabled()
1619 static struct intel_shared_dpll *adls_ddi_get_pll(struct intel_encoder *encoder) in adls_ddi_get_pll() argument
1621 struct intel_display *display = to_intel_display(encoder); in adls_ddi_get_pll()
1622 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_get_pll()
1629 static void rkl_ddi_enable_clock(struct intel_encoder *encoder, in rkl_ddi_enable_clock() argument
1632 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_enable_clock()
1634 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_enable_clock()
1645 static void rkl_ddi_disable_clock(struct intel_encoder *encoder) in rkl_ddi_disable_clock() argument
1647 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_disable_clock()
1648 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_disable_clock()
1654 static bool rkl_ddi_is_clock_enabled(struct intel_encoder *encoder) in rkl_ddi_is_clock_enabled() argument
1656 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_is_clock_enabled()
1657 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_is_clock_enabled()
1663 static struct intel_shared_dpll *rkl_ddi_get_pll(struct intel_encoder *encoder) in rkl_ddi_get_pll() argument
1665 struct intel_display *display = to_intel_display(encoder); in rkl_ddi_get_pll()
1666 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_get_pll()
1673 static void dg1_ddi_enable_clock(struct intel_encoder *encoder, in dg1_ddi_enable_clock() argument
1676 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_enable_clock()
1678 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_enable_clock()
1698 static void dg1_ddi_disable_clock(struct intel_encoder *encoder) in dg1_ddi_disable_clock() argument
1700 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_disable_clock()
1701 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_disable_clock()
1707 static bool dg1_ddi_is_clock_enabled(struct intel_encoder *encoder) in dg1_ddi_is_clock_enabled() argument
1709 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_is_clock_enabled()
1710 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_is_clock_enabled()
1716 static struct intel_shared_dpll *dg1_ddi_get_pll(struct intel_encoder *encoder) in dg1_ddi_get_pll() argument
1718 struct intel_display *display = to_intel_display(encoder); in dg1_ddi_get_pll()
1719 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_get_pll()
1739 static void icl_ddi_combo_enable_clock(struct intel_encoder *encoder, in icl_ddi_combo_enable_clock() argument
1742 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_enable_clock()
1744 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_enable_clock()
1755 static void icl_ddi_combo_disable_clock(struct intel_encoder *encoder) in icl_ddi_combo_disable_clock() argument
1757 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_disable_clock()
1758 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_disable_clock()
1764 static bool icl_ddi_combo_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_combo_is_clock_enabled() argument
1766 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_is_clock_enabled()
1767 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_is_clock_enabled()
1773 struct intel_shared_dpll *icl_ddi_combo_get_pll(struct intel_encoder *encoder) in icl_ddi_combo_get_pll() argument
1775 struct intel_display *display = to_intel_display(encoder); in icl_ddi_combo_get_pll()
1776 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_get_pll()
1783 static void jsl_ddi_tc_enable_clock(struct intel_encoder *encoder, in jsl_ddi_tc_enable_clock() argument
1786 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_enable_clock()
1788 enum port port = encoder->port; in jsl_ddi_tc_enable_clock()
1799 icl_ddi_combo_enable_clock(encoder, crtc_state); in jsl_ddi_tc_enable_clock()
1802 static void jsl_ddi_tc_disable_clock(struct intel_encoder *encoder) in jsl_ddi_tc_disable_clock() argument
1804 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_disable_clock()
1805 enum port port = encoder->port; in jsl_ddi_tc_disable_clock()
1807 icl_ddi_combo_disable_clock(encoder); in jsl_ddi_tc_disable_clock()
1812 static bool jsl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in jsl_ddi_tc_is_clock_enabled() argument
1814 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_is_clock_enabled()
1815 enum port port = encoder->port; in jsl_ddi_tc_is_clock_enabled()
1823 return icl_ddi_combo_is_clock_enabled(encoder); in jsl_ddi_tc_is_clock_enabled()
1826 static void icl_ddi_tc_enable_clock(struct intel_encoder *encoder, in icl_ddi_tc_enable_clock() argument
1829 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_enable_clock()
1831 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_enable_clock()
1832 enum port port = encoder->port; in icl_ddi_tc_enable_clock()
1838 icl_pll_to_ddi_clk_sel(encoder, crtc_state)); in icl_ddi_tc_enable_clock()
1848 static void icl_ddi_tc_disable_clock(struct intel_encoder *encoder) in icl_ddi_tc_disable_clock() argument
1850 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_disable_clock()
1851 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_disable_clock()
1852 enum port port = encoder->port; in icl_ddi_tc_disable_clock()
1864 static bool icl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_tc_is_clock_enabled() argument
1866 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_is_clock_enabled()
1867 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_is_clock_enabled()
1868 enum port port = encoder->port; in icl_ddi_tc_is_clock_enabled()
1881 static struct intel_shared_dpll *icl_ddi_tc_get_pll(struct intel_encoder *encoder) in icl_ddi_tc_get_pll() argument
1883 struct intel_display *display = to_intel_display(encoder); in icl_ddi_tc_get_pll()
1884 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_get_pll()
1885 enum port port = encoder->port; in icl_ddi_tc_get_pll()
1911 static struct intel_shared_dpll *bxt_ddi_get_pll(struct intel_encoder *encoder) in bxt_ddi_get_pll() argument
1913 struct intel_display *display = to_intel_display(encoder->base.dev); in bxt_ddi_get_pll()
1916 switch (encoder->port) { in bxt_ddi_get_pll()
1927 MISSING_CASE(encoder->port); in bxt_ddi_get_pll()
1934 static void skl_ddi_enable_clock(struct intel_encoder *encoder, in skl_ddi_enable_clock() argument
1937 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_enable_clock()
1939 enum port port = encoder->port; in skl_ddi_enable_clock()
1955 static void skl_ddi_disable_clock(struct intel_encoder *encoder) in skl_ddi_disable_clock() argument
1957 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_disable_clock()
1958 enum port port = encoder->port; in skl_ddi_disable_clock()
1968 static bool skl_ddi_is_clock_enabled(struct intel_encoder *encoder) in skl_ddi_is_clock_enabled() argument
1970 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_is_clock_enabled()
1971 enum port port = encoder->port; in skl_ddi_is_clock_enabled()
1980 static struct intel_shared_dpll *skl_ddi_get_pll(struct intel_encoder *encoder) in skl_ddi_get_pll() argument
1982 struct intel_display *display = to_intel_display(encoder); in skl_ddi_get_pll()
1983 enum port port = encoder->port; in skl_ddi_get_pll()
2002 void hsw_ddi_enable_clock(struct intel_encoder *encoder, in hsw_ddi_enable_clock() argument
2005 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_enable_clock()
2007 enum port port = encoder->port; in hsw_ddi_enable_clock()
2015 void hsw_ddi_disable_clock(struct intel_encoder *encoder) in hsw_ddi_disable_clock() argument
2017 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_disable_clock()
2018 enum port port = encoder->port; in hsw_ddi_disable_clock()
2023 bool hsw_ddi_is_clock_enabled(struct intel_encoder *encoder) in hsw_ddi_is_clock_enabled() argument
2025 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_is_clock_enabled()
2026 enum port port = encoder->port; in hsw_ddi_is_clock_enabled()
2031 static struct intel_shared_dpll *hsw_ddi_get_pll(struct intel_encoder *encoder) in hsw_ddi_get_pll() argument
2033 struct intel_display *display = to_intel_display(encoder); in hsw_ddi_get_pll()
2034 enum port port = encoder->port; in hsw_ddi_get_pll()
2069 void intel_ddi_enable_clock(struct intel_encoder *encoder, in intel_ddi_enable_clock() argument
2072 if (encoder->enable_clock) in intel_ddi_enable_clock()
2073 encoder->enable_clock(encoder, crtc_state); in intel_ddi_enable_clock()
2076 void intel_ddi_disable_clock(struct intel_encoder *encoder) in intel_ddi_disable_clock() argument
2078 if (encoder->disable_clock) in intel_ddi_disable_clock()
2079 encoder->disable_clock(encoder); in intel_ddi_disable_clock()
2082 void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder) in intel_ddi_sanitize_encoder_pll_mapping() argument
2084 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sanitize_encoder_pll_mapping()
2089 * In case of DP MST, we sanitize the primary encoder only, not the in intel_ddi_sanitize_encoder_pll_mapping()
2092 if (encoder->type == INTEL_OUTPUT_DP_MST) in intel_ddi_sanitize_encoder_pll_mapping()
2095 if (!encoder->base.crtc && intel_encoder_is_dp(encoder)) { in intel_ddi_sanitize_encoder_pll_mapping()
2099 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_sanitize_encoder_pll_mapping()
2108 port_mask = BIT(encoder->port); in intel_ddi_sanitize_encoder_pll_mapping()
2109 ddi_clk_needed = encoder->base.crtc; in intel_ddi_sanitize_encoder_pll_mapping()
2111 if (encoder->type == INTEL_OUTPUT_DSI) { in intel_ddi_sanitize_encoder_pll_mapping()
2114 port_mask = intel_dsi_encoder_ports(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2117 * encoder using any of the ports of this DSI encoder. in intel_ddi_sanitize_encoder_pll_mapping()
2120 if (other_encoder == encoder) in intel_ddi_sanitize_encoder_pll_mapping()
2134 if (ddi_clk_needed || !encoder->is_clock_enabled || in intel_ddi_sanitize_encoder_pll_mapping()
2135 !encoder->is_clock_enabled(encoder)) in intel_ddi_sanitize_encoder_pll_mapping()
2139 "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI clock, gate it\n", in intel_ddi_sanitize_encoder_pll_mapping()
2140 encoder->base.base.id, encoder->base.name); in intel_ddi_sanitize_encoder_pll_mapping()
2142 encoder->disable_clock(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2255 i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder, in dp_tp_ctl_reg() argument
2258 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_ctl_reg()
2264 return DP_TP_CTL(encoder->port); in dp_tp_ctl_reg()
2267 static i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder, in dp_tp_status_reg() argument
2270 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_status_reg()
2276 return DP_TP_STATUS(encoder->port); in dp_tp_status_reg()
2279 void intel_ddi_clear_act_sent(struct intel_encoder *encoder, in intel_ddi_clear_act_sent() argument
2282 struct intel_display *display = to_intel_display(encoder); in intel_ddi_clear_act_sent()
2284 intel_de_write(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_clear_act_sent()
2288 void intel_ddi_wait_for_act_sent(struct intel_encoder *encoder, in intel_ddi_wait_for_act_sent() argument
2291 struct intel_display *display = to_intel_display(encoder); in intel_ddi_wait_for_act_sent()
2293 if (intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_act_sent()
2367 int intel_ddi_wait_for_fec_status(struct intel_encoder *encoder, in intel_ddi_wait_for_fec_status() argument
2371 struct intel_display *display = to_intel_display(encoder); in intel_ddi_wait_for_fec_status()
2372 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_wait_for_fec_status()
2379 ret = intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_fec_status()
2382 ret = intel_de_wait_for_clear(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_fec_status()
2404 static void intel_ddi_enable_fec(struct intel_encoder *encoder, in intel_ddi_enable_fec() argument
2407 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable_fec()
2414 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2420 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable_fec()
2427 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2430 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, false); in intel_ddi_enable_fec()
2434 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2437 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable_fec()
2445 static void intel_ddi_disable_fec(struct intel_encoder *encoder, in intel_ddi_disable_fec() argument
2448 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_disable_fec()
2453 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_disable_fec()
2455 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec()
2458 static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, in intel_ddi_power_up_lanes() argument
2461 struct intel_display *display = to_intel_display(encoder); in intel_ddi_power_up_lanes()
2462 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_power_up_lanes()
2464 if (intel_encoder_is_combo(encoder)) { in intel_ddi_power_up_lanes()
2465 enum phy phy = intel_encoder_to_phy(encoder); in intel_ddi_power_up_lanes()
2487 static void intel_ddi_mso_get_config(struct intel_encoder *encoder, in intel_ddi_mso_get_config() argument
2550 mtl_ddi_enable_d2d(struct intel_encoder *encoder) in mtl_ddi_enable_d2d() argument
2552 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in mtl_ddi_enable_d2d()
2553 enum port port = encoder->port; in mtl_ddi_enable_d2d()
2577 static void mtl_port_buf_ctl_program(struct intel_encoder *encoder, in mtl_port_buf_ctl_program() argument
2580 struct intel_display *display = to_intel_display(encoder); in mtl_port_buf_ctl_program()
2581 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in mtl_port_buf_ctl_program()
2582 enum port port = encoder->port; in mtl_port_buf_ctl_program()
2600 static void mtl_port_buf_ctl_io_selection(struct intel_encoder *encoder) in mtl_port_buf_ctl_io_selection() argument
2602 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in mtl_port_buf_ctl_io_selection()
2603 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in mtl_port_buf_ctl_io_selection()
2608 intel_de_rmw(i915, XELPDP_PORT_BUF_CTL1(i915, encoder->port), in mtl_port_buf_ctl_io_selection()
2613 struct intel_encoder *encoder, in mtl_ddi_pre_enable_dp() argument
2617 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in mtl_ddi_pre_enable_dp()
2630 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2642 mtl_port_buf_ctl_io_selection(encoder); in mtl_ddi_pre_enable_dp()
2648 intel_ddi_enable_clock(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2654 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2661 intel_ddi_config_transcoder_func(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2716 intel_ddi_enable_fec(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2723 intel_dp_queue_modeset_retry_for_link(state, encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2727 intel_dsc_dp_pps_write(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2731 struct intel_encoder *encoder, in tgl_ddi_pre_enable_dp() argument
2735 struct intel_display *display = to_intel_display(encoder); in tgl_ddi_pre_enable_dp()
2736 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in tgl_ddi_pre_enable_dp()
2737 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_ddi_pre_enable_dp()
2738 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in tgl_ddi_pre_enable_dp()
2750 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2777 intel_ddi_enable_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2803 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2809 intel_ddi_config_transcoder_func(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2820 encoder->set_signal_levels(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2826 intel_ddi_power_up_lanes(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2865 intel_ddi_enable_fec(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2871 intel_dp_queue_modeset_retry_for_link(state, encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2875 intel_dsc_dp_pps_write(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2879 struct intel_encoder *encoder, in hsw_ddi_pre_enable_dp() argument
2883 struct intel_display *display = to_intel_display(encoder); in hsw_ddi_pre_enable_dp()
2884 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_ddi_pre_enable_dp()
2885 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_ddi_pre_enable_dp()
2886 enum port port = encoder->port; in hsw_ddi_pre_enable_dp()
2887 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in hsw_ddi_pre_enable_dp()
2904 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2908 intel_ddi_enable_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2919 hsw_prepare_dp_ddi_buffers(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2921 encoder->set_signal_levels(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2923 intel_ddi_power_up_lanes(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2938 intel_ddi_enable_fec(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2941 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2942 intel_dsc_dp_pps_write(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2947 struct intel_encoder *encoder, in intel_ddi_pre_enable_dp() argument
2951 struct intel_display *display = to_intel_display(encoder); in intel_ddi_pre_enable_dp()
2954 intel_dp_128b132b_sdp_crc16(enc_to_intel_dp(encoder), in intel_ddi_pre_enable_dp()
2958 intel_psr_panel_replay_enable_sink(enc_to_intel_dp(encoder)); in intel_ddi_pre_enable_dp()
2961 mtl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2963 tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2965 hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2968 * from MST encoder pre_enable callback. in intel_ddi_pre_enable_dp()
2975 struct intel_encoder *encoder, in intel_ddi_pre_enable_hdmi() argument
2979 struct intel_display *display = to_intel_display(encoder); in intel_ddi_pre_enable_hdmi()
2980 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable_hdmi()
2982 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_hdmi()
2985 intel_ddi_enable_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2993 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2995 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable_hdmi()
3002 * encoder on its primary encoder.
3008 * - encoder will be the primary encoder (i.e. mst->primary)
3019 struct intel_encoder *encoder, in intel_ddi_pre_enable() argument
3033 intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, in intel_ddi_pre_enable()
3036 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable()
3038 intel_ddi_pre_enable_dp(state, encoder, crtc_state, in intel_ddi_pre_enable()
3044 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable()
3051 mtl_ddi_disable_d2d(struct intel_encoder *encoder) in mtl_ddi_disable_d2d() argument
3053 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in mtl_ddi_disable_d2d()
3054 enum port port = encoder->port; in mtl_ddi_disable_d2d()
3077 static void intel_ddi_buf_enable(struct intel_encoder *encoder, u32 buf_ctl) in intel_ddi_buf_enable() argument
3079 struct intel_display *display = to_intel_display(encoder); in intel_ddi_buf_enable()
3080 enum port port = encoder->port; in intel_ddi_buf_enable()
3085 intel_wait_ddi_buf_active(encoder); in intel_ddi_buf_enable()
3088 static void intel_ddi_buf_disable(struct intel_encoder *encoder, in intel_ddi_buf_disable() argument
3091 struct intel_display *display = to_intel_display(encoder); in intel_ddi_buf_disable()
3092 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_buf_disable()
3093 enum port port = encoder->port; in intel_ddi_buf_disable()
3100 mtl_ddi_disable_d2d(encoder); in intel_ddi_buf_disable()
3103 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_buf_disable()
3107 intel_ddi_disable_fec(encoder, crtc_state); in intel_ddi_buf_disable()
3112 intel_ddi_wait_for_fec_status(encoder, crtc_state, false); in intel_ddi_buf_disable()
3116 struct intel_encoder *encoder, in intel_ddi_post_disable_dp() argument
3120 struct intel_display *display = to_intel_display(encoder); in intel_ddi_post_disable_dp()
3121 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_dp()
3122 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_dp()
3129 intel_dp_set_infoframes(encoder, false, in intel_ddi_post_disable_dp()
3152 intel_ddi_buf_disable(encoder, old_crtc_state); in intel_ddi_post_disable_dp()
3176 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_dp()
3180 intel_de_rmw(dev_priv, XELPDP_PORT_BUF_CTL1(dev_priv, encoder->port), in intel_ddi_post_disable_dp()
3185 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi() argument
3189 struct intel_display *display = to_intel_display(encoder); in intel_ddi_post_disable_hdmi()
3190 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi()
3191 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_hdmi()
3195 dig_port->set_infoframes(encoder, false, in intel_ddi_post_disable_hdmi()
3201 intel_ddi_buf_disable(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi()
3212 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_hdmi()
3218 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi_or_sst() argument
3222 struct intel_display *display = to_intel_display(encoder); in intel_ddi_post_disable_hdmi_or_sst()
3223 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi_or_sst()
3224 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_post_disable_hdmi_or_sst()
3243 intel_ddi_clear_act_sent(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi_or_sst()
3248 intel_ddi_wait_for_act_sent(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi_or_sst()
3269 * encoder on its primary encoder. See also the comment for
3273 struct intel_encoder *encoder, in intel_ddi_post_disable() argument
3278 intel_ddi_post_disable_hdmi_or_sst(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3284 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_post_disable()
3295 intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3298 intel_ddi_post_disable_dp(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3304 * encoder on its primary encoder. See also the comment for
3308 struct intel_encoder *encoder, in intel_ddi_post_pll_disable() argument
3312 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_pll_disable()
3316 if (intel_encoder_is_tc(encoder)) in intel_ddi_post_pll_disable()
3321 struct intel_encoder *encoder, in trans_port_sync_stop_link_train() argument
3353 intel_dp_stop_link_train(enc_to_intel_dp(encoder), in trans_port_sync_stop_link_train()
3358 struct intel_encoder *encoder, in intel_ddi_enable_dp() argument
3362 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_dp()
3363 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable_dp()
3364 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_enable_dp()
3365 enum port port = encoder->port; in intel_ddi_enable_dp()
3374 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_enable_dp()
3376 trans_port_sync_stop_link_train(state, encoder, crtc_state); in intel_ddi_enable_dp()
3399 struct intel_encoder *encoder, in intel_ddi_enable_hdmi() argument
3403 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable_hdmi()
3404 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_hdmi()
3405 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_enable_hdmi()
3407 enum port port = encoder->port; in intel_ddi_enable_hdmi()
3410 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_ddi_enable_hdmi()
3418 hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state); in intel_ddi_enable_hdmi()
3421 mtl_ddi_enable_d2d(encoder); in intel_ddi_enable_hdmi()
3423 encoder->set_signal_levels(encoder, crtc_state); in intel_ddi_enable_hdmi()
3460 intel_ddi_power_up_lanes(encoder, crtc_state); in intel_ddi_enable_hdmi()
3493 } else if (IS_ALDERLAKE_P(dev_priv) && intel_encoder_is_tc(encoder)) { in intel_ddi_enable_hdmi()
3498 intel_ddi_buf_enable(encoder, buf_ctl); in intel_ddi_enable_hdmi()
3502 struct intel_encoder *encoder, in intel_ddi_enable() argument
3506 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable()
3523 intel_ddi_enable_transcoder_func(encoder, crtc_state); in intel_ddi_enable()
3530 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable()
3532 intel_ddi_clear_act_sent(encoder, crtc_state); in intel_ddi_enable()
3537 intel_ddi_wait_for_act_sent(encoder, crtc_state); in intel_ddi_enable()
3543 intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable()
3553 intel_ddi_enable_hdmi(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3555 intel_ddi_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3557 intel_hdcp_enable(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3562 struct intel_encoder *encoder, in intel_ddi_disable_dp() argument
3566 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_disable_dp()
3583 struct intel_encoder *encoder, in intel_ddi_disable_hdmi() argument
3587 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_disable_hdmi()
3590 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_ddi_disable_hdmi()
3598 struct intel_encoder *encoder, in intel_ddi_disable() argument
3602 intel_tc_port_link_cancel_reset_work(enc_to_dig_port(encoder)); in intel_ddi_disable()
3607 intel_ddi_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_disable()
3610 intel_ddi_disable_dp(state, encoder, old_crtc_state, in intel_ddi_disable()
3615 struct intel_encoder *encoder, in intel_ddi_update_pipe_dp() argument
3621 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3623 intel_backlight_update(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3627 static void intel_ddi_update_pipe_hdmi(struct intel_encoder *encoder, in intel_ddi_update_pipe_hdmi() argument
3631 intel_hdmi_fastset_infoframes(encoder, crtc_state, conn_state); in intel_ddi_update_pipe_hdmi()
3635 struct intel_encoder *encoder, in intel_ddi_update_pipe() argument
3641 !intel_encoder_is_mst(encoder)) in intel_ddi_update_pipe()
3642 intel_ddi_update_pipe_dp(state, encoder, crtc_state, in intel_ddi_update_pipe()
3646 intel_ddi_update_pipe_hdmi(encoder, crtc_state, in intel_ddi_update_pipe()
3649 intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe()
3653 struct intel_encoder *encoder, in intel_ddi_update_active_dpll() argument
3656 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_update_active_dpll()
3662 if (DISPLAY_VER(i915) >= 14 || !intel_encoder_is_tc(encoder)) in intel_ddi_update_active_dpll()
3667 intel_update_active_dpll(state, pipe_crtc, encoder); in intel_ddi_update_active_dpll()
3672 * encoder on its primary encoder. See also the comment for
3677 struct intel_encoder *encoder, in intel_ddi_pre_pll_enable() argument
3681 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_pll_enable()
3682 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_pll_enable()
3683 bool is_tc_port = intel_encoder_is_tc(encoder); in intel_ddi_pre_pll_enable()
3689 intel_ddi_update_active_dpll(state, encoder, crtc); in intel_ddi_pre_pll_enable()
3701 bxt_dpio_phy_set_lane_optim_mask(encoder, in intel_ddi_pre_pll_enable()
3705 static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder) in adlp_tbt_to_dp_alt_switch_wa() argument
3707 struct intel_display *display = to_intel_display(encoder); in adlp_tbt_to_dp_alt_switch_wa()
3708 enum tc_port tc_port = intel_encoder_to_tc(encoder); in adlp_tbt_to_dp_alt_switch_wa()
3721 struct intel_encoder *encoder = &dig_port->base; in mtl_ddi_prepare_link_retrain() local
3728 dp_tp_ctl = intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)); in mtl_ddi_prepare_link_retrain()
3742 intel_de_write(display, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in mtl_ddi_prepare_link_retrain()
3743 intel_de_posting_read(display, dp_tp_ctl_reg(encoder, crtc_state)); in mtl_ddi_prepare_link_retrain()
3746 mtl_ddi_enable_d2d(encoder); in mtl_ddi_prepare_link_retrain()
3749 encoder->set_signal_levels(encoder, crtc_state); in mtl_ddi_prepare_link_retrain()
3752 mtl_port_buf_ctl_program(encoder, crtc_state); in mtl_ddi_prepare_link_retrain()
3758 intel_ddi_buf_enable(encoder, intel_dp->DP); in mtl_ddi_prepare_link_retrain()
3767 struct intel_encoder *encoder = &dig_port->base; in intel_ddi_prepare_link_retrain() local
3768 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_prepare_link_retrain()
3771 dp_tp_ctl = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3784 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3785 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3789 adlp_tbt_to_dp_alt_switch_wa(encoder); in intel_ddi_prepare_link_retrain()
3791 intel_ddi_buf_enable(encoder, intel_dp->DP); in intel_ddi_prepare_link_retrain()
3799 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_link_train() local
3800 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_link_train()
3803 temp = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_link_train()
3824 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), temp); in intel_ddi_set_link_train()
3830 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_idle_link_train() local
3831 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_idle_link_train()
3832 enum port port = encoder->port; in intel_ddi_set_idle_link_train()
3834 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3848 dp_tp_status_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3970 static void intel_ddi_read_func_ctl_dvi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dvi() argument
3974 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dvi()
3984 static void intel_ddi_read_func_ctl_hdmi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_hdmi() argument
3991 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_hdmi()
4001 intel_ddi_read_func_ctl_dvi(encoder, crtc_state, ddi_func_ctl); in intel_ddi_read_func_ctl_hdmi()
4004 static void intel_ddi_read_func_ctl_fdi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_fdi() argument
4008 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_fdi()
4012 intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)) & in intel_ddi_read_func_ctl_fdi()
4016 static void intel_ddi_read_func_ctl_dp_sst(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dp_sst() argument
4020 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dp_sst()
4022 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl_dp_sst()
4025 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_read_func_ctl_dp_sst()
4041 intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)) & in intel_ddi_read_func_ctl_dp_sst()
4047 dp_tp_ctl_reg(encoder, crtc_state)) & DP_TP_CTL_FEC_ENABLE; in intel_ddi_read_func_ctl_dp_sst()
4051 intel_lspcon_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_sst()
4054 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_sst()
4057 static void intel_ddi_read_func_ctl_dp_mst(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dp_mst() argument
4061 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dp_mst()
4078 dp_tp_ctl_reg(encoder, crtc_state)) & DP_TP_CTL_FEC_ENABLE; in intel_ddi_read_func_ctl_dp_mst()
4081 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_mst()
4084 static void intel_ddi_read_func_ctl(struct intel_encoder *encoder, in intel_ddi_read_func_ctl() argument
4087 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl()
4088 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_read_func_ctl()
4124 intel_ddi_read_func_ctl_hdmi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4126 intel_ddi_read_func_ctl_dvi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4128 intel_ddi_read_func_ctl_fdi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4130 intel_ddi_read_func_ctl_dp_sst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4132 intel_ddi_read_func_ctl_dp_mst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4134 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl()
4138 * encoder's ->get_config(). in intel_ddi_read_func_ctl()
4141 intel_ddi_read_func_ctl_dp_mst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4143 intel_ddi_read_func_ctl_dp_sst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4149 * primary encoder, via the platform specific hooks here. See also the comment
4152 static void intel_ddi_get_config(struct intel_encoder *encoder, in intel_ddi_get_config() argument
4155 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_config()
4162 intel_ddi_read_func_ctl(encoder, pipe_config); in intel_ddi_get_config()
4164 intel_ddi_mso_get_config(encoder, pipe_config); in intel_ddi_get_config()
4169 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_get_config()
4170 intel_edp_fixup_vbt_bpp(encoder, pipe_config->pipe_bpp); in intel_ddi_get_config()
4176 bxt_dpio_phy_get_lane_lat_optim_mask(encoder); in intel_ddi_get_config()
4180 intel_hdmi_read_gcp_infoframe(encoder, pipe_config); in intel_ddi_get_config()
4182 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4185 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4188 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4191 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4198 intel_psr_get_config(encoder, pipe_config); in intel_ddi_get_config()
4200 intel_read_dp_sdp(encoder, pipe_config, HDMI_PACKET_TYPE_GAMUT_METADATA); in intel_ddi_get_config()
4201 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_VSC); in intel_ddi_get_config()
4202 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_ADAPTIVE_SYNC); in intel_ddi_get_config()
4204 intel_audio_codec_get_config(encoder, pipe_config); in intel_ddi_get_config()
4207 void intel_ddi_get_clock(struct intel_encoder *encoder, in intel_ddi_get_clock() argument
4211 struct intel_display *display = to_intel_display(encoder); in intel_ddi_get_clock()
4229 static void mtl_ddi_get_config(struct intel_encoder *encoder, in mtl_ddi_get_config() argument
4232 intel_cx0pll_readout_hw_state(encoder, &crtc_state->dpll_hw_state.cx0pll); in mtl_ddi_get_config()
4235 crtc_state->port_clock = intel_mtl_tbt_calc_port_clock(encoder); in mtl_ddi_get_config()
4237 crtc_state->port_clock = intel_cx0pll_calc_port_clock(encoder, &crtc_state->dpll_hw_state.cx0pll); in mtl_ddi_get_config()
4239 intel_ddi_get_config(encoder, crtc_state); in mtl_ddi_get_config()
4242 static void dg2_ddi_get_config(struct intel_encoder *encoder, in dg2_ddi_get_config() argument
4245 intel_mpllb_readout_hw_state(encoder, &crtc_state->dpll_hw_state.mpllb); in dg2_ddi_get_config()
4246 crtc_state->port_clock = intel_mpllb_calc_port_clock(encoder, &crtc_state->dpll_hw_state.mpllb); in dg2_ddi_get_config()
4248 intel_ddi_get_config(encoder, crtc_state); in dg2_ddi_get_config()
4251 static void adls_ddi_get_config(struct intel_encoder *encoder, in adls_ddi_get_config() argument
4254 intel_ddi_get_clock(encoder, crtc_state, adls_ddi_get_pll(encoder)); in adls_ddi_get_config()
4255 intel_ddi_get_config(encoder, crtc_state); in adls_ddi_get_config()
4258 static void rkl_ddi_get_config(struct intel_encoder *encoder, in rkl_ddi_get_config() argument
4261 intel_ddi_get_clock(encoder, crtc_state, rkl_ddi_get_pll(encoder)); in rkl_ddi_get_config()
4262 intel_ddi_get_config(encoder, crtc_state); in rkl_ddi_get_config()
4265 static void dg1_ddi_get_config(struct intel_encoder *encoder, in dg1_ddi_get_config() argument
4268 intel_ddi_get_clock(encoder, crtc_state, dg1_ddi_get_pll(encoder)); in dg1_ddi_get_config()
4269 intel_ddi_get_config(encoder, crtc_state); in dg1_ddi_get_config()
4272 static void icl_ddi_combo_get_config(struct intel_encoder *encoder, in icl_ddi_combo_get_config() argument
4275 intel_ddi_get_clock(encoder, crtc_state, icl_ddi_combo_get_pll(encoder)); in icl_ddi_combo_get_config()
4276 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_combo_get_config()
4285 icl_ddi_tc_port_pll_type(struct intel_encoder *encoder, in icl_ddi_tc_port_pll_type() argument
4288 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_port_pll_type()
4301 intel_ddi_port_pll_type(struct intel_encoder *encoder, in intel_ddi_port_pll_type() argument
4304 if (!encoder->port_pll_type) in intel_ddi_port_pll_type()
4307 return encoder->port_pll_type(encoder, crtc_state); in intel_ddi_port_pll_type()
4310 static void icl_ddi_tc_get_clock(struct intel_encoder *encoder, in icl_ddi_tc_get_clock() argument
4314 struct intel_display *display = to_intel_display(encoder); in icl_ddi_tc_get_clock()
4336 crtc_state->port_clock = icl_calc_tbt_pll_link(display, encoder->port); in icl_ddi_tc_get_clock()
4342 static void icl_ddi_tc_get_config(struct intel_encoder *encoder, in icl_ddi_tc_get_config() argument
4345 icl_ddi_tc_get_clock(encoder, crtc_state, icl_ddi_tc_get_pll(encoder)); in icl_ddi_tc_get_config()
4346 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_tc_get_config()
4349 static void bxt_ddi_get_config(struct intel_encoder *encoder, in bxt_ddi_get_config() argument
4352 intel_ddi_get_clock(encoder, crtc_state, bxt_ddi_get_pll(encoder)); in bxt_ddi_get_config()
4353 intel_ddi_get_config(encoder, crtc_state); in bxt_ddi_get_config()
4356 static void skl_ddi_get_config(struct intel_encoder *encoder, in skl_ddi_get_config() argument
4359 intel_ddi_get_clock(encoder, crtc_state, skl_ddi_get_pll(encoder)); in skl_ddi_get_config()
4360 intel_ddi_get_config(encoder, crtc_state); in skl_ddi_get_config()
4363 void hsw_ddi_get_config(struct intel_encoder *encoder, in hsw_ddi_get_config() argument
4366 intel_ddi_get_clock(encoder, crtc_state, hsw_ddi_get_pll(encoder)); in hsw_ddi_get_config()
4367 intel_ddi_get_config(encoder, crtc_state); in hsw_ddi_get_config()
4370 static void intel_ddi_sync_state(struct intel_encoder *encoder, in intel_ddi_sync_state() argument
4373 if (intel_encoder_is_tc(encoder)) in intel_ddi_sync_state()
4374 intel_tc_port_sanitize_mode(enc_to_dig_port(encoder), in intel_ddi_sync_state()
4378 (!crtc_state && intel_encoder_is_dp(encoder))) in intel_ddi_sync_state()
4379 intel_dp_sync_state(encoder, crtc_state); in intel_ddi_sync_state()
4382 static bool intel_ddi_initial_fastset_check(struct intel_encoder *encoder, in intel_ddi_initial_fastset_check() argument
4385 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_initial_fastset_check()
4388 if (intel_encoder_is_tc(encoder)) { in intel_ddi_initial_fastset_check()
4389 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] Forcing full modeset to compute TC port DPLLs\n", in intel_ddi_initial_fastset_check()
4390 encoder->base.base.id, encoder->base.name); in intel_ddi_initial_fastset_check()
4396 !intel_dp_initial_fastset_check(encoder, crtc_state)) in intel_ddi_initial_fastset_check()
4403 intel_ddi_compute_output_type(struct intel_encoder *encoder, in intel_ddi_compute_output_type() argument
4420 static int intel_ddi_compute_config(struct intel_encoder *encoder, in intel_ddi_compute_config() argument
4425 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_compute_config()
4426 enum port port = encoder->port; in intel_ddi_compute_config()
4434 intel_hdmi_compute_has_hdmi_sink(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4436 ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4438 ret = intel_dp_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4541 static int intel_ddi_compute_config_late(struct intel_encoder *encoder, in intel_ddi_compute_config_late() argument
4545 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_compute_config_late()
4549 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] [CRTC:%d:%s]\n", in intel_ddi_compute_config_late()
4550 encoder->base.base.id, encoder->base.name, in intel_ddi_compute_config_late()
4575 static void intel_ddi_encoder_destroy(struct drm_encoder *encoder) in intel_ddi_encoder_destroy() argument
4577 struct intel_display *display = to_intel_display(encoder->dev); in intel_ddi_encoder_destroy()
4578 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_destroy()
4580 intel_dp_encoder_flush_work(encoder); in intel_ddi_encoder_destroy()
4585 drm_encoder_cleanup(encoder); in intel_ddi_encoder_destroy()
4590 static void intel_ddi_encoder_reset(struct drm_encoder *encoder) in intel_ddi_encoder_reset() argument
4592 struct intel_dp *intel_dp = enc_to_intel_dp(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
4593 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
4606 struct intel_encoder *encoder = to_intel_encoder(_encoder); in intel_ddi_encoder_late_register() local
4608 intel_tc_port_link_reset(enc_to_dig_port(encoder)); in intel_ddi_encoder_late_register()
4661 static int intel_hdmi_reset_link(struct intel_encoder *encoder, in intel_hdmi_reset_link() argument
4664 struct intel_display *display = to_intel_display(encoder); in intel_hdmi_reset_link()
4665 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_reset_link()
4666 struct intel_hdmi *hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_reset_link()
4734 static void intel_ddi_link_check(struct intel_encoder *encoder) in intel_ddi_link_check() argument
4736 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_link_check()
4737 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_link_check()
4742 intel_dp_link_check(encoder); in intel_ddi_link_check()
4746 intel_ddi_hotplug(struct intel_encoder *encoder, in intel_ddi_hotplug() argument
4749 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_hotplug()
4751 bool is_tc = intel_encoder_is_tc(encoder); in intel_ddi_hotplug()
4759 state = intel_encoder_hotplug(encoder, connector); in intel_ddi_hotplug()
4764 ret = intel_hdmi_reset_link(encoder, &ctx); in intel_ddi_hotplug()
4765 drm_WARN_ON(encoder->base.dev, ret); in intel_ddi_hotplug()
4801 static bool lpt_digital_port_connected(struct intel_encoder *encoder) in lpt_digital_port_connected() argument
4803 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in lpt_digital_port_connected()
4804 u32 bit = dev_priv->display.hotplug.pch_hpd[encoder->hpd_pin]; in lpt_digital_port_connected()
4809 static bool hsw_digital_port_connected(struct intel_encoder *encoder) in hsw_digital_port_connected() argument
4811 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_digital_port_connected()
4812 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in hsw_digital_port_connected()
4817 static bool bdw_digital_port_connected(struct intel_encoder *encoder) in bdw_digital_port_connected() argument
4819 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in bdw_digital_port_connected()
4820 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in bdw_digital_port_connected()
4981 static void intel_ddi_encoder_suspend(struct intel_encoder *encoder) in intel_ddi_encoder_suspend() argument
4983 intel_dp_encoder_suspend(encoder); in intel_ddi_encoder_suspend()
4986 static void intel_ddi_tc_encoder_suspend_complete(struct intel_encoder *encoder) in intel_ddi_tc_encoder_suspend_complete() argument
4988 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_tc_encoder_suspend_complete()
4995 intel_encoder_link_check_flush_work(encoder); in intel_ddi_tc_encoder_suspend_complete()
4999 static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder) in intel_ddi_encoder_shutdown() argument
5001 if (intel_encoder_is_dp(encoder)) in intel_ddi_encoder_shutdown()
5002 intel_dp_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
5003 if (intel_encoder_is_hdmi(encoder)) in intel_ddi_encoder_shutdown()
5004 intel_hdmi_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
5007 static void intel_ddi_tc_encoder_shutdown_complete(struct intel_encoder *encoder) in intel_ddi_tc_encoder_shutdown_complete() argument
5009 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_tc_encoder_shutdown_complete()
5041 static bool need_aux_ch(struct intel_encoder *encoder, bool init_dp) in need_aux_ch() argument
5043 return init_dp || intel_encoder_is_tc(encoder); in need_aux_ch()
5055 struct intel_encoder *encoder; in port_in_use() local
5057 for_each_intel_encoder(&i915->drm, encoder) { in port_in_use()
5059 if (encoder->port == port) in port_in_use()
5071 struct intel_encoder *encoder; in intel_ddi_init() local
5155 encoder = &dig_port->base; in intel_ddi_init()
5156 encoder->devdata = devdata; in intel_ddi_init()
5159 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5167 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5177 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5185 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5190 intel_encoder_link_check_init(encoder, intel_ddi_link_check); in intel_ddi_init()
5195 encoder->hotplug = intel_ddi_hotplug; in intel_ddi_init()
5196 encoder->compute_output_type = intel_ddi_compute_output_type; in intel_ddi_init()
5197 encoder->compute_config = intel_ddi_compute_config; in intel_ddi_init()
5198 encoder->compute_config_late = intel_ddi_compute_config_late; in intel_ddi_init()
5199 encoder->enable = intel_ddi_enable; in intel_ddi_init()
5200 encoder->pre_pll_enable = intel_ddi_pre_pll_enable; in intel_ddi_init()
5201 encoder->pre_enable = intel_ddi_pre_enable; in intel_ddi_init()
5202 encoder->disable = intel_ddi_disable; in intel_ddi_init()
5203 encoder->post_pll_disable = intel_ddi_post_pll_disable; in intel_ddi_init()
5204 encoder->post_disable = intel_ddi_post_disable; in intel_ddi_init()
5205 encoder->update_pipe = intel_ddi_update_pipe; in intel_ddi_init()
5206 encoder->audio_enable = intel_audio_codec_enable; in intel_ddi_init()
5207 encoder->audio_disable = intel_audio_codec_disable; in intel_ddi_init()
5208 encoder->get_hw_state = intel_ddi_get_hw_state; in intel_ddi_init()
5209 encoder->sync_state = intel_ddi_sync_state; in intel_ddi_init()
5210 encoder->initial_fastset_check = intel_ddi_initial_fastset_check; in intel_ddi_init()
5211 encoder->suspend = intel_ddi_encoder_suspend; in intel_ddi_init()
5212 encoder->shutdown = intel_ddi_encoder_shutdown; in intel_ddi_init()
5213 encoder->get_power_domains = intel_ddi_get_power_domains; in intel_ddi_init()
5215 encoder->type = INTEL_OUTPUT_DDI; in intel_ddi_init()
5216 encoder->power_domain = intel_display_power_ddi_lanes_domain(display, port); in intel_ddi_init()
5217 encoder->port = port; in intel_ddi_init()
5218 encoder->cloneable = 0; in intel_ddi_init()
5219 encoder->pipe_mask = ~0; in intel_ddi_init()
5222 encoder->enable_clock = intel_mtl_pll_enable; in intel_ddi_init()
5223 encoder->disable_clock = intel_mtl_pll_disable; in intel_ddi_init()
5224 encoder->port_pll_type = intel_mtl_port_pll_type; in intel_ddi_init()
5225 encoder->get_config = mtl_ddi_get_config; in intel_ddi_init()
5227 encoder->enable_clock = intel_mpllb_enable; in intel_ddi_init()
5228 encoder->disable_clock = intel_mpllb_disable; in intel_ddi_init()
5229 encoder->get_config = dg2_ddi_get_config; in intel_ddi_init()
5231 encoder->enable_clock = adls_ddi_enable_clock; in intel_ddi_init()
5232 encoder->disable_clock = adls_ddi_disable_clock; in intel_ddi_init()
5233 encoder->is_clock_enabled = adls_ddi_is_clock_enabled; in intel_ddi_init()
5234 encoder->get_config = adls_ddi_get_config; in intel_ddi_init()
5236 encoder->enable_clock = rkl_ddi_enable_clock; in intel_ddi_init()
5237 encoder->disable_clock = rkl_ddi_disable_clock; in intel_ddi_init()
5238 encoder->is_clock_enabled = rkl_ddi_is_clock_enabled; in intel_ddi_init()
5239 encoder->get_config = rkl_ddi_get_config; in intel_ddi_init()
5241 encoder->enable_clock = dg1_ddi_enable_clock; in intel_ddi_init()
5242 encoder->disable_clock = dg1_ddi_disable_clock; in intel_ddi_init()
5243 encoder->is_clock_enabled = dg1_ddi_is_clock_enabled; in intel_ddi_init()
5244 encoder->get_config = dg1_ddi_get_config; in intel_ddi_init()
5247 encoder->enable_clock = jsl_ddi_tc_enable_clock; in intel_ddi_init()
5248 encoder->disable_clock = jsl_ddi_tc_disable_clock; in intel_ddi_init()
5249 encoder->is_clock_enabled = jsl_ddi_tc_is_clock_enabled; in intel_ddi_init()
5250 encoder->port_pll_type = icl_ddi_tc_port_pll_type; in intel_ddi_init()
5251 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5253 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
5254 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
5255 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
5256 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5260 encoder->enable_clock = icl_ddi_tc_enable_clock; in intel_ddi_init()
5261 encoder->disable_clock = icl_ddi_tc_disable_clock; in intel_ddi_init()
5262 encoder->is_clock_enabled = icl_ddi_tc_is_clock_enabled; in intel_ddi_init()
5263 encoder->port_pll_type = icl_ddi_tc_port_pll_type; in intel_ddi_init()
5264 encoder->get_config = icl_ddi_tc_get_config; in intel_ddi_init()
5266 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
5267 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
5268 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
5269 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5273 encoder->get_config = bxt_ddi_get_config; in intel_ddi_init()
5275 encoder->enable_clock = skl_ddi_enable_clock; in intel_ddi_init()
5276 encoder->disable_clock = skl_ddi_disable_clock; in intel_ddi_init()
5277 encoder->is_clock_enabled = skl_ddi_is_clock_enabled; in intel_ddi_init()
5278 encoder->get_config = skl_ddi_get_config; in intel_ddi_init()
5280 encoder->enable_clock = hsw_ddi_enable_clock; in intel_ddi_init()
5281 encoder->disable_clock = hsw_ddi_disable_clock; in intel_ddi_init()
5282 encoder->is_clock_enabled = hsw_ddi_is_clock_enabled; in intel_ddi_init()
5283 encoder->get_config = hsw_ddi_get_config; in intel_ddi_init()
5287 encoder->set_signal_levels = intel_cx0_phy_set_signal_levels; in intel_ddi_init()
5289 encoder->set_signal_levels = intel_snps_phy_set_signal_levels; in intel_ddi_init()
5291 if (intel_encoder_is_combo(encoder)) in intel_ddi_init()
5292 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
5294 encoder->set_signal_levels = tgl_dkl_phy_set_signal_levels; in intel_ddi_init()
5296 if (intel_encoder_is_combo(encoder)) in intel_ddi_init()
5297 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
5299 encoder->set_signal_levels = icl_mg_phy_set_signal_levels; in intel_ddi_init()
5301 encoder->set_signal_levels = bxt_dpio_phy_set_signal_levels; in intel_ddi_init()
5303 encoder->set_signal_levels = hsw_set_signal_levels; in intel_ddi_init()
5306 intel_ddi_buf_trans_init(encoder); in intel_ddi_init()
5309 encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port); in intel_ddi_init()
5311 encoder->hpd_pin = dg1_hpd_pin(dev_priv, port); in intel_ddi_init()
5313 encoder->hpd_pin = rkl_hpd_pin(dev_priv, port); in intel_ddi_init()
5315 encoder->hpd_pin = tgl_hpd_pin(dev_priv, port); in intel_ddi_init()
5317 encoder->hpd_pin = ehl_hpd_pin(dev_priv, port); in intel_ddi_init()
5319 encoder->hpd_pin = icl_hpd_pin(dev_priv, port); in intel_ddi_init()
5321 encoder->hpd_pin = skl_hpd_pin(dev_priv, port); in intel_ddi_init()
5323 encoder->hpd_pin = intel_hpd_pin_default(port); in intel_ddi_init()
5335 if (need_aux_ch(encoder, init_dp)) { in intel_ddi_init()
5336 dig_port->aux_ch = intel_dp_aux_ch(encoder); in intel_ddi_init()
5341 if (intel_encoder_is_tc(encoder)) { in intel_ddi_init()
5356 encoder->suspend_complete = intel_ddi_tc_encoder_suspend_complete; in intel_ddi_init()
5357 encoder->shutdown_complete = intel_ddi_tc_encoder_shutdown_complete; in intel_ddi_init()
5370 if (intel_encoder_is_tc(encoder)) in intel_ddi_init()
5399 encoder->pipe_mask = intel_ddi_splitter_pipe_mask(dev_priv); in intel_ddi_init()
5403 * In theory we don't need the encoder->type check, in intel_ddi_init()
5406 if (encoder->type != INTEL_OUTPUT_EDP && init_hdmi) { in intel_ddi_init()
5414 drm_encoder_cleanup(&encoder->base); in intel_ddi_init()