Ack: [PATCH] [Trusty] drm/i915: provide interface for audio driver to query cdclk

Kamal Mostafa kamal at canonical.com
Tue Oct 14 18:15:54 UTC 2014


Ack.  This will enable a DKMS solution for an Ubuntu customer, so needs
to get into Trusty asap.  It (or a future better API) is likely to land
in 3.13-stable in the future.

 -Kamal


On Tue, 2014-10-14 at 14:09 -0400, Robert Hooker wrote:
> From: Jani Nikula <jani.nikula at intel.com>
> 
> 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 <jani.nikula at intel.com>
> Reviewed-by: Damien Lespiau <damien.lespiau at intel.com>
> Signed-off-by: Mengdong Lin <mengdong.lin at intel.com>
> Cc: <stable at vger.kernel.org>
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> (backported from commit c149dcb5c60bfea8871f16dfcc0690255eeb825f)
> BugLink: http://bugs.launchpad.net/bugs/1381168
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  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_ */
> -- 
> 1.9.1
> 
> 






More information about the kernel-team mailing list