diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_connectors.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 65f81942f399..ee0083f982d8 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
@@ -479,10 +479,8 @@ static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connec | |||
479 | ret = connector_status_connected; | 479 | ret = connector_status_connected; |
480 | else { | 480 | else { |
481 | if (radeon_connector->ddc_bus) { | 481 | if (radeon_connector->ddc_bus) { |
482 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
483 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, | 482 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, |
484 | &radeon_connector->ddc_bus->adapter); | 483 | &radeon_connector->ddc_bus->adapter); |
485 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
486 | if (radeon_connector->edid) | 484 | if (radeon_connector->edid) |
487 | ret = connector_status_connected; | 485 | ret = connector_status_connected; |
488 | } | 486 | } |
@@ -587,19 +585,14 @@ static enum drm_connector_status radeon_vga_detect(struct drm_connector *connect | |||
587 | if (!encoder) | 585 | if (!encoder) |
588 | ret = connector_status_disconnected; | 586 | ret = connector_status_disconnected; |
589 | 587 | ||
590 | if (radeon_connector->ddc_bus) { | 588 | if (radeon_connector->ddc_bus) |
591 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
592 | dret = radeon_ddc_probe(radeon_connector); | 589 | dret = radeon_ddc_probe(radeon_connector); |
593 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
594 | } | ||
595 | if (dret) { | 590 | if (dret) { |
596 | if (radeon_connector->edid) { | 591 | if (radeon_connector->edid) { |
597 | kfree(radeon_connector->edid); | 592 | kfree(radeon_connector->edid); |
598 | radeon_connector->edid = NULL; | 593 | radeon_connector->edid = NULL; |
599 | } | 594 | } |
600 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
601 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); | 595 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); |
602 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
603 | 596 | ||
604 | if (!radeon_connector->edid) { | 597 | if (!radeon_connector->edid) { |
605 | DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", | 598 | DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", |
@@ -744,19 +737,14 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect | |||
744 | enum drm_connector_status ret = connector_status_disconnected; | 737 | enum drm_connector_status ret = connector_status_disconnected; |
745 | bool dret = false; | 738 | bool dret = false; |
746 | 739 | ||
747 | if (radeon_connector->ddc_bus) { | 740 | if (radeon_connector->ddc_bus) |
748 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
749 | dret = radeon_ddc_probe(radeon_connector); | 741 | dret = radeon_ddc_probe(radeon_connector); |
750 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
751 | } | ||
752 | if (dret) { | 742 | if (dret) { |
753 | if (radeon_connector->edid) { | 743 | if (radeon_connector->edid) { |
754 | kfree(radeon_connector->edid); | 744 | kfree(radeon_connector->edid); |
755 | radeon_connector->edid = NULL; | 745 | radeon_connector->edid = NULL; |
756 | } | 746 | } |
757 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
758 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); | 747 | radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); |
759 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
760 | 748 | ||
761 | if (!radeon_connector->edid) { | 749 | if (!radeon_connector->edid) { |
762 | DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", | 750 | DRM_ERROR("%s: probed a monitor but no|invalid EDID\n", |
@@ -952,7 +940,7 @@ static void radeon_dp_connector_destroy(struct drm_connector *connector) | |||
952 | if (radeon_connector->edid) | 940 | if (radeon_connector->edid) |
953 | kfree(radeon_connector->edid); | 941 | kfree(radeon_connector->edid); |
954 | if (radeon_dig_connector->dp_i2c_bus) | 942 | if (radeon_dig_connector->dp_i2c_bus) |
955 | radeon_i2c_destroy(radeon_dig_connector->dp_i2c_bus); | 943 | radeon_i2c_destroy_dp(radeon_dig_connector->dp_i2c_bus); |
956 | kfree(radeon_connector->con_priv); | 944 | kfree(radeon_connector->con_priv); |
957 | drm_sysfs_connector_remove(connector); | 945 | drm_sysfs_connector_remove(connector); |
958 | drm_connector_cleanup(connector); | 946 | drm_connector_cleanup(connector); |
@@ -988,12 +976,10 @@ static enum drm_connector_status radeon_dp_detect(struct drm_connector *connecto | |||
988 | ret = connector_status_connected; | 976 | ret = connector_status_connected; |
989 | } | 977 | } |
990 | } else { | 978 | } else { |
991 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 1); | ||
992 | if (radeon_ddc_probe(radeon_connector)) { | 979 | if (radeon_ddc_probe(radeon_connector)) { |
993 | radeon_dig_connector->dp_sink_type = sink_type; | 980 | radeon_dig_connector->dp_sink_type = sink_type; |
994 | ret = connector_status_connected; | 981 | ret = connector_status_connected; |
995 | } | 982 | } |
996 | radeon_i2c_do_lock(radeon_connector->ddc_bus, 0); | ||
997 | } | 983 | } |
998 | 984 | ||
999 | return ret; | 985 | return ret; |