Lines Matching full:encoder

77 static void wait_for_cmds_dispatched_to_panel(struct intel_encoder *encoder)  in wait_for_cmds_dispatched_to_panel()  argument
79 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in wait_for_cmds_dispatched_to_panel()
80 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in wait_for_cmds_dispatched_to_panel()
208 static void dsi_program_swing_and_deemphasis(struct intel_encoder *encoder) in dsi_program_swing_and_deemphasis() argument
210 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in dsi_program_swing_and_deemphasis()
211 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in dsi_program_swing_and_deemphasis()
274 static void configure_dual_link_mode(struct intel_encoder *encoder, in configure_dual_link_mode() argument
277 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in configure_dual_link_mode()
278 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in configure_dual_link_mode()
315 static int afe_clk(struct intel_encoder *encoder, in afe_clk() argument
318 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in afe_clk()
329 static void gen11_dsi_program_esc_clk_div(struct intel_encoder *encoder, in gen11_dsi_program_esc_clk_div() argument
332 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_program_esc_clk_div()
333 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_program_esc_clk_div()
338 afe_clk_khz = afe_clk(encoder, crtc_state); in gen11_dsi_program_esc_clk_div()
369 static void gen11_dsi_enable_io_power(struct intel_encoder *encoder) in gen11_dsi_enable_io_power() argument
371 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_enable_io_power()
372 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_enable_io_power()
385 static void gen11_dsi_power_up_lanes(struct intel_encoder *encoder) in gen11_dsi_power_up_lanes() argument
387 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_power_up_lanes()
388 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_power_up_lanes()
396 static void gen11_dsi_config_phy_lanes_sequence(struct intel_encoder *encoder) in gen11_dsi_config_phy_lanes_sequence() argument
398 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_config_phy_lanes_sequence()
399 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_config_phy_lanes_sequence()
451 static void gen11_dsi_voltage_swing_program_seq(struct intel_encoder *encoder) in gen11_dsi_voltage_swing_program_seq() argument
453 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_voltage_swing_program_seq()
454 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_voltage_swing_program_seq()
490 dsi_program_swing_and_deemphasis(encoder); in gen11_dsi_voltage_swing_program_seq()
503 static void gen11_dsi_enable_ddi_buffer(struct intel_encoder *encoder) in gen11_dsi_enable_ddi_buffer() argument
505 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_enable_ddi_buffer()
506 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_enable_ddi_buffer()
524 gen11_dsi_setup_dphy_timings(struct intel_encoder *encoder, in gen11_dsi_setup_dphy_timings() argument
527 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_setup_dphy_timings()
528 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_setup_dphy_timings()
568 if (afe_clk(encoder, crtc_state) <= 800000) { in gen11_dsi_setup_dphy_timings()
598 static void gen11_dsi_gate_clocks(struct intel_encoder *encoder) in gen11_dsi_gate_clocks() argument
600 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_gate_clocks()
601 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_gate_clocks()
614 static void gen11_dsi_ungate_clocks(struct intel_encoder *encoder) in gen11_dsi_ungate_clocks() argument
616 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_ungate_clocks()
617 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_ungate_clocks()
630 static void gen11_dsi_map_pll(struct intel_encoder *encoder, in gen11_dsi_map_pll() argument
633 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_map_pll()
634 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_map_pll()
662 gen11_dsi_configure_transcoder(struct intel_encoder *encoder, in gen11_dsi_configure_transcoder() argument
665 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_configure_transcoder()
666 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_configure_transcoder()
683 if (afe_clk(encoder, pipe_config) >= 1500 * 1000) { in gen11_dsi_configure_transcoder()
779 configure_dual_link_mode(encoder, pipe_config); in gen11_dsi_configure_transcoder()
825 gen11_dsi_set_transcoder_timings(struct intel_encoder *encoder, in gen11_dsi_set_transcoder_timings() argument
828 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_set_transcoder_timings()
829 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_set_transcoder_timings()
878 byte_clk_period_ns = 1000000 / afe_clk(encoder, crtc_state); in gen11_dsi_set_transcoder_timings()
986 static void gen11_dsi_enable_transcoder(struct intel_encoder *encoder) in gen11_dsi_enable_transcoder() argument
988 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_enable_transcoder()
989 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_enable_transcoder()
1008 static void gen11_dsi_setup_timeouts(struct intel_encoder *encoder, in gen11_dsi_setup_timeouts() argument
1011 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_setup_timeouts()
1012 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_setup_timeouts()
1024 divisor = intel_dsi_tlpx_ns(intel_dsi) * afe_clk(encoder, crtc_state) * 1000; in gen11_dsi_setup_timeouts()
1058 static void gen11_dsi_config_util_pin(struct intel_encoder *encoder, in gen11_dsi_config_util_pin() argument
1061 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_config_util_pin()
1062 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_config_util_pin()
1085 gen11_dsi_enable_port_and_phy(struct intel_encoder *encoder, in gen11_dsi_enable_port_and_phy() argument
1088 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_enable_port_and_phy()
1091 gen11_dsi_power_up_lanes(encoder); in gen11_dsi_enable_port_and_phy()
1094 gen11_dsi_config_phy_lanes_sequence(encoder); in gen11_dsi_enable_port_and_phy()
1097 gen11_dsi_voltage_swing_program_seq(encoder); in gen11_dsi_enable_port_and_phy()
1100 gen11_dsi_enable_ddi_buffer(encoder); in gen11_dsi_enable_port_and_phy()
1103 gen11_dsi_setup_dphy_timings(encoder, crtc_state); in gen11_dsi_enable_port_and_phy()
1106 gen11_dsi_config_util_pin(encoder, true); in gen11_dsi_enable_port_and_phy()
1109 gen11_dsi_setup_timeouts(encoder, crtc_state); in gen11_dsi_enable_port_and_phy()
1112 gen11_dsi_configure_transcoder(encoder, crtc_state); in gen11_dsi_enable_port_and_phy()
1116 gen11_dsi_gate_clocks(encoder); in gen11_dsi_enable_port_and_phy()
1119 static void gen11_dsi_powerup_panel(struct intel_encoder *encoder) in gen11_dsi_powerup_panel() argument
1121 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_powerup_panel()
1122 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_powerup_panel()
1156 wait_for_cmds_dispatched_to_panel(encoder); in gen11_dsi_powerup_panel()
1160 struct intel_encoder *encoder, in gen11_dsi_pre_pll_enable() argument
1165 gen11_dsi_enable_io_power(encoder); in gen11_dsi_pre_pll_enable()
1168 gen11_dsi_program_esc_clk_div(encoder, crtc_state); in gen11_dsi_pre_pll_enable()
1172 struct intel_encoder *encoder, in gen11_dsi_pre_enable() argument
1177 gen11_dsi_map_pll(encoder, pipe_config); in gen11_dsi_pre_enable()
1180 gen11_dsi_enable_port_and_phy(encoder, pipe_config); in gen11_dsi_pre_enable()
1183 gen11_dsi_powerup_panel(encoder); in gen11_dsi_pre_enable()
1185 intel_dsc_enable(encoder, pipe_config); in gen11_dsi_pre_enable()
1188 gen11_dsi_set_transcoder_timings(encoder, pipe_config); in gen11_dsi_pre_enable()
1192 struct intel_encoder *encoder, in gen11_dsi_enable() argument
1196 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_enable()
1201 gen11_dsi_enable_transcoder(encoder); in gen11_dsi_enable()
1210 static void gen11_dsi_disable_transcoder(struct intel_encoder *encoder) in gen11_dsi_disable_transcoder() argument
1212 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_disable_transcoder()
1213 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_disable_transcoder()
1234 static void gen11_dsi_powerdown_panel(struct intel_encoder *encoder) in gen11_dsi_powerdown_panel() argument
1236 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_powerdown_panel()
1243 wait_for_cmds_dispatched_to_panel(encoder); in gen11_dsi_powerdown_panel()
1246 static void gen11_dsi_deconfigure_trancoder(struct intel_encoder *encoder) in gen11_dsi_deconfigure_trancoder() argument
1248 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_deconfigure_trancoder()
1249 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_deconfigure_trancoder()
1298 static void gen11_dsi_disable_port(struct intel_encoder *encoder) in gen11_dsi_disable_port() argument
1300 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_disable_port()
1301 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_disable_port()
1305 gen11_dsi_ungate_clocks(encoder); in gen11_dsi_disable_port()
1318 gen11_dsi_gate_clocks(encoder); in gen11_dsi_disable_port()
1321 static void gen11_dsi_disable_io_power(struct intel_encoder *encoder) in gen11_dsi_disable_io_power() argument
1323 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_disable_io_power()
1324 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_disable_io_power()
1348 struct intel_encoder *encoder, in gen11_dsi_disable() argument
1352 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_disable()
1359 gen11_dsi_disable_transcoder(encoder); in gen11_dsi_disable()
1362 gen11_dsi_powerdown_panel(encoder); in gen11_dsi_disable()
1365 gen11_dsi_deconfigure_trancoder(encoder); in gen11_dsi_disable()
1368 gen11_dsi_disable_port(encoder); in gen11_dsi_disable()
1370 gen11_dsi_config_util_pin(encoder, false); in gen11_dsi_disable()
1373 gen11_dsi_disable_io_power(encoder); in gen11_dsi_disable()
1377 struct intel_encoder *encoder, in gen11_dsi_post_disable() argument
1395 static void gen11_dsi_get_timings(struct intel_encoder *encoder, in gen11_dsi_get_timings() argument
1398 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_get_timings()
1450 static void gen11_dsi_get_config(struct intel_encoder *encoder, in gen11_dsi_get_config() argument
1453 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in gen11_dsi_get_config()
1455 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_get_config()
1457 intel_dsc_get_config(encoder, pipe_config); in gen11_dsi_get_config()
1467 gen11_dsi_get_timings(encoder, pipe_config); in gen11_dsi_get_config()
1475 static int gen11_dsi_dsc_compute_config(struct intel_encoder *encoder, in gen11_dsi_dsc_compute_config() argument
1478 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_dsc_compute_config()
1484 use_dsc = intel_bios_get_dsc_params(encoder, crtc_state, dsc_max_bpc); in gen11_dsi_dsc_compute_config()
1497 ret = intel_dsc_compute_params(encoder, crtc_state); in gen11_dsi_dsc_compute_config()
1519 static int gen11_dsi_compute_config(struct intel_encoder *encoder, in gen11_dsi_compute_config() argument
1523 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in gen11_dsi_compute_config()
1524 struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi, in gen11_dsi_compute_config()
1555 if (gen11_dsi_dsc_compute_config(encoder, pipe_config)) in gen11_dsi_compute_config()
1558 pipe_config->port_clock = afe_clk(encoder, pipe_config) / 5; in gen11_dsi_compute_config()
1581 static void gen11_dsi_get_power_domains(struct intel_encoder *encoder, in gen11_dsi_get_power_domains() argument
1584 struct drm_i915_private *i915 = to_i915(encoder->base.dev); in gen11_dsi_get_power_domains()
1587 enc_to_intel_dsi(encoder)); in gen11_dsi_get_power_domains()
1594 static bool gen11_dsi_get_hw_state(struct intel_encoder *encoder, in gen11_dsi_get_hw_state() argument
1597 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); in gen11_dsi_get_hw_state()
1598 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in gen11_dsi_get_hw_state()
1606 encoder->power_domain); in gen11_dsi_get_hw_state()
1635 intel_display_power_put(dev_priv, encoder->power_domain, wakeref); in gen11_dsi_get_hw_state()
1639 static void gen11_dsi_encoder_destroy(struct drm_encoder *encoder) in gen11_dsi_encoder_destroy() argument
1641 intel_encoder_destroy(encoder); in gen11_dsi_encoder_destroy()
1857 struct intel_encoder *encoder; in icl_dsi_init() local
1876 encoder = &intel_dsi->base; in icl_dsi_init()
1880 /* register DSI encoder with DRM subsystem */ in icl_dsi_init()
1881 drm_encoder_init(dev, &encoder->base, &gen11_dsi_encoder_funcs, in icl_dsi_init()
1884 encoder->pre_pll_enable = gen11_dsi_pre_pll_enable; in icl_dsi_init()
1885 encoder->pre_enable = gen11_dsi_pre_enable; in icl_dsi_init()
1886 encoder->enable = gen11_dsi_enable; in icl_dsi_init()
1887 encoder->disable = gen11_dsi_disable; in icl_dsi_init()
1888 encoder->post_disable = gen11_dsi_post_disable; in icl_dsi_init()
1889 encoder->port = port; in icl_dsi_init()
1890 encoder->get_config = gen11_dsi_get_config; in icl_dsi_init()
1891 encoder->update_pipe = intel_panel_update_backlight; in icl_dsi_init()
1892 encoder->compute_config = gen11_dsi_compute_config; in icl_dsi_init()
1893 encoder->get_hw_state = gen11_dsi_get_hw_state; in icl_dsi_init()
1894 encoder->type = INTEL_OUTPUT_DSI; in icl_dsi_init()
1895 encoder->cloneable = 0; in icl_dsi_init()
1896 encoder->pipe_mask = ~0; in icl_dsi_init()
1897 encoder->power_domain = POWER_DOMAIN_PORT_DSI; in icl_dsi_init()
1898 encoder->get_power_domains = gen11_dsi_get_power_domains; in icl_dsi_init()
1909 /* attach connector to encoder */ in icl_dsi_init()
1910 intel_connector_attach_encoder(intel_connector, encoder); in icl_dsi_init()
1954 drm_encoder_cleanup(&encoder->base); in icl_dsi_init()