Lines Matching full:encoder

84 static int intel_ddi_hdmi_level(struct intel_encoder *encoder,  in intel_ddi_hdmi_level()  argument
89 level = intel_bios_hdmi_level_shift(encoder); in intel_ddi_hdmi_level()
111 void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_dp_ddi_buffers() argument
114 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_dp_ddi_buffers()
117 enum port port = encoder->port; in hsw_prepare_dp_ddi_buffers()
120 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_dp_ddi_buffers()
126 intel_bios_encoder_dp_boost_level(encoder->devdata)) in hsw_prepare_dp_ddi_buffers()
142 static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_hdmi_ddi_buffers() argument
145 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_hdmi_ddi_buffers()
146 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_prepare_hdmi_ddi_buffers()
149 enum port port = encoder->port; in hsw_prepare_hdmi_ddi_buffers()
152 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_hdmi_ddi_buffers()
158 intel_bios_encoder_hdmi_boost_level(encoder->devdata)) in hsw_prepare_hdmi_ddi_buffers()
222 static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder, in icl_pll_to_ddi_clk_sel() argument
286 static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder, in intel_ddi_init_dp_buf_reg() argument
289 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_init_dp_buf_reg()
290 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_init_dp_buf_reg()
291 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_init_dp_buf_reg()
292 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_init_dp_buf_reg()
407 intel_ddi_config_transcoder_dp2(struct intel_encoder *encoder, in intel_ddi_config_transcoder_dp2() argument
410 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_config_transcoder_dp2()
427 intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder, in intel_ddi_transcoder_func_reg_val_get() argument
434 enum port port = encoder->port; in intel_ddi_transcoder_func_reg_val_get()
536 void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_func() argument
560 intel_ddi_transcoder_func_reg_val_get(encoder, in intel_ddi_enable_transcoder_func()
569 intel_ddi_config_transcoder_func(struct intel_encoder *encoder, in intel_ddi_config_transcoder_func() argument
577 ctl = intel_ddi_transcoder_func_reg_val_get(encoder, crtc_state); in intel_ddi_config_transcoder_func()
652 struct intel_encoder *encoder = intel_attached_encoder(intel_connector); in intel_ddi_connector_get_hw_state() local
654 enum port port = encoder->port; in intel_ddi_connector_get_hw_state()
662 encoder->power_domain); in intel_ddi_connector_get_hw_state()
666 if (!encoder->get_hw_state(encoder, &pipe)) { in intel_ddi_connector_get_hw_state()
710 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_connector_get_hw_state()
715 static void intel_ddi_get_encoder_pipes(struct intel_encoder *encoder, in intel_ddi_get_encoder_pipes() argument
718 struct drm_device *dev = encoder->base.dev; in intel_ddi_get_encoder_pipes()
720 enum port port = encoder->port; in intel_ddi_get_encoder_pipes()
730 encoder->power_domain); in intel_ddi_get_encoder_pipes()
798 "No pipe for [ENCODER:%d:%s] found\n", in intel_ddi_get_encoder_pipes()
799 encoder->base.base.id, encoder->base.name); in intel_ddi_get_encoder_pipes()
803 "Multiple pipes for [ENCODER:%d:%s] (pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
804 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
811 … "Conflicting MST and non-MST state for [ENCODER:%d:%s] (pipe_mask %02x mst_pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
812 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
824 "[ENCODER:%d:%s] enabled but PHY powered down? (PHY_CTL %08x)\n", in intel_ddi_get_encoder_pipes()
825 encoder->base.base.id, encoder->base.name, tmp); in intel_ddi_get_encoder_pipes()
828 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_get_encoder_pipes()
831 bool intel_ddi_get_hw_state(struct intel_encoder *encoder, in intel_ddi_get_hw_state() argument
837 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_get_hw_state()
866 static void intel_ddi_get_power_domains(struct intel_encoder *encoder, in intel_ddi_get_power_domains() argument
869 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_power_domains()
871 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_get_power_domains()
882 dig_port = enc_to_dig_port(encoder); in intel_ddi_get_power_domains()
903 void intel_ddi_enable_pipe_clock(struct intel_encoder *encoder, in intel_ddi_enable_pipe_clock() argument
909 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_enable_pipe_clock()
916 val = TGL_TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_pipe_clock()
918 val = TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_pipe_clock()
955 static void skl_ddi_set_iboost(struct intel_encoder *encoder, in skl_ddi_set_iboost() argument
959 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in skl_ddi_set_iboost()
960 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in skl_ddi_set_iboost()
964 iboost = intel_bios_encoder_hdmi_boost_level(encoder->devdata); in skl_ddi_set_iboost()
966 iboost = intel_bios_encoder_dp_boost_level(encoder->devdata); in skl_ddi_set_iboost()
972 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in skl_ddi_set_iboost()
985 _skl_ddi_set_iboost(dev_priv, encoder->port, iboost); in skl_ddi_set_iboost()
987 if (encoder->port == PORT_A && dig_port->max_lanes == 4) in skl_ddi_set_iboost()
994 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_dp_voltage_max() local
995 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_dp_voltage_max()
998 encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_dp_voltage_max()
1032 static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder, in icl_ddi_combo_vswing_program() argument
1035 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_ddi_combo_vswing_program()
1037 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in icl_ddi_combo_vswing_program()
1041 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_ddi_combo_vswing_program()
1046 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in icl_ddi_combo_vswing_program()
1065 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1077 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1088 int level = intel_ddi_level(encoder, crtc_state, ln); in icl_ddi_combo_vswing_program()
1096 static void icl_combo_phy_set_signal_levels(struct intel_encoder *encoder, in icl_combo_phy_set_signal_levels() argument
1099 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_combo_phy_set_signal_levels()
1100 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in icl_combo_phy_set_signal_levels()
1139 icl_ddi_combo_vswing_program(encoder, crtc_state); in icl_combo_phy_set_signal_levels()
1147 static void icl_mg_phy_set_signal_levels(struct intel_encoder *encoder, in icl_mg_phy_set_signal_levels() argument
1150 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_mg_phy_set_signal_levels()
1151 enum tc_port tc_port = intel_port_to_tc(dev_priv, encoder->port); in icl_mg_phy_set_signal_levels()
1155 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in icl_mg_phy_set_signal_levels()
1158 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_mg_phy_set_signal_levels()
1173 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1179 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1190 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in icl_mg_phy_set_signal_levels()
1199 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in icl_mg_phy_set_signal_levels()
1248 static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder, in tgl_dkl_phy_set_signal_levels() argument
1251 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_dkl_phy_set_signal_levels()
1252 enum tc_port tc_port = intel_port_to_tc(dev_priv, encoder->port); in tgl_dkl_phy_set_signal_levels()
1256 if (intel_tc_port_in_tbt_alt_mode(enc_to_dig_port(encoder))) in tgl_dkl_phy_set_signal_levels()
1259 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in tgl_dkl_phy_set_signal_levels()
1268 level = intel_ddi_level(encoder, crtc_state, 2*ln+0); in tgl_dkl_phy_set_signal_levels()
1278 level = intel_ddi_level(encoder, crtc_state, 2*ln+1); in tgl_dkl_phy_set_signal_levels()
1349 int intel_ddi_level(struct intel_encoder *encoder, in intel_ddi_level() argument
1353 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_level()
1357 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_level()
1362 level = intel_ddi_hdmi_level(encoder, trans); in intel_ddi_level()
1364 level = intel_ddi_dp_level(enc_to_intel_dp(encoder), crtc_state, in intel_ddi_level()
1374 hsw_set_signal_levels(struct intel_encoder *encoder, in hsw_set_signal_levels() argument
1377 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_set_signal_levels()
1378 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_set_signal_levels()
1379 int level = intel_ddi_level(encoder, crtc_state, 0); in hsw_set_signal_levels()
1380 enum port port = encoder->port; in hsw_set_signal_levels()
1384 skl_ddi_set_iboost(encoder, crtc_state, level); in hsw_set_signal_levels()
1445 static void adls_ddi_enable_clock(struct intel_encoder *encoder, in adls_ddi_enable_clock() argument
1448 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_enable_clock()
1450 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_enable_clock()
1461 static void adls_ddi_disable_clock(struct intel_encoder *encoder) in adls_ddi_disable_clock() argument
1463 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_disable_clock()
1464 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_disable_clock()
1470 static bool adls_ddi_is_clock_enabled(struct intel_encoder *encoder) in adls_ddi_is_clock_enabled() argument
1472 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_is_clock_enabled()
1473 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_is_clock_enabled()
1479 static struct intel_shared_dpll *adls_ddi_get_pll(struct intel_encoder *encoder) in adls_ddi_get_pll() argument
1481 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_get_pll()
1482 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_get_pll()
1489 static void rkl_ddi_enable_clock(struct intel_encoder *encoder, in rkl_ddi_enable_clock() argument
1492 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_enable_clock()
1494 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_enable_clock()
1505 static void rkl_ddi_disable_clock(struct intel_encoder *encoder) in rkl_ddi_disable_clock() argument
1507 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_disable_clock()
1508 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_disable_clock()
1514 static bool rkl_ddi_is_clock_enabled(struct intel_encoder *encoder) in rkl_ddi_is_clock_enabled() argument
1516 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_is_clock_enabled()
1517 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_is_clock_enabled()
1523 static struct intel_shared_dpll *rkl_ddi_get_pll(struct intel_encoder *encoder) in rkl_ddi_get_pll() argument
1525 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_get_pll()
1526 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_get_pll()
1533 static void dg1_ddi_enable_clock(struct intel_encoder *encoder, in dg1_ddi_enable_clock() argument
1536 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_enable_clock()
1538 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_enable_clock()
1558 static void dg1_ddi_disable_clock(struct intel_encoder *encoder) in dg1_ddi_disable_clock() argument
1560 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_disable_clock()
1561 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_disable_clock()
1567 static bool dg1_ddi_is_clock_enabled(struct intel_encoder *encoder) in dg1_ddi_is_clock_enabled() argument
1569 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_is_clock_enabled()
1570 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_is_clock_enabled()
1576 static struct intel_shared_dpll *dg1_ddi_get_pll(struct intel_encoder *encoder) in dg1_ddi_get_pll() argument
1578 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_get_pll()
1579 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_get_pll()
1599 static void icl_ddi_combo_enable_clock(struct intel_encoder *encoder, in icl_ddi_combo_enable_clock() argument
1602 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_enable_clock()
1604 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_enable_clock()
1615 static void icl_ddi_combo_disable_clock(struct intel_encoder *encoder) in icl_ddi_combo_disable_clock() argument
1617 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_disable_clock()
1618 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_disable_clock()
1624 static bool icl_ddi_combo_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_combo_is_clock_enabled() argument
1626 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_is_clock_enabled()
1627 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_is_clock_enabled()
1633 struct intel_shared_dpll *icl_ddi_combo_get_pll(struct intel_encoder *encoder) in icl_ddi_combo_get_pll() argument
1635 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_get_pll()
1636 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_get_pll()
1643 static void jsl_ddi_tc_enable_clock(struct intel_encoder *encoder, in jsl_ddi_tc_enable_clock() argument
1646 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_enable_clock()
1648 enum port port = encoder->port; in jsl_ddi_tc_enable_clock()
1659 icl_ddi_combo_enable_clock(encoder, crtc_state); in jsl_ddi_tc_enable_clock()
1662 static void jsl_ddi_tc_disable_clock(struct intel_encoder *encoder) in jsl_ddi_tc_disable_clock() argument
1664 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_disable_clock()
1665 enum port port = encoder->port; in jsl_ddi_tc_disable_clock()
1667 icl_ddi_combo_disable_clock(encoder); in jsl_ddi_tc_disable_clock()
1672 static bool jsl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in jsl_ddi_tc_is_clock_enabled() argument
1674 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_is_clock_enabled()
1675 enum port port = encoder->port; in jsl_ddi_tc_is_clock_enabled()
1683 return icl_ddi_combo_is_clock_enabled(encoder); in jsl_ddi_tc_is_clock_enabled()
1686 static void icl_ddi_tc_enable_clock(struct intel_encoder *encoder, in icl_ddi_tc_enable_clock() argument
1689 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_enable_clock()
1691 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_enable_clock()
1692 enum port port = encoder->port; in icl_ddi_tc_enable_clock()
1698 icl_pll_to_ddi_clk_sel(encoder, crtc_state)); in icl_ddi_tc_enable_clock()
1708 static void icl_ddi_tc_disable_clock(struct intel_encoder *encoder) in icl_ddi_tc_disable_clock() argument
1710 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_disable_clock()
1711 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_disable_clock()
1712 enum port port = encoder->port; in icl_ddi_tc_disable_clock()
1724 static bool icl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_tc_is_clock_enabled() argument
1726 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_is_clock_enabled()
1727 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_is_clock_enabled()
1728 enum port port = encoder->port; in icl_ddi_tc_is_clock_enabled()
1741 static struct intel_shared_dpll *icl_ddi_tc_get_pll(struct intel_encoder *encoder) in icl_ddi_tc_get_pll() argument
1743 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_pll()
1744 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_get_pll()
1745 enum port port = encoder->port; in icl_ddi_tc_get_pll()
1771 static struct intel_shared_dpll *bxt_ddi_get_pll(struct intel_encoder *encoder) in bxt_ddi_get_pll() argument
1773 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in bxt_ddi_get_pll()
1776 switch (encoder->port) { in bxt_ddi_get_pll()
1787 MISSING_CASE(encoder->port); in bxt_ddi_get_pll()
1794 static void skl_ddi_enable_clock(struct intel_encoder *encoder, in skl_ddi_enable_clock() argument
1797 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_enable_clock()
1799 enum port port = encoder->port; in skl_ddi_enable_clock()
1815 static void skl_ddi_disable_clock(struct intel_encoder *encoder) in skl_ddi_disable_clock() argument
1817 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_disable_clock()
1818 enum port port = encoder->port; in skl_ddi_disable_clock()
1828 static bool skl_ddi_is_clock_enabled(struct intel_encoder *encoder) in skl_ddi_is_clock_enabled() argument
1830 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_is_clock_enabled()
1831 enum port port = encoder->port; in skl_ddi_is_clock_enabled()
1840 static struct intel_shared_dpll *skl_ddi_get_pll(struct intel_encoder *encoder) in skl_ddi_get_pll() argument
1842 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_get_pll()
1843 enum port port = encoder->port; in skl_ddi_get_pll()
1862 void hsw_ddi_enable_clock(struct intel_encoder *encoder, in hsw_ddi_enable_clock() argument
1865 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_enable_clock()
1867 enum port port = encoder->port; in hsw_ddi_enable_clock()
1875 void hsw_ddi_disable_clock(struct intel_encoder *encoder) in hsw_ddi_disable_clock() argument
1877 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_disable_clock()
1878 enum port port = encoder->port; in hsw_ddi_disable_clock()
1883 bool hsw_ddi_is_clock_enabled(struct intel_encoder *encoder) in hsw_ddi_is_clock_enabled() argument
1885 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_is_clock_enabled()
1886 enum port port = encoder->port; in hsw_ddi_is_clock_enabled()
1891 static struct intel_shared_dpll *hsw_ddi_get_pll(struct intel_encoder *encoder) in hsw_ddi_get_pll() argument
1893 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_get_pll()
1894 enum port port = encoder->port; in hsw_ddi_get_pll()
1929 void intel_ddi_enable_clock(struct intel_encoder *encoder, in intel_ddi_enable_clock() argument
1932 if (encoder->enable_clock) in intel_ddi_enable_clock()
1933 encoder->enable_clock(encoder, crtc_state); in intel_ddi_enable_clock()
1936 void intel_ddi_disable_clock(struct intel_encoder *encoder) in intel_ddi_disable_clock() argument
1938 if (encoder->disable_clock) in intel_ddi_disable_clock()
1939 encoder->disable_clock(encoder); in intel_ddi_disable_clock()
1942 void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder) in intel_ddi_sanitize_encoder_pll_mapping() argument
1944 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sanitize_encoder_pll_mapping()
1949 * In case of DP MST, we sanitize the primary encoder only, not the in intel_ddi_sanitize_encoder_pll_mapping()
1952 if (encoder->type == INTEL_OUTPUT_DP_MST) in intel_ddi_sanitize_encoder_pll_mapping()
1955 if (!encoder->base.crtc && intel_encoder_is_dp(encoder)) { in intel_ddi_sanitize_encoder_pll_mapping()
1959 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_sanitize_encoder_pll_mapping()
1968 port_mask = BIT(encoder->port); in intel_ddi_sanitize_encoder_pll_mapping()
1969 ddi_clk_needed = encoder->base.crtc; in intel_ddi_sanitize_encoder_pll_mapping()
1971 if (encoder->type == INTEL_OUTPUT_DSI) { in intel_ddi_sanitize_encoder_pll_mapping()
1974 port_mask = intel_dsi_encoder_ports(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
1977 * encoder using any of the ports of this DSI encoder. in intel_ddi_sanitize_encoder_pll_mapping()
1980 if (other_encoder == encoder) in intel_ddi_sanitize_encoder_pll_mapping()
1994 if (ddi_clk_needed || !encoder->is_clock_enabled || in intel_ddi_sanitize_encoder_pll_mapping()
1995 !encoder->is_clock_enabled(encoder)) in intel_ddi_sanitize_encoder_pll_mapping()
1999 "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI clock, gate it\n", in intel_ddi_sanitize_encoder_pll_mapping()
2000 encoder->base.base.id, encoder->base.name); in intel_ddi_sanitize_encoder_pll_mapping()
2002 encoder->disable_clock(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2099 i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder, in dp_tp_ctl_reg() argument
2102 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_ctl_reg()
2107 return DP_TP_CTL(encoder->port); in dp_tp_ctl_reg()
2110 i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder, in dp_tp_status_reg() argument
2113 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_status_reg()
2118 return DP_TP_STATUS(encoder->port); in dp_tp_status_reg()
2150 static void intel_ddi_enable_fec(struct intel_encoder *encoder, in intel_ddi_enable_fec() argument
2153 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_fec()
2160 intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable_fec()
2161 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_enable_fec()
2163 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_enable_fec()
2166 static void intel_ddi_disable_fec_state(struct intel_encoder *encoder, in intel_ddi_disable_fec_state() argument
2169 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_disable_fec_state()
2176 intel_dp = enc_to_intel_dp(encoder); in intel_ddi_disable_fec_state()
2177 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec_state()
2179 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_disable_fec_state()
2180 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec_state()
2183 static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, in intel_ddi_power_up_lanes() argument
2186 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_power_up_lanes()
2187 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_power_up_lanes()
2188 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_power_up_lanes()
2209 static void intel_ddi_mso_get_config(struct intel_encoder *encoder, in intel_ddi_mso_get_config() argument
2272 struct intel_encoder *encoder, in tgl_ddi_pre_enable_dp() argument
2276 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in tgl_ddi_pre_enable_dp()
2277 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_ddi_pre_enable_dp()
2278 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in tgl_ddi_pre_enable_dp()
2289 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2316 intel_ddi_enable_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2342 intel_ddi_enable_pipe_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2345 intel_ddi_config_transcoder_dp2(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2351 intel_ddi_config_transcoder_func(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2362 encoder->set_signal_levels(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2368 intel_ddi_power_up_lanes(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2404 intel_ddi_enable_fec(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2406 intel_dsc_dp_pps_write(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2410 struct intel_encoder *encoder, in hsw_ddi_pre_enable_dp() argument
2414 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_ddi_pre_enable_dp()
2415 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_ddi_pre_enable_dp()
2416 enum port port = encoder->port; in hsw_ddi_pre_enable_dp()
2417 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in hsw_ddi_pre_enable_dp()
2434 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2438 intel_ddi_enable_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2449 hsw_prepare_dp_ddi_buffers(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2451 encoder->set_signal_levels(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2453 intel_ddi_power_up_lanes(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2466 intel_ddi_enable_fec(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2469 intel_ddi_enable_pipe_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2471 intel_dsc_dp_pps_write(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2475 struct intel_encoder *encoder, in intel_ddi_pre_enable_dp() argument
2479 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_dp()
2482 tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2484 hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2487 * from MST encoder pre_enable callback. in intel_ddi_pre_enable_dp()
2494 struct intel_encoder *encoder, in intel_ddi_pre_enable_hdmi() argument
2498 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable_hdmi()
2500 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_hdmi()
2503 intel_ddi_enable_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2511 intel_ddi_enable_pipe_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2513 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable_hdmi()
2519 struct intel_encoder *encoder, in intel_ddi_pre_enable() argument
2530 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_pre_enable()
2545 intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, in intel_ddi_pre_enable()
2548 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable()
2550 intel_ddi_pre_enable_dp(state, encoder, crtc_state, in intel_ddi_pre_enable()
2556 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable()
2562 static void intel_disable_ddi_buf(struct intel_encoder *encoder, in intel_disable_ddi_buf() argument
2565 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_disable_ddi_buf()
2566 enum port port = encoder->port; in intel_disable_ddi_buf()
2578 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_disable_ddi_buf()
2581 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_disable_ddi_buf()
2585 intel_ddi_disable_fec_state(encoder, crtc_state); in intel_disable_ddi_buf()
2592 struct intel_encoder *encoder, in intel_ddi_post_disable_dp() argument
2596 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_dp()
2597 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_dp()
2603 intel_dp_set_infoframes(encoder, false, in intel_ddi_post_disable_dp()
2630 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_dp()
2648 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_dp()
2652 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi() argument
2656 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi()
2657 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_hdmi()
2660 dig_port->set_infoframes(encoder, false, in intel_ddi_post_disable_hdmi()
2666 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi()
2675 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_hdmi()
2681 struct intel_encoder *encoder, in intel_ddi_post_disable() argument
2685 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable()
2686 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable()
2687 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_post_disable()
2722 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_post_disable()
2733 intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_post_disable()
2736 intel_ddi_post_disable_dp(state, encoder, old_crtc_state, in intel_ddi_post_disable()
2749 struct intel_encoder *encoder, in trans_port_sync_stop_link_train() argument
2781 intel_dp_stop_link_train(enc_to_intel_dp(encoder), in trans_port_sync_stop_link_train()
2786 struct intel_encoder *encoder, in intel_enable_ddi_dp() argument
2790 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_enable_ddi_dp()
2791 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_enable_ddi_dp()
2792 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_enable_ddi_dp()
2793 enum port port = encoder->port; in intel_enable_ddi_dp()
2802 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_enable_ddi_dp()
2804 intel_audio_codec_enable(encoder, crtc_state, conn_state); in intel_enable_ddi_dp()
2806 trans_port_sync_stop_link_train(state, encoder, crtc_state); in intel_enable_ddi_dp()
2830 struct intel_encoder *encoder, in intel_enable_ddi_hdmi() argument
2834 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_enable_ddi_hdmi()
2835 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_enable_ddi_hdmi()
2837 enum port port = encoder->port; in intel_enable_ddi_hdmi()
2841 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_enable_ddi_hdmi()
2849 hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state); in intel_enable_ddi_hdmi()
2851 encoder->set_signal_levels(encoder, crtc_state); in intel_enable_ddi_hdmi()
2888 intel_ddi_power_up_lanes(encoder, crtc_state); in intel_enable_ddi_hdmi()
2904 intel_audio_codec_enable(encoder, crtc_state, conn_state); in intel_enable_ddi_hdmi()
2908 struct intel_encoder *encoder, in intel_enable_ddi() argument
2915 intel_ddi_enable_transcoder_func(encoder, crtc_state); in intel_enable_ddi()
2917 intel_vrr_enable(encoder, crtc_state); in intel_enable_ddi()
2924 intel_enable_ddi_hdmi(state, encoder, crtc_state, conn_state); in intel_enable_ddi()
2926 intel_enable_ddi_dp(state, encoder, crtc_state, conn_state); in intel_enable_ddi()
2937 struct intel_encoder *encoder, in intel_disable_ddi_dp() argument
2941 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_disable_ddi_dp()
2945 intel_audio_codec_disable(encoder, old_crtc_state, old_conn_state); in intel_disable_ddi_dp()
2958 struct intel_encoder *encoder, in intel_disable_ddi_hdmi() argument
2962 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_disable_ddi_hdmi()
2965 intel_audio_codec_disable(encoder, old_crtc_state, old_conn_state); in intel_disable_ddi_hdmi()
2967 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_disable_ddi_hdmi()
2975 struct intel_encoder *encoder, in intel_disable_ddi() argument
2982 intel_disable_ddi_hdmi(state, encoder, old_crtc_state, in intel_disable_ddi()
2985 intel_disable_ddi_dp(state, encoder, old_crtc_state, in intel_disable_ddi()
2990 struct intel_encoder *encoder, in intel_ddi_update_pipe_dp() argument
2996 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
2998 intel_backlight_update(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3003 struct intel_encoder *encoder, in intel_ddi_update_pipe() argument
3009 !intel_encoder_is_mst(encoder)) in intel_ddi_update_pipe()
3010 intel_ddi_update_pipe_dp(state, encoder, crtc_state, in intel_ddi_update_pipe()
3013 intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe()
3018 struct intel_encoder *encoder, in intel_ddi_update_prepare() argument
3028 intel_tc_port_get_link(enc_to_dig_port(encoder), in intel_ddi_update_prepare()
3033 intel_update_active_dpll(state, crtc, encoder); in intel_ddi_update_prepare()
3037 intel_update_active_dpll(state, slave_crtc, encoder); in intel_ddi_update_prepare()
3043 struct intel_encoder *encoder, in intel_ddi_update_complete() argument
3046 intel_tc_port_put_link(enc_to_dig_port(encoder)); in intel_ddi_update_complete()
3051 struct intel_encoder *encoder, in intel_ddi_pre_pll_enable() argument
3055 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_pll_enable()
3056 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_pll_enable()
3057 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_pre_pll_enable()
3077 bxt_ddi_phy_set_lane_optim_mask(encoder, in intel_ddi_pre_pll_enable()
3081 static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder) in adlp_tbt_to_dp_alt_switch_wa() argument
3083 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adlp_tbt_to_dp_alt_switch_wa()
3084 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in adlp_tbt_to_dp_alt_switch_wa()
3095 struct intel_encoder *encoder = &dig_port->base; in intel_ddi_prepare_link_retrain() local
3096 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_prepare_link_retrain()
3097 enum port port = encoder->port; in intel_ddi_prepare_link_retrain()
3101 dp_tp_ctl = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3113 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3114 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3128 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3129 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3133 adlp_tbt_to_dp_alt_switch_wa(encoder); in intel_ddi_prepare_link_retrain()
3146 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_link_train() local
3147 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_link_train()
3150 temp = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_link_train()
3171 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), temp); in intel_ddi_set_link_train()
3177 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_idle_link_train() local
3178 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_idle_link_train()
3179 enum port port = encoder->port; in intel_ddi_set_idle_link_train()
3182 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_idle_link_train()
3185 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_set_idle_link_train()
3198 dp_tp_status_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3288 static void intel_ddi_read_func_ctl(struct intel_encoder *encoder, in intel_ddi_read_func_ctl() argument
3291 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_read_func_ctl()
3294 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl()
3331 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3346 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_read_func_ctl()
3359 i915_reg_t dp_tp_ctl = dp_tp_ctl_reg(encoder, pipe_config); in intel_ddi_read_func_ctl()
3365 "[ENCODER:%d:%s] Fec status: %u\n", in intel_ddi_read_func_ctl()
3366 encoder->base.base.id, encoder->base.name, in intel_ddi_read_func_ctl()
3372 intel_lspcon_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3375 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3397 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3404 static void intel_ddi_get_config(struct intel_encoder *encoder, in intel_ddi_get_config() argument
3407 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_config()
3414 intel_ddi_read_func_ctl(encoder, pipe_config); in intel_ddi_get_config()
3416 intel_ddi_mso_get_config(encoder, pipe_config); in intel_ddi_get_config()
3421 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_get_config()
3422 intel_edp_fixup_vbt_bpp(encoder, pipe_config->pipe_bpp); in intel_ddi_get_config()
3428 bxt_ddi_phy_get_lane_lat_optim_mask(encoder); in intel_ddi_get_config()
3432 intel_hdmi_read_gcp_infoframe(encoder, pipe_config); in intel_ddi_get_config()
3434 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3437 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3440 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3443 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3450 intel_read_dp_sdp(encoder, pipe_config, HDMI_PACKET_TYPE_GAMUT_METADATA); in intel_ddi_get_config()
3451 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_VSC); in intel_ddi_get_config()
3453 intel_psr_get_config(encoder, pipe_config); in intel_ddi_get_config()
3456 void intel_ddi_get_clock(struct intel_encoder *encoder, in intel_ddi_get_clock() argument
3460 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_get_clock()
3478 static void dg2_ddi_get_config(struct intel_encoder *encoder, in dg2_ddi_get_config() argument
3481 intel_mpllb_readout_hw_state(encoder, &crtc_state->mpllb_state); in dg2_ddi_get_config()
3482 crtc_state->port_clock = intel_mpllb_calc_port_clock(encoder, &crtc_state->mpllb_state); in dg2_ddi_get_config()
3484 intel_ddi_get_config(encoder, crtc_state); in dg2_ddi_get_config()
3487 static void adls_ddi_get_config(struct intel_encoder *encoder, in adls_ddi_get_config() argument
3490 intel_ddi_get_clock(encoder, crtc_state, adls_ddi_get_pll(encoder)); in adls_ddi_get_config()
3491 intel_ddi_get_config(encoder, crtc_state); in adls_ddi_get_config()
3494 static void rkl_ddi_get_config(struct intel_encoder *encoder, in rkl_ddi_get_config() argument
3497 intel_ddi_get_clock(encoder, crtc_state, rkl_ddi_get_pll(encoder)); in rkl_ddi_get_config()
3498 intel_ddi_get_config(encoder, crtc_state); in rkl_ddi_get_config()
3501 static void dg1_ddi_get_config(struct intel_encoder *encoder, in dg1_ddi_get_config() argument
3504 intel_ddi_get_clock(encoder, crtc_state, dg1_ddi_get_pll(encoder)); in dg1_ddi_get_config()
3505 intel_ddi_get_config(encoder, crtc_state); in dg1_ddi_get_config()
3508 static void icl_ddi_combo_get_config(struct intel_encoder *encoder, in icl_ddi_combo_get_config() argument
3511 intel_ddi_get_clock(encoder, crtc_state, icl_ddi_combo_get_pll(encoder)); in icl_ddi_combo_get_config()
3512 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_combo_get_config()
3515 static void icl_ddi_tc_get_clock(struct intel_encoder *encoder, in icl_ddi_tc_get_clock() argument
3519 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_clock()
3541 crtc_state->port_clock = icl_calc_tbt_pll_link(i915, encoder->port); in icl_ddi_tc_get_clock()
3547 static void icl_ddi_tc_get_config(struct intel_encoder *encoder, in icl_ddi_tc_get_config() argument
3550 icl_ddi_tc_get_clock(encoder, crtc_state, icl_ddi_tc_get_pll(encoder)); in icl_ddi_tc_get_config()
3551 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_tc_get_config()
3554 static void bxt_ddi_get_config(struct intel_encoder *encoder, in bxt_ddi_get_config() argument
3557 intel_ddi_get_clock(encoder, crtc_state, bxt_ddi_get_pll(encoder)); in bxt_ddi_get_config()
3558 intel_ddi_get_config(encoder, crtc_state); in bxt_ddi_get_config()
3561 static void skl_ddi_get_config(struct intel_encoder *encoder, in skl_ddi_get_config() argument
3564 intel_ddi_get_clock(encoder, crtc_state, skl_ddi_get_pll(encoder)); in skl_ddi_get_config()
3565 intel_ddi_get_config(encoder, crtc_state); in skl_ddi_get_config()
3568 void hsw_ddi_get_config(struct intel_encoder *encoder, in hsw_ddi_get_config() argument
3571 intel_ddi_get_clock(encoder, crtc_state, hsw_ddi_get_pll(encoder)); in hsw_ddi_get_config()
3572 intel_ddi_get_config(encoder, crtc_state); in hsw_ddi_get_config()
3575 static void intel_ddi_sync_state(struct intel_encoder *encoder, in intel_ddi_sync_state() argument
3578 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sync_state()
3579 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_sync_state()
3582 intel_tc_port_sanitize(enc_to_dig_port(encoder)); in intel_ddi_sync_state()
3585 intel_dp_sync_state(encoder, crtc_state); in intel_ddi_sync_state()
3588 static bool intel_ddi_initial_fastset_check(struct intel_encoder *encoder, in intel_ddi_initial_fastset_check() argument
3591 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_initial_fastset_check()
3592 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_initial_fastset_check()
3596 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] Forcing full modeset to compute TC port DPLLs\n", in intel_ddi_initial_fastset_check()
3597 encoder->base.base.id, encoder->base.name); in intel_ddi_initial_fastset_check()
3603 !intel_dp_initial_fastset_check(encoder, crtc_state)) in intel_ddi_initial_fastset_check()
3610 intel_ddi_compute_output_type(struct intel_encoder *encoder, in intel_ddi_compute_output_type() argument
3627 static int intel_ddi_compute_config(struct intel_encoder *encoder, in intel_ddi_compute_config() argument
3632 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_compute_config()
3633 enum port port = encoder->port; in intel_ddi_compute_config()
3640 ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
3642 ret = intel_dp_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
3740 static int intel_ddi_compute_config_late(struct intel_encoder *encoder, in intel_ddi_compute_config_late() argument
3744 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_compute_config_late()
3748 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] [CRTC:%d:%s]", in intel_ddi_compute_config_late()
3749 encoder->base.base.id, encoder->base.name, in intel_ddi_compute_config_late()
3774 static void intel_ddi_encoder_destroy(struct drm_encoder *encoder) in intel_ddi_encoder_destroy() argument
3776 struct drm_i915_private *i915 = to_i915(encoder->dev); in intel_ddi_encoder_destroy()
3777 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_destroy()
3780 intel_dp_encoder_flush_work(encoder); in intel_ddi_encoder_destroy()
3785 drm_encoder_cleanup(encoder); in intel_ddi_encoder_destroy()
3790 static void intel_ddi_encoder_reset(struct drm_encoder *encoder) in intel_ddi_encoder_reset() argument
3792 struct intel_dp *intel_dp = enc_to_intel_dp(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
3871 static int intel_hdmi_reset_link(struct intel_encoder *encoder, in intel_hdmi_reset_link() argument
3874 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_reset_link()
3875 struct intel_hdmi *hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_reset_link()
3945 intel_ddi_hotplug(struct intel_encoder *encoder, in intel_ddi_hotplug() argument
3948 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_hotplug()
3949 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_hotplug()
3951 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_hotplug()
3959 intel_dp_phy_test(encoder); in intel_ddi_hotplug()
3964 state = intel_encoder_hotplug(encoder, connector); in intel_ddi_hotplug()
3970 ret = intel_hdmi_reset_link(encoder, &ctx); in intel_ddi_hotplug()
3972 ret = intel_dp_retrain_link(encoder, &ctx); in intel_ddi_hotplug()
3984 drm_WARN(encoder->base.dev, ret, in intel_ddi_hotplug()
4017 static bool lpt_digital_port_connected(struct intel_encoder *encoder) in lpt_digital_port_connected() argument
4019 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in lpt_digital_port_connected()
4020 u32 bit = dev_priv->display.hotplug.pch_hpd[encoder->hpd_pin]; in lpt_digital_port_connected()
4025 static bool hsw_digital_port_connected(struct intel_encoder *encoder) in hsw_digital_port_connected() argument
4027 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_digital_port_connected()
4028 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in hsw_digital_port_connected()
4033 static bool bdw_digital_port_connected(struct intel_encoder *encoder) in bdw_digital_port_connected() argument
4035 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in bdw_digital_port_connected()
4036 u32 bit = dev_priv->display.hotplug.hpd[encoder->hpd_pin]; in bdw_digital_port_connected()
4195 static void intel_ddi_encoder_suspend(struct intel_encoder *encoder) in intel_ddi_encoder_suspend() argument
4197 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_encoder_suspend()
4200 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_encoder_suspend()
4202 intel_dp_encoder_suspend(encoder); in intel_ddi_encoder_suspend()
4210 static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder) in intel_ddi_encoder_shutdown() argument
4212 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_encoder_shutdown()
4215 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_encoder_shutdown()
4217 intel_dp_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
4218 intel_hdmi_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
4232 struct intel_encoder *encoder; in intel_ddi_init() local
4291 encoder = &dig_port->base; in intel_ddi_init()
4292 encoder->devdata = devdata; in intel_ddi_init()
4295 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4303 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4313 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4321 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4329 encoder->hotplug = intel_ddi_hotplug; in intel_ddi_init()
4330 encoder->compute_output_type = intel_ddi_compute_output_type; in intel_ddi_init()
4331 encoder->compute_config = intel_ddi_compute_config; in intel_ddi_init()
4332 encoder->compute_config_late = intel_ddi_compute_config_late; in intel_ddi_init()
4333 encoder->enable = intel_enable_ddi; in intel_ddi_init()
4334 encoder->pre_pll_enable = intel_ddi_pre_pll_enable; in intel_ddi_init()
4335 encoder->pre_enable = intel_ddi_pre_enable; in intel_ddi_init()
4336 encoder->disable = intel_disable_ddi; in intel_ddi_init()
4337 encoder->post_disable = intel_ddi_post_disable; in intel_ddi_init()
4338 encoder->update_pipe = intel_ddi_update_pipe; in intel_ddi_init()
4339 encoder->get_hw_state = intel_ddi_get_hw_state; in intel_ddi_init()
4340 encoder->sync_state = intel_ddi_sync_state; in intel_ddi_init()
4341 encoder->initial_fastset_check = intel_ddi_initial_fastset_check; in intel_ddi_init()
4342 encoder->suspend = intel_ddi_encoder_suspend; in intel_ddi_init()
4343 encoder->shutdown = intel_ddi_encoder_shutdown; in intel_ddi_init()
4344 encoder->get_power_domains = intel_ddi_get_power_domains; in intel_ddi_init()
4346 encoder->type = INTEL_OUTPUT_DDI; in intel_ddi_init()
4347 encoder->power_domain = intel_display_power_ddi_lanes_domain(dev_priv, port); in intel_ddi_init()
4348 encoder->port = port; in intel_ddi_init()
4349 encoder->cloneable = 0; in intel_ddi_init()
4350 encoder->pipe_mask = ~0; in intel_ddi_init()
4353 encoder->enable_clock = intel_mpllb_enable; in intel_ddi_init()
4354 encoder->disable_clock = intel_mpllb_disable; in intel_ddi_init()
4355 encoder->get_config = dg2_ddi_get_config; in intel_ddi_init()
4357 encoder->enable_clock = adls_ddi_enable_clock; in intel_ddi_init()
4358 encoder->disable_clock = adls_ddi_disable_clock; in intel_ddi_init()
4359 encoder->is_clock_enabled = adls_ddi_is_clock_enabled; in intel_ddi_init()
4360 encoder->get_config = adls_ddi_get_config; in intel_ddi_init()
4362 encoder->enable_clock = rkl_ddi_enable_clock; in intel_ddi_init()
4363 encoder->disable_clock = rkl_ddi_disable_clock; in intel_ddi_init()
4364 encoder->is_clock_enabled = rkl_ddi_is_clock_enabled; in intel_ddi_init()
4365 encoder->get_config = rkl_ddi_get_config; in intel_ddi_init()
4367 encoder->enable_clock = dg1_ddi_enable_clock; in intel_ddi_init()
4368 encoder->disable_clock = dg1_ddi_disable_clock; in intel_ddi_init()
4369 encoder->is_clock_enabled = dg1_ddi_is_clock_enabled; in intel_ddi_init()
4370 encoder->get_config = dg1_ddi_get_config; in intel_ddi_init()
4373 encoder->enable_clock = jsl_ddi_tc_enable_clock; in intel_ddi_init()
4374 encoder->disable_clock = jsl_ddi_tc_disable_clock; in intel_ddi_init()
4375 encoder->is_clock_enabled = jsl_ddi_tc_is_clock_enabled; in intel_ddi_init()
4376 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4378 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
4379 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
4380 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
4381 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4385 encoder->enable_clock = icl_ddi_tc_enable_clock; in intel_ddi_init()
4386 encoder->disable_clock = icl_ddi_tc_disable_clock; in intel_ddi_init()
4387 encoder->is_clock_enabled = icl_ddi_tc_is_clock_enabled; in intel_ddi_init()
4388 encoder->get_config = icl_ddi_tc_get_config; in intel_ddi_init()
4390 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
4391 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
4392 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
4393 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4397 encoder->get_config = bxt_ddi_get_config; in intel_ddi_init()
4399 encoder->enable_clock = skl_ddi_enable_clock; in intel_ddi_init()
4400 encoder->disable_clock = skl_ddi_disable_clock; in intel_ddi_init()
4401 encoder->is_clock_enabled = skl_ddi_is_clock_enabled; in intel_ddi_init()
4402 encoder->get_config = skl_ddi_get_config; in intel_ddi_init()
4404 encoder->enable_clock = hsw_ddi_enable_clock; in intel_ddi_init()
4405 encoder->disable_clock = hsw_ddi_disable_clock; in intel_ddi_init()
4406 encoder->is_clock_enabled = hsw_ddi_is_clock_enabled; in intel_ddi_init()
4407 encoder->get_config = hsw_ddi_get_config; in intel_ddi_init()
4411 encoder->set_signal_levels = intel_snps_phy_set_signal_levels; in intel_ddi_init()
4414 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
4416 encoder->set_signal_levels = tgl_dkl_phy_set_signal_levels; in intel_ddi_init()
4419 encoder->set_signal_levels = icl_combo_phy_set_signal_levels; in intel_ddi_init()
4421 encoder->set_signal_levels = icl_mg_phy_set_signal_levels; in intel_ddi_init()
4423 encoder->set_signal_levels = bxt_ddi_phy_set_signal_levels; in intel_ddi_init()
4425 encoder->set_signal_levels = hsw_set_signal_levels; in intel_ddi_init()
4428 intel_ddi_buf_trans_init(encoder); in intel_ddi_init()
4431 encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port); in intel_ddi_init()
4433 encoder->hpd_pin = dg1_hpd_pin(dev_priv, port); in intel_ddi_init()
4435 encoder->hpd_pin = rkl_hpd_pin(dev_priv, port); in intel_ddi_init()
4437 encoder->hpd_pin = tgl_hpd_pin(dev_priv, port); in intel_ddi_init()
4439 encoder->hpd_pin = ehl_hpd_pin(dev_priv, port); in intel_ddi_init()
4441 encoder->hpd_pin = icl_hpd_pin(dev_priv, port); in intel_ddi_init()
4443 encoder->hpd_pin = skl_hpd_pin(dev_priv, port); in intel_ddi_init()
4445 encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port); in intel_ddi_init()
4470 encoder->update_prepare = intel_ddi_update_prepare; in intel_ddi_init()
4471 encoder->update_complete = intel_ddi_update_complete; in intel_ddi_init()
4484 encoder->pipe_mask = intel_ddi_splitter_pipe_mask(dev_priv); in intel_ddi_init()
4487 /* In theory we don't need the encoder->type check, but leave it just in in intel_ddi_init()
4489 if (encoder->type != INTEL_OUTPUT_EDP && init_hdmi) { in intel_ddi_init()
4517 drm_encoder_cleanup(&encoder->base); in intel_ddi_init()