diff options
author | thfr <thfr@cvs.openbsd.org> | 2019-04-02 20:24:33 +0000 |
---|---|---|
committer | thfr <thfr@cvs.openbsd.org> | 2019-04-02 20:24:33 +0000 |
commit | 02350c053e7d3eb3e3b55d8c4faab4c22a4f2415 (patch) | |
tree | f5d4f51b1bc81b1acf28137613f8c83a68557f38 | |
parent | 2c08315ccbabb07f75a15229acc1fd68b8e1384e (diff) |
disable MSI for AMD Summit Ridge/Raven Ridge HD Audio as workaround for audio stopping after varying amounts of time. ok brynet@, deraadt@
-rw-r--r-- | sys/dev/pci/azalia.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/pci/azalia.c b/sys/dev/pci/azalia.c index 011a4a4247c..a42ad9fc638 100644 --- a/sys/dev/pci/azalia.c +++ b/sys/dev/pci/azalia.c @@ -1,4 +1,4 @@ -/* $OpenBSD: azalia.c,v 1.245 2019/03/24 14:37:43 jcs Exp $ */ +/* $OpenBSD: azalia.c,v 1.246 2019/04/02 20:24:32 thfr Exp $ */ /* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */ /*- @@ -517,6 +517,15 @@ azalia_pci_attach(struct device *parent, struct device *self, void *aux) azalia_pci_write(sc->pc, sc->tag, ICH_PCI_MMC, reg); } + /* disable MSI for AMD Summit Ridge/Raven Ridge HD Audio */ + if (PCI_VENDOR(sc->pciid) == PCI_VENDOR_AMD) { + switch (PCI_PRODUCT(sc->pciid)) { + case PCI_PRODUCT_AMD_AMD64_17_HDA: + case PCI_PRODUCT_AMD_RAVENRIDGE_HDA: + pa->pa_flags &= ~PCI_FLAGS_MSI_ENABLED; + } + } + /* interrupt */ if (pci_intr_map_msi(pa, &ih) && pci_intr_map(pa, &ih)) { printf(": can't map interrupt\n"); |