diff options
author | Jacob Meuser <jakemsr@cvs.openbsd.org> | 2010-03-25 03:40:48 +0000 |
---|---|---|
committer | Jacob Meuser <jakemsr@cvs.openbsd.org> | 2010-03-25 03:40:48 +0000 |
commit | 322372d92153d1a5f2dc46db9cc96659a30b1bfc (patch) | |
tree | d4df2634f16cb39fff12da0f744142a537683b95 /sys/dev/pci/azalia.c | |
parent | 101ad9b36b44c7e4fb373480c7b855d39e8bcdc5 (diff) |
disable MSI on Intel devices
Diffstat (limited to 'sys/dev/pci/azalia.c')
-rw-r--r-- | sys/dev/pci/azalia.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/dev/pci/azalia.c b/sys/dev/pci/azalia.c index f59f9043550..8ea6ffbccab 100644 --- a/sys/dev/pci/azalia.c +++ b/sys/dev/pci/azalia.c @@ -1,4 +1,4 @@ -/* $OpenBSD: azalia.c,v 1.168 2010/03/21 15:02:31 jakemsr Exp $ */ +/* $OpenBSD: azalia.c,v 1.169 2010/03/25 03:40:47 jakemsr Exp $ */ /* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */ /*- @@ -100,6 +100,8 @@ int az_debug = 0; #define ICH_PCI_HDCTL_SIGNALMODE 0x01 #define ICH_PCI_HDTCSEL 0x44 #define ICH_PCI_HDTCSEL_MASK 0x7 +#define ICH_PCI_MMC 0x62 +#define ICH_PCI_MMC_ME 0x1 /* internal types */ @@ -415,7 +417,14 @@ azalia_pci_attach(struct device *parent, struct device *self, void *aux) v = pci_conf_read(pa->pa_pc, pa->pa_tag, ICH_PCI_HDTCSEL); pci_conf_write(pa->pa_pc, pa->pa_tag, ICH_PCI_HDTCSEL, v & ~(ICH_PCI_HDTCSEL_MASK)); - + + /* disable MSI, use INTx instead */ + if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_INTEL) { + reg = azalia_pci_read(pa->pa_pc, pa->pa_tag, ICH_PCI_MMC); + reg &= ~(ICH_PCI_MMC_ME); + azalia_pci_write(pa->pa_pc, pa->pa_tag, ICH_PCI_MMC, reg); + } + /* enable PCIe snoop */ switch (PCI_PRODUCT(pa->pa_id)) { case PCI_PRODUCT_ATI_SB450_HDA: |