Commit 8d2ba05b authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/bios: split ddi port parsing and debug printing



Split ddi port parsing and debug printing to clarify the functional
parts of parse_ddi_port(), which are quite small nowadays.

Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/34e0dd92b7f7e9076df1f01b542347e599ec6653.1654870175.git.jani.nikula@intel.com
parent c78783f3
Loading
Loading
Loading
Loading
+37 −28
Original line number Original line Diff line number Diff line
@@ -2560,33 +2560,13 @@ static bool is_port_valid(struct drm_i915_private *i915, enum port port)
	return true;
	return true;
}
}


static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
static void print_ddi_port(const struct intel_bios_encoder_data *devdata,
			   enum port port)
{
{
	struct drm_i915_private *i915 = devdata->i915;
	struct drm_i915_private *i915 = devdata->i915;
	const struct child_device_config *child = &devdata->child;
	const struct child_device_config *child = &devdata->child;
	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
	int dp_boost_level, dp_max_link_rate, hdmi_boost_level, hdmi_level_shift, max_tmds_clock;
	int dp_boost_level, dp_max_link_rate, hdmi_boost_level, hdmi_level_shift, max_tmds_clock;
	enum port port;

	port = dvo_port_to_port(i915, child->dvo_port);
	if (port == PORT_NONE)
		return;

	if (!is_port_valid(i915, port)) {
		drm_dbg_kms(&i915->drm,
			    "VBT reports port %c as supported, but that can't be true: skipping\n",
			    port_name(port));
		return;
	}

	if (i915->vbt.ports[port]) {
		drm_dbg_kms(&i915->drm,
			    "More than one child device for port %c in VBT, using the first.\n",
			    port_name(port));
		return;
	}

	sanitize_device_type(devdata, port);


	is_dvi = intel_bios_encoder_supports_dvi(devdata);
	is_dvi = intel_bios_encoder_supports_dvi(devdata);
	is_dp = intel_bios_encoder_supports_dp(devdata);
	is_dp = intel_bios_encoder_supports_dp(devdata);
@@ -2604,12 +2584,6 @@ static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
		    supports_typec_usb, supports_tbt,
		    supports_typec_usb, supports_tbt,
		    devdata->dsc != NULL);
		    devdata->dsc != NULL);


	if (is_dvi)
		sanitize_ddc_pin(devdata, port);

	if (is_dp)
		sanitize_aux_ch(devdata, port);

	hdmi_level_shift = _intel_bios_hdmi_level_shift(devdata);
	hdmi_level_shift = _intel_bios_hdmi_level_shift(devdata);
	if (hdmi_level_shift >= 0) {
	if (hdmi_level_shift >= 0) {
		drm_dbg_kms(&i915->drm,
		drm_dbg_kms(&i915->drm,
@@ -2641,6 +2615,41 @@ static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
		drm_dbg_kms(&i915->drm,
		drm_dbg_kms(&i915->drm,
			    "Port %c VBT DP max link rate: %d\n",
			    "Port %c VBT DP max link rate: %d\n",
			    port_name(port), dp_max_link_rate);
			    port_name(port), dp_max_link_rate);
}

static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
{
	struct drm_i915_private *i915 = devdata->i915;
	const struct child_device_config *child = &devdata->child;
	enum port port;

	port = dvo_port_to_port(i915, child->dvo_port);
	if (port == PORT_NONE)
		return;

	if (!is_port_valid(i915, port)) {
		drm_dbg_kms(&i915->drm,
			    "VBT reports port %c as supported, but that can't be true: skipping\n",
			    port_name(port));
		return;
	}

	if (i915->vbt.ports[port]) {
		drm_dbg_kms(&i915->drm,
			    "More than one child device for port %c in VBT, using the first.\n",
			    port_name(port));
		return;
	}

	sanitize_device_type(devdata, port);

	print_ddi_port(devdata, port);

	if (intel_bios_encoder_supports_dvi(devdata))
		sanitize_ddc_pin(devdata, port);

	if (intel_bios_encoder_supports_dp(devdata))
		sanitize_aux_ch(devdata, port);


	i915->vbt.ports[port] = devdata;
	i915->vbt.ports[port] = devdata;
}
}