Commit c5faae5a authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/bios: add intel_bios_port_supports_*()

parent 17004bfb
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -2606,3 +2606,29 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)

	return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
}

bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port)
{
	return i915->vbt.ddi_port_info[port].supports_dvi;
}

bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port)
{
	return i915->vbt.ddi_port_info[port].supports_hdmi;
}

bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port)
{
	return i915->vbt.ddi_port_info[port].supports_dp;
}

bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
					enum port port)
{
	return i915->vbt.ddi_port_info[port].supports_typec_usb;
}

bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
{
	return i915->vbt.ddi_port_info[port].supports_tbt;
}
+5 −0
Original line number Diff line number Diff line
@@ -253,5 +253,10 @@ int intel_bios_dp_boost_level(struct intel_encoder *encoder);
int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port);
bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port);
bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port);
bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port);

#endif /* _INTEL_BIOS_H_ */
+6 −6
Original line number Diff line number Diff line
@@ -4780,15 +4780,14 @@ intel_ddi_max_lanes(struct intel_digital_port *intel_dport)

void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
{
	struct ddi_vbt_port_info *port_info =
		&dev_priv->vbt.ddi_port_info[port];
	struct intel_digital_port *intel_dig_port;
	struct intel_encoder *encoder;
	bool init_hdmi, init_dp, init_lspcon = false;
	enum phy phy = intel_port_to_phy(dev_priv, port);

	init_hdmi = port_info->supports_dvi || port_info->supports_hdmi;
	init_dp = port_info->supports_dp;
	init_hdmi = intel_bios_port_supports_dvi(dev_priv, port) ||
		intel_bios_port_supports_hdmi(dev_priv, port);
	init_dp = intel_bios_port_supports_dp(dev_priv, port);

	if (intel_bios_is_lspcon_present(dev_priv, port)) {
		/*
@@ -4849,8 +4848,9 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
	intel_dig_port->aux_ch = intel_bios_port_aux_ch(dev_priv, port);

	if (intel_phy_is_tc(dev_priv, phy)) {
		bool is_legacy = !port_info->supports_typec_usb &&
				 !port_info->supports_tbt;
		bool is_legacy =
			!intel_bios_port_supports_typec_usb(dev_priv, port) &&
			!intel_bios_port_supports_tbt(dev_priv, port);

		intel_tc_port_init(intel_dig_port, is_legacy);