[alsa-devel] [PATCH] ALSA: hda - using POS_FIX_LPIB on Broadwell HDMI Audio

Lin, Mengdong mengdong.lin at intel.com
Mon May 12 11:46:07 CEST 2014


> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de]
> Sent: Monday, May 12, 2014 4:31 PM
> To: Lin, Mengdong
> Cc: David Henningsson; Yang, Libin; anssi.hannula at iki.fi;
> alsa-devel at alsa-project.org; Pierre-Louis Bossart
> Subject: Re: [alsa-devel] [PATCH] ALSA: hda - using POS_FIX_LPIB on Broadwell
> HDMI Audio
> 
> At Mon, 12 May 2014 08:22:13 +0000,
> Lin, Mengdong wrote:
> >
> > > -----Original Message-----
> > > From: Takashi Iwai [mailto:tiwai at suse.de]
> > > Sent: Friday, May 09, 2014 6:20 PM
> > > To: Lin, Mengdong
> > > Cc: David Henningsson; Yang, Libin; anssi.hannula at iki.fi;
> > > alsa-devel at alsa-project.org; Pierre-Louis Bossart
> > > Subject: Re: [alsa-devel] [PATCH] ALSA: hda - using POS_FIX_LPIB on
> > > Broadwell HDMI Audio
> > >
> > > At Fri, 9 May 2014 10:08:19 +0000,
> > > Lin, Mengdong wrote:
> > > >
> > > > Hi,
> > > >
> > > > We found the Broadwell HDMI audio regression is introduced by this
> patch:
> > > >
> > > > commit dcb32ecd9a533f47ab652c5c5680bc50a7a822cd
> > > > Author: Anssi Hannula <anssi.hannula at iki.fi>
> > > > Date: Tue Apr 8 12:36:42 2014 +0300
> > > > ALSA: hda - Do not assign streams in reverse order
> > > >
> > > > We'll further check the root cause.
> > > > Since this patch seems only affect the stream ID. Actually Intel
> > > > GPU tool only
> > > find the stream ID is changed by this patch.
> > > >
> > > > In addition, Haswell HDMI audio is not affected and works well. It
> > > > seems
> > > there is HW behavior difference between HSW and BDW.
> > >
> > > Thanks for spotting out!
> > >
> > > This sounds like a weird hardware bug of BDW.  If any, we'd need to
> > > introduce a flag indicating flipping this  lookup behavior depending on the
> chip.
> >
> > In the display HD-A controller of HSW/BDW, there are 3 sets of stream
> descriptors registers which controls the DMA engines to transfer audio data
> over HD-A link:
> > set #0: 0x80 ~ 0x9c SD0CTL ~ SD0BDPU
> > set #1: 0xa0 ~ 0xbc SD1CTL ~ SD1BDPU
> > set #2: 0xc0 ~ 0xdc SD2CTL ~ SD2BDPU
> >
> > Test shows that
> > On HSW, DMA update on all 3 sets of registers are okay.
> > On BDW, DMA update on set #1 and #2 are okay, but is buggy on set #0.
> Since the three sets of registers have the same definition according to spec and
> driver behavior is also same, it seems to be a HW issue.
> >
> > Maybe we'll have to use the original reverse lookup order for BDW HDMI/DP
> audio.
> 
> I wonder what if you run three streams.  Is the set#0 always broken, or broken
> only when used alone?  In the former case, the fix would to mask the first slot.
> In the latter case, back to reverse assignment would work around it.

The set#0 is always broken, when I run single or two streams at the same time. 
And when running two streams, there is no difference if the audio driver choose set#0 or #1 at first.

Is it okay to introduce a flag "disabled" to struct azx_dev? 
If this flag is set, the azx_dev slot is masked.

Thanks
Mengdong


More information about the Alsa-devel mailing list