Merge tag 'drm-intel-fixes-2014-08-08' of git://anongit.freedesktop.org/drm-intel
Pull intel drm fixes from Daniel Vetter: "So I heard that proper pull requests have a revert on top ;-) So here we go with my usual mid-merge-window pile of fixes. [ Ed. This revert thing had better not become the "in" thing ] Big fix is the duct-tape for ring init on g4x platforms, we seem to have found the magic again to make those machines as happy as before (not perfect though unfortunately, but that was never the case). Otherwise fixes all over: - tune down some overzealous debug output - VDD power sequencing fix after resume - bunch of dsi fixes for baytrail among them hw state checker de-noising - bunch of error state capture fixes for bdw - misc tiny fixes/workarounds for various platforms Last minute rebase was to kick out two patches that shouldn't have been in here - they're for the state checker, so 0 functional code affected. Jani's back from vacation, so he'll take over -fixes from here" * tag 'drm-intel-fixes-2014-08-08' of git://anongit.freedesktop.org/drm-intel: (21 commits) Revert "drm/i915: Enable semaphores on BDW" drm/i915: read HEAD register back in init_ring_common() to enforce ordering drm/i915: Fix crash when failing to parse MIPI VBT drm/i915: Bring GPU Freq to min while suspending. drm/i915: Fix DEIER and GTIER collecting for BDW. drm/i915: Don't accumulate hangcheck score on forward progress drm/i915: Add the WaCsStallBeforeStateCacheInvalidate:bdw workaround. drm/i915: Refactor Broadwell PIPE_CONTROL emission into a helper. drm/i915: Fix threshold for choosing 32 vs. 64 precisions for VLV DDL values drm/i915: Fix drain latency precision multipler for VLV drm/i915: Collect gtier properly on HSW. drm/i915: Tune down MCH_SSKPD values warning drm/i915: Tune done rc6 enabling output drm/i915: Don't require dev->struct_mutex in psr_match_conditions drm/i915: Fix error state collecting drm/i915: fix VDD state tracking after system resume drm/i915: Add correct hw/sw config check for DSI encoder drm/i915: factor out intel_edp_panel_vdd_sanitize drm/i915: wait for all DSI FIFOs to be empty drm/i915: work around warning in i915_gem_gtt ...
This commit is contained in:
@@ -1287,15 +1287,14 @@ static bool vlv_compute_drain_latency(struct drm_device *dev,
|
||||
pixel_size = crtc->primary->fb->bits_per_pixel / 8; /* BPP */
|
||||
|
||||
entries = (clock / 1000) * pixel_size;
|
||||
*plane_prec_mult = (entries > 256) ?
|
||||
DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16;
|
||||
*plane_dl = (64 * (*plane_prec_mult) * 4) / ((clock / 1000) *
|
||||
pixel_size);
|
||||
*plane_prec_mult = (entries > 128) ?
|
||||
DRAIN_LATENCY_PRECISION_64 : DRAIN_LATENCY_PRECISION_32;
|
||||
*plane_dl = (64 * (*plane_prec_mult) * 4) / entries;
|
||||
|
||||
entries = (clock / 1000) * 4; /* BPP is always 4 for cursor */
|
||||
*cursor_prec_mult = (entries > 256) ?
|
||||
DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16;
|
||||
*cursor_dl = (64 * (*cursor_prec_mult) * 4) / ((clock / 1000) * 4);
|
||||
*cursor_prec_mult = (entries > 128) ?
|
||||
DRAIN_LATENCY_PRECISION_64 : DRAIN_LATENCY_PRECISION_32;
|
||||
*cursor_dl = (64 * (*cursor_prec_mult) * 4) / entries;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1320,9 +1319,9 @@ static void vlv_update_drain_latency(struct drm_device *dev)
|
||||
if (vlv_compute_drain_latency(dev, 0, &plane_prec_mult, &planea_dl,
|
||||
&cursor_prec_mult, &cursora_dl)) {
|
||||
cursora_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ?
|
||||
DDL_CURSORA_PRECISION_32 : DDL_CURSORA_PRECISION_16;
|
||||
DDL_CURSORA_PRECISION_32 : DDL_CURSORA_PRECISION_64;
|
||||
planea_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ?
|
||||
DDL_PLANEA_PRECISION_32 : DDL_PLANEA_PRECISION_16;
|
||||
DDL_PLANEA_PRECISION_32 : DDL_PLANEA_PRECISION_64;
|
||||
|
||||
I915_WRITE(VLV_DDL1, cursora_prec |
|
||||
(cursora_dl << DDL_CURSORA_SHIFT) |
|
||||
@@ -1333,9 +1332,9 @@ static void vlv_update_drain_latency(struct drm_device *dev)
|
||||
if (vlv_compute_drain_latency(dev, 1, &plane_prec_mult, &planeb_dl,
|
||||
&cursor_prec_mult, &cursorb_dl)) {
|
||||
cursorb_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ?
|
||||
DDL_CURSORB_PRECISION_32 : DDL_CURSORB_PRECISION_16;
|
||||
DDL_CURSORB_PRECISION_32 : DDL_CURSORB_PRECISION_64;
|
||||
planeb_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ?
|
||||
DDL_PLANEB_PRECISION_32 : DDL_PLANEB_PRECISION_16;
|
||||
DDL_PLANEB_PRECISION_32 : DDL_PLANEB_PRECISION_64;
|
||||
|
||||
I915_WRITE(VLV_DDL2, cursorb_prec |
|
||||
(cursorb_dl << DDL_CURSORB_SHIFT) |
|
||||
@@ -3420,10 +3419,10 @@ static void intel_print_rc6_info(struct drm_device *dev, u32 mode)
|
||||
else
|
||||
mode = 0;
|
||||
}
|
||||
DRM_INFO("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n",
|
||||
(mode & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off",
|
||||
(mode & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off",
|
||||
(mode & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off");
|
||||
DRM_DEBUG_KMS("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n",
|
||||
(mode & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off",
|
||||
(mode & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off",
|
||||
(mode & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off");
|
||||
}
|
||||
|
||||
static int sanitize_rc6_option(const struct drm_device *dev, int enable_rc6)
|
||||
@@ -3447,8 +3446,8 @@ static int sanitize_rc6_option(const struct drm_device *dev, int enable_rc6)
|
||||
mask = INTEL_RC6_ENABLE;
|
||||
|
||||
if ((enable_rc6 & mask) != enable_rc6)
|
||||
DRM_INFO("Adjusting RC6 mask to %d (requested %d, valid %d)\n",
|
||||
enable_rc6 & mask, enable_rc6, mask);
|
||||
DRM_DEBUG_KMS("Adjusting RC6 mask to %d (requested %d, valid %d)\n",
|
||||
enable_rc6 & mask, enable_rc6, mask);
|
||||
|
||||
return enable_rc6 & mask;
|
||||
}
|
||||
@@ -5228,11 +5227,9 @@ static void gen6_check_mch_setup(struct drm_device *dev)
|
||||
uint32_t tmp;
|
||||
|
||||
tmp = I915_READ(MCH_SSKPD);
|
||||
if ((tmp & MCH_SSKPD_WM0_MASK) != MCH_SSKPD_WM0_VAL) {
|
||||
DRM_INFO("Wrong MCH_SSKPD value: 0x%08x\n", tmp);
|
||||
DRM_INFO("This can cause pipe underruns and display issues.\n");
|
||||
DRM_INFO("Please upgrade your BIOS to fix this.\n");
|
||||
}
|
||||
if ((tmp & MCH_SSKPD_WM0_MASK) != MCH_SSKPD_WM0_VAL)
|
||||
DRM_DEBUG_KMS("Wrong MCH_SSKPD value: 0x%08x This can cause underruns.\n",
|
||||
tmp);
|
||||
}
|
||||
|
||||
static void gen6_init_clock_gating(struct drm_device *dev)
|
||||
|
Reference in New Issue
Block a user