From patchwork Mon Feb 17 22:02:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Imre Deak X-Patchwork-Id: 3665541 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 6ED56BF13A for ; Mon, 17 Feb 2014 22:03:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A1125201FA for ; Mon, 17 Feb 2014 22:03:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id C8FCE201CD for ; Mon, 17 Feb 2014 22:03:07 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 39A34FA8D0; Mon, 17 Feb 2014 14:02:49 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 59435FA8D0 for ; Mon, 17 Feb 2014 14:02:43 -0800 (PST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 17 Feb 2014 14:02:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.95,863,1384329600"; d="scan'208";a="476722327" Received: from intelbox.fi.intel.com (HELO localhost) ([10.237.72.105]) by fmsmga001.fm.intel.com with ESMTP; 17 Feb 2014 14:02:41 -0800 From: Imre Deak To: intel-gfx@lists.freedesktop.org Date: Tue, 18 Feb 2014 00:02:11 +0200 Message-Id: <1392674540-10915-11-git-send-email-imre.deak@intel.com> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1392674540-10915-1-git-send-email-imre.deak@intel.com> References: <1392674540-10915-1-git-send-email-imre.deak@intel.com> Subject: [Intel-gfx] [PATCH 10/19] drm/i915: check pipe power domain when reading its hw state X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable 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 We can read out the pipe HW state only if the required power domain is on. If not we consider the pipe to be off. Signed-off-by: Imre Deak Reviewed-by: Jesse Barnes --- drivers/gpu/drm/i915/intel_display.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index ce1c00a..e3824f8 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -9535,6 +9535,18 @@ check_encoder_state(struct drm_device *dev) } } +static bool intel_display_get_pipe_config(struct intel_crtc *crtc, + struct intel_crtc_config *pipe_config) +{ + struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; + + if (!intel_display_power_enabled(dev_priv, + POWER_DOMAIN_PIPE(crtc->pipe))) + return false; + + return dev_priv->display.get_pipe_config(crtc, pipe_config); +} + static void check_crtc_state(struct drm_device *dev) { @@ -9572,8 +9584,7 @@ check_crtc_state(struct drm_device *dev) "crtc's computed enabled state doesn't match tracked enabled state " "(expected %i, found %i)\n", enabled, crtc->base.enabled); - active = dev_priv->display.get_pipe_config(crtc, - &pipe_config); + active = intel_display_get_pipe_config(crtc, &pipe_config); /* hw state is inconsistent with the pipe A quirk */ if (crtc->pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) @@ -11328,8 +11339,8 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) base.head) { memset(&crtc->config, 0, sizeof(crtc->config)); - crtc->active = dev_priv->display.get_pipe_config(crtc, - &crtc->config); + crtc->active = intel_display_get_pipe_config(crtc, + &crtc->config); crtc->base.enabled = crtc->active; crtc->primary_enabled = crtc->active;