summaryrefslogtreecommitdiff
path: root/linux-core/radeon_connectors.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2008-09-18 10:13:30 +1000
committerDave Airlie <airlied@linux.ie>2008-09-18 10:13:30 +1000
commit0e384803c5f2528735e43b8d30f90ea82f6b3f47 (patch)
treebace4746d822f8f7ab35776988345c1a67a8e877 /linux-core/radeon_connectors.c
parent8f23d4a44cdb17abff8f1ab3585e533ae0572224 (diff)
radeon: don't do full edid for detection purposes
Diffstat (limited to 'linux-core/radeon_connectors.c')
-rw-r--r--linux-core/radeon_connectors.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/linux-core/radeon_connectors.c b/linux-core/radeon_connectors.c
index 5ce66d72..f217fe77 100644
--- a/linux-core/radeon_connectors.c
+++ b/linux-core/radeon_connectors.c
@@ -163,18 +163,16 @@ static int radeon_vga_mode_valid(struct drm_connector *connector,
static enum drm_connector_status radeon_vga_detect(struct drm_connector *connector)
{
- struct edid *edid;
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
struct drm_encoder *encoder;
struct drm_encoder_helper_funcs *encoder_funcs;
+ bool ret;
radeon_i2c_do_lock(radeon_connector, 1);
- edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
+ ret = radeon_ddc_probe(radeon_connector);
radeon_i2c_do_lock(radeon_connector, 0);
- if (edid) {
- kfree(edid);
+ if (ret)
return connector_status_connected;
- }
/* if EDID fails to a load detect */
encoder = radeon_best_single_encoder(connector);
@@ -200,27 +198,19 @@ struct drm_connector_funcs radeon_vga_connector_funcs = {
static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connector)
{
- struct edid *edid;
struct radeon_connector *radeon_connector = to_radeon_connector(connector);
struct drm_encoder *encoder;
struct drm_encoder_helper_funcs *encoder_funcs;
struct drm_mode_object *obj;
int i;
enum drm_connector_status ret;
+ bool dret;
radeon_i2c_do_lock(radeon_connector, 1);
- edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
+ dret = radeon_ddc_probe(radeon_connector);
radeon_i2c_do_lock(radeon_connector, 0);
- if (edid) {
- /* if the monitor is digital - set the bits */
- if (edid->digital)
- radeon_connector->use_digital = 1;
- else
- radeon_connector->use_digital = 0;
-
- kfree(edid);
+ if (dret)
return connector_status_connected;
- }
for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
if (connector->encoder_ids[i] == 0)