Lines Matching full:encoder
96 static int intel_ddi_hdmi_level(struct intel_encoder *encoder, in intel_ddi_hdmi_level() argument
101 level = intel_bios_hdmi_level_shift(encoder->devdata); in intel_ddi_hdmi_level()
123 void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_dp_ddi_buffers() argument
126 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_dp_ddi_buffers()
129 enum port port = encoder->port; in hsw_prepare_dp_ddi_buffers()
132 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_dp_ddi_buffers()
138 intel_bios_dp_boost_level(encoder->devdata)) in hsw_prepare_dp_ddi_buffers()
154 static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_hdmi_ddi_buffers() argument
157 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_hdmi_ddi_buffers()
158 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_prepare_hdmi_ddi_buffers()
161 enum port port = encoder->port; in hsw_prepare_hdmi_ddi_buffers()
164 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_hdmi_ddi_buffers()
170 intel_bios_hdmi_boost_level(encoder->devdata)) in hsw_prepare_hdmi_ddi_buffers()
206 static void intel_wait_ddi_buf_active(struct intel_encoder *encoder) in intel_wait_ddi_buf_active() argument
208 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_wait_ddi_buf_active()
209 enum port port = encoder->port; in intel_wait_ddi_buf_active()
224 if (intel_encoder_is_tc(encoder)) in intel_wait_ddi_buf_active()
267 static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder, in icl_pll_to_ddi_clk_sel() argument
331 static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder, in intel_ddi_init_dp_buf_reg() argument
334 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_init_dp_buf_reg()
335 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_init_dp_buf_reg()
336 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_init_dp_buf_reg()
354 if (IS_ALDERLAKE_P(i915) && intel_encoder_is_tc(encoder)) { in intel_ddi_init_dp_buf_reg()
486 intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder, in intel_ddi_transcoder_func_reg_val_get() argument
493 enum port port = encoder->port; in intel_ddi_transcoder_func_reg_val_get()
598 void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_func() argument
623 intel_ddi_transcoder_func_reg_val_get(encoder, in intel_ddi_enable_transcoder_func()
633 intel_ddi_config_transcoder_func(struct intel_encoder *encoder, in intel_ddi_config_transcoder_func() argument
643 ctl = intel_ddi_transcoder_func_reg_val_get(encoder, crtc_state); in intel_ddi_config_transcoder_func()
726 struct intel_encoder *encoder = intel_attached_encoder(intel_connector); in intel_ddi_connector_get_hw_state() local
728 enum port port = encoder->port; in intel_ddi_connector_get_hw_state()
736 encoder->power_domain); in intel_ddi_connector_get_hw_state()
741 if (!encoder->get_hw_state(encoder, &pipe)) { in intel_ddi_connector_get_hw_state()
764 * encoder->get_hw_state() should have bailed out on MST. This in intel_ddi_connector_get_hw_state()
769 /* encoder->get_hw_state() should have bailed out on MST. */ in intel_ddi_connector_get_hw_state()
776 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_connector_get_hw_state()
781 static void intel_ddi_get_encoder_pipes(struct intel_encoder *encoder, in intel_ddi_get_encoder_pipes() argument
784 struct intel_display *display = to_intel_display(encoder); in intel_ddi_get_encoder_pipes()
786 enum port port = encoder->port; in intel_ddi_get_encoder_pipes()
796 encoder->power_domain); in intel_ddi_get_encoder_pipes()
865 "No pipe for [ENCODER:%d:%s] found\n", in intel_ddi_get_encoder_pipes()
866 encoder->base.base.id, encoder->base.name); in intel_ddi_get_encoder_pipes()
869 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_get_encoder_pipes()
888 "Multiple pipes for [ENCODER:%d:%s] (pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
889 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
896 …"Conflicting MST and non-MST state for [ENCODER:%d:%s] (pipe masks: all %02x, MST %02x, 128b/132b … in intel_ddi_get_encoder_pipes()
897 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
909 "[ENCODER:%d:%s] enabled but PHY powered down? (PHY_CTL %08x)\n", in intel_ddi_get_encoder_pipes()
910 encoder->base.base.id, encoder->base.name, tmp); in intel_ddi_get_encoder_pipes()
913 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_get_encoder_pipes()
916 bool intel_ddi_get_hw_state(struct intel_encoder *encoder, in intel_ddi_get_hw_state() argument
922 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_get_hw_state()
993 static void intel_ddi_get_power_domains(struct intel_encoder *encoder, in intel_ddi_get_power_domains() argument
996 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_power_domains()
1008 dig_port = enc_to_dig_port(encoder); in intel_ddi_get_power_domains()
1019 void intel_ddi_enable_transcoder_clock(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_clock() argument
1025 enum phy phy = intel_encoder_to_phy(encoder); in intel_ddi_enable_transcoder_clock()
1034 val = TGL_TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_transcoder_clock()
1036 val = TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_transcoder_clock()
1072 static void skl_ddi_set_iboost(struct intel_encoder *encoder, in skl_ddi_set_iboost() argument
1076 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in skl_ddi_set_iboost()
1077 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in skl_ddi_set_iboost()
1081 iboost = intel_bios_hdmi_boost_level(encoder->devdata); in skl_ddi_set_iboost()
1083 iboost = intel_bios_dp_boost_level(encoder->devdata); in skl_ddi_set_iboost()
1089 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in skl_ddi_set_iboost()
1102 _skl_ddi_set_iboost(dev_priv, encoder->port, iboost); in skl_ddi_set_iboost()
1104 if (encoder->port == PORT_A && dig_port->max_lanes == 4) in skl_ddi_set_iboost()
1111 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_dp_voltage_max() local
1112 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_dp_voltage_max()
1115 encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_dp_voltage_max()
1149 static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder, in icl_ddi_combo_vswing_program() argument
1152 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_ddi_combo_vswing_program()
1154 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_vswing_program()
1158 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_ddi_combo_vswing_program()
1163 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in icl_ddi_combo_vswing_program()
1182 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1194 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1205 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1213 static void icl_combo_phy_set_signal_levels(struct intel_encoder *encoder, in icl_combo_phy_set_signal_levels() argument
1216 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_combo_phy_set_signal_levels()
1217 enum phy phy = intel_encoder_to_phy(encoder); in icl_combo_phy_set_signal_levels()
1256 icl_ddi_combo_vswing_program(encoder, crtc_state); in icl_combo_phy_set_signal_levels()
1264 static void icl_mg_phy_set_signal_levels(struct intel_encoder *encoder, in icl_mg_phy_set_signal_levels() argument
1267 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_mg_phy_set_signal_levels()
1268 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_mg_phy_set_signal_levels()
1272 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in icl_mg_phy_set_signal_levels()
1275 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_mg_phy_set_signal_levels()
1290 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1296 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1307 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1316 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1365 static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder, in tgl_dkl_phy_set_signal_levels() argument
1368 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_dkl_phy_set_signal_levels()
1369 enum tc_port tc_port = intel_encoder_to_tc(encoder); in tgl_dkl_phy_set_signal_levels()
1373 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in tgl_dkl_phy_set_signal_levels()
1376 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in tgl_dkl_phy_set_signal_levels()
1385 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in tgl_dkl_phy_set_signal_levels()
1395 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in tgl_dkl_phy_set_signal_levels()
1466 int intel_ddi_level(struct intel_encoder *encoder, in intel_ddi_level() argument
1470 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_level()
1474 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_level()
1479 level = intel_ddi_hdmi_level(encoder, trans); in intel_ddi_level()
1481 level = intel_ddi_dp_level(enc_to_intel_dp(encoder), crtc_state, in intel_ddi_level()
1491 hsw_set_signal_levels(struct intel_encoder *encoder, in hsw_set_signal_levels() argument
1494 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_set_signal_levels()
1495 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_set_signal_levels()
1496 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_set_signal_levels()
1497 enum port port = encoder->port; in hsw_set_signal_levels()
1501 skl_ddi_set_iboost(encoder, crtc_state, level); in hsw_set_signal_levels()
1562 static void adls_ddi_enable_clock(struct intel_encoder *encoder, in adls_ddi_enable_clock() argument
1565 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_enable_clock()
1567 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_enable_clock()
1578 static void adls_ddi_disable_clock(struct intel_encoder *encoder) in adls_ddi_disable_clock() argument
1580 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_disable_clock()
1581 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_disable_clock()
1587 static bool adls_ddi_is_clock_enabled(struct intel_encoder *encoder) in adls_ddi_is_clock_enabled() argument
1589 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_is_clock_enabled()
1590 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_is_clock_enabled()
1596 static struct intel_shared_dpll *adls_ddi_get_pll(struct intel_encoder *encoder) in adls_ddi_get_pll() argument
1598 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_get_pll()
1599 enum phy phy = intel_encoder_to_phy(encoder); in adls_ddi_get_pll()
1606 static void rkl_ddi_enable_clock(struct intel_encoder *encoder, in rkl_ddi_enable_clock() argument
1609 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_enable_clock()
1611 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_enable_clock()
1622 static void rkl_ddi_disable_clock(struct intel_encoder *encoder) in rkl_ddi_disable_clock() argument
1624 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_disable_clock()
1625 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_disable_clock()
1631 static bool rkl_ddi_is_clock_enabled(struct intel_encoder *encoder) in rkl_ddi_is_clock_enabled() argument
1633 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_is_clock_enabled()
1634 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_is_clock_enabled()
1640 static struct intel_shared_dpll *rkl_ddi_get_pll(struct intel_encoder *encoder) in rkl_ddi_get_pll() argument
1642 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_get_pll()
1643 enum phy phy = intel_encoder_to_phy(encoder); in rkl_ddi_get_pll()
1650 static void dg1_ddi_enable_clock(struct intel_encoder *encoder, in dg1_ddi_enable_clock() argument
1653 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_enable_clock()
1655 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_enable_clock()
1675 static void dg1_ddi_disable_clock(struct intel_encoder *encoder) in dg1_ddi_disable_clock() argument
1677 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_disable_clock()
1678 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_disable_clock()
1684 static bool dg1_ddi_is_clock_enabled(struct intel_encoder *encoder) in dg1_ddi_is_clock_enabled() argument
1686 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_is_clock_enabled()
1687 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_is_clock_enabled()
1693 static struct intel_shared_dpll *dg1_ddi_get_pll(struct intel_encoder *encoder) in dg1_ddi_get_pll() argument
1695 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_get_pll()
1696 enum phy phy = intel_encoder_to_phy(encoder); in dg1_ddi_get_pll()
1716 static void icl_ddi_combo_enable_clock(struct intel_encoder *encoder, in icl_ddi_combo_enable_clock() argument
1719 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_enable_clock()
1721 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_enable_clock()
1732 static void icl_ddi_combo_disable_clock(struct intel_encoder *encoder) in icl_ddi_combo_disable_clock() argument
1734 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_disable_clock()
1735 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_disable_clock()
1741 static bool icl_ddi_combo_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_combo_is_clock_enabled() argument
1743 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_is_clock_enabled()
1744 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_is_clock_enabled()
1750 struct intel_shared_dpll *icl_ddi_combo_get_pll(struct intel_encoder *encoder) in icl_ddi_combo_get_pll() argument
1752 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_get_pll()
1753 enum phy phy = intel_encoder_to_phy(encoder); in icl_ddi_combo_get_pll()
1760 static void jsl_ddi_tc_enable_clock(struct intel_encoder *encoder, in jsl_ddi_tc_enable_clock() argument
1763 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_enable_clock()
1765 enum port port = encoder->port; in jsl_ddi_tc_enable_clock()
1776 icl_ddi_combo_enable_clock(encoder, crtc_state); in jsl_ddi_tc_enable_clock()
1779 static void jsl_ddi_tc_disable_clock(struct intel_encoder *encoder) in jsl_ddi_tc_disable_clock() argument
1781 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_disable_clock()
1782 enum port port = encoder->port; in jsl_ddi_tc_disable_clock()
1784 icl_ddi_combo_disable_clock(encoder); in jsl_ddi_tc_disable_clock()
1789 static bool jsl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in jsl_ddi_tc_is_clock_enabled() argument
1791 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_is_clock_enabled()
1792 enum port port = encoder->port; in jsl_ddi_tc_is_clock_enabled()
1800 return icl_ddi_combo_is_clock_enabled(encoder); in jsl_ddi_tc_is_clock_enabled()
1803 static void icl_ddi_tc_enable_clock(struct intel_encoder *encoder, in icl_ddi_tc_enable_clock() argument
1806 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_enable_clock()
1808 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_enable_clock()
1809 enum port port = encoder->port; in icl_ddi_tc_enable_clock()
1815 icl_pll_to_ddi_clk_sel(encoder, crtc_state)); in icl_ddi_tc_enable_clock()
1825 static void icl_ddi_tc_disable_clock(struct intel_encoder *encoder) in icl_ddi_tc_disable_clock() argument
1827 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_disable_clock()
1828 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_disable_clock()
1829 enum port port = encoder->port; in icl_ddi_tc_disable_clock()
1841 static bool icl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_tc_is_clock_enabled() argument
1843 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_is_clock_enabled()
1844 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_is_clock_enabled()
1845 enum port port = encoder->port; in icl_ddi_tc_is_clock_enabled()
1858 static struct intel_shared_dpll *icl_ddi_tc_get_pll(struct intel_encoder *encoder) in icl_ddi_tc_get_pll() argument
1860 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_pll()
1861 enum tc_port tc_port = intel_encoder_to_tc(encoder); in icl_ddi_tc_get_pll()
1862 enum port port = encoder->port; in icl_ddi_tc_get_pll()
1888 static struct intel_shared_dpll *bxt_ddi_get_pll(struct intel_encoder *encoder) in bxt_ddi_get_pll() argument
1890 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in bxt_ddi_get_pll()
1893 switch (encoder->port) { in bxt_ddi_get_pll()
1904 MISSING_CASE(encoder->port); in bxt_ddi_get_pll()
1911 static void skl_ddi_enable_clock(struct intel_encoder *encoder, in skl_ddi_enable_clock() argument
1914 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_enable_clock()
1916 enum port port = encoder->port; in skl_ddi_enable_clock()
1932 static void skl_ddi_disable_clock(struct intel_encoder *encoder) in skl_ddi_disable_clock() argument
1934 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_disable_clock()
1935 enum port port = encoder->port; in skl_ddi_disable_clock()
1945 static bool skl_ddi_is_clock_enabled(struct intel_encoder *encoder) in skl_ddi_is_clock_enabled() argument
1947 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_is_clock_enabled()
1948 enum port port = encoder->port; in skl_ddi_is_clock_enabled()
1957 static struct intel_shared_dpll *skl_ddi_get_pll(struct intel_encoder *encoder) in skl_ddi_get_pll() argument
1959 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_get_pll()
1960 enum port port = encoder->port; in skl_ddi_get_pll()
1979 void hsw_ddi_enable_clock(struct intel_encoder *encoder, in hsw_ddi_enable_clock() argument
1982 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_enable_clock()
1984 enum port port = encoder->port; in hsw_ddi_enable_clock()
1992 void hsw_ddi_disable_clock(struct intel_encoder *encoder) in hsw_ddi_disable_clock() argument
1994 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_disable_clock()
1995 enum port port = encoder->port; in hsw_ddi_disable_clock()
2000 bool hsw_ddi_is_clock_enabled(struct intel_encoder *encoder) in hsw_ddi_is_clock_enabled() argument
2002 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_is_clock_enabled()
2003 enum port port = encoder->port; in hsw_ddi_is_clock_enabled()
2008 static struct intel_shared_dpll *hsw_ddi_get_pll(struct intel_encoder *encoder) in hsw_ddi_get_pll() argument
2010 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_get_pll()
2011 enum port port = encoder->port; in hsw_ddi_get_pll()
2046 void intel_ddi_enable_clock(struct intel_encoder *encoder, in intel_ddi_enable_clock() argument
2049 if (encoder->enable_clock) in intel_ddi_enable_clock()
2050 encoder->enable_clock(encoder, crtc_state); in intel_ddi_enable_clock()
2053 void intel_ddi_disable_clock(struct intel_encoder *encoder) in intel_ddi_disable_clock() argument
2055 if (encoder->disable_clock) in intel_ddi_disable_clock()
2056 encoder->disable_clock(encoder); in intel_ddi_disable_clock()
2059 void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder) in intel_ddi_sanitize_encoder_pll_mapping() argument
2061 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sanitize_encoder_pll_mapping()
2066 * In case of DP MST, we sanitize the primary encoder only, not the in intel_ddi_sanitize_encoder_pll_mapping()
2069 if (encoder->type == INTEL_OUTPUT_DP_MST) in intel_ddi_sanitize_encoder_pll_mapping()
2072 if (!encoder->base.crtc && intel_encoder_is_dp(encoder)) { in intel_ddi_sanitize_encoder_pll_mapping()
2076 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_sanitize_encoder_pll_mapping()
2085 port_mask = BIT(encoder->port); in intel_ddi_sanitize_encoder_pll_mapping()
2086 ddi_clk_needed = encoder->base.crtc; in intel_ddi_sanitize_encoder_pll_mapping()
2088 if (encoder->type == INTEL_OUTPUT_DSI) { in intel_ddi_sanitize_encoder_pll_mapping()
2091 port_mask = intel_dsi_encoder_ports(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2094 * encoder using any of the ports of this DSI encoder. in intel_ddi_sanitize_encoder_pll_mapping()
2097 if (other_encoder == encoder) in intel_ddi_sanitize_encoder_pll_mapping()
2111 if (ddi_clk_needed || !encoder->is_clock_enabled || in intel_ddi_sanitize_encoder_pll_mapping()
2112 !encoder->is_clock_enabled(encoder)) in intel_ddi_sanitize_encoder_pll_mapping()
2116 "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI clock, gate it\n", in intel_ddi_sanitize_encoder_pll_mapping()
2117 encoder->base.base.id, encoder->base.name); in intel_ddi_sanitize_encoder_pll_mapping()
2119 encoder->disable_clock(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2218 i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder, in dp_tp_ctl_reg() argument
2221 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_ctl_reg()
2227 return DP_TP_CTL(encoder->port); in dp_tp_ctl_reg()
2230 static i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder, in dp_tp_status_reg() argument
2233 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_status_reg()
2239 return DP_TP_STATUS(encoder->port); in dp_tp_status_reg()
2242 void intel_ddi_clear_act_sent(struct intel_encoder *encoder, in intel_ddi_clear_act_sent() argument
2245 struct intel_display *display = to_intel_display(encoder); in intel_ddi_clear_act_sent()
2247 intel_de_write(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_clear_act_sent()
2251 void intel_ddi_wait_for_act_sent(struct intel_encoder *encoder, in intel_ddi_wait_for_act_sent() argument
2254 struct intel_display *display = to_intel_display(encoder); in intel_ddi_wait_for_act_sent()
2256 if (intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_act_sent()
2330 int intel_ddi_wait_for_fec_status(struct intel_encoder *encoder, in intel_ddi_wait_for_fec_status() argument
2334 struct intel_display *display = to_intel_display(encoder); in intel_ddi_wait_for_fec_status()
2335 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_wait_for_fec_status()
2342 ret = intel_de_wait_for_set(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_fec_status()
2345 ret = intel_de_wait_for_clear(display, dp_tp_status_reg(encoder, crtc_state), in intel_ddi_wait_for_fec_status()
2367 static void intel_ddi_enable_fec(struct intel_encoder *encoder, in intel_ddi_enable_fec() argument
2370 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable_fec()
2377 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2383 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable_fec()
2390 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2393 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, false); in intel_ddi_enable_fec()
2397 intel_de_rmw(display, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_enable_fec()
2400 ret = intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable_fec()
2408 static void intel_ddi_disable_fec(struct intel_encoder *encoder, in intel_ddi_disable_fec() argument
2411 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_disable_fec()
2416 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_disable_fec()
2418 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec()
2421 static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, in intel_ddi_power_up_lanes() argument
2424 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_power_up_lanes()
2425 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_power_up_lanes()
2427 if (intel_encoder_is_combo(encoder)) { in intel_ddi_power_up_lanes()
2428 enum phy phy = intel_encoder_to_phy(encoder); in intel_ddi_power_up_lanes()
2450 static void intel_ddi_mso_get_config(struct intel_encoder *encoder, in intel_ddi_mso_get_config() argument
2530 mtl_ddi_enable_d2d(struct intel_encoder *encoder) in mtl_ddi_enable_d2d() argument
2532 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in mtl_ddi_enable_d2d()
2533 enum port port = encoder->port; in mtl_ddi_enable_d2d()
2554 static void mtl_port_buf_ctl_program(struct intel_encoder *encoder, in mtl_port_buf_ctl_program() argument
2557 struct intel_display *display = to_intel_display(encoder); in mtl_port_buf_ctl_program()
2558 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in mtl_port_buf_ctl_program()
2559 enum port port = encoder->port; in mtl_port_buf_ctl_program()
2577 static void mtl_port_buf_ctl_io_selection(struct intel_encoder *encoder) in mtl_port_buf_ctl_io_selection() argument
2579 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in mtl_port_buf_ctl_io_selection()
2580 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in mtl_port_buf_ctl_io_selection()
2585 intel_de_rmw(i915, XELPDP_PORT_BUF_CTL1(i915, encoder->port), in mtl_port_buf_ctl_io_selection()
2590 struct intel_encoder *encoder, in mtl_ddi_pre_enable_dp() argument
2594 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in mtl_ddi_pre_enable_dp()
2606 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2618 mtl_port_buf_ctl_io_selection(encoder); in mtl_ddi_pre_enable_dp()
2624 intel_ddi_enable_clock(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2630 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2637 intel_ddi_config_transcoder_func(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2689 intel_ddi_enable_fec(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2696 intel_dp_queue_modeset_retry_for_link(state, encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2700 intel_dsc_dp_pps_write(encoder, crtc_state); in mtl_ddi_pre_enable_dp()
2704 struct intel_encoder *encoder, in tgl_ddi_pre_enable_dp() argument
2708 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in tgl_ddi_pre_enable_dp()
2709 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_ddi_pre_enable_dp()
2710 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in tgl_ddi_pre_enable_dp()
2722 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2749 intel_ddi_enable_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2775 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2781 intel_ddi_config_transcoder_func(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2792 encoder->set_signal_levels(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2798 intel_ddi_power_up_lanes(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2837 intel_ddi_enable_fec(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2843 intel_dp_queue_modeset_retry_for_link(state, encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2847 intel_dsc_dp_pps_write(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2851 struct intel_encoder *encoder, in hsw_ddi_pre_enable_dp() argument
2855 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_ddi_pre_enable_dp()
2856 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_ddi_pre_enable_dp()
2857 enum port port = encoder->port; in hsw_ddi_pre_enable_dp()
2858 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in hsw_ddi_pre_enable_dp()
2875 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2879 intel_ddi_enable_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2890 hsw_prepare_dp_ddi_buffers(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2892 encoder->set_signal_levels(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2894 intel_ddi_power_up_lanes(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2909 intel_ddi_enable_fec(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2912 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2913 intel_dsc_dp_pps_write(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2918 struct intel_encoder *encoder, in intel_ddi_pre_enable_dp() argument
2922 struct intel_display *display = to_intel_display(encoder); in intel_ddi_pre_enable_dp()
2925 intel_dp_128b132b_sdp_crc16(enc_to_intel_dp(encoder), in intel_ddi_pre_enable_dp()
2930 intel_psr_enable_sink(enc_to_intel_dp(encoder), crtc_state); in intel_ddi_pre_enable_dp()
2933 mtl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2935 tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2937 hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2940 * from MST encoder pre_enable callback. in intel_ddi_pre_enable_dp()
2947 struct intel_encoder *encoder, in intel_ddi_pre_enable_hdmi() argument
2951 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable_hdmi()
2953 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_hdmi()
2956 intel_ddi_enable_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2964 intel_ddi_enable_transcoder_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2966 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable_hdmi()
2973 * encoder on its primary encoder.
2979 * - encoder will be the primary encoder (i.e. mst->primary)
2990 struct intel_encoder *encoder, in intel_ddi_pre_enable() argument
3003 intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, in intel_ddi_pre_enable()
3006 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable()
3008 intel_ddi_pre_enable_dp(state, encoder, crtc_state, in intel_ddi_pre_enable()
3014 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable()
3021 mtl_ddi_disable_d2d_link(struct intel_encoder *encoder) in mtl_ddi_disable_d2d_link() argument
3023 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in mtl_ddi_disable_d2d_link()
3024 enum port port = encoder->port; in mtl_ddi_disable_d2d_link()
3044 static void mtl_disable_ddi_buf(struct intel_encoder *encoder, in mtl_disable_ddi_buf() argument
3047 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in mtl_disable_ddi_buf()
3048 enum port port = encoder->port; in mtl_disable_ddi_buf()
3062 mtl_ddi_disable_d2d_link(encoder); in mtl_disable_ddi_buf()
3066 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in mtl_disable_ddi_buf()
3071 static void disable_ddi_buf(struct intel_encoder *encoder, in disable_ddi_buf() argument
3074 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in disable_ddi_buf()
3075 enum port port = encoder->port; in disable_ddi_buf()
3087 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in disable_ddi_buf()
3090 intel_ddi_disable_fec(encoder, crtc_state); in disable_ddi_buf()
3096 static void intel_disable_ddi_buf(struct intel_encoder *encoder, in intel_disable_ddi_buf() argument
3099 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_disable_ddi_buf()
3102 mtl_disable_ddi_buf(encoder, crtc_state); in intel_disable_ddi_buf()
3105 intel_ddi_disable_fec(encoder, crtc_state); in intel_disable_ddi_buf()
3107 disable_ddi_buf(encoder, crtc_state); in intel_disable_ddi_buf()
3110 intel_ddi_wait_for_fec_status(encoder, crtc_state, false); in intel_disable_ddi_buf()
3114 struct intel_encoder *encoder, in intel_ddi_post_disable_dp() argument
3118 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_dp()
3119 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_dp()
3126 intel_dp_set_infoframes(encoder, false, in intel_ddi_post_disable_dp()
3149 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_dp()
3173 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_dp()
3177 intel_de_rmw(dev_priv, XELPDP_PORT_BUF_CTL1(dev_priv, encoder->port), in intel_ddi_post_disable_dp()
3182 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi() argument
3186 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi()
3187 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_hdmi()
3191 dig_port->set_infoframes(encoder, false, in intel_ddi_post_disable_hdmi()
3197 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi()
3208 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_hdmi()
3214 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi_or_sst() argument
3218 struct intel_display *display = to_intel_display(encoder); in intel_ddi_post_disable_hdmi_or_sst()
3219 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi_or_sst()
3220 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_post_disable_hdmi_or_sst()
3239 intel_ddi_clear_act_sent(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi_or_sst()
3244 intel_ddi_wait_for_act_sent(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi_or_sst()
3265 * encoder on its primary encoder. See also the comment for
3269 struct intel_encoder *encoder, in intel_ddi_post_disable() argument
3274 intel_ddi_post_disable_hdmi_or_sst(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3280 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_post_disable()
3291 intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3294 intel_ddi_post_disable_dp(state, encoder, old_crtc_state, in intel_ddi_post_disable()
3300 * encoder on its primary encoder. See also the comment for
3304 struct intel_encoder *encoder, in intel_ddi_post_pll_disable() argument
3308 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_pll_disable()
3312 if (intel_encoder_is_tc(encoder)) in intel_ddi_post_pll_disable()
3317 struct intel_encoder *encoder, in trans_port_sync_stop_link_train() argument
3349 intel_dp_stop_link_train(enc_to_intel_dp(encoder), in trans_port_sync_stop_link_train()
3354 struct intel_encoder *encoder, in intel_ddi_enable_dp() argument
3358 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_dp()
3359 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable_dp()
3360 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_enable_dp()
3361 enum port port = encoder->port; in intel_ddi_enable_dp()
3370 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_enable_dp()
3372 trans_port_sync_stop_link_train(state, encoder, crtc_state); in intel_ddi_enable_dp()
3395 struct intel_encoder *encoder, in intel_ddi_enable_hdmi() argument
3399 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable_hdmi()
3400 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_hdmi()
3401 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_enable_hdmi()
3403 enum port port = encoder->port; in intel_ddi_enable_hdmi()
3406 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_ddi_enable_hdmi()
3414 hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state); in intel_ddi_enable_hdmi()
3418 mtl_ddi_enable_d2d(encoder); in intel_ddi_enable_hdmi()
3420 encoder->set_signal_levels(encoder, crtc_state); in intel_ddi_enable_hdmi()
3457 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()
3500 intel_wait_ddi_buf_active(encoder); in intel_ddi_enable_hdmi()
3504 struct intel_encoder *encoder, in intel_ddi_enable() argument
3508 struct intel_display *display = to_intel_display(encoder); in intel_ddi_enable()
3525 intel_ddi_enable_transcoder_func(encoder, crtc_state); in intel_ddi_enable()
3532 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable()
3534 intel_ddi_clear_act_sent(encoder, crtc_state); in intel_ddi_enable()
3539 intel_ddi_wait_for_act_sent(encoder, crtc_state); in intel_ddi_enable()
3545 intel_ddi_wait_for_fec_status(encoder, crtc_state, true); in intel_ddi_enable()
3555 intel_ddi_enable_hdmi(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3557 intel_ddi_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3559 intel_hdcp_enable(state, encoder, crtc_state, conn_state); in intel_ddi_enable()
3564 struct intel_encoder *encoder, in intel_ddi_disable_dp() argument
3568 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_disable_dp()
3585 struct intel_encoder *encoder, in intel_ddi_disable_hdmi() argument
3589 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_disable_hdmi()
3592 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_ddi_disable_hdmi()
3600 struct intel_encoder *encoder, in intel_ddi_disable() argument
3604 intel_tc_port_link_cancel_reset_work(enc_to_dig_port(encoder)); in intel_ddi_disable()
3609 intel_ddi_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_disable()
3612 intel_ddi_disable_dp(state, encoder, old_crtc_state, in intel_ddi_disable()
3617 struct intel_encoder *encoder, in intel_ddi_update_pipe_dp() argument
3623 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3625 intel_backlight_update(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3629 static void intel_ddi_update_pipe_hdmi(struct intel_encoder *encoder, in intel_ddi_update_pipe_hdmi() argument
3633 intel_hdmi_fastset_infoframes(encoder, crtc_state, conn_state); in intel_ddi_update_pipe_hdmi()
3637 struct intel_encoder *encoder, in intel_ddi_update_pipe() argument
3643 !intel_encoder_is_mst(encoder)) in intel_ddi_update_pipe()
3644 intel_ddi_update_pipe_dp(state, encoder, crtc_state, in intel_ddi_update_pipe()
3648 intel_ddi_update_pipe_hdmi(encoder, crtc_state, in intel_ddi_update_pipe()
3651 intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe()
3655 struct intel_encoder *encoder, in intel_ddi_update_active_dpll() argument
3658 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_update_active_dpll()
3664 if (DISPLAY_VER(i915) >= 14 || !intel_encoder_is_tc(encoder)) in intel_ddi_update_active_dpll()
3669 intel_update_active_dpll(state, pipe_crtc, encoder); in intel_ddi_update_active_dpll()
3674 * encoder on its primary encoder. See also the comment for
3679 struct intel_encoder *encoder, in intel_ddi_pre_pll_enable() argument
3683 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_pll_enable()
3684 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_pll_enable()
3685 bool is_tc_port = intel_encoder_is_tc(encoder); in intel_ddi_pre_pll_enable()
3691 intel_ddi_update_active_dpll(state, encoder, crtc); in intel_ddi_pre_pll_enable()
3703 bxt_dpio_phy_set_lane_optim_mask(encoder, in intel_ddi_pre_pll_enable()
3707 static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder) in adlp_tbt_to_dp_alt_switch_wa() argument
3709 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adlp_tbt_to_dp_alt_switch_wa()
3710 enum tc_port tc_port = intel_encoder_to_tc(encoder); in adlp_tbt_to_dp_alt_switch_wa()
3722 struct intel_encoder *encoder = &dig_port->base; in mtl_ddi_prepare_link_retrain() local
3723 enum port port = encoder->port; in mtl_ddi_prepare_link_retrain()
3730 dp_tp_ctl = intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)); in mtl_ddi_prepare_link_retrain()
3732 mtl_disable_ddi_buf(encoder, crtc_state); in mtl_ddi_prepare_link_retrain()
3744 intel_de_write(display, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in mtl_ddi_prepare_link_retrain()
3745 intel_de_posting_read(display, dp_tp_ctl_reg(encoder, crtc_state)); in mtl_ddi_prepare_link_retrain()
3748 mtl_ddi_enable_d2d(encoder); in mtl_ddi_prepare_link_retrain()
3751 encoder->set_signal_levels(encoder, crtc_state); in mtl_ddi_prepare_link_retrain()
3754 mtl_port_buf_ctl_program(encoder, crtc_state); in mtl_ddi_prepare_link_retrain()
3765 intel_wait_ddi_buf_active(encoder); in mtl_ddi_prepare_link_retrain()
3772 struct intel_encoder *encoder = &dig_port->base; in intel_ddi_prepare_link_retrain() local
3773 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_prepare_link_retrain()
3774 enum port port = encoder->port; in intel_ddi_prepare_link_retrain()
3778 dp_tp_ctl = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3789 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3790 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3805 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3806 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3810 adlp_tbt_to_dp_alt_switch_wa(encoder); in intel_ddi_prepare_link_retrain()
3816 intel_wait_ddi_buf_active(encoder); in intel_ddi_prepare_link_retrain()
3823 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_link_train() local
3824 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_link_train()
3827 temp = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_link_train()
3848 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), temp); in intel_ddi_set_link_train()
3854 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_idle_link_train() local
3855 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_idle_link_train()
3856 enum port port = encoder->port; in intel_ddi_set_idle_link_train()
3858 intel_de_rmw(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3872 dp_tp_status_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3991 static void intel_ddi_read_func_ctl_dvi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dvi() argument
3995 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dvi()
4005 static void intel_ddi_read_func_ctl_hdmi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_hdmi() argument
4012 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_hdmi()
4022 intel_ddi_read_func_ctl_dvi(encoder, crtc_state, ddi_func_ctl); in intel_ddi_read_func_ctl_hdmi()
4025 static void intel_ddi_read_func_ctl_fdi(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_fdi() argument
4029 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_fdi()
4033 intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)) & in intel_ddi_read_func_ctl_fdi()
4037 static void intel_ddi_read_func_ctl_dp_sst(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dp_sst() argument
4041 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dp_sst()
4043 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl_dp_sst()
4046 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_read_func_ctl_dp_sst()
4062 intel_de_read(display, dp_tp_ctl_reg(encoder, crtc_state)) & in intel_ddi_read_func_ctl_dp_sst()
4068 dp_tp_ctl_reg(encoder, crtc_state)) & DP_TP_CTL_FEC_ENABLE; in intel_ddi_read_func_ctl_dp_sst()
4072 intel_lspcon_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_sst()
4075 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_sst()
4078 static void intel_ddi_read_func_ctl_dp_mst(struct intel_encoder *encoder, in intel_ddi_read_func_ctl_dp_mst() argument
4082 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl_dp_mst()
4099 dp_tp_ctl_reg(encoder, crtc_state)) & DP_TP_CTL_FEC_ENABLE; in intel_ddi_read_func_ctl_dp_mst()
4102 intel_hdmi_infoframes_enabled(encoder, crtc_state); in intel_ddi_read_func_ctl_dp_mst()
4105 static void intel_ddi_read_func_ctl(struct intel_encoder *encoder, in intel_ddi_read_func_ctl() argument
4108 struct intel_display *display = to_intel_display(encoder); in intel_ddi_read_func_ctl()
4109 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_read_func_ctl()
4145 intel_ddi_read_func_ctl_hdmi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4147 intel_ddi_read_func_ctl_dvi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4149 intel_ddi_read_func_ctl_fdi(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4151 intel_ddi_read_func_ctl_dp_sst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4153 intel_ddi_read_func_ctl_dp_mst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4155 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl()
4159 * encoder's ->get_config(). in intel_ddi_read_func_ctl()
4162 intel_ddi_read_func_ctl_dp_mst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4164 intel_ddi_read_func_ctl_dp_sst(encoder, pipe_config, ddi_func_ctl); in intel_ddi_read_func_ctl()
4170 * primary encoder, via the platform specific hooks here. See also the comment
4173 static void intel_ddi_get_config(struct intel_encoder *encoder, in intel_ddi_get_config() argument
4176 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_config()
4183 intel_ddi_read_func_ctl(encoder, pipe_config); in intel_ddi_get_config()
4185 intel_ddi_mso_get_config(encoder, pipe_config); in intel_ddi_get_config()
4190 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_get_config()
4191 intel_edp_fixup_vbt_bpp(encoder, pipe_config->pipe_bpp); in intel_ddi_get_config()
4197 bxt_dpio_phy_get_lane_lat_optim_mask(encoder); in intel_ddi_get_config()
4201 intel_hdmi_read_gcp_infoframe(encoder, pipe_config); in intel_ddi_get_config()
4203 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4206 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4209 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4212 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
4219 intel_psr_get_config(encoder, pipe_config); in intel_ddi_get_config()
4221 intel_read_dp_sdp(encoder, pipe_config, HDMI_PACKET_TYPE_GAMUT_METADATA); in intel_ddi_get_config()
4222 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_VSC); in intel_ddi_get_config()
4223 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_ADAPTIVE_SYNC); in intel_ddi_get_config()
4225 intel_audio_codec_get_config(encoder, pipe_config); in intel_ddi_get_config()
4228 void intel_ddi_get_clock(struct intel_encoder *encoder, in intel_ddi_get_clock() argument
4232 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_get_clock()
4250 static void mtl_ddi_get_config(struct intel_encoder *encoder, in mtl_ddi_get_config() argument
4253 intel_cx0pll_readout_hw_state(encoder, &crtc_state->dpll_hw_state.cx0pll); in mtl_ddi_get_config()
4256 crtc_state->port_clock = intel_mtl_tbt_calc_port_clock(encoder); in mtl_ddi_get_config()
4258 crtc_state->port_clock = intel_cx0pll_calc_port_clock(encoder, &crtc_state->dpll_hw_state.cx0pll); in mtl_ddi_get_config()
4260 intel_ddi_get_config(encoder, crtc_state); in mtl_ddi_get_config()
4263 static void dg2_ddi_get_config(struct intel_encoder *encoder, in dg2_ddi_get_config() argument
4266 intel_mpllb_readout_hw_state(encoder, &crtc_state->dpll_hw_state.mpllb); in dg2_ddi_get_config()
4267 crtc_state->port_clock = intel_mpllb_calc_port_clock(encoder, &crtc_state->dpll_hw_state.mpllb); in dg2_ddi_get_config()
4269 intel_ddi_get_config(encoder, crtc_state); in dg2_ddi_get_config()
4272 static void adls_ddi_get_config(struct intel_encoder *encoder, in adls_ddi_get_config() argument
4275 intel_ddi_get_clock(encoder, crtc_state, adls_ddi_get_pll(encoder)); in adls_ddi_get_config()
4276 intel_ddi_get_config(encoder, crtc_state); in adls_ddi_get_config()
4279 static void rkl_ddi_get_config(struct intel_encoder *encoder, in rkl_ddi_get_config() argument
4282 intel_ddi_get_clock(encoder, crtc_state, rkl_ddi_get_pll(encoder)); in rkl_ddi_get_config()
4283 intel_ddi_get_config(encoder, crtc_state); in rkl_ddi_get_config()
4286 static void dg1_ddi_get_config(struct intel_encoder *encoder, in dg1_ddi_get_config() argument
4289 intel_ddi_get_clock(encoder, crtc_state, dg1_ddi_get_pll(encoder)); in dg1_ddi_get_config()
4290 intel_ddi_get_config(encoder, crtc_state); in dg1_ddi_get_config()
4293 static void icl_ddi_combo_get_config(struct intel_encoder *encoder, in icl_ddi_combo_get_config() argument
4296 intel_ddi_get_clock(encoder, crtc_state, icl_ddi_combo_get_pll(encoder)); in icl_ddi_combo_get_config()
4297 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_combo_get_config()
4306 icl_ddi_tc_port_pll_type(struct intel_encoder *encoder, in icl_ddi_tc_port_pll_type() argument
4309 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_port_pll_type()
4322 intel_ddi_port_pll_type(struct intel_encoder *encoder, in intel_ddi_port_pll_type() argument
4325 if (!encoder->port_pll_type) in intel_ddi_port_pll_type()
4328 return encoder->port_pll_type(encoder, crtc_state); in intel_ddi_port_pll_type()
4331 static void icl_ddi_tc_get_clock(struct intel_encoder *encoder, in icl_ddi_tc_get_clock() argument
4335 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_clock()
4357 crtc_state->port_clock = icl_calc_tbt_pll_link(i915, encoder->port); in icl_ddi_tc_get_clock()
4363 static void icl_ddi_tc_get_config(struct intel_encoder *encoder, in icl_ddi_tc_get_config() argument
4366 icl_ddi_tc_get_clock(encoder, crtc_state, icl_ddi_tc_get_pll(encoder)); in icl_ddi_tc_get_config()
4367 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_tc_get_config()
4370 static void bxt_ddi_get_config(struct intel_encoder *encoder, in bxt_ddi_get_config() argument
4373 intel_ddi_get_clock(encoder, crtc_state, bxt_ddi_get_pll(encoder)); in bxt_ddi_get_config()
4374 intel_ddi_get_config(encoder, crtc_state); in bxt_ddi_get_config()
4377 static void skl_ddi_get_config(struct intel_encoder *encoder, in skl_ddi_get_config() argument
4380 intel_ddi_get_clock(encoder, crtc_state, skl_ddi_get_pll(encoder)); in skl_ddi_get_config()
4381 intel_ddi_get_config(encoder, crtc_state); in skl_ddi_get_config()
4384 void hsw_ddi_get_config(struct intel_encoder *encoder, in hsw_ddi_get_config() argument
4387 intel_ddi_get_clock(encoder, crtc_state, hsw_ddi_get_pll(encoder)); in hsw_ddi_get_config()
4388 intel_ddi_get_config(encoder, crtc_state); in hsw_ddi_get_config()
4391 static void intel_ddi_sync_state(struct intel_encoder *encoder, in intel_ddi_sync_state() argument
4394 if (intel_encoder_is_tc(encoder)) in intel_ddi_sync_state()
4395 intel_tc_port_sanitize_mode(enc_to_dig_port(encoder), in intel_ddi_sync_state()
4399 (!crtc_state && intel_encoder_is_dp(encoder))) in intel_ddi_sync_state()
4400 intel_dp_sync_state(encoder, crtc_state); in intel_ddi_sync_state()
4403 static bool intel_ddi_initial_fastset_check(struct intel_encoder *encoder, in intel_ddi_initial_fastset_check() argument
4406 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_initial_fastset_check()
4409 if (intel_encoder_is_tc(encoder)) { in intel_ddi_initial_fastset_check()
4410 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] Forcing full modeset to compute TC port DPLLs\n", in intel_ddi_initial_fastset_check()
4411 encoder->base.base.id, encoder->base.name); in intel_ddi_initial_fastset_check()
4417 !intel_dp_initial_fastset_check(encoder, crtc_state)) in intel_ddi_initial_fastset_check()
4424 intel_ddi_compute_output_type(struct intel_encoder *encoder, in intel_ddi_compute_output_type() argument
4441 static int intel_ddi_compute_config(struct intel_encoder *encoder, in intel_ddi_compute_config() argument
4446 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_compute_config()
4447 enum port port = encoder->port; in intel_ddi_compute_config()
4455 intel_hdmi_compute_has_hdmi_sink(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4457 ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4459 ret = intel_dp_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
4562 static int intel_ddi_compute_config_late(struct intel_encoder *encoder, in intel_ddi_compute_config_late() argument
4566 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_compute_config_late()
4570 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] [CRTC:%d:%s]\n", in intel_ddi_compute_config_late()
4571 encoder->base.base.id, encoder->base.name, in intel_ddi_compute_config_late()
4596 static void intel_ddi_encoder_destroy(struct drm_encoder *encoder) in intel_ddi_encoder_destroy() argument
4598 struct drm_i915_private *i915 = to_i915(encoder->dev); in intel_ddi_encoder_destroy()
4599 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_destroy()
4601 intel_dp_encoder_flush_work(encoder); in intel_ddi_encoder_destroy()
4606 drm_encoder_cleanup(encoder); in intel_ddi_encoder_destroy()
4611 static void intel_ddi_encoder_reset(struct drm_encoder *encoder) in intel_ddi_encoder_reset() argument
4613 struct intel_dp *intel_dp = enc_to_intel_dp(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
4614 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
4627 struct intel_encoder *encoder = to_intel_encoder(_encoder); in intel_ddi_encoder_late_register() local
4629 intel_tc_port_link_reset(enc_to_dig_port(encoder)); in intel_ddi_encoder_late_register()
4682 static int intel_hdmi_reset_link(struct intel_encoder *encoder, in intel_hdmi_reset_link() argument
4685 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_reset_link()
4686 struct intel_hdmi *hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_reset_link()
4754 static void intel_ddi_link_check(struct intel_encoder *encoder) in intel_ddi_link_check() argument
4756 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_link_check()
4757 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_link_check()
4762 intel_dp_link_check(encoder); in intel_ddi_link_check()
4766 intel_ddi_hotplug(struct intel_encoder *encoder, in intel_ddi_hotplug() argument
4769 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_hotplug()
4771 bool is_tc = intel_encoder_is_tc(encoder); in intel_ddi_hotplug()
4779 state = intel_encoder_hotplug(encoder, connector); in intel_ddi_hotplug()
4784 ret = intel_hdmi_reset_link(encoder, &ctx); in intel_ddi_hotplug()
4785 drm_WARN_ON(encoder->base.dev, ret); in intel_ddi_hotplug()
4821 static bool lpt_digital_port_connected(struct intel_encoder *encoder) in lpt_digital_port_connected() argument
4823 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in lpt_digital_port_connected()
4824 u32 bit = dev_priv->display.hotplug.pch_hpd[encoder->hpd_pin]; in lpt_digital_port_connected()
4829 static bool hsw_digital_port_connected(struct intel_encoder *encoder) in hsw_digital_port_connected() argument
4831 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_digital_port_connected()
4832 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in hsw_digital_port_connected()
4837 static bool bdw_digital_port_connected(struct intel_encoder *encoder) in bdw_digital_port_connected() argument
4839 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in bdw_digital_port_connected()
4840 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in bdw_digital_port_connected()
5001 static void intel_ddi_encoder_suspend(struct intel_encoder *encoder) in intel_ddi_encoder_suspend() argument
5003 intel_dp_encoder_suspend(encoder); in intel_ddi_encoder_suspend()
5006 static void intel_ddi_tc_encoder_suspend_complete(struct intel_encoder *encoder) in intel_ddi_tc_encoder_suspend_complete() argument
5008 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_tc_encoder_suspend_complete()
5015 intel_encoder_link_check_flush_work(encoder); in intel_ddi_tc_encoder_suspend_complete()
5019 static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder) in intel_ddi_encoder_shutdown() argument
5021 if (intel_encoder_is_dp(encoder)) in intel_ddi_encoder_shutdown()
5022 intel_dp_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
5023 if (intel_encoder_is_hdmi(encoder)) in intel_ddi_encoder_shutdown()
5024 intel_hdmi_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
5027 static void intel_ddi_tc_encoder_shutdown_complete(struct intel_encoder *encoder) in intel_ddi_tc_encoder_shutdown_complete() argument
5029 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_tc_encoder_shutdown_complete()
5061 static bool need_aux_ch(struct intel_encoder *encoder, bool init_dp) in need_aux_ch() argument
5063 return init_dp || intel_encoder_is_tc(encoder); in need_aux_ch()
5075 struct intel_encoder *encoder; in port_in_use() local
5077 for_each_intel_encoder(&i915->drm, encoder) { in port_in_use()
5079 if (encoder->port == port) in port_in_use()
5091 struct intel_encoder *encoder; in intel_ddi_init() local
5175 encoder = &dig_port->base; in intel_ddi_init()
5176 encoder->devdata = devdata; in intel_ddi_init()
5179 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5187 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5197 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5205 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
5210 intel_encoder_link_check_init(encoder, intel_ddi_link_check); in intel_ddi_init()
5215 encoder->hotplug = intel_ddi_hotplug; in intel_ddi_init()
5216 encoder->compute_output_type = intel_ddi_compute_output_type; in intel_ddi_init()
5217 encoder->compute_config = intel_ddi_compute_config; in intel_ddi_init()
5218 encoder->compute_config_late = intel_ddi_compute_config_late; in intel_ddi_init()
5219 encoder->enable = intel_ddi_enable; in intel_ddi_init()
5220 encoder->pre_pll_enable = intel_ddi_pre_pll_enable; in intel_ddi_init()
5221 encoder->pre_enable = intel_ddi_pre_enable; in intel_ddi_init()
5222 encoder->disable = intel_ddi_disable; in intel_ddi_init()
5223 encoder->post_pll_disable = intel_ddi_post_pll_disable; in intel_ddi_init()
5224 encoder->post_disable = intel_ddi_post_disable; in intel_ddi_init()
5225 encoder->update_pipe = intel_ddi_update_pipe; in intel_ddi_init()
5226 encoder->audio_enable = intel_audio_codec_enable; in intel_ddi_init()
5227 encoder->audio_disable = intel_audio_codec_disable; in intel_ddi_init()
5228 encoder->get_hw_state = intel_ddi_get_hw_state; in intel_ddi_init()
5229 encoder->sync_state = intel_ddi_sync_state; in intel_ddi_init()
5230 encoder->initial_fastset_check = intel_ddi_initial_fastset_check; in intel_ddi_init()
5231 encoder->suspend = intel_ddi_encoder_suspend; in intel_ddi_init()
5232 encoder->shutdown = intel_ddi_encoder_shutdown; in intel_ddi_init()
5233 encoder->get_power_domains = intel_ddi_get_power_domains; in intel_ddi_init()
5235 encoder->type = INTEL_OUTPUT_DDI; in intel_ddi_init()
5236 encoder->power_domain = intel_display_power_ddi_lanes_domain(dev_priv, port); in intel_ddi_init()
5237 encoder->port = port; in intel_ddi_init()
5238 encoder->cloneable = 0; in intel_ddi_init()
5239 encoder->pipe_mask = ~0; in intel_ddi_init()
5242 encoder->enable_clock = intel_mtl_pll_enable; in intel_ddi_init()
5243 encoder->disable_clock = intel_mtl_pll_disable; in intel_ddi_init()
5244 encoder->port_pll_type = intel_mtl_port_pll_type; in intel_ddi_init()
5245 encoder->get_config = mtl_ddi_get_config; in intel_ddi_init()
5247 encoder->enable_clock = intel_mpllb_enable; in intel_ddi_init()
5248 encoder->disable_clock = intel_mpllb_disable; in intel_ddi_init()
5249 encoder->get_config = dg2_ddi_get_config; in intel_ddi_init()
5251 encoder->enable_clock = adls_ddi_enable_clock; in intel_ddi_init()
5252 encoder->disable_clock = adls_ddi_disable_clock; in intel_ddi_init()
5253 encoder->is_clock_enabled = adls_ddi_is_clock_enabled; in intel_ddi_init()
5254 encoder->get_config = adls_ddi_get_config; in intel_ddi_init()
5256 encoder->enable_clock = rkl_ddi_enable_clock; in intel_ddi_init()
5257 encoder->disable_clock = rkl_ddi_disable_clock; in intel_ddi_init()
5258 encoder->is_clock_enabled = rkl_ddi_is_clock_enabled; in intel_ddi_init()
5259 encoder->get_config = rkl_ddi_get_config; in intel_ddi_init()
5261 encoder->enable_clock = dg1_ddi_enable_clock; in intel_ddi_init()
5262 encoder->disable_clock = dg1_ddi_disable_clock; in intel_ddi_init()
5263 encoder->is_clock_enabled = dg1_ddi_is_clock_enabled; in intel_ddi_init()
5264 encoder->get_config = dg1_ddi_get_config; in intel_ddi_init()
5267 encoder->enable_clock = jsl_ddi_tc_enable_clock; in intel_ddi_init()
5268 encoder->disable_clock = jsl_ddi_tc_disable_clock; in intel_ddi_init()
5269 encoder->is_clock_enabled = jsl_ddi_tc_is_clock_enabled; in intel_ddi_init()
5270 encoder->port_pll_type = icl_ddi_tc_port_pll_type; in intel_ddi_init()
5271 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5273 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
5274 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
5275 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
5276 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5280 encoder->enable_clock = icl_ddi_tc_enable_clock; in intel_ddi_init()
5281 encoder->disable_clock = icl_ddi_tc_disable_clock; in intel_ddi_init()
5282 encoder->is_clock_enabled = icl_ddi_tc_is_clock_enabled; in intel_ddi_init()
5283 encoder->port_pll_type = icl_ddi_tc_port_pll_type; in intel_ddi_init()
5284 encoder->get_config = icl_ddi_tc_get_config; in intel_ddi_init()
5286 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
5287 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
5288 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
5289 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
5293 encoder->get_config = bxt_ddi_get_config; in intel_ddi_init()
5295 encoder->enable_clock = skl_ddi_enable_clock; in intel_ddi_init()
5296 encoder->disable_clock = skl_ddi_disable_clock; in intel_ddi_init()
5297 encoder->is_clock_enabled = skl_ddi_is_clock_enabled; in intel_ddi_init()
5298 encoder->get_config = skl_ddi_get_config; in intel_ddi_init()
5300 encoder->enable_clock = hsw_ddi_enable_clock; in intel_ddi_init()
5301 encoder->disable_clock = hsw_ddi_disable_clock; in intel_ddi_init()
5302 encoder->is_clock_enabled = hsw_ddi_is_clock_enabled; in intel_ddi_init()
5303 encoder->get_config = hsw_ddi_get_config; in intel_ddi_init()
5307 encoder->set_signal_levels = intel_cx0_phy_set_signal_levels; in intel_ddi_init()
5309 encoder->set_signal_levels = intel_snps_phy_set_signal_levels; in intel_ddi_init()
5311 if (intel_encoder_is_combo(encoder)) in intel_ddi_init()
5312 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
5314 encoder->set_signal_levels = tgl_dkl_phy_set_signal_levels; in intel_ddi_init()
5316 if (intel_encoder_is_combo(encoder)) in intel_ddi_init()
5317 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
5319 encoder->set_signal_levels = icl_mg_phy_set_signal_levels; in intel_ddi_init()
5321 encoder->set_signal_levels = bxt_dpio_phy_set_signal_levels; in intel_ddi_init()
5323 encoder->set_signal_levels = hsw_set_signal_levels; in intel_ddi_init()
5326 intel_ddi_buf_trans_init(encoder); in intel_ddi_init()
5329 encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port); in intel_ddi_init()
5331 encoder->hpd_pin = dg1_hpd_pin(dev_priv, port); in intel_ddi_init()
5333 encoder->hpd_pin = rkl_hpd_pin(dev_priv, port); in intel_ddi_init()
5335 encoder->hpd_pin = tgl_hpd_pin(dev_priv, port); in intel_ddi_init()
5337 encoder->hpd_pin = ehl_hpd_pin(dev_priv, port); in intel_ddi_init()
5339 encoder->hpd_pin = icl_hpd_pin(dev_priv, port); in intel_ddi_init()
5341 encoder->hpd_pin = skl_hpd_pin(dev_priv, port); in intel_ddi_init()
5343 encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port); in intel_ddi_init()
5355 if (need_aux_ch(encoder, init_dp)) { in intel_ddi_init()
5356 dig_port->aux_ch = intel_dp_aux_ch(encoder); in intel_ddi_init()
5361 if (intel_encoder_is_tc(encoder)) { in intel_ddi_init()
5376 encoder->suspend_complete = intel_ddi_tc_encoder_suspend_complete; in intel_ddi_init()
5377 encoder->shutdown_complete = intel_ddi_tc_encoder_shutdown_complete; in intel_ddi_init()
5390 if (intel_encoder_is_tc(encoder)) in intel_ddi_init()
5419 encoder->pipe_mask = intel_ddi_splitter_pipe_mask(dev_priv); in intel_ddi_init()
5423 * In theory we don't need the encoder->type check, in intel_ddi_init()
5426 if (encoder->type != INTEL_OUTPUT_EDP && init_hdmi) { in intel_ddi_init()
5434 drm_encoder_cleanup(&encoder->base); in intel_ddi_init()