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

Lin, Mengdong mengdong.lin at intel.com
Tue May 13 06:37:18 CEST 2014


Hi Takashi,

I submitted two patches to mask the buggy DMA0 of Broadwell display controller. Please review.

[PATCH 1/2] ALSA: hda - allow to mask a buggy stream DMA by setting it as opened
[PATCH 2/2] ALSA: hda - mask buggy stream DMA0 for Broadwell display controller

Thanks again
Mengdong

> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de]
> Sent: Monday, May 12, 2014 5:52 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 09:46:07 +0000,
> Lin, Mengdong wrote:
> >
> > > -----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.
> 
> You can just keep azx_dev->opened flag set at initialization time.
> 
> 
> Takashi


More information about the Alsa-devel mailing list