diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_connectors.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 300c4b3d4669..26baa9c05f6c 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c | |||
| @@ -322,6 +322,12 @@ static void radeon_connector_get_edid(struct drm_connector *connector) | |||
| 322 | } | 322 | } |
| 323 | 323 | ||
| 324 | if (!radeon_connector->edid) { | 324 | if (!radeon_connector->edid) { |
| 325 | /* don't fetch the edid from the vbios if ddc fails and runpm is | ||
| 326 | * enabled so we report disconnected. | ||
| 327 | */ | ||
| 328 | if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) | ||
| 329 | return; | ||
| 330 | |||
| 325 | if (rdev->is_atom_bios) { | 331 | if (rdev->is_atom_bios) { |
| 326 | /* some laptops provide a hardcoded edid in rom for LCDs */ | 332 | /* some laptops provide a hardcoded edid in rom for LCDs */ |
| 327 | if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || | 333 | if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || |
| @@ -826,6 +832,8 @@ static int radeon_lvds_mode_valid(struct drm_connector *connector, | |||
| 826 | static enum drm_connector_status | 832 | static enum drm_connector_status |
| 827 | radeon_lvds_detect(struct drm_connector *connector, bool force) | 833 | radeon_lvds_detect(struct drm_connector *connector, bool force) |
| 828 | { | 834 | { |
| 835 | struct drm_device *dev = connector->dev; | ||
| 836 | struct radeon_device *rdev = dev->dev_private; | ||
| 829 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); | 837 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
| 830 | struct drm_encoder *encoder = radeon_best_single_encoder(connector); | 838 | struct drm_encoder *encoder = radeon_best_single_encoder(connector); |
| 831 | enum drm_connector_status ret = connector_status_disconnected; | 839 | enum drm_connector_status ret = connector_status_disconnected; |
| @@ -842,7 +850,11 @@ radeon_lvds_detect(struct drm_connector *connector, bool force) | |||
| 842 | /* check if panel is valid */ | 850 | /* check if panel is valid */ |
| 843 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) | 851 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) |
| 844 | ret = connector_status_connected; | 852 | ret = connector_status_connected; |
| 845 | 853 | /* don't fetch the edid from the vbios if ddc fails and runpm is | |
| 854 | * enabled so we report disconnected. | ||
| 855 | */ | ||
| 856 | if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) | ||
| 857 | ret = connector_status_disconnected; | ||
| 846 | } | 858 | } |
| 847 | 859 | ||
| 848 | /* check for edid as well */ | 860 | /* check for edid as well */ |
| @@ -1589,6 +1601,11 @@ radeon_dp_detect(struct drm_connector *connector, bool force) | |||
| 1589 | /* check if panel is valid */ | 1601 | /* check if panel is valid */ |
| 1590 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) | 1602 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) |
| 1591 | ret = connector_status_connected; | 1603 | ret = connector_status_connected; |
| 1604 | /* don't fetch the edid from the vbios if ddc fails and runpm is | ||
| 1605 | * enabled so we report disconnected. | ||
| 1606 | */ | ||
| 1607 | if ((rdev->flags & RADEON_IS_PX) && (radeon_runtime_pm != 0)) | ||
| 1608 | ret = connector_status_disconnected; | ||
| 1592 | } | 1609 | } |
| 1593 | /* eDP is always DP */ | 1610 | /* eDP is always DP */ |
| 1594 | radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; | 1611 | radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; |
