[alsa-devel] [PATCH 1/2] ALSA: hda - Fix probing and stuttering on CMI8888 HD-audio controller
Geoffrey McRae
geoff at spacevs.com
Tue Oct 28 21:21:24 CET 2014
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 at 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 at ovi.com>
> Signed-off-by: Takashi Iwai <tiwai at 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 |
> + AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB },
> /* Vortex86MX */
> { PCI_DEVICE(0x17f3, 0x3010), .driver_data =
> AZX_DRIVER_GENERIC }, /* VMware HDAudio */
More information about the Alsa-devel
mailing list