diff mbox

[v2] ALSA: hda - mask buggy stream DMA0 for Broadwell display controller

Message ID 1399971428-18585-1-git-send-email-mengdong.lin@intel.com (mailing list archive)
State Accepted
Delegated to: Takashi Iwai
Headers show

Commit Message

Lin, Mengdong May 13, 2014, 8:57 a.m. UTC
From: Mengdong Lin <mengdong.lin@intel.com>

Broadwell display controller has 3 stream DMA engines. DMA0 cannot update DMA
postion buffer properly while DMA1 and DMA2 can work well. So this patch masks
the buggy DMA0 by keeping it as opened.

This is a tentative workaround, so keep the change small as Takashi suggested.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>

Comments

Takashi Iwai May 13, 2014, 10:12 a.m. UTC | #1
At Tue, 13 May 2014 16:57:08 +0800,
mengdong.lin@intel.com wrote:
> 
> From: Mengdong Lin <mengdong.lin@intel.com>
> 
> Broadwell display controller has 3 stream DMA engines. DMA0 cannot update DMA
> postion buffer properly while DMA1 and DMA2 can work well. So this patch masks
> the buggy DMA0 by keeping it as opened.
> 
> This is a tentative workaround, so keep the change small as Takashi suggested.
> 
> Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>

Applied now.  Thanks.


Takashi

> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index d6bca62..6309b5b 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -1366,6 +1366,12 @@ static int azx_first_init(struct azx *chip)
>  	/* initialize streams */
>  	azx_init_stream(chip);
>  
> +	/* workaround for Broadwell HDMI: the first stream is broken,
> +	 * so mask it by keeping it as if opened
> +	 */
> +	if (pci->vendor == 0x8086 && pci->device == 0x160c)
> +		chip->azx_dev[0].opened = 1;
> +
>  	/* initialize chip */
>  	azx_init_pci(chip);
>  	azx_init_chip(chip, (probe_only[dev] & 2) == 0);
> -- 
> 1.8.1.2
>
diff mbox

Patch

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index d6bca62..6309b5b 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -1366,6 +1366,12 @@  static int azx_first_init(struct azx *chip)
 	/* initialize streams */
 	azx_init_stream(chip);
 
+	/* workaround for Broadwell HDMI: the first stream is broken,
+	 * so mask it by keeping it as if opened
+	 */
+	if (pci->vendor == 0x8086 && pci->device == 0x160c)
+		chip->azx_dev[0].opened = 1;
+
 	/* initialize chip */
 	azx_init_pci(chip);
 	azx_init_chip(chip, (probe_only[dev] & 2) == 0);