ALSA: hda - mask buggy stream DMA0 for Broadwell display controller
authorMengdong Lin <mengdong.lin@intel.com>
Tue, 13 May 2014 08:57:08 +0000 (16:57 +0800)
committerTakashi Iwai <tiwai@suse.de>
Tue, 13 May 2014 10:11:58 +0000 (12:11 +0200)
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>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_intel.c

index b540ad71eb0d733ab217550a66ac40eb35e22da6..2c54629d62d10db0166d6feb32588f1f0d3f0543 100644 (file)
@@ -1367,6 +1367,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);