diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/i386/conf/GENERIC | 3 | ||||
-rw-r--r-- | sys/arch/i386/conf/files.i386 | 4 | ||||
-rw-r--r-- | sys/arch/i386/pci/pcib.c | 38 |
3 files changed, 40 insertions, 5 deletions
diff --git a/sys/arch/i386/conf/GENERIC b/sys/arch/i386/conf/GENERIC index b9c9994af1c..39f92981587 100644 --- a/sys/arch/i386/conf/GENERIC +++ b/sys/arch/i386/conf/GENERIC @@ -1,4 +1,4 @@ -# $OpenBSD: GENERIC,v 1.128 1999/09/08 12:56:41 aaron Exp $ +# $OpenBSD: GENERIC,v 1.129 1999/09/13 13:08:13 deraadt Exp $ # $NetBSD: GENERIC,v 1.48 1996/05/20 18:17:23 mrg Exp $ # # GENERIC -- everything that's currently supported @@ -41,6 +41,7 @@ bios0 at mainbus0 apm0 at bios0 isa0 at mainbus0 +isa0 at pcib? eisa0 at mainbus0 pci* at mainbus0 bus ? diff --git a/sys/arch/i386/conf/files.i386 b/sys/arch/i386/conf/files.i386 index 38775f4b0d9..0b946841edb 100644 --- a/sys/arch/i386/conf/files.i386 +++ b/sys/arch/i386/conf/files.i386 @@ -1,4 +1,4 @@ -# $OpenBSD: files.i386,v 1.56 1999/08/13 05:56:58 fgsch Exp $ +# $OpenBSD: files.i386,v 1.57 1999/09/13 13:08:13 deraadt Exp $ # $NetBSD: files.i386,v 1.73 1996/05/07 00:58:36 thorpej Exp $ # # new style config file for i386 architecture @@ -93,7 +93,7 @@ attach pchb at pci file arch/i386/pci/pchb.c pchb # PCI-ISA bridge chipsets -device pcib: pcibus +device pcib: isabus attach pcib at pci file arch/i386/pci/pcib.c pcib diff --git a/sys/arch/i386/pci/pcib.c b/sys/arch/i386/pci/pcib.c index 11524a1a647..16be67102a0 100644 --- a/sys/arch/i386/pci/pcib.c +++ b/sys/arch/i386/pci/pcib.c @@ -42,15 +42,18 @@ #include <sys/device.h> #include <machine/bus.h> +#include <dev/isa/isavar.h> #include <dev/pci/pcivar.h> #include <dev/pci/pcireg.h> #include <dev/pci/pcidevs.h> +#include "isa.h" + int pcibmatch __P((struct device *, void *, void *)); void pcibattach __P((struct device *, struct device *, void *)); - +void pcib_callback __P((struct device *)); int pcib_print __P((void *, const char *)); struct cfattach pcib_ca = { @@ -61,7 +64,6 @@ struct cfdriver pcib_cd = { NULL, "pcib", DV_DULL }; - int pcibmatch(parent, match, aux) struct device *parent; @@ -102,4 +104,36 @@ pcibattach(parent, self, aux) * Cannot attach isa bus now; must postpone for various reasons */ printf("\n"); + + config_defer(self, pcib_callback); +} + +void +pcib_callback(self) + struct device *self; +{ + struct isabus_attach_args iba; + + /* + * Attach the ISA bus behind this bridge. + */ + memset(&iba, 0, sizeof(iba)); + iba.iba_busname = "isa"; + iba.iba_iot = I386_BUS_SPACE_IO; + iba.iba_memt = I386_BUS_SPACE_MEM; +#if NISA > 0 + iba.iba_dmat = &isa_bus_dma_tag; +#endif + config_found(self, &iba, pcib_print); +} + +int +pcib_print(aux, pnp) + void *aux; + const char *pnp; +{ + /* Only ISAs can attach to pcib's; easy. */ + if (pnp) + printf("isa at %s", pnp); + return (UNCONF); } |