| @@ -322,6 +322,12 @@ static void radeon_connector_get_edid(struct drm_connector *connector) · 321 unmodified lines |
| 322 | 322 | } |
| 323 | 323 | |
| 324 | 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 | 331 | if (rdev->is_atom_bios) { |
| 326 | 332 | /* some laptops provide a hardcoded edid in rom for LCDs */ |
| 327 | 333 | if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) || |
| @@ -826,6 +832,8 @@ static int radeon_lvds_mode_valid(struct drm_connector *connector, · 498 unmodified lines |
| 826 | 832 | static enum drm_connector_status |
| 827 | 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 | 837 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
| 830 | 838 | struct drm_encoder *encoder = radeon_best_single_encoder(connector); |
| 831 | 839 | enum drm_connector_status ret = connector_status_disconnected; |
| @@ -842,7 +850,11 @@ radeon_lvds_detect(struct drm_connector *connector, bool force) · 10 unmodified lines |
| 842 | 850 | /* check if panel is valid */ |
| 843 | 851 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) |
| 844 | 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 | 860 | /* check for edid as well */ |
| @@ -1589,6 +1601,11 @@ radeon_dp_detect(struct drm_connector *connector, bool force) · 740 unmodified lines |
| 1589 | 1601 | /* check if panel is valid */ |
| 1590 | 1602 | if (native_mode->hdisplay >= 320 && native_mode->vdisplay >= 240) |
| 1591 | 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 | 1610 | /* eDP is always DP */ |
| 1594 | 1611 | radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; |