Lines Matching full:encoder

75 static int intel_ddi_hdmi_level(struct intel_encoder *encoder,  in intel_ddi_hdmi_level()  argument
78 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_hdmi_level()
81 n_entries = intel_ddi_hdmi_num_entries(encoder, crtc_state, &default_entry); in intel_ddi_hdmi_level()
84 level = intel_bios_hdmi_level_shift(encoder); in intel_ddi_hdmi_level()
99 void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_dp_ddi_buffers() argument
102 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_dp_ddi_buffers()
105 enum port port = encoder->port; in hsw_prepare_dp_ddi_buffers()
108 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_dp_ddi_buffers()
114 intel_bios_encoder_dp_boost_level(encoder->devdata)) in hsw_prepare_dp_ddi_buffers()
130 static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder, in hsw_prepare_hdmi_ddi_buffers() argument
134 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_prepare_hdmi_ddi_buffers()
137 enum port port = encoder->port; in hsw_prepare_hdmi_ddi_buffers()
140 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in hsw_prepare_hdmi_ddi_buffers()
148 intel_bios_encoder_hdmi_boost_level(encoder->devdata)) in hsw_prepare_hdmi_ddi_buffers()
212 static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder, in icl_pll_to_ddi_clk_sel() argument
276 static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder, in intel_ddi_init_dp_buf_reg() argument
279 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_init_dp_buf_reg()
280 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_init_dp_buf_reg()
281 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_init_dp_buf_reg()
282 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_init_dp_buf_reg()
417 intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder, in intel_ddi_transcoder_func_reg_val_get() argument
424 enum port port = encoder->port; in intel_ddi_transcoder_func_reg_val_get()
522 void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder, in intel_ddi_enable_transcoder_func() argument
546 intel_ddi_transcoder_func_reg_val_get(encoder, in intel_ddi_enable_transcoder_func()
555 intel_ddi_config_transcoder_func(struct intel_encoder *encoder, in intel_ddi_config_transcoder_func() argument
563 ctl = intel_ddi_transcoder_func_reg_val_get(encoder, crtc_state); in intel_ddi_config_transcoder_func()
638 struct intel_encoder *encoder = intel_attached_encoder(intel_connector); in intel_ddi_connector_get_hw_state() local
640 enum port port = encoder->port; in intel_ddi_connector_get_hw_state()
648 encoder->power_domain); in intel_ddi_connector_get_hw_state()
652 if (!encoder->get_hw_state(encoder, &pipe)) { in intel_ddi_connector_get_hw_state()
691 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_connector_get_hw_state()
696 static void intel_ddi_get_encoder_pipes(struct intel_encoder *encoder, in intel_ddi_get_encoder_pipes() argument
699 struct drm_device *dev = encoder->base.dev; in intel_ddi_get_encoder_pipes()
701 enum port port = encoder->port; in intel_ddi_get_encoder_pipes()
711 encoder->power_domain); in intel_ddi_get_encoder_pipes()
778 "No pipe for [ENCODER:%d:%s] found\n", in intel_ddi_get_encoder_pipes()
779 encoder->base.base.id, encoder->base.name); in intel_ddi_get_encoder_pipes()
783 "Multiple pipes for [ENCODER:%d:%s] (pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
784 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
791 … "Conflicting MST and non-MST state for [ENCODER:%d:%s] (pipe_mask %02x mst_pipe_mask %02x)\n", in intel_ddi_get_encoder_pipes()
792 encoder->base.base.id, encoder->base.name, in intel_ddi_get_encoder_pipes()
804 "[ENCODER:%d:%s] enabled but PHY powered down? (PHY_CTL %08x)\n", in intel_ddi_get_encoder_pipes()
805 encoder->base.base.id, encoder->base.name, tmp); in intel_ddi_get_encoder_pipes()
808 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in intel_ddi_get_encoder_pipes()
811 bool intel_ddi_get_hw_state(struct intel_encoder *encoder, in intel_ddi_get_hw_state() argument
817 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_get_hw_state()
846 static void intel_ddi_get_power_domains(struct intel_encoder *encoder, in intel_ddi_get_power_domains() argument
849 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_power_domains()
851 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_get_power_domains()
862 dig_port = enc_to_dig_port(encoder); in intel_ddi_get_power_domains()
884 void intel_ddi_enable_pipe_clock(struct intel_encoder *encoder, in intel_ddi_enable_pipe_clock() argument
890 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_enable_pipe_clock()
897 val = TGL_TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_pipe_clock()
899 val = TRANS_CLK_SEL_PORT(encoder->port); in intel_ddi_enable_pipe_clock()
936 static void skl_ddi_set_iboost(struct intel_encoder *encoder, in skl_ddi_set_iboost() argument
940 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in skl_ddi_set_iboost()
941 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in skl_ddi_set_iboost()
945 iboost = intel_bios_encoder_hdmi_boost_level(encoder->devdata); in skl_ddi_set_iboost()
947 iboost = intel_bios_encoder_dp_boost_level(encoder->devdata); in skl_ddi_set_iboost()
953 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in skl_ddi_set_iboost()
968 _skl_ddi_set_iboost(dev_priv, encoder->port, iboost); in skl_ddi_set_iboost()
970 if (encoder->port == PORT_A && dig_port->max_lanes == 4) in skl_ddi_set_iboost()
974 static void bxt_ddi_vswing_sequence(struct intel_encoder *encoder, in bxt_ddi_vswing_sequence() argument
978 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in bxt_ddi_vswing_sequence()
980 enum port port = encoder->port; in bxt_ddi_vswing_sequence()
983 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in bxt_ddi_vswing_sequence()
999 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_dp_voltage_max() local
1000 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_dp_voltage_max()
1003 encoder->get_buf_trans(encoder, crtc_state, &n_entries); in intel_ddi_dp_voltage_max()
1025 static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder, in icl_ddi_combo_vswing_program() argument
1029 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_ddi_combo_vswing_program()
1031 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in icl_ddi_combo_vswing_program()
1035 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_ddi_combo_vswing_program()
1042 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in icl_ddi_combo_vswing_program()
1088 static void icl_combo_phy_ddi_vswing_sequence(struct intel_encoder *encoder, in icl_combo_phy_ddi_vswing_sequence() argument
1092 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_combo_phy_ddi_vswing_sequence()
1093 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in icl_combo_phy_ddi_vswing_sequence()
1141 icl_ddi_combo_vswing_program(encoder, crtc_state, level); in icl_combo_phy_ddi_vswing_sequence()
1149 static void icl_mg_phy_ddi_vswing_sequence(struct intel_encoder *encoder, in icl_mg_phy_ddi_vswing_sequence() argument
1153 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_mg_phy_ddi_vswing_sequence()
1154 enum tc_port tc_port = intel_port_to_tc(dev_priv, encoder->port); in icl_mg_phy_ddi_vswing_sequence()
1159 if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) in icl_mg_phy_ddi_vswing_sequence()
1162 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in icl_mg_phy_ddi_vswing_sequence()
1272 static void icl_ddi_vswing_sequence(struct intel_encoder *encoder, in icl_ddi_vswing_sequence() argument
1276 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in icl_ddi_vswing_sequence()
1277 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in icl_ddi_vswing_sequence()
1280 icl_combo_phy_ddi_vswing_sequence(encoder, crtc_state, level); in icl_ddi_vswing_sequence()
1282 icl_mg_phy_ddi_vswing_sequence(encoder, crtc_state, level); in icl_ddi_vswing_sequence()
1286 tgl_dkl_phy_ddi_vswing_sequence(struct intel_encoder *encoder, in tgl_dkl_phy_ddi_vswing_sequence() argument
1290 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_dkl_phy_ddi_vswing_sequence()
1291 enum tc_port tc_port = intel_port_to_tc(dev_priv, encoder->port); in tgl_dkl_phy_ddi_vswing_sequence()
1296 if (enc_to_dig_port(encoder)->tc_mode == TC_PORT_TBT_ALT) in tgl_dkl_phy_ddi_vswing_sequence()
1299 ddi_translations = encoder->get_buf_trans(encoder, crtc_state, &n_entries); in tgl_dkl_phy_ddi_vswing_sequence()
1343 static void tgl_ddi_vswing_sequence(struct intel_encoder *encoder, in tgl_ddi_vswing_sequence() argument
1347 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_ddi_vswing_sequence()
1348 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in tgl_ddi_vswing_sequence()
1351 icl_combo_phy_ddi_vswing_sequence(encoder, crtc_state, level); in tgl_ddi_vswing_sequence()
1353 tgl_dkl_phy_ddi_vswing_sequence(encoder, crtc_state, level); in tgl_ddi_vswing_sequence()
1387 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in dg2_set_signal_levels() local
1390 intel_snps_phy_ddi_vswing_sequence(encoder, level); in dg2_set_signal_levels()
1397 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in tgl_set_signal_levels() local
1400 tgl_ddi_vswing_sequence(encoder, crtc_state, level); in tgl_set_signal_levels()
1407 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in icl_set_signal_levels() local
1410 icl_ddi_vswing_sequence(encoder, crtc_state, level); in icl_set_signal_levels()
1417 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in bxt_set_signal_levels() local
1420 bxt_ddi_vswing_sequence(encoder, crtc_state, level); in bxt_set_signal_levels()
1427 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in hsw_set_signal_levels() local
1428 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_set_signal_levels()
1430 enum port port = encoder->port; in hsw_set_signal_levels()
1442 skl_ddi_set_iboost(encoder, crtc_state, level); in hsw_set_signal_levels()
1491 static void adls_ddi_enable_clock(struct intel_encoder *encoder, in adls_ddi_enable_clock() argument
1494 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_enable_clock()
1496 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_enable_clock()
1507 static void adls_ddi_disable_clock(struct intel_encoder *encoder) in adls_ddi_disable_clock() argument
1509 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_disable_clock()
1510 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_disable_clock()
1516 static bool adls_ddi_is_clock_enabled(struct intel_encoder *encoder) in adls_ddi_is_clock_enabled() argument
1518 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_is_clock_enabled()
1519 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_is_clock_enabled()
1525 static struct intel_shared_dpll *adls_ddi_get_pll(struct intel_encoder *encoder) in adls_ddi_get_pll() argument
1527 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in adls_ddi_get_pll()
1528 enum phy phy = intel_port_to_phy(i915, encoder->port); in adls_ddi_get_pll()
1535 static void rkl_ddi_enable_clock(struct intel_encoder *encoder, in rkl_ddi_enable_clock() argument
1538 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_enable_clock()
1540 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_enable_clock()
1551 static void rkl_ddi_disable_clock(struct intel_encoder *encoder) in rkl_ddi_disable_clock() argument
1553 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_disable_clock()
1554 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_disable_clock()
1560 static bool rkl_ddi_is_clock_enabled(struct intel_encoder *encoder) in rkl_ddi_is_clock_enabled() argument
1562 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_is_clock_enabled()
1563 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_is_clock_enabled()
1569 static struct intel_shared_dpll *rkl_ddi_get_pll(struct intel_encoder *encoder) in rkl_ddi_get_pll() argument
1571 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in rkl_ddi_get_pll()
1572 enum phy phy = intel_port_to_phy(i915, encoder->port); in rkl_ddi_get_pll()
1579 static void dg1_ddi_enable_clock(struct intel_encoder *encoder, in dg1_ddi_enable_clock() argument
1582 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_enable_clock()
1584 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_enable_clock()
1604 static void dg1_ddi_disable_clock(struct intel_encoder *encoder) in dg1_ddi_disable_clock() argument
1606 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_disable_clock()
1607 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_disable_clock()
1613 static bool dg1_ddi_is_clock_enabled(struct intel_encoder *encoder) in dg1_ddi_is_clock_enabled() argument
1615 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_is_clock_enabled()
1616 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_is_clock_enabled()
1622 static struct intel_shared_dpll *dg1_ddi_get_pll(struct intel_encoder *encoder) in dg1_ddi_get_pll() argument
1624 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in dg1_ddi_get_pll()
1625 enum phy phy = intel_port_to_phy(i915, encoder->port); in dg1_ddi_get_pll()
1645 static void icl_ddi_combo_enable_clock(struct intel_encoder *encoder, in icl_ddi_combo_enable_clock() argument
1648 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_enable_clock()
1650 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_enable_clock()
1661 static void icl_ddi_combo_disable_clock(struct intel_encoder *encoder) in icl_ddi_combo_disable_clock() argument
1663 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_disable_clock()
1664 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_disable_clock()
1670 static bool icl_ddi_combo_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_combo_is_clock_enabled() argument
1672 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_is_clock_enabled()
1673 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_is_clock_enabled()
1679 struct intel_shared_dpll *icl_ddi_combo_get_pll(struct intel_encoder *encoder) in icl_ddi_combo_get_pll() argument
1681 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_combo_get_pll()
1682 enum phy phy = intel_port_to_phy(i915, encoder->port); in icl_ddi_combo_get_pll()
1689 static void jsl_ddi_tc_enable_clock(struct intel_encoder *encoder, in jsl_ddi_tc_enable_clock() argument
1692 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_enable_clock()
1694 enum port port = encoder->port; in jsl_ddi_tc_enable_clock()
1705 icl_ddi_combo_enable_clock(encoder, crtc_state); in jsl_ddi_tc_enable_clock()
1708 static void jsl_ddi_tc_disable_clock(struct intel_encoder *encoder) in jsl_ddi_tc_disable_clock() argument
1710 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_disable_clock()
1711 enum port port = encoder->port; in jsl_ddi_tc_disable_clock()
1713 icl_ddi_combo_disable_clock(encoder); in jsl_ddi_tc_disable_clock()
1718 static bool jsl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in jsl_ddi_tc_is_clock_enabled() argument
1720 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in jsl_ddi_tc_is_clock_enabled()
1721 enum port port = encoder->port; in jsl_ddi_tc_is_clock_enabled()
1729 return icl_ddi_combo_is_clock_enabled(encoder); in jsl_ddi_tc_is_clock_enabled()
1732 static void icl_ddi_tc_enable_clock(struct intel_encoder *encoder, in icl_ddi_tc_enable_clock() argument
1735 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_enable_clock()
1737 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_enable_clock()
1738 enum port port = encoder->port; in icl_ddi_tc_enable_clock()
1744 icl_pll_to_ddi_clk_sel(encoder, crtc_state)); in icl_ddi_tc_enable_clock()
1754 static void icl_ddi_tc_disable_clock(struct intel_encoder *encoder) in icl_ddi_tc_disable_clock() argument
1756 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_disable_clock()
1757 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_disable_clock()
1758 enum port port = encoder->port; in icl_ddi_tc_disable_clock()
1770 static bool icl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder) in icl_ddi_tc_is_clock_enabled() argument
1772 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_is_clock_enabled()
1773 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_is_clock_enabled()
1774 enum port port = encoder->port; in icl_ddi_tc_is_clock_enabled()
1787 static struct intel_shared_dpll *icl_ddi_tc_get_pll(struct intel_encoder *encoder) in icl_ddi_tc_get_pll() argument
1789 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_pll()
1790 enum tc_port tc_port = intel_port_to_tc(i915, encoder->port); in icl_ddi_tc_get_pll()
1791 enum port port = encoder->port; in icl_ddi_tc_get_pll()
1817 static struct intel_shared_dpll *bxt_ddi_get_pll(struct intel_encoder *encoder) in bxt_ddi_get_pll() argument
1819 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in bxt_ddi_get_pll()
1822 switch (encoder->port) { in bxt_ddi_get_pll()
1833 MISSING_CASE(encoder->port); in bxt_ddi_get_pll()
1840 static void skl_ddi_enable_clock(struct intel_encoder *encoder, in skl_ddi_enable_clock() argument
1843 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_enable_clock()
1845 enum port port = encoder->port; in skl_ddi_enable_clock()
1861 static void skl_ddi_disable_clock(struct intel_encoder *encoder) in skl_ddi_disable_clock() argument
1863 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_disable_clock()
1864 enum port port = encoder->port; in skl_ddi_disable_clock()
1874 static bool skl_ddi_is_clock_enabled(struct intel_encoder *encoder) in skl_ddi_is_clock_enabled() argument
1876 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_is_clock_enabled()
1877 enum port port = encoder->port; in skl_ddi_is_clock_enabled()
1886 static struct intel_shared_dpll *skl_ddi_get_pll(struct intel_encoder *encoder) in skl_ddi_get_pll() argument
1888 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in skl_ddi_get_pll()
1889 enum port port = encoder->port; in skl_ddi_get_pll()
1908 void hsw_ddi_enable_clock(struct intel_encoder *encoder, in hsw_ddi_enable_clock() argument
1911 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_enable_clock()
1913 enum port port = encoder->port; in hsw_ddi_enable_clock()
1921 void hsw_ddi_disable_clock(struct intel_encoder *encoder) in hsw_ddi_disable_clock() argument
1923 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_disable_clock()
1924 enum port port = encoder->port; in hsw_ddi_disable_clock()
1929 bool hsw_ddi_is_clock_enabled(struct intel_encoder *encoder) in hsw_ddi_is_clock_enabled() argument
1931 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_is_clock_enabled()
1932 enum port port = encoder->port; in hsw_ddi_is_clock_enabled()
1937 static struct intel_shared_dpll *hsw_ddi_get_pll(struct intel_encoder *encoder) in hsw_ddi_get_pll() argument
1939 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in hsw_ddi_get_pll()
1940 enum port port = encoder->port; in hsw_ddi_get_pll()
1975 void intel_ddi_enable_clock(struct intel_encoder *encoder, in intel_ddi_enable_clock() argument
1978 if (encoder->enable_clock) in intel_ddi_enable_clock()
1979 encoder->enable_clock(encoder, crtc_state); in intel_ddi_enable_clock()
1982 static void intel_ddi_disable_clock(struct intel_encoder *encoder) in intel_ddi_disable_clock() argument
1984 if (encoder->disable_clock) in intel_ddi_disable_clock()
1985 encoder->disable_clock(encoder); in intel_ddi_disable_clock()
1988 void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder) in intel_ddi_sanitize_encoder_pll_mapping() argument
1990 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sanitize_encoder_pll_mapping()
1995 * In case of DP MST, we sanitize the primary encoder only, not the in intel_ddi_sanitize_encoder_pll_mapping()
1998 if (encoder->type == INTEL_OUTPUT_DP_MST) in intel_ddi_sanitize_encoder_pll_mapping()
2001 if (!encoder->base.crtc && intel_encoder_is_dp(encoder)) { in intel_ddi_sanitize_encoder_pll_mapping()
2005 intel_ddi_get_encoder_pipes(encoder, &pipe_mask, &is_mst); in intel_ddi_sanitize_encoder_pll_mapping()
2014 port_mask = BIT(encoder->port); in intel_ddi_sanitize_encoder_pll_mapping()
2015 ddi_clk_needed = encoder->base.crtc; in intel_ddi_sanitize_encoder_pll_mapping()
2017 if (encoder->type == INTEL_OUTPUT_DSI) { in intel_ddi_sanitize_encoder_pll_mapping()
2020 port_mask = intel_dsi_encoder_ports(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2023 * encoder using any of the ports of this DSI encoder. in intel_ddi_sanitize_encoder_pll_mapping()
2026 if (other_encoder == encoder) in intel_ddi_sanitize_encoder_pll_mapping()
2040 if (ddi_clk_needed || !encoder->is_clock_enabled || in intel_ddi_sanitize_encoder_pll_mapping()
2041 !encoder->is_clock_enabled(encoder)) in intel_ddi_sanitize_encoder_pll_mapping()
2045 "[ENCODER:%d:%s] is disabled/in DSI mode with an ungated DDI clock, gate it\n", in intel_ddi_sanitize_encoder_pll_mapping()
2046 encoder->base.base.id, encoder->base.name); in intel_ddi_sanitize_encoder_pll_mapping()
2048 encoder->disable_clock(encoder); in intel_ddi_sanitize_encoder_pll_mapping()
2153 i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder, in dp_tp_ctl_reg() argument
2156 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_ctl_reg()
2161 return DP_TP_CTL(encoder->port); in dp_tp_ctl_reg()
2164 i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder, in dp_tp_status_reg() argument
2167 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dp_tp_status_reg()
2172 return DP_TP_STATUS(encoder->port); in dp_tp_status_reg()
2204 static void intel_ddi_enable_fec(struct intel_encoder *encoder, in intel_ddi_enable_fec() argument
2207 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_enable_fec()
2214 intel_dp = enc_to_intel_dp(encoder); in intel_ddi_enable_fec()
2215 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_enable_fec()
2217 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_enable_fec()
2220 static void intel_ddi_disable_fec_state(struct intel_encoder *encoder, in intel_ddi_disable_fec_state() argument
2223 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_disable_fec_state()
2230 intel_dp = enc_to_intel_dp(encoder); in intel_ddi_disable_fec_state()
2231 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec_state()
2233 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_disable_fec_state()
2234 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_disable_fec_state()
2237 static void intel_ddi_power_up_lanes(struct intel_encoder *encoder, in intel_ddi_power_up_lanes() argument
2240 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_power_up_lanes()
2241 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_power_up_lanes()
2242 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_power_up_lanes()
2263 static void intel_ddi_mso_get_config(struct intel_encoder *encoder, in intel_ddi_mso_get_config() argument
2326 struct intel_encoder *encoder, in dg2_ddi_pre_enable_dp() argument
2330 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in dg2_ddi_pre_enable_dp()
2331 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dg2_ddi_pre_enable_dp()
2332 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in dg2_ddi_pre_enable_dp()
2333 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in dg2_ddi_pre_enable_dp()
2353 intel_ddi_enable_clock(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2375 intel_ddi_enable_pipe_clock(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2383 intel_ddi_config_transcoder_func(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2394 intel_snps_phy_ddi_vswing_sequence(encoder, level); in dg2_ddi_pre_enable_dp()
2404 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2431 intel_ddi_enable_fec(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2432 intel_dsc_enable(encoder, crtc_state); in dg2_ddi_pre_enable_dp()
2436 struct intel_encoder *encoder, in tgl_ddi_pre_enable_dp() argument
2440 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in tgl_ddi_pre_enable_dp()
2441 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in tgl_ddi_pre_enable_dp()
2442 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in tgl_ddi_pre_enable_dp()
2443 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in tgl_ddi_pre_enable_dp()
2476 intel_ddi_enable_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2503 intel_ddi_enable_pipe_clock(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2509 intel_ddi_config_transcoder_func(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2520 tgl_ddi_vswing_sequence(encoder, crtc_state, level); in tgl_ddi_pre_enable_dp()
2526 intel_ddi_power_up_lanes(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2541 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2572 intel_ddi_enable_fec(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2574 intel_dsc_enable(encoder, crtc_state); in tgl_ddi_pre_enable_dp()
2578 struct intel_encoder *encoder, in hsw_ddi_pre_enable_dp() argument
2582 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in hsw_ddi_pre_enable_dp()
2583 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_ddi_pre_enable_dp()
2584 enum port port = encoder->port; in hsw_ddi_pre_enable_dp()
2586 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in hsw_ddi_pre_enable_dp()
2602 intel_ddi_enable_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2614 icl_ddi_vswing_sequence(encoder, crtc_state, level); in hsw_ddi_pre_enable_dp()
2616 bxt_ddi_vswing_sequence(encoder, crtc_state, level); in hsw_ddi_pre_enable_dp()
2618 hsw_prepare_dp_ddi_buffers(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2620 intel_ddi_power_up_lanes(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2622 intel_ddi_init_dp_buf_reg(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2634 intel_ddi_enable_fec(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2637 intel_ddi_enable_pipe_clock(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2640 intel_dsc_enable(encoder, crtc_state); in hsw_ddi_pre_enable_dp()
2644 struct intel_encoder *encoder, in intel_ddi_pre_enable_dp() argument
2648 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_dp()
2651 dg2_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2653 tgl_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2655 hsw_ddi_pre_enable_dp(state, encoder, crtc_state, conn_state); in intel_ddi_pre_enable_dp()
2658 * from MST encoder pre_enable callback. in intel_ddi_pre_enable_dp()
2668 struct intel_encoder *encoder, in intel_ddi_pre_enable_hdmi() argument
2672 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable_hdmi()
2674 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_enable_hdmi()
2677 intel_ddi_enable_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2685 intel_ddi_enable_pipe_clock(encoder, crtc_state); in intel_ddi_pre_enable_hdmi()
2687 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable_hdmi()
2693 struct intel_encoder *encoder, in intel_ddi_pre_enable() argument
2704 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_pre_enable()
2719 intel_ddi_pre_enable_hdmi(state, encoder, crtc_state, in intel_ddi_pre_enable()
2722 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_enable()
2724 intel_ddi_pre_enable_dp(state, encoder, crtc_state, in intel_ddi_pre_enable()
2730 dig_port->set_infoframes(encoder, in intel_ddi_pre_enable()
2736 static void intel_disable_ddi_buf(struct intel_encoder *encoder, in intel_disable_ddi_buf() argument
2739 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_disable_ddi_buf()
2740 enum port port = encoder->port; in intel_disable_ddi_buf()
2752 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_disable_ddi_buf()
2755 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_disable_ddi_buf()
2759 intel_ddi_disable_fec_state(encoder, crtc_state); in intel_disable_ddi_buf()
2766 struct intel_encoder *encoder, in intel_ddi_post_disable_dp() argument
2770 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_dp()
2771 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_dp()
2775 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_post_disable_dp()
2778 intel_dp_set_infoframes(encoder, false, in intel_ddi_post_disable_dp()
2805 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_dp()
2824 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_dp()
2828 struct intel_encoder *encoder, in intel_ddi_post_disable_hdmi() argument
2832 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable_hdmi()
2833 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable_hdmi()
2836 dig_port->set_infoframes(encoder, false, in intel_ddi_post_disable_hdmi()
2841 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_post_disable_hdmi()
2847 intel_ddi_disable_clock(encoder); in intel_ddi_post_disable_hdmi()
2853 struct intel_encoder *encoder, in intel_ddi_post_disable() argument
2857 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_post_disable()
2858 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_post_disable()
2859 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_post_disable()
2896 * - encoder will be the main encoder (ie. mst->primary) in intel_ddi_post_disable()
2907 intel_ddi_post_disable_hdmi(state, encoder, old_crtc_state, in intel_ddi_post_disable()
2910 intel_ddi_post_disable_dp(state, encoder, old_crtc_state, in intel_ddi_post_disable()
2923 struct intel_encoder *encoder, in intel_ddi_fdi_post_disable() argument
2927 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_fdi_post_disable()
2940 intel_disable_ddi_buf(encoder, old_crtc_state); in intel_ddi_fdi_post_disable()
2941 intel_ddi_disable_clock(encoder); in intel_ddi_fdi_post_disable()
2958 struct intel_encoder *encoder, in trans_port_sync_stop_link_train() argument
2990 intel_dp_stop_link_train(enc_to_intel_dp(encoder), in trans_port_sync_stop_link_train()
2995 struct intel_encoder *encoder, in intel_enable_ddi_dp() argument
2999 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_enable_ddi_dp()
3000 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_enable_ddi_dp()
3001 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_enable_ddi_dp()
3002 enum port port = encoder->port; in intel_enable_ddi_dp()
3011 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_enable_ddi_dp()
3016 intel_audio_codec_enable(encoder, crtc_state, conn_state); in intel_enable_ddi_dp()
3018 trans_port_sync_stop_link_train(state, encoder, crtc_state); in intel_enable_ddi_dp()
3042 struct intel_encoder *encoder, in intel_enable_ddi_hdmi() argument
3046 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_enable_ddi_hdmi()
3047 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_enable_ddi_hdmi()
3049 int level = intel_ddi_hdmi_level(encoder, crtc_state); in intel_enable_ddi_hdmi()
3050 enum port port = encoder->port; in intel_enable_ddi_hdmi()
3052 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_enable_ddi_hdmi()
3060 intel_snps_phy_ddi_vswing_sequence(encoder, U32_MAX); in intel_enable_ddi_hdmi()
3062 tgl_ddi_vswing_sequence(encoder, crtc_state, level); in intel_enable_ddi_hdmi()
3064 icl_ddi_vswing_sequence(encoder, crtc_state, level); in intel_enable_ddi_hdmi()
3066 bxt_ddi_vswing_sequence(encoder, crtc_state, level); in intel_enable_ddi_hdmi()
3068 hsw_prepare_hdmi_ddi_buffers(encoder, crtc_state, level); in intel_enable_ddi_hdmi()
3071 skl_ddi_set_iboost(encoder, crtc_state, level); in intel_enable_ddi_hdmi()
3108 intel_ddi_power_up_lanes(encoder, crtc_state); in intel_enable_ddi_hdmi()
3121 intel_audio_codec_enable(encoder, crtc_state, conn_state); in intel_enable_ddi_hdmi()
3125 struct intel_encoder *encoder, in intel_enable_ddi() argument
3132 intel_ddi_enable_transcoder_func(encoder, crtc_state); in intel_enable_ddi()
3134 intel_vrr_enable(encoder, crtc_state); in intel_enable_ddi()
3141 intel_enable_ddi_hdmi(state, encoder, crtc_state, conn_state); in intel_enable_ddi()
3143 intel_enable_ddi_dp(state, encoder, crtc_state, conn_state); in intel_enable_ddi()
3154 struct intel_encoder *encoder, in intel_disable_ddi_dp() argument
3158 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_disable_ddi_dp()
3172 struct intel_encoder *encoder, in intel_disable_ddi_hdmi() argument
3176 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_disable_ddi_hdmi()
3179 if (!intel_hdmi_handle_sink_scrambling(encoder, connector, in intel_disable_ddi_hdmi()
3187 struct intel_encoder *encoder, in intel_pre_disable_ddi() argument
3194 intel_audio_codec_disable(encoder, old_crtc_state, in intel_pre_disable_ddi()
3200 intel_dp = enc_to_intel_dp(encoder); in intel_pre_disable_ddi()
3206 struct intel_encoder *encoder, in intel_disable_ddi() argument
3213 intel_disable_ddi_hdmi(state, encoder, old_crtc_state, in intel_disable_ddi()
3216 intel_disable_ddi_dp(state, encoder, old_crtc_state, in intel_disable_ddi()
3221 struct intel_encoder *encoder, in intel_ddi_update_pipe_dp() argument
3225 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_update_pipe_dp()
3230 intel_dp_set_infoframes(encoder, true, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3233 intel_panel_update_backlight(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe_dp()
3237 struct intel_encoder *encoder, in intel_ddi_update_pipe() argument
3243 !intel_encoder_is_mst(encoder)) in intel_ddi_update_pipe()
3244 intel_ddi_update_pipe_dp(state, encoder, crtc_state, in intel_ddi_update_pipe()
3247 intel_hdcp_update_pipe(state, encoder, crtc_state, conn_state); in intel_ddi_update_pipe()
3252 struct intel_encoder *encoder, in intel_ddi_update_prepare() argument
3261 intel_tc_port_get_link(enc_to_dig_port(encoder), in intel_ddi_update_prepare()
3264 intel_update_active_dpll(state, crtc, encoder); in intel_ddi_update_prepare()
3269 struct intel_encoder *encoder, in intel_ddi_update_complete() argument
3272 intel_tc_port_put_link(enc_to_dig_port(encoder)); in intel_ddi_update_complete()
3277 struct intel_encoder *encoder, in intel_ddi_pre_pll_enable() argument
3281 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_pre_pll_enable()
3282 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_pre_pll_enable()
3283 enum phy phy = intel_port_to_phy(dev_priv, encoder->port); in intel_ddi_pre_pll_enable()
3303 bxt_ddi_phy_set_lane_optim_mask(encoder, in intel_ddi_pre_pll_enable()
3310 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_prepare_link_retrain() local
3311 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_prepare_link_retrain()
3312 enum port port = encoder->port; in intel_ddi_prepare_link_retrain()
3316 dp_tp_ctl = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3328 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3329 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3343 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), dp_tp_ctl); in intel_ddi_prepare_link_retrain()
3344 intel_de_posting_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_prepare_link_retrain()
3357 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_link_train() local
3358 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_link_train()
3361 temp = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_link_train()
3382 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), temp); in intel_ddi_set_link_train()
3388 struct intel_encoder *encoder = &dp_to_dig_port(intel_dp)->base; in intel_ddi_set_idle_link_train() local
3389 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_set_idle_link_train()
3390 enum port port = encoder->port; in intel_ddi_set_idle_link_train()
3393 val = intel_de_read(dev_priv, dp_tp_ctl_reg(encoder, crtc_state)); in intel_ddi_set_idle_link_train()
3396 intel_de_write(dev_priv, dp_tp_ctl_reg(encoder, crtc_state), val); in intel_ddi_set_idle_link_train()
3409 dp_tp_status_reg(encoder, crtc_state), in intel_ddi_set_idle_link_train()
3499 static void intel_ddi_read_func_ctl(struct intel_encoder *encoder, in intel_ddi_read_func_ctl() argument
3502 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_read_func_ctl()
3505 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_read_func_ctl()
3542 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3560 if (encoder->type == INTEL_OUTPUT_EDP) in intel_ddi_read_func_ctl()
3569 i915_reg_t dp_tp_ctl = dp_tp_ctl_reg(encoder, pipe_config); in intel_ddi_read_func_ctl()
3575 "[ENCODER:%d:%s] Fec status: %u\n", in intel_ddi_read_func_ctl()
3576 encoder->base.base.id, encoder->base.name, in intel_ddi_read_func_ctl()
3582 intel_lspcon_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3585 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3599 intel_hdmi_infoframes_enabled(encoder, pipe_config); in intel_ddi_read_func_ctl()
3606 static void intel_ddi_get_config(struct intel_encoder *encoder, in intel_ddi_get_config() argument
3609 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_get_config()
3623 intel_ddi_read_func_ctl(encoder, pipe_config); in intel_ddi_get_config()
3626 intel_ddi_read_func_ctl(encoder, pipe_config); in intel_ddi_get_config()
3629 intel_ddi_mso_get_config(encoder, pipe_config); in intel_ddi_get_config()
3634 if (encoder->type == INTEL_OUTPUT_EDP && dev_priv->vbt.edp.bpp && in intel_ddi_get_config()
3660 bxt_ddi_phy_get_lane_lat_optim_mask(encoder); in intel_ddi_get_config()
3664 intel_hdmi_read_gcp_infoframe(encoder, pipe_config); in intel_ddi_get_config()
3666 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3669 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3672 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3675 intel_read_infoframe(encoder, pipe_config, in intel_ddi_get_config()
3682 intel_read_dp_sdp(encoder, pipe_config, HDMI_PACKET_TYPE_GAMUT_METADATA); in intel_ddi_get_config()
3683 intel_read_dp_sdp(encoder, pipe_config, DP_SDP_VSC); in intel_ddi_get_config()
3685 intel_psr_get_config(encoder, pipe_config); in intel_ddi_get_config()
3688 void intel_ddi_get_clock(struct intel_encoder *encoder, in intel_ddi_get_clock() argument
3692 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_get_clock()
3710 static void dg2_ddi_get_config(struct intel_encoder *encoder, in dg2_ddi_get_config() argument
3713 intel_mpllb_readout_hw_state(encoder, &crtc_state->mpllb_state); in dg2_ddi_get_config()
3714 crtc_state->port_clock = intel_mpllb_calc_port_clock(encoder, &crtc_state->mpllb_state); in dg2_ddi_get_config()
3716 intel_ddi_get_config(encoder, crtc_state); in dg2_ddi_get_config()
3719 static void adls_ddi_get_config(struct intel_encoder *encoder, in adls_ddi_get_config() argument
3722 intel_ddi_get_clock(encoder, crtc_state, adls_ddi_get_pll(encoder)); in adls_ddi_get_config()
3723 intel_ddi_get_config(encoder, crtc_state); in adls_ddi_get_config()
3726 static void rkl_ddi_get_config(struct intel_encoder *encoder, in rkl_ddi_get_config() argument
3729 intel_ddi_get_clock(encoder, crtc_state, rkl_ddi_get_pll(encoder)); in rkl_ddi_get_config()
3730 intel_ddi_get_config(encoder, crtc_state); in rkl_ddi_get_config()
3733 static void dg1_ddi_get_config(struct intel_encoder *encoder, in dg1_ddi_get_config() argument
3736 intel_ddi_get_clock(encoder, crtc_state, dg1_ddi_get_pll(encoder)); in dg1_ddi_get_config()
3737 intel_ddi_get_config(encoder, crtc_state); in dg1_ddi_get_config()
3740 static void icl_ddi_combo_get_config(struct intel_encoder *encoder, in icl_ddi_combo_get_config() argument
3743 intel_ddi_get_clock(encoder, crtc_state, icl_ddi_combo_get_pll(encoder)); in icl_ddi_combo_get_config()
3744 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_combo_get_config()
3747 static void icl_ddi_tc_get_clock(struct intel_encoder *encoder, in icl_ddi_tc_get_clock() argument
3751 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in icl_ddi_tc_get_clock()
3773 crtc_state->port_clock = icl_calc_tbt_pll_link(i915, encoder->port); in icl_ddi_tc_get_clock()
3779 static void icl_ddi_tc_get_config(struct intel_encoder *encoder, in icl_ddi_tc_get_config() argument
3782 icl_ddi_tc_get_clock(encoder, crtc_state, icl_ddi_tc_get_pll(encoder)); in icl_ddi_tc_get_config()
3783 intel_ddi_get_config(encoder, crtc_state); in icl_ddi_tc_get_config()
3786 static void bxt_ddi_get_config(struct intel_encoder *encoder, in bxt_ddi_get_config() argument
3789 intel_ddi_get_clock(encoder, crtc_state, bxt_ddi_get_pll(encoder)); in bxt_ddi_get_config()
3790 intel_ddi_get_config(encoder, crtc_state); in bxt_ddi_get_config()
3793 static void skl_ddi_get_config(struct intel_encoder *encoder, in skl_ddi_get_config() argument
3796 intel_ddi_get_clock(encoder, crtc_state, skl_ddi_get_pll(encoder)); in skl_ddi_get_config()
3797 intel_ddi_get_config(encoder, crtc_state); in skl_ddi_get_config()
3800 void hsw_ddi_get_config(struct intel_encoder *encoder, in hsw_ddi_get_config() argument
3803 intel_ddi_get_clock(encoder, crtc_state, hsw_ddi_get_pll(encoder)); in hsw_ddi_get_config()
3804 intel_ddi_get_config(encoder, crtc_state); in hsw_ddi_get_config()
3807 static void intel_ddi_sync_state(struct intel_encoder *encoder, in intel_ddi_sync_state() argument
3810 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_sync_state()
3811 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_sync_state()
3814 intel_tc_port_sanitize(enc_to_dig_port(encoder)); in intel_ddi_sync_state()
3817 intel_dp_sync_state(encoder, crtc_state); in intel_ddi_sync_state()
3820 static bool intel_ddi_initial_fastset_check(struct intel_encoder *encoder, in intel_ddi_initial_fastset_check() argument
3824 return intel_dp_initial_fastset_check(encoder, crtc_state); in intel_ddi_initial_fastset_check()
3830 intel_ddi_compute_output_type(struct intel_encoder *encoder, in intel_ddi_compute_output_type() argument
3847 static int intel_ddi_compute_config(struct intel_encoder *encoder, in intel_ddi_compute_config() argument
3852 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_ddi_compute_config()
3853 enum port port = encoder->port; in intel_ddi_compute_config()
3860 ret = intel_hdmi_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
3862 ret = intel_dp_compute_config(encoder, pipe_config, conn_state); in intel_ddi_compute_config()
3960 static int intel_ddi_compute_config_late(struct intel_encoder *encoder, in intel_ddi_compute_config_late() argument
3964 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_compute_config_late()
3968 drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] [CRTC:%d:%s]", in intel_ddi_compute_config_late()
3969 encoder->base.base.id, encoder->base.name, in intel_ddi_compute_config_late()
3994 static void intel_ddi_encoder_destroy(struct drm_encoder *encoder) in intel_ddi_encoder_destroy() argument
3996 struct drm_i915_private *i915 = to_i915(encoder->dev); in intel_ddi_encoder_destroy()
3997 struct intel_digital_port *dig_port = enc_to_dig_port(to_intel_encoder(encoder)); in intel_ddi_encoder_destroy()
3999 intel_dp_encoder_flush_work(encoder); in intel_ddi_encoder_destroy()
4002 drm_encoder_cleanup(encoder); in intel_ddi_encoder_destroy()
4008 static void intel_ddi_encoder_reset(struct drm_encoder *encoder) in intel_ddi_encoder_reset() argument
4010 struct intel_dp *intel_dp = enc_to_intel_dp(to_intel_encoder(encoder)); in intel_ddi_encoder_reset()
4088 static int intel_hdmi_reset_link(struct intel_encoder *encoder, in intel_hdmi_reset_link() argument
4091 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in intel_hdmi_reset_link()
4092 struct intel_hdmi *hdmi = enc_to_intel_hdmi(encoder); in intel_hdmi_reset_link()
4162 intel_ddi_hotplug(struct intel_encoder *encoder, in intel_ddi_hotplug() argument
4165 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in intel_ddi_hotplug()
4166 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); in intel_ddi_hotplug()
4168 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_hotplug()
4176 intel_dp_phy_test(encoder); in intel_ddi_hotplug()
4181 state = intel_encoder_hotplug(encoder, connector); in intel_ddi_hotplug()
4187 ret = intel_hdmi_reset_link(encoder, &ctx); in intel_ddi_hotplug()
4189 ret = intel_dp_retrain_link(encoder, &ctx); in intel_ddi_hotplug()
4201 drm_WARN(encoder->base.dev, ret, in intel_ddi_hotplug()
4234 static bool lpt_digital_port_connected(struct intel_encoder *encoder) in lpt_digital_port_connected() argument
4236 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in lpt_digital_port_connected()
4237 u32 bit = dev_priv->hotplug.pch_hpd[encoder->hpd_pin]; in lpt_digital_port_connected()
4242 static bool hsw_digital_port_connected(struct intel_encoder *encoder) in hsw_digital_port_connected() argument
4244 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in hsw_digital_port_connected()
4245 u32 bit = dev_priv->hotplug.hpd[encoder->hpd_pin]; in hsw_digital_port_connected()
4250 static bool bdw_digital_port_connected(struct intel_encoder *encoder) in bdw_digital_port_connected() argument
4252 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in bdw_digital_port_connected()
4253 u32 bit = dev_priv->hotplug.hpd[encoder->hpd_pin]; in bdw_digital_port_connected()
4412 static void intel_ddi_encoder_suspend(struct intel_encoder *encoder) in intel_ddi_encoder_suspend() argument
4414 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_encoder_suspend()
4417 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_encoder_suspend()
4419 intel_dp_encoder_suspend(encoder); in intel_ddi_encoder_suspend()
4427 static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder) in intel_ddi_encoder_shutdown() argument
4429 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); in intel_ddi_encoder_shutdown()
4432 enum phy phy = intel_port_to_phy(i915, encoder->port); in intel_ddi_encoder_shutdown()
4434 intel_dp_encoder_shutdown(encoder); in intel_ddi_encoder_shutdown()
4448 struct intel_encoder *encoder; in intel_ddi_init() local
4500 encoder = &dig_port->base; in intel_ddi_init()
4501 encoder->devdata = devdata; in intel_ddi_init()
4504 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4512 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4522 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4530 drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs, in intel_ddi_init()
4538 encoder->hotplug = intel_ddi_hotplug; in intel_ddi_init()
4539 encoder->compute_output_type = intel_ddi_compute_output_type; in intel_ddi_init()
4540 encoder->compute_config = intel_ddi_compute_config; in intel_ddi_init()
4541 encoder->compute_config_late = intel_ddi_compute_config_late; in intel_ddi_init()
4542 encoder->enable = intel_enable_ddi; in intel_ddi_init()
4543 encoder->pre_pll_enable = intel_ddi_pre_pll_enable; in intel_ddi_init()
4544 encoder->pre_enable = intel_ddi_pre_enable; in intel_ddi_init()
4545 encoder->pre_disable = intel_pre_disable_ddi; in intel_ddi_init()
4546 encoder->disable = intel_disable_ddi; in intel_ddi_init()
4547 encoder->post_disable = intel_ddi_post_disable; in intel_ddi_init()
4548 encoder->update_pipe = intel_ddi_update_pipe; in intel_ddi_init()
4549 encoder->get_hw_state = intel_ddi_get_hw_state; in intel_ddi_init()
4550 encoder->sync_state = intel_ddi_sync_state; in intel_ddi_init()
4551 encoder->initial_fastset_check = intel_ddi_initial_fastset_check; in intel_ddi_init()
4552 encoder->suspend = intel_ddi_encoder_suspend; in intel_ddi_init()
4553 encoder->shutdown = intel_ddi_encoder_shutdown; in intel_ddi_init()
4554 encoder->get_power_domains = intel_ddi_get_power_domains; in intel_ddi_init()
4556 encoder->type = INTEL_OUTPUT_DDI; in intel_ddi_init()
4557 encoder->power_domain = intel_port_to_power_domain(port); in intel_ddi_init()
4558 encoder->port = port; in intel_ddi_init()
4559 encoder->cloneable = 0; in intel_ddi_init()
4560 encoder->pipe_mask = ~0; in intel_ddi_init()
4563 encoder->enable_clock = intel_mpllb_enable; in intel_ddi_init()
4564 encoder->disable_clock = intel_mpllb_disable; in intel_ddi_init()
4565 encoder->get_config = dg2_ddi_get_config; in intel_ddi_init()
4567 encoder->enable_clock = adls_ddi_enable_clock; in intel_ddi_init()
4568 encoder->disable_clock = adls_ddi_disable_clock; in intel_ddi_init()
4569 encoder->is_clock_enabled = adls_ddi_is_clock_enabled; in intel_ddi_init()
4570 encoder->get_config = adls_ddi_get_config; in intel_ddi_init()
4572 encoder->enable_clock = rkl_ddi_enable_clock; in intel_ddi_init()
4573 encoder->disable_clock = rkl_ddi_disable_clock; in intel_ddi_init()
4574 encoder->is_clock_enabled = rkl_ddi_is_clock_enabled; in intel_ddi_init()
4575 encoder->get_config = rkl_ddi_get_config; in intel_ddi_init()
4577 encoder->enable_clock = dg1_ddi_enable_clock; in intel_ddi_init()
4578 encoder->disable_clock = dg1_ddi_disable_clock; in intel_ddi_init()
4579 encoder->is_clock_enabled = dg1_ddi_is_clock_enabled; in intel_ddi_init()
4580 encoder->get_config = dg1_ddi_get_config; in intel_ddi_init()
4583 encoder->enable_clock = jsl_ddi_tc_enable_clock; in intel_ddi_init()
4584 encoder->disable_clock = jsl_ddi_tc_disable_clock; in intel_ddi_init()
4585 encoder->is_clock_enabled = jsl_ddi_tc_is_clock_enabled; in intel_ddi_init()
4586 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4588 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
4589 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
4590 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
4591 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4595 encoder->enable_clock = icl_ddi_tc_enable_clock; in intel_ddi_init()
4596 encoder->disable_clock = icl_ddi_tc_disable_clock; in intel_ddi_init()
4597 encoder->is_clock_enabled = icl_ddi_tc_is_clock_enabled; in intel_ddi_init()
4598 encoder->get_config = icl_ddi_tc_get_config; in intel_ddi_init()
4600 encoder->enable_clock = icl_ddi_combo_enable_clock; in intel_ddi_init()
4601 encoder->disable_clock = icl_ddi_combo_disable_clock; in intel_ddi_init()
4602 encoder->is_clock_enabled = icl_ddi_combo_is_clock_enabled; in intel_ddi_init()
4603 encoder->get_config = icl_ddi_combo_get_config; in intel_ddi_init()
4607 encoder->get_config = bxt_ddi_get_config; in intel_ddi_init()
4609 encoder->enable_clock = skl_ddi_enable_clock; in intel_ddi_init()
4610 encoder->disable_clock = skl_ddi_disable_clock; in intel_ddi_init()
4611 encoder->is_clock_enabled = skl_ddi_is_clock_enabled; in intel_ddi_init()
4612 encoder->get_config = skl_ddi_get_config; in intel_ddi_init()
4614 encoder->enable_clock = hsw_ddi_enable_clock; in intel_ddi_init()
4615 encoder->disable_clock = hsw_ddi_disable_clock; in intel_ddi_init()
4616 encoder->is_clock_enabled = hsw_ddi_is_clock_enabled; in intel_ddi_init()
4617 encoder->get_config = hsw_ddi_get_config; in intel_ddi_init()
4620 intel_ddi_buf_trans_init(encoder); in intel_ddi_init()
4623 encoder->hpd_pin = xelpd_hpd_pin(dev_priv, port); in intel_ddi_init()
4625 encoder->hpd_pin = dg1_hpd_pin(dev_priv, port); in intel_ddi_init()
4627 encoder->hpd_pin = rkl_hpd_pin(dev_priv, port); in intel_ddi_init()
4629 encoder->hpd_pin = tgl_hpd_pin(dev_priv, port); in intel_ddi_init()
4631 encoder->hpd_pin = ehl_hpd_pin(dev_priv, port); in intel_ddi_init()
4633 encoder->hpd_pin = icl_hpd_pin(dev_priv, port); in intel_ddi_init()
4635 encoder->hpd_pin = skl_hpd_pin(dev_priv, port); in intel_ddi_init()
4637 encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port); in intel_ddi_init()
4662 encoder->update_prepare = intel_ddi_update_prepare; in intel_ddi_init()
4663 encoder->update_complete = intel_ddi_update_complete; in intel_ddi_init()
4677 encoder->pipe_mask = intel_ddi_splitter_pipe_mask(dev_priv); in intel_ddi_init()
4680 /* In theory we don't need the encoder->type check, but leave it just in in intel_ddi_init()
4682 if (encoder->type != INTEL_OUTPUT_EDP && init_hdmi) { in intel_ddi_init()
4710 drm_encoder_cleanup(&encoder->base); in intel_ddi_init()