From patchwork Thu Jan 21 02:26:17 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tom.orourke@intel.com X-Patchwork-Id: 8076831 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.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5E45EBEEE5 for ; Thu, 21 Jan 2016 02:27:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3AF28205F0 for ; Thu, 21 Jan 2016 02:27:31 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 5DB3C205E8 for ; Thu, 21 Jan 2016 02:27:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AE96D6E1E1; Wed, 20 Jan 2016 18:27:28 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 21F396E1DA for ; Wed, 20 Jan 2016 18:27:27 -0800 (PST) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga101.jf.intel.com with ESMTP; 20 Jan 2016 18:27:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,323,1449561600"; d="scan'208";a="897780495" Received: from torourke-desk.ra.intel.com (HELO localhost.localdomain) ([10.10.35.157]) by fmsmga002.fm.intel.com with ESMTP; 20 Jan 2016 18:27:26 -0800 From: tom.orourke@intel.com To: intel-gfx@lists.freedesktop.org Date: Wed, 20 Jan 2016 18:26:17 -0800 Message-Id: <1453343184-160456-16-git-send-email-tom.orourke@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1453343184-160456-1-git-send-email-tom.orourke@intel.com> References: <1453343184-160456-1-git-send-email-tom.orourke@intel.com> Subject: [Intel-gfx] [RFC 15/22] drm/i915/slpc: Notification of Refresh Rate change X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.2 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 From: Sagar Arun Kamble This patch will inform GuC SLPC about changes in the refresh rate due to Seamless DRRS. Refresh rate changes due to Static DRRS will be notified via commit path. Signed-off-by: Sagar Arun Kamble Acked-by: Tom O'Rourke --- drivers/gpu/drm/i915/intel_dp.c | 2 ++ drivers/gpu/drm/i915/intel_slpc.c | 22 ++++++++++++++++++++++ drivers/gpu/drm/i915/intel_slpc.h | 1 + 3 files changed, 25 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index e2bea710..5100e8c 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -5434,6 +5434,8 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate) dev_priv->drrs.refresh_rate_type = index; DRM_DEBUG_KMS("eDP Refresh Rate set to : %dHz\n", refresh_rate); + + intel_slpc_update_display_rr_info(dev, refresh_rate); } /** diff --git a/drivers/gpu/drm/i915/intel_slpc.c b/drivers/gpu/drm/i915/intel_slpc.c index f5f7cad..c15ab19 100644 --- a/drivers/gpu/drm/i915/intel_slpc.c +++ b/drivers/gpu/drm/i915/intel_slpc.c @@ -317,3 +317,25 @@ int intel_slpc_update_display_mode_info(struct drm_device *dev) return 0; } + +int intel_slpc_update_display_rr_info(struct drm_device *dev, u32 refresh_rate) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + struct intel_display_pipe_basic_info *per_pipe_info; + struct intel_slpc_display_mode_event_params *display_params; + + if (!HAS_SLPC(dev)) + return -EINVAL; + + display_params = &dev_priv->guc.slpc.display_mode_params; + crtc = dp_to_dig_port(dev_priv->drrs.dp)->base.base.crtc; + + per_pipe_info = &display_params->per_pipe_info[to_intel_crtc(crtc)->pipe]; + per_pipe_info->refresh_rate = refresh_rate; + per_pipe_info->vsync_ft_usec = 1000000 / refresh_rate; + + host2guc_slpc_display_mode_change(dev_priv); + + return 0; +} diff --git a/drivers/gpu/drm/i915/intel_slpc.h b/drivers/gpu/drm/i915/intel_slpc.h index 18e551b..bb1d12e 100644 --- a/drivers/gpu/drm/i915/intel_slpc.h +++ b/drivers/gpu/drm/i915/intel_slpc.h @@ -153,5 +153,6 @@ int intel_slpc_disable(struct drm_device *dev); int intel_slpc_enable(struct drm_device *dev); int intel_slpc_reset(struct drm_device *dev); int intel_slpc_update_display_mode_info(struct drm_device *dev); +int intel_slpc_update_display_rr_info(struct drm_device *dev, u32 refresh_rate); #endif