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.
I can also confirm that AZX_DCAPS_POSFIX_LPIB is required on my hardware also.
http://www.alsa-project.org/db/?f=512e0135e82a644bb9d2fe8f6b5e2be1cb10c53b
Things of note:
ASUS Sabertooth 990FX r1 with bugged IOMMU Linux does not load correctly without IOMMU enabled, so disabling to test is not an option.
On Wed, 6 Aug 2014 14:39:14 +0200 Takashi Iwai tiwai@suse.de wrote:
ASUS Phoebus with CMI8888 HD-audio chip (PCI id 13f6:5011) doesn't work with HD-audio driver as is because of some weird nature. For making DMA properly working, we need to disable MSI. The position report buffer doesn't work, thus we need to force reading LPIB instead. And yet, the codec CORB/RIRB communication gives errors unless we disable the snooping (caching).
In this patch, all these workarounds are added as a quirk for the device. The HD-audio *codec* chip needs yet another workaround, but it'll be provided in the succeeding patch.
Reported-and-tested-by: Vincent Lejeune vljn@ovi.com Signed-off-by: Takashi Iwai tiwai@suse.de
sound/pci/hda/hda_intel.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 5db1948699d8..aa302fb03fc5 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -265,6 +265,7 @@ enum { AZX_DRIVER_TERA, AZX_DRIVER_CTX, AZX_DRIVER_CTHDA,
- AZX_DRIVER_CMEDIA, AZX_DRIVER_GENERIC, AZX_NUM_DRIVERS, /* keep this as last entry */
}; @@ -330,6 +331,7 @@ static char *driver_short_names[] = { [AZX_DRIVER_TERA] = "HDA Teradici", [AZX_DRIVER_CTX] = "HDA Creative", [AZX_DRIVER_CTHDA] = "HDA Creative",
- [AZX_DRIVER_CMEDIA] = "HDA C-Media", [AZX_DRIVER_GENERIC] = "HD-Audio Generic",
};
@@ -1373,6 +1375,7 @@ static void azx_check_snoop_available(struct azx *chip) snoop = false; break; case AZX_DRIVER_CTHDA:
- case AZX_DRIVER_CMEDIA: snoop = false; break; }
@@ -2154,6 +2157,10 @@ static const struct pci_device_id azx_ids[] = { .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, #endif
- /* CM8888 */
- { PCI_DEVICE(0x13f6, 0x5011),
.driver_data = AZX_DRIVER_CMEDIA |
/* Vortex86MX */ { PCI_DEVICE(0x17f3, 0x3010), .driver_data =AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB },
AZX_DRIVER_GENERIC }, /* VMware HDAudio */