Skip to content

Commit

Permalink
drm/i915/bxt: Sanitize the DBUF HW state together with CDCLK
Browse files Browse the repository at this point in the history
When determining whether CDCLK is enabled by BIOS and so we should skip
reprogramming it, we didn't check the related DBUF power request and
state. In theory BIOS could enable one without the other so check for
this case and reprogram things if something is amiss.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1459515767-29228-13-git-send-email-imre.deak@intel.com
  • Loading branch information
Imre Deak committed Apr 15, 2016
1 parent d7d7c9e commit c2e001e
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions drivers/gpu/drm/i915/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -5446,14 +5446,38 @@ static void broxton_set_cdclk(struct drm_i915_private *dev_priv, int frequency)
intel_update_cdclk(dev_priv->dev);
}

static bool broxton_cdclk_is_enabled(struct drm_i915_private *dev_priv)
{
if (!(I915_READ(BXT_DE_PLL_ENABLE) & BXT_DE_PLL_PLL_ENABLE))
return false;

/* TODO: Check for a valid CDCLK rate */

if (!(I915_READ(DBUF_CTL) & DBUF_POWER_REQUEST)) {
DRM_DEBUG_DRIVER("CDCLK enabled, but DBUF power not requested\n");

return false;
}

if (!(I915_READ(DBUF_CTL) & DBUF_POWER_STATE)) {
DRM_DEBUG_DRIVER("CDCLK enabled, but DBUF power hasn't settled\n");

return false;
}

return true;
}

void broxton_init_cdclk(struct drm_i915_private *dev_priv)
{
/* check if cd clock is enabled */
if (I915_READ(BXT_DE_PLL_ENABLE) & BXT_DE_PLL_PLL_ENABLE) {
DRM_DEBUG_KMS("Display already initialized\n");
if (broxton_cdclk_is_enabled(dev_priv)) {
DRM_DEBUG_KMS("CDCLK already enabled, won't reprogram it\n");
return;
}

DRM_DEBUG_KMS("CDCLK not enabled, enabling it\n");

/*
* FIXME:
* - The initial CDCLK needs to be read from VBT.
Expand Down

0 comments on commit c2e001e

Please sign in to comment.