Skip to content

Commit e8285ce

Browse files
committed
Merge tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel into drm-next
3 intel fixes. * tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel: drm/i915/fbdev: Check for the framebuffer before use drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
2 parents 5c6c201 + c45eb4f commit e8285ce

File tree

3 files changed

+14
-24
lines changed

3 files changed

+14
-24
lines changed

drivers/gpu/drm/i915/intel_display.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5691,15 +5691,7 @@ static bool skl_cdclk_pcu_ready(struct drm_i915_private *dev_priv)
56915691

56925692
static bool skl_cdclk_wait_for_pcu_ready(struct drm_i915_private *dev_priv)
56935693
{
5694-
unsigned int i;
5695-
5696-
for (i = 0; i < 15; i++) {
5697-
if (skl_cdclk_pcu_ready(dev_priv))
5698-
return true;
5699-
udelay(10);
5700-
}
5701-
5702-
return false;
5694+
return _wait_for(skl_cdclk_pcu_ready(dev_priv), 3000, 10) == 0;
57035695
}
57045696

57055697
static void skl_set_cdclk(struct drm_i915_private *dev_priv, int cdclk, int vco)

drivers/gpu/drm/i915/intel_fbdev.c

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
782782
struct intel_fbdev *ifbdev = dev_priv->fbdev;
783783
struct fb_info *info;
784784

785-
if (!ifbdev)
785+
if (!ifbdev || !ifbdev->fb)
786786
return;
787787

788788
info = ifbdev->helper.fbdev;
@@ -827,31 +827,28 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
827827

828828
void intel_fbdev_output_poll_changed(struct drm_device *dev)
829829
{
830-
struct drm_i915_private *dev_priv = to_i915(dev);
831-
if (dev_priv->fbdev)
832-
drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
830+
struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
831+
832+
if (ifbdev && ifbdev->fb)
833+
drm_fb_helper_hotplug_event(&ifbdev->helper);
833834
}
834835

835836
void intel_fbdev_restore_mode(struct drm_device *dev)
836837
{
837-
int ret;
838-
struct drm_i915_private *dev_priv = to_i915(dev);
839-
struct intel_fbdev *ifbdev = dev_priv->fbdev;
840-
struct drm_fb_helper *fb_helper;
838+
struct intel_fbdev *ifbdev = to_i915(dev)->fbdev;
841839

842840
if (!ifbdev)
843841
return;
844842

845843
intel_fbdev_sync(ifbdev);
844+
if (!ifbdev->fb)
845+
return;
846846

847-
fb_helper = &ifbdev->helper;
848-
849-
ret = drm_fb_helper_restore_fbdev_mode_unlocked(fb_helper);
850-
if (ret) {
847+
if (drm_fb_helper_restore_fbdev_mode_unlocked(&ifbdev->helper)) {
851848
DRM_DEBUG("failed to restore crtc mode\n");
852849
} else {
853-
mutex_lock(&fb_helper->dev->struct_mutex);
850+
mutex_lock(&dev->struct_mutex);
854851
intel_fb_obj_invalidate(ifbdev->fb->obj, ORIGIN_GTT);
855-
mutex_unlock(&fb_helper->dev->struct_mutex);
852+
mutex_unlock(&dev->struct_mutex);
856853
}
857854
}

drivers/gpu/drm/i915/intel_pm.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4892,7 +4892,8 @@ void gen6_rps_idle(struct drm_i915_private *dev_priv)
48924892
else
48934893
gen6_set_rps(dev_priv, dev_priv->rps.idle_freq);
48944894
dev_priv->rps.last_adj = 0;
4895-
I915_WRITE(GEN6_PMINTRMSK, 0xffffffff);
4895+
I915_WRITE(GEN6_PMINTRMSK,
4896+
gen6_sanitize_rps_pm_mask(dev_priv, ~0));
48964897
}
48974898
mutex_unlock(&dev_priv->rps.hw_lock);
48984899

0 commit comments

Comments
 (0)