diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-10-09 18:41:19 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-10-12 13:42:50 +1000 |
commit | 0549a061b545d232d12836f98c7c4965dd83f837 (patch) | |
tree | 4df2afb571446856c365841bfe2b26aa2619f47a /drivers | |
parent | de2103e452ec7f2db5db7c44279735688608381d (diff) | |
download | op-kernel-dev-0549a061b545d232d12836f98c7c4965dd83f837.zip op-kernel-dev-0549a061b545d232d12836f98c7c4965dd83f837.tar.gz |
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>
Diffstat (limited to 'drivers')
-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 da3a049..17d5659 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, static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector) { - enum drm_connector_status ret = connector_status_disconnected; + struct radeon_connector *radeon_connector = to_radeon_connector(connector); struct drm_encoder *encoder = radeon_best_single_encoder(connector); + enum drm_connector_status ret = connector_status_disconnected; + bool dret; if (encoder) { 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 ret = connector_status_connected; } + + /* check for edid as well */ + if (radeon_connector->ddc_bus) { + radeon_i2c_do_lock(radeon_connector, 1); + dret = radeon_ddc_probe(radeon_connector); + radeon_i2c_do_lock(radeon_connector, 0); + if (dret) + ret = connector_status_connected; + } /* check acpi lid status ??? */ radeon_connector_update_scratch_regs(connector, ret); |