From patchwork Tue Oct 14 18:09:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Hooker X-Patchwork-Id: 399524 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id DAA7614012C; Wed, 15 Oct 2014 05:09:57 +1100 (EST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1Xe6Xf-0006Za-Qq; Tue, 14 Oct 2014 18:09:51 +0000 Received: from mail-qg0-f44.google.com ([209.85.192.44]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1Xe6Xa-0006ZN-5k for kernel-team@lists.ubuntu.com; Tue, 14 Oct 2014 18:09:46 +0000 Received: by mail-qg0-f44.google.com with SMTP id j5so8743462qga.17 for ; Tue, 14 Oct 2014 11:09:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id; bh=OXRf+s6OJKJH6cF3LgBFTSvbum3ORrg1/1B2Nwm/Llg=; b=IOuyc1seopEumBEVE2G2PHKK+QRg6s1s35fYObFLpnAegw0ryYtTFguLwag1ji8TsV Xs1+2n0xXi7VDoK874CbAJVv2X/QScHIZY6g+nCrUjfcKc2JJkXKwhu+RSe4/aSwhjRa pTt9QLMJBwCFOjFTlONroF8WQ/pb/zI4m0OO78pHZrpT96TRpmsAWcEBTg/eiNfTjlXJ knokK2N/IUXSMNWO/QOGMfJD9Cm4IfOLlMIzc2rkNjCYsB/5p93XkI5tVjE6E1P2L8o6 3H6P5NxregtOidWUwAGVLQuFRzHt4ycKpvAAE7LTur4ktg9/7j3a518u7nfI966nnfba 1vdQ== X-Received: by 10.140.39.11 with SMTP id u11mr11376283qgu.32.1413310184777; Tue, 14 Oct 2014 11:09:44 -0700 (PDT) Received: from localhost.localdomain (c-68-34-39-96.hsd1.va.comcast.net. [68.34.39.96]) by mx.google.com with ESMTPSA id c3sm15995632qga.47.2014.10.14.11.09.44 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Oct 2014 11:09:44 -0700 (PDT) From: Robert Hooker To: kernel-team@lists.ubuntu.com Subject: [PATCH] [Trusty] drm/i915: provide interface for audio driver to query cdclk Date: Tue, 14 Oct 2014 14:09:39 -0400 Message-Id: <1413310179-29570-1-git-send-email-sarvatt@ubuntu.com> X-Mailer: git-send-email 1.9.1 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Jani Nikula For Haswell and Broadwell, if the display power well has been disabled, the display audio controller divider values EM4 M VALUE and EM5 N VALUE will have been lost. The CDCLK frequency is required for reprogramming them to generate 24MHz HD-A link BCLK. So provide a private interface for the audio driver to query CDCLK. This is a stopgap solution until a more generic interface between audio and display drivers has been implemented. Signed-off-by: Jani Nikula Reviewed-by: Damien Lespiau Signed-off-by: Mengdong Lin Cc: Signed-off-by: Takashi Iwai (backported from commit c149dcb5c60bfea8871f16dfcc0690255eeb825f) BugLink: http://bugs.launchpad.net/bugs/1381168 Signed-off-by: David Henningsson --- drivers/gpu/drm/i915/intel_pm.c | 21 +++++++++++++++++++++ include/drm/i915_powerwell.h | 1 + 2 files changed, 22 insertions(+) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 1218c44..7b6bf30 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -5882,6 +5882,27 @@ void i915_release_power_well(void) } EXPORT_SYMBOL_GPL(i915_release_power_well); +/* + * Private interface for the audio driver to get CDCLK in kHz. + * + * Caller must request power well using i915_request_power_well() prior to + * making the call. + */ +int i915_get_cdclk_freq(void) +{ + struct drm_i915_private *dev_priv; + + if (!hsw_pwr) + return -ENODEV; + + dev_priv = container_of(hsw_pwr, struct drm_i915_private, + power_domains); + + return intel_ddi_get_cdclk_freq(dev_priv); +} +EXPORT_SYMBOL_GPL(i915_get_cdclk_freq); + + int intel_power_domains_init(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; diff --git a/include/drm/i915_powerwell.h b/include/drm/i915_powerwell.h index cfdc884..d715ca1 100644 --- a/include/drm/i915_powerwell.h +++ b/include/drm/i915_powerwell.h @@ -32,5 +32,6 @@ /* For use by hda_i915 driver */ extern void i915_request_power_well(void); extern void i915_release_power_well(void); +extern int i915_get_cdclk_freq(void); #endif /* _I915_POWERWELL_H_ */