diff options
| author | Steve Passe <fsmp@FreeBSD.org> | 1997-05-27 19:24:36 +0000 |
|---|---|---|
| committer | Steve Passe <fsmp@FreeBSD.org> | 1997-05-27 19:24:36 +0000 |
| commit | 6ef807e505d9eb5d696c874e97e5f44294b747dd (patch) | |
| tree | 574c09468a85a443723c8bb294c8bf41da4250b1 | |
| parent | e81ebf92814d1bb7487e25412acbef4faf0d5f45 (diff) | |
Notes
| -rw-r--r-- | sys/dev/pci/pci.c | 15 | ||||
| -rw-r--r-- | sys/pci/pci.c | 15 |
2 files changed, 12 insertions, 18 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 038243510845..618378443c51 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: pci.c,v 1.72 1997/05/26 15:08:34 se Exp $ + * $Id: pci.c,v 1.73 1997/05/27 04:09:01 fsmp Exp $ * */ @@ -332,18 +332,15 @@ pci_readcfg(pcicfgregs *probe) cfg->intline = pci_cfgread(cfg, PCIR_INTLINE, 1); #ifdef APIC_IO - if (cfg->intline && (cfg->intline != 0xff)) { - u_char airq = 0xff; - u_char rirq = 0xff; + if (cfg->intpin != 0) { + int airq; airq = get_pci_apic_irq(cfg->bus, cfg->slot, cfg->intpin); - if (airq != 0xff) { /* APIC IRQ exists */ - rirq = cfg->intline; /* 're-directed' IRQ */ - cfg->intline = airq; /* use APIC IRQ */ - pci_cfgwrite(cfg, PCIR_INTLINE, airq, 1); - undirect_pci_irq(rirq); + if ((airq >= 0) && (airq != cfg->intline)) { + undirect_pci_irq(cfg->intline); + cfg->intline = airq; } } #endif /* APIC_IO */ diff --git a/sys/pci/pci.c b/sys/pci/pci.c index 038243510845..618378443c51 100644 --- a/sys/pci/pci.c +++ b/sys/pci/pci.c @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: pci.c,v 1.72 1997/05/26 15:08:34 se Exp $ + * $Id: pci.c,v 1.73 1997/05/27 04:09:01 fsmp Exp $ * */ @@ -332,18 +332,15 @@ pci_readcfg(pcicfgregs *probe) cfg->intline = pci_cfgread(cfg, PCIR_INTLINE, 1); #ifdef APIC_IO - if (cfg->intline && (cfg->intline != 0xff)) { - u_char airq = 0xff; - u_char rirq = 0xff; + if (cfg->intpin != 0) { + int airq; airq = get_pci_apic_irq(cfg->bus, cfg->slot, cfg->intpin); - if (airq != 0xff) { /* APIC IRQ exists */ - rirq = cfg->intline; /* 're-directed' IRQ */ - cfg->intline = airq; /* use APIC IRQ */ - pci_cfgwrite(cfg, PCIR_INTLINE, airq, 1); - undirect_pci_irq(rirq); + if ((airq >= 0) && (airq != cfg->intline)) { + undirect_pci_irq(cfg->intline); + cfg->intline = airq; } } #endif /* APIC_IO */ |
