diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2003-07-08 18:56:58 +0000 | 
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2003-07-08 18:56:58 +0000 | 
| commit | c37faf267cadd3e35df46737d4906eae34c4d439 (patch) | |
| tree | 2c8ec1ca0802f7a41f339b63f59cd44e147b3eee | |
| parent | 486d26019ca0fa8bfe5e202f1cdf78ef630d92e1 (diff) | |
Notes
| -rw-r--r-- | sys/dev/pci/isa_pci.c | 19 | ||||
| -rw-r--r-- | sys/isa/isa_common.c | 17 | ||||
| -rw-r--r-- | sys/isa/isavar.h | 5 | 
3 files changed, 29 insertions, 12 deletions
| diff --git a/sys/dev/pci/isa_pci.c b/sys/dev/pci/isa_pci.c index 5690df187cfa..3f1b779c1900 100644 --- a/sys/dev/pci/isa_pci.c +++ b/sys/dev/pci/isa_pci.c @@ -42,6 +42,7 @@  #include <sys/bus.h>  #include <sys/rman.h> +#include <isa/isavar.h>  #include <pci/pcivar.h>  #include <pci/pcireg.h> @@ -54,7 +55,7 @@ struct isab_softc {  };  static int	isab_probe(device_t dev); -static int	isab_attach(device_t dev); +static int	pci_isab_attach(device_t dev);  static int	isab_detach(device_t dev);  static int	isab_resume(device_t dev);  static int	isab_suspend(device_t dev); @@ -62,7 +63,7 @@ static int	isab_suspend(device_t dev);  static device_method_t isab_methods[] = {      /* Device interface */      DEVMETHOD(device_probe,		isab_probe), -    DEVMETHOD(device_attach,		isab_attach), +    DEVMETHOD(device_attach,		pci_isab_attach),      DEVMETHOD(device_detach,		isab_detach),      DEVMETHOD(device_shutdown,		bus_generic_shutdown),      DEVMETHOD(device_suspend,		isab_suspend), @@ -86,8 +87,6 @@ static driver_t isab_driver = {      sizeof(struct isab_softc),  }; -static devclass_t isab_devclass; -  DRIVER_MODULE(isab, pci, isab_driver, isab_devclass, 0, 0);  /* @@ -155,21 +154,17 @@ isab_probe(device_t dev)  }  static int -isab_attach(device_t dev) +pci_isab_attach(device_t dev)  { -    device_t	child;      struct isab_softc *sc = device_get_softc(dev);      int error, rid;      /*       * Attach an ISA bus.  Note that we can only have one ISA bus.       */ -    child = device_add_child(dev, "isa", 0); -    if (child != NULL) { -	error = bus_generic_attach(dev); -	if (error) -	     return (error); -    } +    error = isab_attach(dev); +    if (error) +	    return (error);      switch (pci_get_devid(dev)) {      case 0x71108086: /* Intel 82371AB */ diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c index 3e36a52574e0..4f8409396a6c 100644 --- a/sys/isa/isa_common.c +++ b/sys/isa/isa_common.c @@ -1117,3 +1117,20 @@ DRIVER_MODULE(isa, eisab, isa_driver, isa_devclass, 0, 0);  DRIVER_MODULE(isa, legacy, isa_driver, isa_devclass, 0, 0);  #endif  MODULE_VERSION(isa, 1); + +/* + * Code common to ISA bridges. + */ + +devclass_t isab_devclass; + +int +isab_attach(device_t dev) +{ +	device_t child; + +	child = device_add_child(dev, "isa", 0); +	if (child != NULL) +		return (bus_generic_attach(dev)); +	return (ENXIO); +} diff --git a/sys/isa/isavar.h b/sys/isa/isavar.h index d0306e0a3721..5a7621ea14a6 100644 --- a/sys/isa/isavar.h +++ b/sys/isa/isavar.h @@ -152,6 +152,9 @@ ISA_ACCESSOR(logicalid, LOGICALID, int)  ISA_ACCESSOR(compatid, COMPATID, int)  ISA_ACCESSOR(configattr, CONFIGATTR, int) +/* Device class for ISA bridges. */ +extern devclass_t isab_devclass; +  extern intrmask_t isa_irq_pending(void);  extern void	isa_probe_children(device_t dev); @@ -164,6 +167,8 @@ extern void	isa_dma_release(int chan);  extern int	isa_dmastatus(int chan);  extern int	isa_dmastop(int chan); +int	isab_attach(device_t dev); +  #ifdef PC98  #include <machine/bus.h> | 
