diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-10-09 18:41:19 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-10-11 23:42:50 -0400 |
commit | 0549a061b545d232d12836f98c7c4965dd83f837 (patch) | |
tree | 4df2afb571446856c365841bfe2b26aa2619f47a | |
parent | de2103e452ec7f2db5db7c44279735688608381d (diff) |
drm/radeon/kms: also check for edid in lvds detect
In case the system has bad native mode info but
valid edid.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index da3a049e3640..17d5659cff03 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
@@ -398,8 +398,10 @@ static int radeon_lvds_mode_valid(struct drm_connector *connector, | |||
398 | 398 | ||
399 | static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector) | 399 | static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector) |
400 | { | 400 | { |
401 | enum drm_connector_status ret = connector_status_disconnected; | 401 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
402 | struct drm_encoder *encoder = radeon_best_single_encoder(connector); | 402 | struct drm_encoder *encoder = radeon_best_single_encoder(connector); |
403 | enum drm_connector_status ret = connector_status_disconnected; | ||
404 | bool dret; | ||
403 | 405 | ||
404 | if (encoder) { | 406 | if (encoder) { |
405 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 407 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
@@ -410,6 +412,15 @@ static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connec | |||
410 | ret = connector_status_connected; | 412 | ret = connector_status_connected; |
411 | 413 | ||
412 | } | 414 | } |
415 | |||
416 | /* check for edid as well */ | ||
417 | if (radeon_connector->ddc_bus) { | ||
418 | radeon_i2c_do_lock(radeon_connector, 1); | ||
419 | dret = radeon_ddc_probe(radeon_connector); | ||
420 | radeon_i2c_do_lock(radeon_connector, 0); | ||
421 | if (dret) | ||
422 | ret = connector_status_connected; | ||
423 | } | ||
413 | /* check acpi lid status ??? */ | 424 | /* check acpi lid status ??? */ |
414 | 425 | ||
415 | radeon_connector_update_scratch_regs(connector, ret); | 426 | radeon_connector_update_scratch_regs(connector, ret); |