Lines Matching refs:dig_port
48 struct intel_digital_port *dig_port;
90 static struct intel_tc_port *to_tc_port(struct intel_digital_port *dig_port)
92 return dig_port->tc;
97 return to_i915(tc->dig_port->base.base.dev);
100 static bool intel_tc_port_in_mode(struct intel_digital_port *dig_port,
103 struct intel_tc_port *tc = to_tc_port(dig_port);
105 return intel_encoder_is_tc(&dig_port->base) && tc->mode == mode;
108 bool intel_tc_port_in_tbt_alt_mode(struct intel_digital_port *dig_port)
110 return intel_tc_port_in_mode(dig_port, TC_PORT_TBT_ALT);
113 bool intel_tc_port_in_dp_alt_mode(struct intel_digital_port *dig_port)
115 return intel_tc_port_in_mode(dig_port, TC_PORT_DP_ALT);
118 bool intel_tc_port_in_legacy_mode(struct intel_digital_port *dig_port)
120 return intel_tc_port_in_mode(dig_port, TC_PORT_LEGACY);
123 bool intel_tc_port_handles_hpd_glitches(struct intel_digital_port *dig_port)
125 struct intel_tc_port *tc = to_tc_port(dig_port);
127 return intel_encoder_is_tc(&dig_port->base) && !tc->legacy_port;
178 bool intel_tc_cold_requires_aux_pw(struct intel_digital_port *dig_port)
180 struct intel_display *display = to_intel_display(dig_port);
181 struct intel_tc_port *tc = to_tc_port(dig_port);
184 intel_display_power_legacy_aux_domain(display, dig_port->aux_ch);
190 struct intel_display *display = to_intel_display(tc->dig_port);
214 struct intel_display *display = to_intel_display(tc->dig_port);
233 struct intel_display *display = to_intel_display(tc->dig_port);
242 struct intel_display *display = to_intel_display(tc->dig_port);
253 enum tc_port tc_port = intel_encoder_to_tc(&tc->dig_port->base);
261 struct intel_display *display = to_intel_display(tc->dig_port);
267 static u32 intel_tc_port_get_lane_mask(struct intel_digital_port *dig_port)
269 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
270 struct intel_tc_port *tc = to_tc_port(dig_port);
282 u32 intel_tc_port_get_pin_assignment_mask(struct intel_digital_port *dig_port)
284 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
285 struct intel_tc_port *tc = to_tc_port(dig_port);
297 static int lnl_tc_port_get_max_lane_count(struct intel_digital_port *dig_port)
299 struct intel_display *display = to_intel_display(dig_port);
300 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
301 enum tc_port tc_port = intel_encoder_to_tc(&dig_port->base);
323 static int mtl_tc_port_get_max_lane_count(struct intel_digital_port *dig_port)
325 struct intel_display *display = to_intel_display(dig_port);
330 pin_mask = intel_tc_port_get_pin_assignment_mask(dig_port);
344 static int intel_tc_port_get_max_lane_count(struct intel_digital_port *dig_port)
346 struct intel_display *display = to_intel_display(dig_port);
351 lane_mask = intel_tc_port_get_lane_mask(dig_port);
370 int intel_tc_port_max_lane_count(struct intel_digital_port *dig_port)
372 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
373 struct intel_tc_port *tc = to_tc_port(dig_port);
375 if (!intel_encoder_is_tc(&dig_port->base) || tc->mode != TC_PORT_DP_ALT)
381 return lnl_tc_port_get_max_lane_count(dig_port);
384 return mtl_tc_port_get_max_lane_count(dig_port);
386 return intel_tc_port_get_max_lane_count(dig_port);
389 void intel_tc_port_set_fia_lane_count(struct intel_digital_port *dig_port,
392 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
393 struct intel_tc_port *tc = to_tc_port(dig_port);
394 bool lane_reversal = dig_port->lane_reversal;
459 enum tc_port tc_port = intel_encoder_to_tc(&tc->dig_port->base);
481 struct intel_display *display = to_intel_display(tc->dig_port);
482 struct intel_digital_port *dig_port = tc->dig_port;
485 return intel_display_power_legacy_aux_domain(display, dig_port->aux_ch);
492 struct intel_display *display = to_intel_display(tc->dig_port);
494 struct intel_digital_port *dig_port = tc->dig_port;
495 u32 isr_bit = i915->display.hotplug.pch_hpd[dig_port->base.hpd_pin];
623 struct intel_digital_port *dig_port = tc->dig_port;
626 max_lanes = intel_tc_port_max_lane_count(dig_port);
735 struct intel_display *display = to_intel_display(tc->dig_port);
766 struct intel_display *display = to_intel_display(tc->dig_port);
767 struct intel_digital_port *dig_port = tc->dig_port;
770 return intel_display_power_legacy_aux_domain(display, dig_port->aux_ch);
777 struct intel_display *display = to_intel_display(tc->dig_port);
779 struct intel_digital_port *dig_port = tc->dig_port;
780 enum hpd_pin hpd_pin = dig_port->base.hpd_pin;
814 enum tc_port tc_port = intel_encoder_to_tc(&tc->dig_port->base);
834 enum port port = tc->dig_port->base.port;
847 enum port port = tc->dig_port->base.port;
858 struct intel_display *display = to_intel_display(tc->dig_port);
874 struct intel_display *display = to_intel_display(tc->dig_port);
922 struct intel_display *display = to_intel_display(tc->dig_port);
967 struct intel_display *display = to_intel_display(tc->dig_port);
969 struct intel_digital_port *dig_port = tc->dig_port;
970 enum hpd_pin hpd_pin = dig_port->base.hpd_pin;
998 enum port port = tc->dig_port->base.port;
1052 struct intel_display *display = to_intel_display(tc->dig_port);
1053 enum port port = tc->dig_port->base.port;
1100 enum port port = tc->dig_port->base.port;
1117 enum port port = tc->dig_port->base.port;
1249 struct intel_encoder *encoder = &tc->dig_port->base;
1445 struct intel_display *display = to_intel_display(tc->dig_port);
1446 struct intel_digital_port *dig_port = tc->dig_port;
1450 if (!intel_tc_cold_requires_aux_pw(dig_port)) {
1454 aux_domain = intel_aux_power_domain(dig_port);
1495 struct intel_digital_port *dig_port = tc->dig_port;
1499 return intel_de_read(i915, DDI_BUF_CTL(dig_port->base.port)) &
1505 * @dig_port: digital port
1507 * Read out the HW state and initialize the TypeC mode of @dig_port. The mode
1510 void intel_tc_port_init_mode(struct intel_digital_port *dig_port)
1512 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
1513 struct intel_tc_port *tc = to_tc_port(dig_port);
1563 struct intel_digital_port *dig_port = tc->dig_port;
1567 if (dig_port->dp.is_mst) {
1569 active_links = intel_dp_mst_encoder_active_links(dig_port);
1571 pll_type = intel_ddi_port_pll_type(&dig_port->base, crtc_state);
1585 * @dig_port: digital port
1586 * @crtc_state: atomic state of CRTC connected to @dig_port
1588 * Sanitize @dig_port's TypeC mode wrt. the encoder's state right after driver
1593 * @crtc_state is valid if @dig_port is enabled, NULL otherwise.
1595 void intel_tc_port_sanitize_mode(struct intel_digital_port *dig_port,
1598 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
1599 struct intel_tc_port *tc = to_tc_port(dig_port);
1640 struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
1641 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
1642 struct intel_tc_port *tc = to_tc_port(dig_port);
1645 drm_WARN_ON(&i915->drm, !intel_tc_port_ref_held(dig_port));
1668 bool intel_tc_port_link_needs_reset(struct intel_digital_port *dig_port)
1670 if (!intel_encoder_is_tc(&dig_port->base))
1673 return __intel_tc_port_link_needs_reset(to_tc_port(dig_port));
1681 struct intel_digital_port *dig_port = tc->dig_port;
1682 struct intel_dp *intel_dp = enc_to_intel_dp(&dig_port->base);
1758 bool intel_tc_port_link_reset(struct intel_digital_port *dig_port)
1760 if (!intel_tc_port_link_needs_reset(dig_port))
1764 &to_tc_port(dig_port)->link_reset_work,
1770 void intel_tc_port_link_cancel_reset_work(struct intel_digital_port *dig_port)
1772 struct intel_tc_port *tc = to_tc_port(dig_port);
1774 if (!intel_encoder_is_tc(&dig_port->base))
1798 void intel_tc_port_lock(struct intel_digital_port *dig_port)
1800 __intel_tc_port_lock(to_tc_port(dig_port), 1);
1823 * @dig_port: digital port
1827 static void intel_tc_port_flush_work(struct intel_digital_port *dig_port)
1829 flush_delayed_work(&to_tc_port(dig_port)->disconnect_phy_work);
1832 void intel_tc_port_suspend(struct intel_digital_port *dig_port)
1834 struct intel_tc_port *tc = to_tc_port(dig_port);
1837 intel_tc_port_flush_work(dig_port);
1840 void intel_tc_port_unlock(struct intel_digital_port *dig_port)
1842 struct intel_tc_port *tc = to_tc_port(dig_port);
1851 bool intel_tc_port_ref_held(struct intel_digital_port *dig_port)
1853 struct intel_tc_port *tc = to_tc_port(dig_port);
1859 void intel_tc_port_get_link(struct intel_digital_port *dig_port,
1862 struct intel_tc_port *tc = to_tc_port(dig_port);
1866 intel_tc_port_unlock(dig_port);
1869 void intel_tc_port_put_link(struct intel_digital_port *dig_port)
1871 struct intel_tc_port *tc = to_tc_port(dig_port);
1873 intel_tc_port_lock(dig_port);
1875 intel_tc_port_unlock(dig_port);
1883 intel_tc_port_flush_work(dig_port);
1886 int intel_tc_port_init(struct intel_digital_port *dig_port, bool is_legacy)
1888 struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
1890 enum port port = dig_port->base.port;
1891 enum tc_port tc_port = intel_encoder_to_tc(&dig_port->base);
1900 dig_port->tc = tc;
1901 tc->dig_port = dig_port;
1929 intel_tc_port_init_mode(dig_port);
1934 void intel_tc_port_cleanup(struct intel_digital_port *dig_port)
1936 intel_tc_port_suspend(dig_port);
1938 kfree(dig_port->tc->port_name);
1939 kfree(dig_port->tc);
1940 dig_port->tc = NULL;