All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
@ 2017-02-02 10:12 Takashi Iwai
  2017-02-03 13:32 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2017-02-02 10:12 UTC (permalink / raw)
  To: alsa-devel, ntel-gfx
  Cc: Pierre-Louis Bossart, Jani Nikula, rakesh.a.ughreja, Jerome Anand,
	Daniel Vetter, Ville Syrjälä

The audio chicken bit (register offset 0x62f38) seems required to make
DP audio working on some machines.  At least, on Dell Wyse 3040, I
failed to get the audio unless this bit is set once.

Strangely, the bit seems necessary only once, and it persists after
that, even some power-off cycles.  The register is supposedly
write-only, so it's no evidence whether the bit keeps effect
persistently.  But, judging from the experiment, it looks enough to
set it up once at the device initialization.

The patch is basically a cut from the original patch by Pierre-Louis
Bossart.

Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/i915/i915_reg.h        | 3 +++
 drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 4e24ba0cdbe8..4f15a3dc6d98 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
 #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
 
 /* DisplayPort Audio w/ LPE */
+#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
+#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
+
 #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
 #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
 #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
index d3ffe0012692..3ba2799e93bd 100644
--- a/drivers/gpu/drm/i915/intel_lpe_audio.c
+++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
@@ -248,6 +248,13 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
 		goto err_free_irq;
 	}
 
+	/* enable chicken bit; at least this is required for Dell Wyse 3040
+	 * with DP outputs (but only sometimes by some reason!)
+	 */
+	I915_WRITE(VLV_AUD_CHICKEN_BIT_REG,
+		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
+		   VLV_CHICKEN_BIT_DBG_ENABLE);
+
 	return 0;
 err_free_irq:
 	irq_free_desc(dev_priv->lpe_audio.irq);
-- 
2.11.0

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

* [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
  2017-02-02 17:02 [PATCH 00/53] Intel LPE audio driver cleanups Takashi Iwai
@ 2017-02-02 17:02 ` Takashi Iwai
  2017-02-02 17:07   ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2017-02-02 17:02 UTC (permalink / raw)
  To: alsa-devel; +Cc: Pierre-Louis Bossart, Jerome Anand

The audio chicken bit (register offset 0x62f38) seems required to make
DP audio working on some machines.  At least, on Dell Wyse 3040, I
failed to get the audio unless this bit is set once.

Strangely, the bit seems necessary only once, and it persists after
that, even some power-off cycles.  The register is supposedly
write-only, so it's no evidence whether the bit keeps effect
persistently.  But, judging from the experiment, it looks enough to
set it up once at the device initialization.

The patch is basically a cut from the original patch by Pierre-Louis
Bossart.

Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/i915/i915_reg.h        | 3 +++
 drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 4e24ba0cdbe8..4f15a3dc6d98 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
 #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
 
 /* DisplayPort Audio w/ LPE */
+#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
+#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
+
 #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
 #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
 #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
index d3ffe0012692..3ba2799e93bd 100644
--- a/drivers/gpu/drm/i915/intel_lpe_audio.c
+++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
@@ -248,6 +248,13 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
 		goto err_free_irq;
 	}
 
+	/* enable chicken bit; at least this is required for Dell Wyse 3040
+	 * with DP outputs (but only sometimes by some reason!)
+	 */
+	I915_WRITE(VLV_AUD_CHICKEN_BIT_REG,
+		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
+		   VLV_CHICKEN_BIT_DBG_ENABLE);
+
 	return 0;
 err_free_irq:
 	irq_free_desc(dev_priv->lpe_audio.irq);
-- 
2.11.0

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

* Re: [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
  2017-02-02 17:02 ` [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
@ 2017-02-02 17:07   ` Takashi Iwai
  0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2017-02-02 17:07 UTC (permalink / raw)
  To: alsa-devel; +Cc: Pierre-Louis Bossart, Jerome Anand

On Thu, 02 Feb 2017 18:02:15 +0100,
Takashi Iwai wrote:
> 
> The audio chicken bit (register offset 0x62f38) seems required to make
> DP audio working on some machines.  At least, on Dell Wyse 3040, I
> failed to get the audio unless this bit is set once.
> 
> Strangely, the bit seems necessary only once, and it persists after
> that, even some power-off cycles.  The register is supposedly
> write-only, so it's no evidence whether the bit keeps effect
> persistently.  But, judging from the experiment, it looks enough to
> set it up once at the device initialization.
> 
> The patch is basically a cut from the original patch by Pierre-Louis
> Bossart.
> 
> Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

Sorry, this one is just a resend by mistake (I forgot to clean up
while sending the other patch series).  Please disregard.


Takashi

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

* Re: [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
  2017-02-02 10:12 [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
@ 2017-02-03 13:32 ` Takashi Iwai
  2017-02-03 14:54   ` Ville Syrjälä
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2017-02-03 13:32 UTC (permalink / raw)
  To: intel-gfx; +Cc: alsa-devel, rakesh.a.ughreja

On Thu, 02 Feb 2017 11:12:53 +0100,
Takashi Iwai wrote:
> 
> The audio chicken bit (register offset 0x62f38) seems required to make
> DP audio working on some machines.  At least, on Dell Wyse 3040, I
> failed to get the audio unless this bit is set once.
> 
> Strangely, the bit seems necessary only once, and it persists after
> that, even some power-off cycles.  The register is supposedly
> write-only, so it's no evidence whether the bit keeps effect
> persistently.  But, judging from the experiment, it looks enough to
> set it up once at the device initialization.
> 
> The patch is basically a cut from the original patch by Pierre-Louis
> Bossart.
> 
> Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> Signed-off-by: Takashi Iwai <tiwai@suse.de>

I gave a typo to intel-gfx ML address, now corrected, sorry.

Are you i915 guys OK with this change?  I'd love to fix it for 4.11 in
time, so please check and give ACK.


thanks,

Takashi

> ---
>  drivers/gpu/drm/i915/i915_reg.h        | 3 +++
>  drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 4e24ba0cdbe8..4f15a3dc6d98 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
>  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
>  
>  /* DisplayPort Audio w/ LPE */
> +#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> +#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> +
>  #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
>  #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
>  #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
> diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
> index d3ffe0012692..3ba2799e93bd 100644
> --- a/drivers/gpu/drm/i915/intel_lpe_audio.c
> +++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
> @@ -248,6 +248,13 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
>  		goto err_free_irq;
>  	}
>  
> +	/* enable chicken bit; at least this is required for Dell Wyse 3040
> +	 * with DP outputs (but only sometimes by some reason!)
> +	 */
> +	I915_WRITE(VLV_AUD_CHICKEN_BIT_REG,
> +		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
> +		   VLV_CHICKEN_BIT_DBG_ENABLE);
> +
>  	return 0;
>  err_free_irq:
>  	irq_free_desc(dev_priv->lpe_audio.irq);
> -- 
> 2.11.0
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
  2017-02-03 13:32 ` Takashi Iwai
@ 2017-02-03 14:54   ` Ville Syrjälä
  2017-02-03 15:18     ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Ville Syrjälä @ 2017-02-03 14:54 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, intel-gfx, rakesh.a.ughreja

On Fri, Feb 03, 2017 at 02:32:37PM +0100, Takashi Iwai wrote:
> On Thu, 02 Feb 2017 11:12:53 +0100,
> Takashi Iwai wrote:
> > 
> > The audio chicken bit (register offset 0x62f38) seems required to make
> > DP audio working on some machines.  At least, on Dell Wyse 3040, I
> > failed to get the audio unless this bit is set once.
> > 
> > Strangely, the bit seems necessary only once, and it persists after
> > that, even some power-off cycles.  The register is supposedly
> > write-only, so it's no evidence whether the bit keeps effect
> > persistently.  But, judging from the experiment, it looks enough to
> > set it up once at the device initialization.
> > 
> > The patch is basically a cut from the original patch by Pierre-Louis
> > Bossart.
> > 
> > Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> 
> I gave a typo to intel-gfx ML address, now corrected, sorry.
> 
> Are you i915 guys OK with this change?  I'd love to fix it for 4.11 in
> time, so please check and give ACK.
> 
> 
> thanks,
> 
> Takashi
> 
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h        | 3 +++
> >  drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
> >  2 files changed, 10 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index 4e24ba0cdbe8..4f15a3dc6d98 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
> >  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
> >  
> >  /* DisplayPort Audio w/ LPE */
> > +#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> > +#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> > +
> >  #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
> >  #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
> >  #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
> > diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > index d3ffe0012692..3ba2799e93bd 100644
> > --- a/drivers/gpu/drm/i915/intel_lpe_audio.c
> > +++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > @@ -248,6 +248,13 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
> >  		goto err_free_irq;
> >  	}
> >  
> > +	/* enable chicken bit; at least this is required for Dell Wyse 3040
> > +	 * with DP outputs (but only sometimes by some reason!)
> > +	 */
> > +	I915_WRITE(VLV_AUD_CHICKEN_BIT_REG,
> > +		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
> > +		   VLV_CHICKEN_BIT_DBG_ENABLE);

RMW seems a little pointless since you verified that the register can't
actually be read.

So, with the read dropped
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> > +
> >  	return 0;
> >  err_free_irq:
> >  	irq_free_desc(dev_priv->lpe_audio.irq);
> > -- 
> > 2.11.0
> > 

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* Re: [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
  2017-02-03 14:54   ` Ville Syrjälä
@ 2017-02-03 15:18     ` Takashi Iwai
  0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2017-02-03 15:18 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: alsa-devel, intel-gfx, rakesh.a.ughreja

On Fri, 03 Feb 2017 15:54:33 +0100,
Ville Syrjälä wrote:
> 
> On Fri, Feb 03, 2017 at 02:32:37PM +0100, Takashi Iwai wrote:
> > On Thu, 02 Feb 2017 11:12:53 +0100,
> > Takashi Iwai wrote:
> > > 
> > > The audio chicken bit (register offset 0x62f38) seems required to make
> > > DP audio working on some machines.  At least, on Dell Wyse 3040, I
> > > failed to get the audio unless this bit is set once.
> > > 
> > > Strangely, the bit seems necessary only once, and it persists after
> > > that, even some power-off cycles.  The register is supposedly
> > > write-only, so it's no evidence whether the bit keeps effect
> > > persistently.  But, judging from the experiment, it looks enough to
> > > set it up once at the device initialization.
> > > 
> > > The patch is basically a cut from the original patch by Pierre-Louis
> > > Bossart.
> > > 
> > > Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> > > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > 
> > I gave a typo to intel-gfx ML address, now corrected, sorry.
> > 
> > Are you i915 guys OK with this change?  I'd love to fix it for 4.11 in
> > time, so please check and give ACK.
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> > > ---
> > >  drivers/gpu/drm/i915/i915_reg.h        | 3 +++
> > >  drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
> > >  2 files changed, 10 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > index 4e24ba0cdbe8..4f15a3dc6d98 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
> > >  #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
> > >  
> > >  /* DisplayPort Audio w/ LPE */
> > > +#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
> > > +#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
> > > +
> > >  #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
> > >  #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
> > >  #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
> > > diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > > index d3ffe0012692..3ba2799e93bd 100644
> > > --- a/drivers/gpu/drm/i915/intel_lpe_audio.c
> > > +++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
> > > @@ -248,6 +248,13 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
> > >  		goto err_free_irq;
> > >  	}
> > >  
> > > +	/* enable chicken bit; at least this is required for Dell Wyse 3040
> > > +	 * with DP outputs (but only sometimes by some reason!)
> > > +	 */
> > > +	I915_WRITE(VLV_AUD_CHICKEN_BIT_REG,
> > > +		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
> > > +		   VLV_CHICKEN_BIT_DBG_ENABLE);
> 
> RMW seems a little pointless since you verified that the register can't
> actually be read.

Indeed.

> So, with the read dropped
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks!


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

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

end of thread, other threads:[~2017-02-03 15:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-02 10:12 [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
2017-02-03 13:32 ` Takashi Iwai
2017-02-03 14:54   ` Ville Syrjälä
2017-02-03 15:18     ` Takashi Iwai
  -- strict thread matches above, loose matches on Subject: below --
2017-02-02 17:02 [PATCH 00/53] Intel LPE audio driver cleanups Takashi Iwai
2017-02-02 17:02 ` [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
2017-02-02 17:07   ` Takashi Iwai

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.