From patchwork Fri Mar 14 21:37:08 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jesse Barnes X-Patchwork-Id: 3836751 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 3A5E9BF540 for ; Sat, 15 Mar 2014 11:04:07 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1A0B02010F for ; Sat, 15 Mar 2014 11:04:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 32347200F3 for ; Sat, 15 Mar 2014 11:04:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 458C1892B3; Sat, 15 Mar 2014 04:04:00 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from gproxy1-pub.mail.unifiedlayer.com (gproxy1-pub.mail.unifiedlayer.com [69.89.25.95]) by gabe.freedesktop.org (Postfix) with SMTP id 9D53A892B3 for ; Sat, 15 Mar 2014 04:03:59 -0700 (PDT) Received: (qmail 5273 invoked by uid 0); 14 Mar 2014 21:37:19 -0000 Received: from unknown (HELO cmgw3) (10.0.90.84) by gproxy1.mail.unifiedlayer.com with SMTP; 14 Mar 2014 21:37:19 -0000 Received: from box514.bluehost.com ([74.220.219.114]) by cmgw3 with id dgdD1n00P2UhLwi01gdGry; Fri, 14 Mar 2014 22:37:18 -0600 X-Authority-Analysis: v=2.1 cv=RodWckWK c=1 sm=1 tr=0 a=9W6Fsu4pMcyimqnCr1W0/w==:117 a=9W6Fsu4pMcyimqnCr1W0/w==:17 a=cNaOj0WVAAAA:8 a=f5113yIGAAAA:8 a=disSi9nnvT0A:10 a=3ROhxo7VqVMA:10 a=IkcTkHD0fZMA:10 a=TBVoxVdAAAAA:8 a=GhZ5P8ky69gA:10 a=pGLkceISAAAA:8 a=srmMj8ekOQ1otGSZeGIA:9 a=QEXdDO2ut3YA:10 a=MSl-tDqOz04A:10 a=rW6DTWptwo0A:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuousgeek.org; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject:Cc:To:From; bh=dnSEgYSszI9YCU7xFgYxDAtGlaCSEg+gDtPAUCXY+D4=; b=quw7MHhfLuy9BGqxi61S+dFrL4Dn3HBuFEJrRC67UO2AOIQb93zmCuomlQfUUyKQaMgrWupDsolPsNj7D166UxTkeFHMbGLrM+wEm/V1eXfh57cSBfKOQt1noQrxWCjj; Received: from [67.161.37.189] (port=34980 helo=localhost.localdomain) by box514.bluehost.com with esmtpsa (UNKNOWN:CAMELLIA256-SHA:256) (Exim 4.80) (envelope-from ) id 1WOZn0-0007tS-JD; Fri, 14 Mar 2014 15:37:14 -0600 From: Jesse Barnes To: intel-gfx@lists.freedesktop.org Date: Fri, 14 Mar 2014 14:37:08 -0700 Message-Id: <1394833031-4055-1-git-send-email-jbarnes@virtuousgeek.org> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 X-Identified-User: {10642:box514.bluehost.com:virtuous:virtuousgeek.org} {sentby:smtp auth 67.161.37.189 authed with jbarnes@virtuousgeek.org} Cc: dri-devel@lists.freedesktop.org Subject: [Intel-gfx] [PATCH 1/4] drm/i915: preserve SSC if previously set v2 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some machines may have a broken VBT or no VBT at all, but we still want to use SSC there. So check for it and keep it enabled if we see it already on. Based on an earlier fix from Kristian. v2: honor modparam if set too (Daniel) read out at init time and store for panel_use_ssc() use (Jesse) Reported-by: Kristian Høgsberg Signed-off-by: Jesse Barnes --- drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/intel_display.c | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 70fbe90..c64f770 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1507,6 +1507,8 @@ typedef struct drm_i915_private { struct intel_opregion opregion; struct intel_vbt_data vbt; + bool bios_ssc; /* BIOS had SSC enabled at boot? */ + /* overlay */ struct intel_overlay *overlay; diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 2bccc68..4b3e1c0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -4986,7 +4986,7 @@ static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv) { if (i915.panel_use_ssc >= 0) return i915.panel_use_ssc != 0; - return dev_priv->vbt.lvds_use_ssc + return (dev_priv->vbt.lvds_use_ssc || dev_priv->bios_ssc) && !(dev_priv->quirks & QUIRK_LVDS_SSC_DISABLE); } @@ -11732,9 +11732,18 @@ void intel_modeset_setup_hw_state(struct drm_device *dev, void intel_modeset_gem_init(struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; struct drm_crtc *c; struct intel_framebuffer *fb; + /* + * There may be no VBT; and if the BIOS enabled SSC we can + * just keep using it to avoid unnecessary flicker. + */ + if ((HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) && + (I915_READ(PCH_DREF_CONTROL) & DREF_SSC1_ENABLE)) + dev_priv->bios_ssc = true; + intel_modeset_init_hw(dev); intel_setup_overlay(dev);