Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fa05c98 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: fix DP detect



only return connected if there is actually a
monitor connected.

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent e8696330
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -440,7 +440,7 @@ u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector)
					 dig_connector->dp_i2c_bus->rec.i2c_id, 0);
}

void radeon_dp_getdpcd(struct radeon_connector *radeon_connector)
bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector)
{
	struct radeon_connector_atom_dig *dig_connector = radeon_connector->con_priv;
	u8 msg[25];
@@ -456,10 +456,10 @@ void radeon_dp_getdpcd(struct radeon_connector *radeon_connector)
				printk("%02x ", msg[i]);
			printk("\n");
		}
		return;
		return true;
	}
	dig_connector->dpcd[0] = 0;
	return;
	return false;
}

void radeon_dp_set_link_config(struct drm_connector *connector,
+4 −3
Original line number Diff line number Diff line
@@ -936,9 +936,10 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto

	sink_type = radeon_dp_getsinktype(radeon_connector);
	if (sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
		radeon_dp_getdpcd(radeon_connector);
		if (radeon_dp_getdpcd(radeon_connector)) {
			radeon_dig_connector->dp_sink_type = sink_type;
			ret = connector_status_connected;
		}
	} else {
		radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
		if (radeon_ddc_probe(radeon_connector)) {
+2 −4
Original line number Diff line number Diff line
@@ -339,10 +339,8 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)

	if (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) {
		struct radeon_connector_atom_dig *dig = radeon_connector->con_priv;
		if (dig->dp_i2c_bus) {
		if (dig->dp_i2c_bus)
			radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter);
			DRM_INFO("got edid %p from DP\n", radeon_connector->edid);
		}
	}
	if (!radeon_connector->ddc_bus)
		return -1;
+1 −1
Original line number Diff line number Diff line
@@ -375,7 +375,7 @@ extern void radeon_dp_set_link_config(struct drm_connector *connector,
extern void dp_link_train(struct drm_encoder *encoder,
			  struct drm_connector *connector);
extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
extern void radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
extern void atombios_dig_transmitter_setup(struct drm_encoder *encoder,
					   int action, uint8_t lane_num,
					   uint8_t lane_set);