diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2000-05-05 00:26:29 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2000-05-05 00:26:29 +0000 |
commit | f1b01e5f31ed283f35e5f436c5d29874cba52849 (patch) | |
tree | 87984c9655ef3a0b1894cc8b3ee2f99409eaf59f /sys/arch/i386 | |
parent | cadb72562fd381a4d10619504103df4700b106b7 (diff) |
451NX machines now probe all pci busses; M.Drochner@fz-juelich.de
Diffstat (limited to 'sys/arch/i386')
-rw-r--r-- | sys/arch/i386/pci/pchb.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/sys/arch/i386/pci/pchb.c b/sys/arch/i386/pci/pchb.c index 49b1cf58caa..16fb6c5eee0 100644 --- a/sys/arch/i386/pci/pchb.c +++ b/sys/arch/i386/pci/pchb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pchb.c,v 1.13 2000/05/04 05:35:45 deraadt Exp $ */ +/* $OpenBSD: pchb.c,v 1.14 2000/05/05 00:26:28 deraadt Exp $ */ /* $NetBSD: pchb.c,v 1.6 1997/06/06 23:29:16 thorpej Exp $ */ /* @@ -154,6 +154,7 @@ pchbattach(parent, self, aux) struct pcibus_attach_args pba; pcireg_t bcreg; u_char bdnum, pbnum; + pcitag_t tag; int neednl = 1; int i; @@ -228,6 +229,40 @@ pchbattach(parent, self, aux) break; } break; + case PCI_PRODUCT_INTEL_82454NX: + pbnum = 0; + switch (pa->pa_device) { + case 18: /* PXB 0 bus A - primary bus */ + break; + case 19: /* PXB 0 bus B */ + /* read SUBA0 from MIOC */ + tag = pci_make_tag(pa->pa_pc, 0, 16, 0); + bcreg = pci_conf_read(pa->pa_pc, tag, 0xd0); + pbnum = ((bcreg & 0x0000ff00) >> 8) + 1; + break; + case 20: /* PXB 1 bus A */ + /* read BUSNO1 from MIOC */ + tag = pci_make_tag(pa->pa_pc, 0, 16, 0); + bcreg = pci_conf_read(pa->pa_pc, tag, 0xd0); + pbnum = (bcreg & 0xff000000) >> 24; + break; + case 21: /* PXB 1 bus B */ + /* read SUBA1 from MIOC */ + tag = pci_make_tag(pa->pa_pc, 0, 16, 0); + bcreg = pci_conf_read(pa->pa_pc, tag, 0xd4); + pbnum = (bcreg & 0x000000ff) + 1; + break; + } + if (pbnum != 0) { + pba.pba_busname = "pci"; + pba.pba_iot = pa->pa_iot; + pba.pba_memt = pa->pa_memt; + pba.pba_dmat = pa->pa_dmat; + pba.pba_bus = pbnum; + pba.pba_pc = pa->pa_pc; + config_found(self, &pba, pchb_print); + } + break; case PCI_PRODUCT_INTEL_CDC: bcreg = pci_conf_read(pa->pa_pc, pa->pa_tag, I82424_CPU_BCTL_REG); |