All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
@ 2017-07-06 21:03 Rodrigo Vivi
  2017-08-16 23:46 ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 10+ messages in thread
From: Rodrigo Vivi @ 2017-07-06 21:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: Jani Nikula, Sanyog Kale, Dhinakaran Pandiyan, Rodrigo Vivi

Starting on CNL, we need to enable Audio Pin Buffer.

By the spec it seems that this is part of audio programming,
so let's give them the hability to set/unset this as needed.

v2: With a hook so audio driver can control it.
v3: Put back reg definition lost on v2.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Sanyog Kale <sanyog.r.kale@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h    |  3 +++
 drivers/gpu/drm/i915/intel_audio.c | 16 ++++++++++++++++
 include/drm/i915_component.h       |  6 ++++++
 3 files changed, 25 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 64cc674..aab38da 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2643,6 +2643,9 @@ enum skl_disp_power_wells {
 #define I915_HDMI_LPE_AUDIO_BASE	(VLV_DISPLAY_BASE + 0x65000)
 #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
 
+#define AUDIO_PIN_BUF_CTL		_MMIO(0x48414)
+#define AUDIO_PIN_BUF_ENABLE		(1 << 31)
+
 /* DisplayPort Audio w/ LPE */
 #define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
 #define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index d805b6e..0c83254 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -865,6 +865,21 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
 	return ret;
 }
 
+static void i915_audio_component_pin_buf(struct device *kdev, bool enable)
+{
+	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
+
+	if (!IS_CANNONLAKE(dev_priv))
+		return;
+
+	if (enable)
+		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) |
+			   AUDIO_PIN_BUF_ENABLE);
+	else
+		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) &
+			   ~AUDIO_PIN_BUF_ENABLE);
+}
+
 static const struct i915_audio_component_ops i915_audio_component_ops = {
 	.owner		= THIS_MODULE,
 	.get_power	= i915_audio_component_get_power,
@@ -873,6 +888,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
 	.get_cdclk_freq	= i915_audio_component_get_cdclk_freq,
 	.sync_audio_rate = i915_audio_component_sync_audio_rate,
 	.get_eld	= i915_audio_component_get_eld,
+	.pin_buf	= i915_audio_component_pin_buf,
 };
 
 static int i915_audio_component_bind(struct device *i915_kdev,
diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h
index 545c6e0..b8875d4 100644
--- a/include/drm/i915_component.h
+++ b/include/drm/i915_component.h
@@ -79,6 +79,12 @@ struct i915_audio_component_ops {
 	 */
 	int (*get_eld)(struct device *, int port, int pipe, bool *enabled,
 		       unsigned char *buf, int max_bytes);
+	/**
+	 * @pin_buf: Enable or disable pin buffer.
+	 *
+	 * Allow audio driver the toggle pin buffer.
+	 */
+	void (*pin_buf)(struct device *, bool enable);
 };
 
 /**
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2017-07-06 21:03 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
@ 2017-08-16 23:46 ` Pandiyan, Dhinakaran
  2017-08-17  3:56   ` Sanyog Kale
  0 siblings, 1 reply; 10+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-08-16 23:46 UTC (permalink / raw)
  To: Vivi, Rodrigo
  Cc: Nikula, Jani, intel-gfx@lists.freedesktop.org, Kale, Sanyog R

On Thu, 2017-07-06 at 14:03 -0700, Rodrigo Vivi wrote:
> Starting on CNL, we need to enable Audio Pin Buffer.
> 
> By the spec it seems that this is part of audio programming,

I am not very clear where the pin buffer enabling/disabling step falls
in the audio programming sequence. From what I understand, audio codec
enable/disable is controlled by i915, if pin buffer enable/disable is
part of that, then we don't need a call back. It's difficult to know
where this function is going to be used without seeing the audio driver
patch that makes of use of this.

> so let's give them the hability to set/unset this as needed.

typo s/hability/ability
> 
> v2: With a hook so audio driver can control it.
> v3: Put back reg definition lost on v2.
> 
> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
>  drivers/gpu/drm/i915/intel_audio.c | 16 ++++++++++++++++
>  include/drm/i915_component.h       |  6 ++++++
>  3 files changed, 25 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 64cc674..aab38da 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2643,6 +2643,9 @@ enum skl_disp_power_wells {
>  #define I915_HDMI_LPE_AUDIO_BASE	(VLV_DISPLAY_BASE + 0x65000)
>  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
>  
> +#define AUDIO_PIN_BUF_CTL		_MMIO(0x48414)
> +#define AUDIO_PIN_BUF_ENABLE		(1 << 31)
> +
>  /* DisplayPort Audio w/ LPE */
>  #define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
>  #define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index d805b6e..0c83254 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -865,6 +865,21 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
>  	return ret;
>  }
>  
> +static void i915_audio_component_pin_buf(struct device *kdev, bool enable)
> +{

Does it matter whether the audio codec is enabled or disabled when this
call comes in? i.e., do we need some sort of check here? Or do we assume
the audio driver knows exactly when to enable or disable pin buffer?



> +	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> +
> +	if (!IS_CANNONLAKE(dev_priv))

Should this be a INTEL_GEN() < 10 since the register is gen10+? I am not
particular about either of the options.

> +		return;
> +
> +	if (enable)
> +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) |
> +			   AUDIO_PIN_BUF_ENABLE);
> +	else
> +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) &
> +			   ~AUDIO_PIN_BUF_ENABLE);
> +}
> +
>  static const struct i915_audio_component_ops i915_audio_component_ops = {
>  	.owner		= THIS_MODULE,
>  	.get_power	= i915_audio_component_get_power,
> @@ -873,6 +888,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
>  	.get_cdclk_freq	= i915_audio_component_get_cdclk_freq,
>  	.sync_audio_rate = i915_audio_component_sync_audio_rate,
>  	.get_eld	= i915_audio_component_get_eld,
> +	.pin_buf	= i915_audio_component_pin_buf,
>  };
>  
>  static int i915_audio_component_bind(struct device *i915_kdev,
> diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h
> index 545c6e0..b8875d4 100644
> --- a/include/drm/i915_component.h
> +++ b/include/drm/i915_component.h
> @@ -79,6 +79,12 @@ struct i915_audio_component_ops {
>  	 */
>  	int (*get_eld)(struct device *, int port, int pipe, bool *enabled,
>  		       unsigned char *buf, int max_bytes);
> +	/**
> +	 * @pin_buf: Enable or disable pin buffer.
> +	 *
> +	 * Allow audio driver the toggle pin buffer.
> +	 */
> +	void (*pin_buf)(struct device *, bool enable);
>  };
>  
>  /**
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2017-08-16 23:46 ` Pandiyan, Dhinakaran
@ 2017-08-17  3:56   ` Sanyog Kale
  2017-08-17 18:55     ` Vivi, Rodrigo
  0 siblings, 1 reply; 10+ messages in thread
From: Sanyog Kale @ 2017-08-17  3:56 UTC (permalink / raw)
  To: Pandiyan, Dhinakaran
  Cc: Nikula, Jani, intel-gfx@lists.freedesktop.org, Vivi, Rodrigo

On Wed, Aug 16, 2017 at 06:46:26PM -0500, Pandiyan, Dhinakaran wrote:
> On Thu, 2017-07-06 at 14:03 -0700, Rodrigo Vivi wrote:
> > Starting on CNL, we need to enable Audio Pin Buffer.
> > 
> > By the spec it seems that this is part of audio programming,
> 
> I am not very clear where the pin buffer enabling/disabling step falls
> in the audio programming sequence. From what I understand, audio codec
> enable/disable is controlled by i915, if pin buffer enable/disable is
> part of that, then we don't need a call back. It's difficult to know
> where this function is going to be used without seeing the audio driver
> patch that makes of use of this.
>

From audio point of view, we are working on correct sequence where this ops
will be called. However during CNL Power-ON we enabled the pin buf using ops
as part of azx_reset.
 
> > so let's give them the hability to set/unset this as needed.
> 
> typo s/hability/ability
> > 
> > v2: With a hook so audio driver can control it.
> > v3: Put back reg definition lost on v2.
> > 
> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
> >  drivers/gpu/drm/i915/intel_audio.c | 16 ++++++++++++++++
> >  include/drm/i915_component.h       |  6 ++++++
> >  3 files changed, 25 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index 64cc674..aab38da 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -2643,6 +2643,9 @@ enum skl_disp_power_wells {
> >  #define I915_HDMI_LPE_AUDIO_BASE	(VLV_DISPLAY_BASE + 0x65000)
> >  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
> >  
> > +#define AUDIO_PIN_BUF_CTL		_MMIO(0x48414)
> > +#define AUDIO_PIN_BUF_ENABLE		(1 << 31)
> > +
> >  /* DisplayPort Audio w/ LPE */
> >  #define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> >  #define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > index d805b6e..0c83254 100644
> > --- a/drivers/gpu/drm/i915/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > @@ -865,6 +865,21 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> >  	return ret;
> >  }
> >  
> > +static void i915_audio_component_pin_buf(struct device *kdev, bool enable)
> > +{
> 
> Does it matter whether the audio codec is enabled or disabled when this
> call comes in? i.e., do we need some sort of check here? Or do we assume
> the audio driver knows exactly when to enable or disable pin buffer?
> 
> 
> 
> > +	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> > +
> > +	if (!IS_CANNONLAKE(dev_priv))
> 
> Should this be a INTEL_GEN() < 10 since the register is gen10+? I am not
> particular about either of the options.
> 
> > +		return;
> > +
> > +	if (enable)
> > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) |
> > +			   AUDIO_PIN_BUF_ENABLE);
> > +	else
> > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) &
> > +			   ~AUDIO_PIN_BUF_ENABLE);
> > +}
> > +
> >  static const struct i915_audio_component_ops i915_audio_component_ops = {
> >  	.owner		= THIS_MODULE,
> >  	.get_power	= i915_audio_component_get_power,
> > @@ -873,6 +888,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> >  	.get_cdclk_freq	= i915_audio_component_get_cdclk_freq,
> >  	.sync_audio_rate = i915_audio_component_sync_audio_rate,
> >  	.get_eld	= i915_audio_component_get_eld,
> > +	.pin_buf	= i915_audio_component_pin_buf,
> >  };
> >  
> >  static int i915_audio_component_bind(struct device *i915_kdev,
> > diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h
> > index 545c6e0..b8875d4 100644
> > --- a/include/drm/i915_component.h
> > +++ b/include/drm/i915_component.h
> > @@ -79,6 +79,12 @@ struct i915_audio_component_ops {
> >  	 */
> >  	int (*get_eld)(struct device *, int port, int pipe, bool *enabled,
> >  		       unsigned char *buf, int max_bytes);
> > +	/**
> > +	 * @pin_buf: Enable or disable pin buffer.
> > +	 *
> > +	 * Allow audio driver the toggle pin buffer.
> > +	 */
> > +	void (*pin_buf)(struct device *, bool enable);
> >  };
> >  
> >  /**

-- 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2017-08-17  3:56   ` Sanyog Kale
@ 2017-08-17 18:55     ` Vivi, Rodrigo
  2017-08-17 19:08       ` Pandiyan, Dhinakaran
  0 siblings, 1 reply; 10+ messages in thread
From: Vivi, Rodrigo @ 2017-08-17 18:55 UTC (permalink / raw)
  To: Kale, Sanyog R
  Cc: Nikula, Jani, intel-gfx@lists.freedesktop.org,
	Pandiyan, Dhinakaran

On Thu, 2017-08-17 at 09:26 +0530, Sanyog Kale wrote:
> On Wed, Aug 16, 2017 at 06:46:26PM -0500, Pandiyan, Dhinakaran wrote:
> > On Thu, 2017-07-06 at 14:03 -0700, Rodrigo Vivi wrote:
> > > Starting on CNL, we need to enable Audio Pin Buffer.
> > > 
> > > By the spec it seems that this is part of audio programming,
> > 
> > I am not very clear where the pin buffer enabling/disabling step falls
> > in the audio programming sequence. From what I understand, audio codec
> > enable/disable is controlled by i915, if pin buffer enable/disable is
> > part of that, then we don't need a call back. It's difficult to know
> > where this function is going to be used without seeing the audio driver
> > patch that makes of use of this.

Sanyog, I couldn't find all the old emails with spec pointing out the
time that we needed to set this bit. Do you still have?
Anything you could share when publishing the patches?

> >
> 
> From audio point of view, we are working on correct sequence where this ops
> will be called. However during CNL Power-ON we enabled the pin buf using ops
> as part of azx_reset.

Ok, so let's put this on hold while audio drivers are not ready.
It will be on internal branch anyways.
When audio driver gets ready we re-submit all together.

>  
> > > so let's give them the hability to set/unset this as needed.
> > 
> > typo s/hability/ability
> > > 
> > > v2: With a hook so audio driver can control it.
> > > v3: Put back reg definition lost on v2.
> > > 
> > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > Cc: Jani Nikula <jani.nikula@intel.com>
> > > Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
> > >  drivers/gpu/drm/i915/intel_audio.c | 16 ++++++++++++++++
> > >  include/drm/i915_component.h       |  6 ++++++
> > >  3 files changed, 25 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > index 64cc674..aab38da 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -2643,6 +2643,9 @@ enum skl_disp_power_wells {
> > >  #define I915_HDMI_LPE_AUDIO_BASE	(VLV_DISPLAY_BASE + 0x65000)
> > >  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
> > >  
> > > +#define AUDIO_PIN_BUF_CTL		_MMIO(0x48414)
> > > +#define AUDIO_PIN_BUF_ENABLE		(1 << 31)
> > > +
> > >  /* DisplayPort Audio w/ LPE */
> > >  #define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> > >  #define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> > > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > > index d805b6e..0c83254 100644
> > > --- a/drivers/gpu/drm/i915/intel_audio.c
> > > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > > @@ -865,6 +865,21 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> > >  	return ret;
> > >  }
> > >  
> > > +static void i915_audio_component_pin_buf(struct device *kdev, bool enable)
> > > +{
> > 
> > Does it matter whether the audio codec is enabled or disabled when this
> > call comes in? i.e., do we need some sort of check here? Or do we assume
> > the audio driver knows exactly when to enable or disable pin buffer?
> > 
> > 
> > 
> > > +	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> > > +
> > > +	if (!IS_CANNONLAKE(dev_priv))
> > 
> > Should this be a INTEL_GEN() < 10 since the register is gen10+? I am not
> > particular about either of the options.
> > 
> > > +		return;
> > > +
> > > +	if (enable)
> > > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) |
> > > +			   AUDIO_PIN_BUF_ENABLE);
> > > +	else
> > > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) &
> > > +			   ~AUDIO_PIN_BUF_ENABLE);
> > > +}
> > > +
> > >  static const struct i915_audio_component_ops i915_audio_component_ops = {
> > >  	.owner		= THIS_MODULE,
> > >  	.get_power	= i915_audio_component_get_power,
> > > @@ -873,6 +888,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> > >  	.get_cdclk_freq	= i915_audio_component_get_cdclk_freq,
> > >  	.sync_audio_rate = i915_audio_component_sync_audio_rate,
> > >  	.get_eld	= i915_audio_component_get_eld,
> > > +	.pin_buf	= i915_audio_component_pin_buf,
> > >  };
> > >  
> > >  static int i915_audio_component_bind(struct device *i915_kdev,
> > > diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h
> > > index 545c6e0..b8875d4 100644
> > > --- a/include/drm/i915_component.h
> > > +++ b/include/drm/i915_component.h
> > > @@ -79,6 +79,12 @@ struct i915_audio_component_ops {
> > >  	 */
> > >  	int (*get_eld)(struct device *, int port, int pipe, bool *enabled,
> > >  		       unsigned char *buf, int max_bytes);
> > > +	/**
> > > +	 * @pin_buf: Enable or disable pin buffer.
> > > +	 *
> > > +	 * Allow audio driver the toggle pin buffer.
> > > +	 */
> > > +	void (*pin_buf)(struct device *, bool enable);
> > >  };
> > >  
> > >  /**
> 

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2017-08-17 18:55     ` Vivi, Rodrigo
@ 2017-08-17 19:08       ` Pandiyan, Dhinakaran
  0 siblings, 0 replies; 10+ messages in thread
From: Pandiyan, Dhinakaran @ 2017-08-17 19:08 UTC (permalink / raw)
  To: Vivi, Rodrigo
  Cc: Nikula, Jani, intel-gfx@lists.freedesktop.org, Kale, Sanyog R

On Thu, 2017-08-17 at 18:55 +0000, Vivi, Rodrigo wrote:
> On Thu, 2017-08-17 at 09:26 +0530, Sanyog Kale wrote:
> > On Wed, Aug 16, 2017 at 06:46:26PM -0500, Pandiyan, Dhinakaran wrote:
> > > On Thu, 2017-07-06 at 14:03 -0700, Rodrigo Vivi wrote:
> > > > Starting on CNL, we need to enable Audio Pin Buffer.
> > > > 
> > > > By the spec it seems that this is part of audio programming,
> > > 
> > > I am not very clear where the pin buffer enabling/disabling step falls
> > > in the audio programming sequence. From what I understand, audio codec
> > > enable/disable is controlled by i915, if pin buffer enable/disable is
> > > part of that, then we don't need a call back. It's difficult to know
> > > where this function is going to be used without seeing the audio driver
> > > patch that makes of use of this.
> 
> Sanyog, I couldn't find all the old emails with spec pointing out the
> time that we needed to set this bit. Do you still have?
> Anything you could share when publishing the patches?
> 
> > >
> > 
> > From audio point of view, we are working on correct sequence where this ops
> > will be called. However during CNL Power-ON we enabled the pin buf using ops
> > as part of azx_reset.
> 
> Ok, so let's put this on hold while audio drivers are not ready.
> It will be on internal branch anyways.
> When audio driver gets ready we re-submit all together.
> 

That makes a lot of sense to me.

> >  
> > > > so let's give them the hability to set/unset this as needed.
> > > 
> > > typo s/hability/ability
> > > > 
> > > > v2: With a hook so audio driver can control it.
> > > > v3: Put back reg definition lost on v2.
> > > > 
> > > > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > > > Cc: Jani Nikula <jani.nikula@intel.com>
> > > > Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
> > > >  drivers/gpu/drm/i915/intel_audio.c | 16 ++++++++++++++++
> > > >  include/drm/i915_component.h       |  6 ++++++
> > > >  3 files changed, 25 insertions(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > > index 64cc674..aab38da 100644
> > > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > > @@ -2643,6 +2643,9 @@ enum skl_disp_power_wells {
> > > >  #define I915_HDMI_LPE_AUDIO_BASE	(VLV_DISPLAY_BASE + 0x65000)
> > > >  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
> > > >  
> > > > +#define AUDIO_PIN_BUF_CTL		_MMIO(0x48414)
> > > > +#define AUDIO_PIN_BUF_ENABLE		(1 << 31)
> > > > +
> > > >  /* DisplayPort Audio w/ LPE */
> > > >  #define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> > > >  #define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> > > > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > > > index d805b6e..0c83254 100644
> > > > --- a/drivers/gpu/drm/i915/intel_audio.c
> > > > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > > > @@ -865,6 +865,21 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> > > >  	return ret;
> > > >  }
> > > >  
> > > > +static void i915_audio_component_pin_buf(struct device *kdev, bool enable)
> > > > +{
> > > 
> > > Does it matter whether the audio codec is enabled or disabled when this
> > > call comes in? i.e., do we need some sort of check here? Or do we assume
> > > the audio driver knows exactly when to enable or disable pin buffer?
> > > 
> > > 
> > > 
> > > > +	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> > > > +
> > > > +	if (!IS_CANNONLAKE(dev_priv))
> > > 
> > > Should this be a INTEL_GEN() < 10 since the register is gen10+? I am not
> > > particular about either of the options.
> > > 
> > > > +		return;
> > > > +
> > > > +	if (enable)
> > > > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) |
> > > > +			   AUDIO_PIN_BUF_ENABLE);
> > > > +	else
> > > > +		I915_WRITE(AUDIO_PIN_BUF_CTL, I915_READ(AUDIO_PIN_BUF_CTL) &
> > > > +			   ~AUDIO_PIN_BUF_ENABLE);
> > > > +}
> > > > +
> > > >  static const struct i915_audio_component_ops i915_audio_component_ops = {
> > > >  	.owner		= THIS_MODULE,
> > > >  	.get_power	= i915_audio_component_get_power,
> > > > @@ -873,6 +888,7 @@ static int i915_audio_component_get_eld(struct device *kdev, int port,
> > > >  	.get_cdclk_freq	= i915_audio_component_get_cdclk_freq,
> > > >  	.sync_audio_rate = i915_audio_component_sync_audio_rate,
> > > >  	.get_eld	= i915_audio_component_get_eld,
> > > > +	.pin_buf	= i915_audio_component_pin_buf,
> > > >  };
> > > >  
> > > >  static int i915_audio_component_bind(struct device *i915_kdev,
> > > > diff --git a/include/drm/i915_component.h b/include/drm/i915_component.h
> > > > index 545c6e0..b8875d4 100644
> > > > --- a/include/drm/i915_component.h
> > > > +++ b/include/drm/i915_component.h
> > > > @@ -79,6 +79,12 @@ struct i915_audio_component_ops {
> > > >  	 */
> > > >  	int (*get_eld)(struct device *, int port, int pipe, bool *enabled,
> > > >  		       unsigned char *buf, int max_bytes);
> > > > +	/**
> > > > +	 * @pin_buf: Enable or disable pin buffer.
> > > > +	 *
> > > > +	 * Allow audio driver the toggle pin buffer.
> > > > +	 */
> > > > +	void (*pin_buf)(struct device *, bool enable);
> > > >  };
> > > >  
> > > >  /**
> > 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
@ 2018-02-08  0:31 Rodrigo Vivi
  2018-02-08  0:37 ` Rodrigo Vivi
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Rodrigo Vivi @ 2018-02-08  0:31 UTC (permalink / raw)
  To: intel-gfx; +Cc: Jani Nikula, Sanyog Kale, Guneshwor Singh, Rodrigo Vivi

Starting on CNL, we need to enable Audio Pin Buffer.

v4: Throw the exclusive hook and everything else away
    and add set/unset bit along with codec awake.

Based on few spec links that I was checking recently
I now believe that on CNL we also need to keep the codec
awake chicken bit along with PG2 enable and also add
this extra pin buffer enable.

BSpec: 18057
BSpec: 21352
BSpec: 19621

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Sanyog Kale <sanyog.r.kale@intel.com>
Cc: Guneshwor Singh <guneshwor.o.singh@intel.com>
Cc: Abhay Kumar <abhay.kumar@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h    |  3 +++
 drivers/gpu/drm/i915/intel_audio.c | 11 ++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 65ba10ad1fe5..768e784ea241 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -8424,6 +8424,9 @@ enum {
 #define HSW_AUD_CHICKENBIT			_MMIO(0x65f10)
 #define   SKL_AUD_CODEC_WAKE_SIGNAL		(1 << 15)
 
+#define AUDIO_PIN_BUF_CTL			_MMIO(0x48414)
+#define  AUDIO_PIN_BUF_ENABLE			(1 << 31)
+
 /* HSW Power Wells */
 #define _HSW_PWR_WELL_CTL1			0x45400
 #define _HSW_PWR_WELL_CTL2			0x45404
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 522d54fecb53..34f18322c9bd 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -729,11 +729,20 @@ static void i915_audio_component_codec_wake_override(struct device *kdev,
 	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
 	u32 tmp;
 
-	if (!IS_GEN9_BC(dev_priv))
+	if (!IS_GEN9_BC(dev_priv) && !IS_CANNONLAKE(dev_priv))
 		return;
 
 	i915_audio_component_get_power(kdev);
 
+	if (IS_CANNONLAKE(dev_priv)) {
+		tmp = I915_READ(AUDIO_PIN_BUF_CTL);
+		if (enable)
+			tmp |= AUDIO_PIN_BUF_ENABLE;
+		else
+			tmp &= ~AUDIO_PIN_BUF_ENABLE;
+		I915_WRITE(AUDIO_PIN_BUF_CTL, tmp);
+	}
+
 	/*
 	 * Enable/disable generating the codec wake signal, overriding the
 	 * internal logic to generate the codec wake to controller.
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2018-02-08  0:31 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
@ 2018-02-08  0:37 ` Rodrigo Vivi
  2018-02-08  4:55   ` Guneshwor Singh
  2018-02-08  0:51 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Enable Audio Pin Buffer. (rev2) Patchwork
  2018-02-08  7:46 ` ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 1 reply; 10+ messages in thread
From: Rodrigo Vivi @ 2018-02-08  0:37 UTC (permalink / raw)
  To: intel-gfx; +Cc: Jani Nikula, Sanyog Kale, Guneshwor Singh

Rodrigo Vivi <rodrigo.vivi@intel.com> writes:

> Starting on CNL, we need to enable Audio Pin Buffer.

Ok... I forgot to include ICL on this now.
But first let's check if this is working on CNL and later I sent a v5.

On top of that for CNL and ICL audio needs to know when we are
switching cdclk. But for this work I'd like to hear from audio
if they need a new hook for notification or what.

And I will wait the work on audio start first before attempt
to implement any new hook on our side.

Thanks,
Rodrigo.

>
> v4: Throw the exclusive hook and everything else away
>     and add set/unset bit along with codec awake.
>
> Based on few spec links that I was checking recently
> I now believe that on CNL we also need to keep the codec
> awake chicken bit along with PG2 enable and also add
> this extra pin buffer enable.
>
> BSpec: 18057
> BSpec: 21352
> BSpec: 19621
>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> Cc: Guneshwor Singh <guneshwor.o.singh@intel.com>
> Cc: Abhay Kumar <abhay.kumar@intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
>  drivers/gpu/drm/i915/intel_audio.c | 11 ++++++++++-
>  2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 65ba10ad1fe5..768e784ea241 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -8424,6 +8424,9 @@ enum {
>  #define HSW_AUD_CHICKENBIT			_MMIO(0x65f10)
>  #define   SKL_AUD_CODEC_WAKE_SIGNAL		(1 << 15)
>  
> +#define AUDIO_PIN_BUF_CTL			_MMIO(0x48414)
> +#define  AUDIO_PIN_BUF_ENABLE			(1 << 31)
> +
>  /* HSW Power Wells */
>  #define _HSW_PWR_WELL_CTL1			0x45400
>  #define _HSW_PWR_WELL_CTL2			0x45404
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 522d54fecb53..34f18322c9bd 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -729,11 +729,20 @@ static void i915_audio_component_codec_wake_override(struct device *kdev,
>  	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
>  	u32 tmp;
>  
> -	if (!IS_GEN9_BC(dev_priv))
> +	if (!IS_GEN9_BC(dev_priv) && !IS_CANNONLAKE(dev_priv))
>  		return;
>  
>  	i915_audio_component_get_power(kdev);
>  
> +	if (IS_CANNONLAKE(dev_priv)) {
> +		tmp = I915_READ(AUDIO_PIN_BUF_CTL);
> +		if (enable)
> +			tmp |= AUDIO_PIN_BUF_ENABLE;
> +		else
> +			tmp &= ~AUDIO_PIN_BUF_ENABLE;
> +		I915_WRITE(AUDIO_PIN_BUF_CTL, tmp);
> +	}
> +
>  	/*
>  	 * Enable/disable generating the codec wake signal, overriding the
>  	 * internal logic to generate the codec wake to controller.
> -- 
> 2.13.6
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* ✓ Fi.CI.BAT: success for drm/i915/cnl: Enable Audio Pin Buffer. (rev2)
  2018-02-08  0:31 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
  2018-02-08  0:37 ` Rodrigo Vivi
@ 2018-02-08  0:51 ` Patchwork
  2018-02-08  7:46 ` ✓ Fi.CI.IGT: " Patchwork
  2 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2018-02-08  0:51 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/cnl: Enable Audio Pin Buffer. (rev2)
URL   : https://patchwork.freedesktop.org/series/26954/
State : success

== Summary ==

Series 26954v2 drm/i915/cnl: Enable Audio Pin Buffer.
https://patchwork.freedesktop.org/api/1.0/series/26954/revisions/2/mbox/

Test kms_pipe_crc_basic:
        Subgroup suspend-read-crc-pipe-b:
                incomplete -> PASS       (fi-snb-2520m) fdo#103713

fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:415s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:424s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:373s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:487s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:287s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:482s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:484s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:471s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:457s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:567s
fi-cnl-y3        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:576s
fi-elk-e7500     total:288  pass:229  dwarn:0   dfail:0   fail:0   skip:59  time:415s
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:279s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:513s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:387s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:409s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:457s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:416s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:460s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:497s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:455s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:500s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:594s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:429s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:506s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:526s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:491s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:494s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:410s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:429s
fi-snb-2520m     total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:519s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:393s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:469s

3a0a17a6152eeae75653d005494cc83f6f2bf47b drm-tip: 2018y-02m-07d-22h-59m-51s UTC integration manifest
abb9c576f58b drm/i915/cnl: Enable Audio Pin Buffer.

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7933/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] drm/i915/cnl: Enable Audio Pin Buffer.
  2018-02-08  0:37 ` Rodrigo Vivi
@ 2018-02-08  4:55   ` Guneshwor Singh
  0 siblings, 0 replies; 10+ messages in thread
From: Guneshwor Singh @ 2018-02-08  4:55 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: Jani Nikula, intel-gfx, Sanyog Kale

Hi Rodrigo,

On Wed, Feb 07, 2018 at 04:37:33PM -0800, Rodrigo Vivi wrote:
> Rodrigo Vivi <rodrigo.vivi@intel.com> writes:
> 
> > Starting on CNL, we need to enable Audio Pin Buffer.
> 
> Ok... I forgot to include ICL on this now.
> But first let's check if this is working on CNL and later I sent a v5.
> 

This does not work on CNL. With this, the vendor id response is
0xffffffff.

I am not sure though why/how the below works fine:
(commented out disable sequence)

if (IS_CANNONLAKE(dev_priv)) {
	tmp = I915_READ(AUDIO_PIN_BUF_CTL);
	if (enable)
		tmp |= AUDIO_PIN_BUF_ENABLE;
	/*
	else
		tmp &= ~AUDIO_PIN_BUF_ENABLE;
	*/
	I915_WRITE(AUDIO_PIN_BUF_CTL, tmp);

> On top of that for CNL and ICL audio needs to know when we are
> switching cdclk. But for this work I'd like to hear from audio
> if they need a new hook for notification or what.
> 
> And I will wait the work on audio start first before attempt
> to implement any new hook on our side.
> 
> Thanks,
> Rodrigo.
> 
> >
> > v4: Throw the exclusive hook and everything else away
> >     and add set/unset bit along with codec awake.
> >
> > Based on few spec links that I was checking recently
> > I now believe that on CNL we also need to keep the codec
> > awake chicken bit along with PG2 enable and also add
> > this extra pin buffer enable.
> >
> > BSpec: 18057
> > BSpec: 21352
> > BSpec: 19621
> >
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Sanyog Kale <sanyog.r.kale@intel.com>
> > Cc: Guneshwor Singh <guneshwor.o.singh@intel.com>
> > Cc: Abhay Kumar <abhay.kumar@intel.com>
> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h    |  3 +++
> >  drivers/gpu/drm/i915/intel_audio.c | 11 ++++++++++-
> >  2 files changed, 13 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index 65ba10ad1fe5..768e784ea241 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -8424,6 +8424,9 @@ enum {
> >  #define HSW_AUD_CHICKENBIT			_MMIO(0x65f10)
> >  #define   SKL_AUD_CODEC_WAKE_SIGNAL		(1 << 15)
> >  
> > +#define AUDIO_PIN_BUF_CTL			_MMIO(0x48414)
> > +#define  AUDIO_PIN_BUF_ENABLE			(1 << 31)
> > +
> >  /* HSW Power Wells */
> >  #define _HSW_PWR_WELL_CTL1			0x45400
> >  #define _HSW_PWR_WELL_CTL2			0x45404
> > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> > index 522d54fecb53..34f18322c9bd 100644
> > --- a/drivers/gpu/drm/i915/intel_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_audio.c
> > @@ -729,11 +729,20 @@ static void i915_audio_component_codec_wake_override(struct device *kdev,
> >  	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
> >  	u32 tmp;
> >  
> > -	if (!IS_GEN9_BC(dev_priv))
> > +	if (!IS_GEN9_BC(dev_priv) && !IS_CANNONLAKE(dev_priv))
> >  		return;
> >  
> >  	i915_audio_component_get_power(kdev);
> >  
> > +	if (IS_CANNONLAKE(dev_priv)) {
> > +		tmp = I915_READ(AUDIO_PIN_BUF_CTL);
> > +		if (enable)
> > +			tmp |= AUDIO_PIN_BUF_ENABLE;
> > +		else
> > +			tmp &= ~AUDIO_PIN_BUF_ENABLE;
> > +		I915_WRITE(AUDIO_PIN_BUF_CTL, tmp);
> > +	}
> > +
> >  	/*
> >  	 * Enable/disable generating the codec wake signal, overriding the
> >  	 * internal logic to generate the codec wake to controller.
> > -- 
> > 2.13.6
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* ✓ Fi.CI.IGT: success for drm/i915/cnl: Enable Audio Pin Buffer. (rev2)
  2018-02-08  0:31 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
  2018-02-08  0:37 ` Rodrigo Vivi
  2018-02-08  0:51 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Enable Audio Pin Buffer. (rev2) Patchwork
@ 2018-02-08  7:46 ` Patchwork
  2 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2018-02-08  7:46 UTC (permalink / raw)
  To: Rodrigo Vivi; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/cnl: Enable Audio Pin Buffer. (rev2)
URL   : https://patchwork.freedesktop.org/series/26954/
State : success

== Summary ==

Warning: bzip CI_DRM_3739/shard-glkb6/results17.json.bz2 wasn't in correct JSON format
Test kms_sysfs_edid_timing:
                warn       -> PASS       (shard-apl) fdo#100047
Test pm_rpm:
        Subgroup legacy-planes-dpms:
                skip       -> PASS       (shard-apl)
        Subgroup modeset-non-lpsp-stress:
                skip       -> PASS       (shard-apl)
Test kms_cursor_legacy:
        Subgroup basic-busy-flip-before-cursor-atomic:
                skip       -> PASS       (shard-apl)
        Subgroup cursora-vs-flipa-toggle:
                skip       -> PASS       (shard-apl)
        Subgroup flip-vs-cursor-busy-crc-atomic:
                skip       -> PASS       (shard-apl)
Test gem_mmap_wc:
        Subgroup set-cache-level:
                skip       -> PASS       (shard-apl)
Test kms_chv_cursor_fail:
        Subgroup pipe-a-64x64-top-edge:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-c-64x64-bottom-edge:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-c-64x64-top-edge:
                skip       -> PASS       (shard-apl)
Test kms_plane_lowres:
        Subgroup pipe-b-tiling-yf:
                skip       -> PASS       (shard-apl) fdo#103166 +1
Test kms_frontbuffer_tracking:
        Subgroup fbc-1p-primscrn-cur-indfb-draw-blt:
                skip       -> PASS       (shard-apl) fdo#103167 +2
        Subgroup fbc-indfb-scaledprimary:
                skip       -> PASS       (shard-apl)
        Subgroup fbc-1p-primscrn-pri-indfb-draw-render:
                skip       -> PASS       (shard-apl) fdo#101623 +1
        Subgroup fbc-1p-offscren-pri-shrfb-draw-mmap-gtt:
                skip       -> PASS       (shard-apl)
Test kms_fbcon_fbt:
        Subgroup fbc:
                skip       -> PASS       (shard-apl)
Test kms_flip:
        Subgroup flip-vs-fences:
                skip       -> PASS       (shard-apl)
        Subgroup flip-vs-dpms-interruptible:
                skip       -> PASS       (shard-apl)
        Subgroup flip-vs-panning-interruptible:
                skip       -> PASS       (shard-apl)
        Subgroup basic-flip-vs-wf_vblank:
                fail       -> PASS       (shard-hsw) fdo#100368
        Subgroup nonexisting-fb:
                skip       -> PASS       (shard-apl)
        Subgroup blocking-absolute-wf_vblank-interruptible:
                skip       -> PASS       (shard-apl)
Test kms_atomic:
        Subgroup test_only:
                skip       -> PASS       (shard-apl)
        Subgroup plane_overlay_legacy:
                skip       -> PASS       (shard-apl)
Test kms_vblank:
        Subgroup pipe-b-wait-idle:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-b-wait-forked-busy:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-c-ts-continuation-idle-hang:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-a-wait-busy:
                skip       -> PASS       (shard-apl)
Test kms_color:
        Subgroup pipe-a-ctm-blue-to-red:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-b-legacy-gamma-reset:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-a-ctm-0-25:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-c-ctm-0-75:
                skip       -> PASS       (shard-apl)
        Subgroup pipe-c-ctm-blue-to-red:
                skip       -> PASS       (shard-apl)
Test kms_busy:
        Subgroup extended-modeset-hang-oldfb-with-reset-render-b:
                skip       -> PASS       (shard-apl)
Test kms_cursor_crc:
        Subgroup cursor-64x21-offscreen:
                skip       -> PASS       (shard-apl)
        Subgroup cursor-128x128-suspend:
                pass       -> INCOMPLETE (shard-hsw) fdo#103540
        Subgroup cursor-256x85-sliding:
                skip       -> PASS       (shard-apl)
        Subgroup cursor-256x256-onscreen:
                skip       -> PASS       (shard-apl)
Test kms_draw_crc:
        Subgroup draw-method-xrgb8888-mmap-gtt-xtiled:
                skip       -> PASS       (shard-apl)
        Subgroup draw-method-xrgb8888-render-xtiled:
                skip       -> PASS       (shard-apl)
        Subgroup draw-method-rgb565-pwrite-untiled:
                skip       -> PASS       (shard-apl)
        Subgroup draw-method-xrgb2101010-pwrite-untiled:
                skip       -> PASS       (shard-apl)
        Subgroup draw-method-xrgb2101010-render-xtiled:
                skip       -> PASS       (shard-apl)
Test drv_selftest:
        Subgroup live_gtt:
                pass       -> INCOMPLETE (shard-apl) fdo#103927
Test kms_pipe_crc_basic:
        Subgroup nonblocking-crc-pipe-c-frame-sequence:
                skip       -> PASS       (shard-apl) fdo#103481
        Subgroup nonblocking-crc-pipe-b:
                skip       -> PASS       (shard-apl)
Test kms_ccs:
        Subgroup pipe-b-bad-pixel-format:
                skip       -> PASS       (shard-apl)
Test kms_plane:
        Subgroup plane-panning-bottom-right-suspend-pipe-c-planes:
                dmesg-warn -> PASS       (shard-apl) fdo#104164
Test kms_rmfb:
        Subgroup close-fd:
                skip       -> PASS       (shard-apl)
Test perf:
        Subgroup blocking:
                pass       -> FAIL       (shard-hsw) fdo#102252

fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
fdo#103481 https://bugs.freedesktop.org/show_bug.cgi?id=103481
fdo#104164 https://bugs.freedesktop.org/show_bug.cgi?id=104164
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252

shard-apl        total:3391 pass:1745 dwarn:1   dfail:0   fail:20  skip:1623 time:12103s
shard-hsw        total:3382 pass:1723 dwarn:1   dfail:0   fail:11  skip:1645 time:11215s
shard-snb        total:3444 pass:1351 dwarn:1   dfail:0   fail:10  skip:2082 time:6610s
Blacklisted hosts:
shard-kbl        total:3444 pass:1911 dwarn:1   dfail:0   fail:21  skip:1511 time:9696s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_7933/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-02-08  7:46 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-08  0:31 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
2018-02-08  0:37 ` Rodrigo Vivi
2018-02-08  4:55   ` Guneshwor Singh
2018-02-08  0:51 ` ✓ Fi.CI.BAT: success for drm/i915/cnl: Enable Audio Pin Buffer. (rev2) Patchwork
2018-02-08  7:46 ` ✓ Fi.CI.IGT: " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2017-07-06 21:03 [PATCH] drm/i915/cnl: Enable Audio Pin Buffer Rodrigo Vivi
2017-08-16 23:46 ` Pandiyan, Dhinakaran
2017-08-17  3:56   ` Sanyog Kale
2017-08-17 18:55     ` Vivi, Rodrigo
2017-08-17 19:08       ` Pandiyan, Dhinakaran

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.