#include <linux/iopoll.h>
#include <linux/string_helpers.h>
#include <drm/display/drm_scdc_helper.h>
#include <drm/drm_privacy_screen_consumer.h>
#include "i915_drv.h"
#include "i915_reg.h"
#include "icl_dsi.h"
#include "intel_audio.h"
#include "intel_audio_regs.h"
#include "intel_backlight.h"
#include "intel_combo_phy.h"
#include "intel_combo_phy_regs.h"
#include "intel_connector.h"
#include "intel_crtc.h"
#include "intel_cx0_phy.h"
#include "intel_cx0_phy_regs.h"
#include "intel_ddi.h"
#include "intel_ddi_buf_trans.h"
#include "intel_de.h"
#include "intel_display_power.h"
#include "intel_display_types.h"
#include "intel_dkl_phy.h"
#include "intel_dkl_phy_regs.h"
#include "intel_dp.h"
#include "intel_dp_aux.h"
#include "intel_dp_link_training.h"
#include "intel_dp_mst.h"
#include "intel_dp_tunnel.h"
#include "intel_dpio_phy.h"
#include "intel_dsi.h"
#include "intel_encoder.h"
#include "intel_fdi.h"
#include "intel_fifo_underrun.h"
#include "intel_gmbus.h"
#include "intel_hdcp.h"
#include "intel_hdmi.h"
#include "intel_hotplug.h"
#include "intel_hti.h"
#include "intel_lspcon.h"
#include "intel_mg_phy_regs.h"
#include "intel_modeset_lock.h"
#include "intel_pps.h"
#include "intel_psr.h"
#include "intel_quirks.h"
#include "intel_snps_phy.h"
#include "intel_tc.h"
#include "intel_vdsc.h"
#include "intel_vdsc_regs.h"
#include "skl_scaler.h"
#include "skl_universal_plane.h"
static const u8 index_to_dp_signal_levels[] = …;
static int intel_ddi_hdmi_level(struct intel_encoder *encoder,
const struct intel_ddi_buf_trans *trans)
{ … }
static bool has_buf_trans_select(struct drm_i915_private *i915)
{ … }
static bool has_iboost(struct drm_i915_private *i915)
{ … }
void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void hsw_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void mtl_wait_ddi_buf_idle(struct drm_i915_private *i915, enum port port)
{ … }
void intel_wait_ddi_buf_idle(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static void intel_wait_ddi_buf_active(struct intel_encoder *encoder)
{ … }
static u32 hsw_pll_to_ddi_pll_sel(const struct intel_shared_dpll *pll)
{ … }
static u32 icl_pll_to_ddi_clk_sel(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static u32 ddi_buf_phy_link_rate(int port_clock)
{ … }
static void intel_ddi_init_dp_buf_reg(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static int icl_calc_tbt_pll_link(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static void ddi_dotclock_get(struct intel_crtc_state *pipe_config)
{ … }
void intel_ddi_set_dp_msa(const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static u32 bdw_trans_port_sync_master_select(enum transcoder master_transcoder)
{ … }
static void
intel_ddi_config_transcoder_dp2(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static u32
intel_ddi_transcoder_func_reg_val_get(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void
intel_ddi_config_transcoder_func(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state)
{ … }
int intel_ddi_toggle_hdcp_bits(struct intel_encoder *intel_encoder,
enum transcoder cpu_transcoder,
bool enable, u32 hdcp_mask)
{ … }
bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector)
{ … }
static void intel_ddi_get_encoder_pipes(struct intel_encoder *encoder,
u8 *pipe_mask, bool *is_dp_mst)
{ … }
bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
enum pipe *pipe)
{ … }
static enum intel_display_power_domain
intel_ddi_main_link_aux_domain(struct intel_digital_port *dig_port,
const struct intel_crtc_state *crtc_state)
{ … }
static void
main_link_aux_power_domain_get(struct intel_digital_port *dig_port,
const struct intel_crtc_state *crtc_state)
{ … }
static void
main_link_aux_power_domain_put(struct intel_digital_port *dig_port,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_get_power_domains(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_enable_transcoder_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_disable_transcoder_clock(const struct intel_crtc_state *crtc_state)
{ … }
static void _skl_ddi_set_iboost(struct drm_i915_private *dev_priv,
enum port port, u8 iboost)
{ … }
static void skl_ddi_set_iboost(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int level)
{ … }
static u8 intel_ddi_dp_voltage_max(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
{ … }
static u8 intel_ddi_dp_preemph_max(struct intel_dp *intel_dp)
{ … }
static u32 icl_combo_phy_loadgen_select(const struct intel_crtc_state *crtc_state,
int lane)
{ … }
static void icl_ddi_combo_vswing_program(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void icl_combo_phy_set_signal_levels(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void icl_mg_phy_set_signal_levels(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void tgl_dkl_phy_set_signal_levels(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static int translate_signal_level(struct intel_dp *intel_dp,
u8 signal_levels)
{ … }
static int intel_ddi_dp_level(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state,
int lane)
{ … }
int intel_ddi_level(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int lane)
{ … }
static void
hsw_set_signal_levels(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void _icl_ddi_enable_clock(struct drm_i915_private *i915, i915_reg_t reg,
u32 clk_sel_mask, u32 clk_sel, u32 clk_off)
{ … }
static void _icl_ddi_disable_clock(struct drm_i915_private *i915, i915_reg_t reg,
u32 clk_off)
{ … }
static bool _icl_ddi_is_clock_enabled(struct drm_i915_private *i915, i915_reg_t reg,
u32 clk_off)
{ … }
static struct intel_shared_dpll *
_icl_ddi_get_pll(struct drm_i915_private *i915, i915_reg_t reg,
u32 clk_sel_mask, u32 clk_sel_shift)
{ … }
static void adls_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void adls_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
static bool adls_ddi_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *adls_ddi_get_pll(struct intel_encoder *encoder)
{ … }
static void rkl_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void rkl_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
static bool rkl_ddi_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *rkl_ddi_get_pll(struct intel_encoder *encoder)
{ … }
static void dg1_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void dg1_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
static bool dg1_ddi_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *dg1_ddi_get_pll(struct intel_encoder *encoder)
{ … }
static void icl_ddi_combo_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void icl_ddi_combo_disable_clock(struct intel_encoder *encoder)
{ … }
static bool icl_ddi_combo_is_clock_enabled(struct intel_encoder *encoder)
{ … }
struct intel_shared_dpll *icl_ddi_combo_get_pll(struct intel_encoder *encoder)
{ … }
static void jsl_ddi_tc_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void jsl_ddi_tc_disable_clock(struct intel_encoder *encoder)
{ … }
static bool jsl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static void icl_ddi_tc_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void icl_ddi_tc_disable_clock(struct intel_encoder *encoder)
{ … }
static bool icl_ddi_tc_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *icl_ddi_tc_get_pll(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *bxt_ddi_get_pll(struct intel_encoder *encoder)
{ … }
static void skl_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void skl_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
static bool skl_ddi_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *skl_ddi_get_pll(struct intel_encoder *encoder)
{ … }
void hsw_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
void hsw_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
bool hsw_ddi_is_clock_enabled(struct intel_encoder *encoder)
{ … }
static struct intel_shared_dpll *hsw_ddi_get_pll(struct intel_encoder *encoder)
{ … }
void intel_ddi_enable_clock(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_disable_clock(struct intel_encoder *encoder)
{ … }
void intel_ddi_sanitize_encoder_pll_mapping(struct intel_encoder *encoder)
{ … }
static void
icl_program_mg_dp_mode(struct intel_digital_port *dig_port,
const struct intel_crtc_state *crtc_state)
{ … }
static enum transcoder
tgl_dp_tp_transcoder(const struct intel_crtc_state *crtc_state)
{ … }
i915_reg_t dp_tp_ctl_reg(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
i915_reg_t dp_tp_status_reg(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_dp_sink_set_msa_timing_par_ignore_state(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state,
bool enable)
{ … }
static void intel_dp_sink_set_fec_ready(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state,
bool enable)
{ … }
static int read_fec_detected_status(struct drm_dp_aux *aux)
{ … }
static void wait_for_fec_detected(struct drm_dp_aux *aux, bool enabled)
{ … }
void intel_ddi_wait_for_fec_status(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
bool enabled)
{ … }
static void intel_ddi_enable_fec(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_disable_fec(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_power_up_lanes(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static u8 intel_ddi_splitter_pipe_mask(struct drm_i915_private *i915)
{ … }
static void intel_ddi_mso_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config)
{ … }
static void intel_ddi_mso_configure(const struct intel_crtc_state *crtc_state)
{ … }
static u8 mtl_get_port_width(u8 lane_count)
{ … }
static void
mtl_ddi_enable_d2d(struct intel_encoder *encoder)
{ … }
static void mtl_port_buf_ctl_program(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void mtl_port_buf_ctl_io_selection(struct intel_encoder *encoder)
{ … }
static void mtl_ddi_pre_enable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void tgl_ddi_pre_enable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void hsw_ddi_pre_enable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void intel_ddi_pre_enable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void intel_ddi_pre_enable_hdmi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void intel_ddi_pre_enable(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void
mtl_ddi_disable_d2d_link(struct intel_encoder *encoder)
{ … }
static void mtl_disable_ddi_buf(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void disable_ddi_buf(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_disable_ddi_buf(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_post_disable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_ddi_post_disable_hdmi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_ddi_post_disable_hdmi_or_sst(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_ddi_post_disable(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_ddi_post_pll_disable(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void trans_port_sync_stop_link_train(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_enable_ddi_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
i915_reg_t hsw_chicken_trans_reg(struct drm_i915_private *i915,
enum transcoder cpu_transcoder)
{ … }
static i915_reg_t
gen9_chicken_trans_reg_by_port(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static void intel_enable_ddi_hdmi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void intel_enable_ddi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void intel_disable_ddi_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_disable_ddi_hdmi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_disable_ddi(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
const struct drm_connector_state *old_conn_state)
{ … }
static void intel_ddi_update_pipe_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
void intel_ddi_update_pipe(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
void intel_ddi_update_active_dpll(struct intel_atomic_state *state,
struct intel_encoder *encoder,
struct intel_crtc *crtc)
{ … }
static void
intel_ddi_pre_pll_enable(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static void adlp_tbt_to_dp_alt_switch_wa(struct intel_encoder *encoder)
{ … }
static void mtl_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_prepare_link_retrain(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_set_link_train(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state,
u8 dp_train_pat)
{ … }
static void intel_ddi_set_idle_link_train(struct intel_dp *intel_dp,
const struct intel_crtc_state *crtc_state)
{ … }
static bool intel_ddi_is_audio_enabled(struct drm_i915_private *dev_priv,
enum transcoder cpu_transcoder)
{ … }
static int tgl_ddi_min_voltage_level(const struct intel_crtc_state *crtc_state)
{ … }
static int jsl_ddi_min_voltage_level(const struct intel_crtc_state *crtc_state)
{ … }
static int icl_ddi_min_voltage_level(const struct intel_crtc_state *crtc_state)
{ … }
void intel_ddi_compute_min_voltage_level(struct intel_crtc_state *crtc_state)
{ … }
static enum transcoder bdw_transcoder_master_readout(struct drm_i915_private *dev_priv,
enum transcoder cpu_transcoder)
{ … }
static void bdw_get_trans_port_sync_config(struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_read_func_ctl(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config)
{ … }
static void intel_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config)
{ … }
void intel_ddi_get_clock(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state,
struct intel_shared_dpll *pll)
{ … }
static void mtl_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void dg2_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void adls_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void rkl_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void dg1_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void icl_ddi_combo_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static bool icl_ddi_tc_pll_is_tbt(const struct intel_shared_dpll *pll)
{ … }
static enum icl_port_dpll_id
icl_ddi_tc_port_pll_type(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
enum icl_port_dpll_id
intel_ddi_port_pll_type(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static void icl_ddi_tc_get_clock(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state,
struct intel_shared_dpll *pll)
{ … }
static void icl_ddi_tc_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void bxt_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void skl_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
void hsw_ddi_get_config(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static void intel_ddi_sync_state(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state)
{ … }
static bool intel_ddi_initial_fastset_check(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state)
{ … }
static enum intel_output_type
intel_ddi_compute_output_type(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state,
struct drm_connector_state *conn_state)
{ … }
static int intel_ddi_compute_config(struct intel_encoder *encoder,
struct intel_crtc_state *pipe_config,
struct drm_connector_state *conn_state)
{ … }
static bool mode_equal(const struct drm_display_mode *mode1,
const struct drm_display_mode *mode2)
{ … }
static bool m_n_equal(const struct intel_link_m_n *m_n_1,
const struct intel_link_m_n *m_n_2)
{ … }
static bool crtcs_port_sync_compatible(const struct intel_crtc_state *crtc_state1,
const struct intel_crtc_state *crtc_state2)
{ … }
static u8
intel_ddi_port_sync_transcoders(const struct intel_crtc_state *ref_crtc_state,
int tile_group_id)
{ … }
static int intel_ddi_compute_config_late(struct intel_encoder *encoder,
struct intel_crtc_state *crtc_state,
struct drm_connector_state *conn_state)
{ … }
static void intel_ddi_encoder_destroy(struct drm_encoder *encoder)
{ … }
static void intel_ddi_encoder_reset(struct drm_encoder *encoder)
{ … }
static int intel_ddi_encoder_late_register(struct drm_encoder *_encoder)
{ … }
static const struct drm_encoder_funcs intel_ddi_funcs = …;
static struct intel_connector *
intel_ddi_init_dp_connector(struct intel_digital_port *dig_port)
{ … }
static int intel_hdmi_reset_link(struct intel_encoder *encoder,
struct drm_modeset_acquire_ctx *ctx)
{ … }
static void intel_ddi_link_check(struct intel_encoder *encoder)
{ … }
static enum intel_hotplug_state
intel_ddi_hotplug(struct intel_encoder *encoder,
struct intel_connector *connector)
{ … }
static bool lpt_digital_port_connected(struct intel_encoder *encoder)
{ … }
static bool hsw_digital_port_connected(struct intel_encoder *encoder)
{ … }
static bool bdw_digital_port_connected(struct intel_encoder *encoder)
{ … }
static struct intel_connector *
intel_ddi_init_hdmi_connector(struct intel_digital_port *dig_port)
{ … }
static bool intel_ddi_a_force_4_lanes(struct intel_digital_port *dig_port)
{ … }
static int
intel_ddi_max_lanes(struct intel_digital_port *dig_port)
{ … }
static enum hpd_pin xelpd_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin dg1_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin tgl_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin rkl_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin icl_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin ehl_hpd_pin(struct drm_i915_private *dev_priv,
enum port port)
{ … }
static enum hpd_pin skl_hpd_pin(struct drm_i915_private *dev_priv, enum port port)
{ … }
static bool intel_ddi_is_tc(struct drm_i915_private *i915, enum port port)
{ … }
static void intel_ddi_encoder_suspend(struct intel_encoder *encoder)
{ … }
static void intel_ddi_tc_encoder_suspend_complete(struct intel_encoder *encoder)
{ … }
static void intel_ddi_encoder_shutdown(struct intel_encoder *encoder)
{ … }
static void intel_ddi_tc_encoder_shutdown_complete(struct intel_encoder *encoder)
{ … }
#define port_tc_name(port) …
#define tc_port_name(tc_port) …
static bool port_strap_detected(struct drm_i915_private *i915, enum port port)
{ … }
static bool need_aux_ch(struct intel_encoder *encoder, bool init_dp)
{ … }
static bool assert_has_icl_dsi(struct drm_i915_private *i915)
{ … }
static bool port_in_use(struct drm_i915_private *i915, enum port port)
{ … }
void intel_ddi_init(struct intel_display *display,
const struct intel_bios_encoder_data *devdata)
{ … }