History

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm fixes from Dave Airlie: "Two i915 regressions and one dual-gpu laptop radeon fix" * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux: drm/radeon: report disconnected for LVDS/eDP with PX if ddc fails drm/i915: Cancel vdd off work before suspend drm/i915: Ignore SURFLIVE and flip counter when the GPU gets reset

Linus Torvalds committed 11 years ago

Commit df20ce52 parents 2f19cad 21124e53 files · +23 −1Browse files

Unified · Split

3 files
  1. drivers/gpu/drm/i915/intel_display.c +4 −0
  2. drivers/gpu/drm/i915/intel_dp.c +1 −0
  3. drivers/gpu/drm/radeon/radeon_connectors.c +18 −1
drivers/gpu/drm/i915/intel_display.c+4−0
@@ -9408,6 +9408,10 @@ static bool page_flip_finished(struct intel_crtc *crtc) · 9407 unmodified lines
9408 struct drm_device *dev = crtc->base.dev;9408 struct drm_device *dev = crtc->base.dev;
9409 struct drm_i915_private *dev_priv = dev->dev_private;9409 struct drm_i915_private *dev_priv = dev->dev_private;
9410 9410
9411 if (i915_reset_in_progress(&dev_priv->gpu_error) ||
9412 crtc->reset_counter != atomic_read(&dev_priv->gpu_error.reset_counter))
9413 return true;
9414
9411 /*9415 /*
9412 * The relevant registers doen't exist on pre-ctg.9416 * The relevant registers doen't exist on pre-ctg.
9413 * As the flip done interrupt doesn't trigger for mmio9417 * As the flip done interrupt doesn't trigger for mmio
drivers/gpu/drm/i915/intel_dp.c+1−0
@@ -4450,6 +4450,7 @@ static void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder) · 4449 unmodified lines
4450 * vdd might still be enabled do to the delayed vdd off.4450 * vdd might still be enabled do to the delayed vdd off.
4451 * Make sure vdd is actually turned off here.4451 * Make sure vdd is actually turned off here.
4452 */4452 */
4453 cancel_delayed_work_sync(&intel_dp->panel_vdd_work);
4453 pps_lock(intel_dp);4454 pps_lock(intel_dp);
4454 edp_panel_vdd_off_sync(intel_dp);4455 edp_panel_vdd_off_sync(intel_dp);
4455 pps_unlock(intel_dp);4456 pps_unlock(intel_dp);
drivers/gpu/drm/radeon/radeon_connectors.c+18−1
@@ -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
826static enum drm_connector_status832static enum drm_connector_status
827radeon_lvds_detect(struct drm_connector *connector, bool force)833radeon_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;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t