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

drm/i915/display: use drm_edid_is_digital()

parent 7218779e
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -657,21 +657,18 @@ static bool intel_crt_detect_ddc(struct drm_connector *connector)
	drm_edid = intel_crt_get_edid(connector, i2c);

	if (drm_edid) {
		const struct edid *edid = drm_edid_raw(drm_edid);
		bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL;

		/*
		 * This may be a DVI-I connector with a shared DDC
		 * link between analog and digital outputs, so we
		 * have to check the EDID input spec of the attached device.
		 */
		if (!is_digital) {
		if (drm_edid_is_digital(drm_edid)) {
			drm_dbg_kms(&dev_priv->drm,
				    "CRT detected via DDC:0x50 [EDID]\n");
			ret = true;
				    "CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
		} else {
			drm_dbg_kms(&dev_priv->drm,
				    "CRT not detected via DDC:0x50 [EDID reports a digital panel]\n");
				    "CRT detected via DDC:0x50 [EDID]\n");
			ret = true;
		}
	} else {
		drm_dbg_kms(&dev_priv->drm,
+4 −5
Original line number Diff line number Diff line
@@ -2455,7 +2455,6 @@ intel_hdmi_set_edid(struct drm_connector *connector)
	struct intel_hdmi *intel_hdmi = intel_attached_hdmi(to_intel_connector(connector));
	intel_wakeref_t wakeref;
	const struct drm_edid *drm_edid;
	const struct edid *edid;
	bool connected = false;
	struct i2c_adapter *i2c;

@@ -2478,9 +2477,7 @@ intel_hdmi_set_edid(struct drm_connector *connector)

	to_intel_connector(connector)->detect_edid = drm_edid;

	/* FIXME: Get rid of drm_edid_raw() */
	edid = drm_edid_raw(drm_edid);
	if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
	if (drm_edid_is_digital(drm_edid)) {
		intel_hdmi_dp_dual_mode_detect(connector);

		connected = true;
@@ -2488,7 +2485,9 @@ intel_hdmi_set_edid(struct drm_connector *connector)

	intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS, wakeref);

	cec_notifier_set_phys_addr_from_edid(intel_hdmi->cec_notifier, edid);
	/* FIXME: Get rid of drm_edid_raw() */
	cec_notifier_set_phys_addr_from_edid(intel_hdmi->cec_notifier,
					     drm_edid_raw(drm_edid));

	return connected;
}
+2 −5
Original line number Diff line number Diff line
@@ -2081,10 +2081,8 @@ intel_sdvo_tmds_sink_detect(struct drm_connector *connector)

	status = connector_status_unknown;
	if (drm_edid) {
		const struct edid *edid = drm_edid_raw(drm_edid);

		/* DDC bus is shared, match EDID to connector type */
		if (edid && edid->input & DRM_EDID_INPUT_DIGITAL)
		if (drm_edid_is_digital(drm_edid))
			status = connector_status_connected;
		else
			status = connector_status_disconnected;
@@ -2098,8 +2096,7 @@ static bool
intel_sdvo_connector_matches_edid(struct intel_sdvo_connector *sdvo,
				  const struct drm_edid *drm_edid)
{
	const struct edid *edid = drm_edid_raw(drm_edid);
	bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL);
	bool monitor_is_digital = drm_edid_is_digital(drm_edid);
	bool connector_is_digital = !!IS_DIGITAL(sdvo);

	DRM_DEBUG_KMS("connector_is_digital? %d, monitor_is_digital? %d\n",