|
1 |
| -/* $NetBSD: pci_machdep.c,v 1.55 2018/01/31 15:36:29 tsutsui Exp $ */ |
| 1 | +/* $NetBSD: pci_machdep.c,v 1.56 2018/02/09 15:24:35 tsutsui Exp $ */ |
2 | 2 |
|
3 | 3 | /*
|
4 | 4 | * Copyright (c) 1996 Leo Weppelman. All rights reserved.
|
|
32 | 32 | */
|
33 | 33 |
|
34 | 34 | #include <sys/cdefs.h>
|
35 |
| -__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.55 2018/01/31 15:36:29 tsutsui Exp $"); |
| 35 | +__KERNEL_RCSID(0, "$NetBSD: pci_machdep.c,v 1.56 2018/02/09 15:24:35 tsutsui Exp $"); |
36 | 36 |
|
37 | 37 | #include "opt_mbtype.h"
|
38 | 38 |
|
@@ -454,10 +454,15 @@ enable_pci_devices(void)
|
454 | 454 | #define PIIX_PCIB_MBIRQ0 0x70
|
455 | 455 | if ((PCI_VENDOR(id) == PCI_VENDOR_INTEL) &&
|
456 | 456 | (PCI_PRODUCT(id) == PCI_PRODUCT_INTEL_82371FB_ISA)) {
|
457 |
| - /* Set Interrupt Routing for MBIRQ0 to IRQ15 */ |
| 457 | + /* |
| 458 | + * Set Interrupt Routing for MBIRQ0 to IRQ15. |
| 459 | + * Note Milan's ROM bootloader v1.2 and v1.4 incorrectly |
| 460 | + * set MBIRQ0 to IRQ14 (not 15) and unused MBIRQ1 to IRQ 15, |
| 461 | + * so explicitly disable MBIRQ1. |
| 462 | + */ |
458 | 463 | csr = pci_conf_read(pc, tag, PIIX_PCIB_MBIRQ0);
|
459 |
| - csr &= ~0x00000ff; |
460 |
| - csr |= 0x000000f; /* IRQ15 */ |
| 464 | + csr &= ~0x000ffff; |
| 465 | + csr |= 0x000800f; /* MBIRQ1: disable, MBIRQ0: IRQ15 */ |
461 | 466 | pci_conf_write(pc, tag, PIIX_PCIB_MBIRQ0, csr);
|
462 | 467 | #ifdef DEBUG_PCI_MACHDEP
|
463 | 468 | printf("\npcib0: enable and route MBIRQ0 to irq 15\n");
|
|
0 commit comments