[alsa-devel] [PATCH 1/2] ALSA: hda - Fix probing and stuttering on CMI8888 HD-audio controller
Takashi Iwai
tiwai at suse.de
Wed Oct 29 08:50:53 CET 2014
At Wed, 29 Oct 2014 07:21:24 +1100,
Geoffrey McRae wrote:
>
> I can confirm that disable of MSI is required as even Windows 7
> 64bit does not enable this for Intel HDA. Out of curiosity I altered
> the driver to use MSI-X with the same results, interrupts are never
> received even though the PCI caps state that MSI is supported.
>
> Playback is very poor and stutters if I do not allow snoop by
> commenting out "case AZX_DRIVER_CMEDIA:" in azx_check_snoop_available.
OK, so we have some conflicting results. Possibly we need non-cached
pages only for CORB/RIRB but leave the stream buffers? Could you
check the patch below?
thanks,
Takashi
---
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index cfcca4c30d4d..118029d7c6de 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -366,14 +366,15 @@ static void __mark_pages_wc(struct azx *chip, struct snd_dma_buffer *dmab, bool
{
int pages;
- if (azx_snoop(chip))
+ if (azx_snoop(chip) && chip->driver_type != AZX_DRIVER_CMEDIA)
return;
if (!dmab || !dmab->area || !dmab->bytes)
return;
-
#ifdef CONFIG_SND_DMA_SGBUF
if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_SG) {
struct snd_sg_buf *sgbuf = dmab->private_data;
+ if (chip->driver_type == AZX_DRIVER_CMEDIA)
+ return;
if (on)
set_pages_array_wc(sgbuf->page_table, sgbuf->pages);
else
@@ -1376,7 +1377,6 @@ static void azx_check_snoop_available(struct azx *chip)
snoop = false;
break;
case AZX_DRIVER_CTHDA:
- case AZX_DRIVER_CMEDIA:
snoop = false;
break;
}
More information about the Alsa-devel
mailing list