From patchwork Thu Apr 28 01:10:47 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: 8964691 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 510C3BF29F for ; Thu, 28 Apr 2016 01:12:12 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7248020219 for ; Thu, 28 Apr 2016 01:12:11 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 898632025A for ; Thu, 28 Apr 2016 01:12:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 14BA76E38F; Thu, 28 Apr 2016 01:11:53 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 6A6B96E37F for ; Thu, 28 Apr 2016 01:11:17 +0000 (UTC) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP; 27 Apr 2016 18:11:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,544,1455004800"; d="scan'208";a="941742055" Received: from torourke-desk.ra.intel.com (HELO localhost.localdomain) ([10.10.35.157]) by orsmga001.jf.intel.com with ESMTP; 27 Apr 2016 18:11:17 -0700 From: tom.orourke@intel.com To: intel-gfx@lists.freedesktop.org Date: Wed, 27 Apr 2016 18:10:47 -0700 Message-Id: <1461805865-212590-4-git-send-email-tom.orourke@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1461805865-212590-1-git-send-email-tom.orourke@intel.com> References: <1461805865-212590-1-git-send-email-tom.orourke@intel.com> Cc: Tom O'Rourke , radoslaw.szwichtenberg@intel.com, paulo.r.zanoni@intel.com Subject: [Intel-gfx] [PATCH 03/21] drm/i915/slpc: Add slpc_version_check 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=-5.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: Tom O'Rourke The SLPC interface has changed and could continue to change. Only GuC versions known to be compatible are supported here. On Skylake, GuC firmware v6 is supported. Other platforms and versions can be added here later. This patch also adds has_slpc to skylake info. v2: Move slpc_version_check to intel_guc_ucode_init v3: fix whitespace (Sagar) --- drivers/gpu/drm/i915/i915_drv.c | 1 + drivers/gpu/drm/i915/intel_guc_loader.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index d37c0a6..cc22fa0 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -334,6 +334,7 @@ static const struct intel_device_info intel_skylake_info = { BDW_FEATURES, .is_skylake = 1, .gen = 9, + .has_slpc = 1, }; static const struct intel_device_info intel_skylake_gt3_info = { diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c index 876e5da..87702cd 100644 --- a/drivers/gpu/drm/i915/intel_guc_loader.c +++ b/drivers/gpu/drm/i915/intel_guc_loader.c @@ -116,6 +116,18 @@ static void direct_interrupts_to_guc(struct drm_i915_private *dev_priv) I915_WRITE(GUC_WD_VECS_IER, ~irqs); } +static void slpc_version_check(struct drm_device *dev, + struct intel_guc_fw *guc_fw) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_device_info *info; + + if (IS_SKYLAKE(dev) && (guc_fw->guc_fw_major_found != 6)) { + info = (struct intel_device_info *) &dev_priv->info; + info->has_slpc = 0; + } +} + static u32 get_gttype(struct drm_i915_private *dev_priv) { /* XXX: GT type based on PCI device ID? field seems unused by fw */ @@ -666,6 +678,8 @@ void intel_guc_ucode_init(struct drm_device *dev) DRM_DEBUG_DRIVER("GuC firmware pending, path %s\n", fw_path); guc_fw_fetch(dev, guc_fw); /* status must now be FAIL or SUCCESS */ + + slpc_version_check(dev, guc_fw); } /**