| @@ -322,6 +322,12 @@ static void radeon_connector_get_edid(struct drm_connector *connector) · 321 unmodified lines |
| 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, · 498 unmodified lines |
| 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) · 10 unmodified lines |
| 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) · 740 unmodified lines |
| 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; |