ALSA: hda - Fix probing and stuttering on CMI8888 HD-audio controller
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>
This commit is contained in:
parent
f7ae9ba0e8
commit
c563f473ac
|
@ -265,6 +265,7 @@ enum {
|
||||||
AZX_DRIVER_TERA,
|
AZX_DRIVER_TERA,
|
||||||
AZX_DRIVER_CTX,
|
AZX_DRIVER_CTX,
|
||||||
AZX_DRIVER_CTHDA,
|
AZX_DRIVER_CTHDA,
|
||||||
|
AZX_DRIVER_CMEDIA,
|
||||||
AZX_DRIVER_GENERIC,
|
AZX_DRIVER_GENERIC,
|
||||||
AZX_NUM_DRIVERS, /* keep this as last entry */
|
AZX_NUM_DRIVERS, /* keep this as last entry */
|
||||||
};
|
};
|
||||||
|
@ -330,6 +331,7 @@ static char *driver_short_names[] = {
|
||||||
[AZX_DRIVER_TERA] = "HDA Teradici",
|
[AZX_DRIVER_TERA] = "HDA Teradici",
|
||||||
[AZX_DRIVER_CTX] = "HDA Creative",
|
[AZX_DRIVER_CTX] = "HDA Creative",
|
||||||
[AZX_DRIVER_CTHDA] = "HDA Creative",
|
[AZX_DRIVER_CTHDA] = "HDA Creative",
|
||||||
|
[AZX_DRIVER_CMEDIA] = "HDA C-Media",
|
||||||
[AZX_DRIVER_GENERIC] = "HD-Audio Generic",
|
[AZX_DRIVER_GENERIC] = "HD-Audio Generic",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1373,6 +1375,7 @@ static void azx_check_snoop_available(struct azx *chip)
|
||||||
snoop = false;
|
snoop = false;
|
||||||
break;
|
break;
|
||||||
case AZX_DRIVER_CTHDA:
|
case AZX_DRIVER_CTHDA:
|
||||||
|
case AZX_DRIVER_CMEDIA:
|
||||||
snoop = false;
|
snoop = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2154,6 +2157,10 @@ static const struct pci_device_id azx_ids[] = {
|
||||||
.driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
|
.driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND |
|
||||||
AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
|
AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB },
|
||||||
#endif
|
#endif
|
||||||
|
/* CM8888 */
|
||||||
|
{ PCI_DEVICE(0x13f6, 0x5011),
|
||||||
|
.driver_data = AZX_DRIVER_CMEDIA |
|
||||||
|
AZX_DCAPS_NO_MSI | AZX_DCAPS_POSFIX_LPIB },
|
||||||
/* Vortex86MX */
|
/* Vortex86MX */
|
||||||
{ PCI_DEVICE(0x17f3, 0x3010), .driver_data = AZX_DRIVER_GENERIC },
|
{ PCI_DEVICE(0x17f3, 0x3010), .driver_data = AZX_DRIVER_GENERIC },
|
||||||
/* VMware HDAudio */
|
/* VMware HDAudio */
|
||||||
|
|
Loading…
Reference in New Issue