Let machine-dependent code specify how to enumerate the bus.

Currently, everyone uses pci_enumerate_bus_generic().
This commit is contained in:
thorpej 2002-05-15 19:23:51 +00:00
parent 0a08a9975c
commit dada8613e1
22 changed files with 87 additions and 38 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.3 2001/10/29 23:34:23 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.4 2002/05/15 19:23:52 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Carnegie-Mellon University. * Copyright (c) 1996 Carnegie-Mellon University.
@ -105,6 +105,9 @@ struct algor_pci_chipset {
#define pci_conf_interrupt(c, b, d, p, s, lp) \ #define pci_conf_interrupt(c, b, d, p, s, lp) \
(*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (p), (s), (lp)) (*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (p), (s), (lp))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* algor-specific PCI functions. * algor-specific PCI functions.
* NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE. * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.9 2002/05/15 17:09:58 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.10 2002/05/15 19:23:52 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Carnegie-Mellon University. * Copyright (c) 1996 Carnegie-Mellon University.
@ -99,6 +99,9 @@ struct alpha_pci_chipset {
#define pci_intr_disestablish(c, iv) \ #define pci_intr_disestablish(c, iv) \
(*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* alpha-specific PCI functions. * alpha-specific PCI functions.
* NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE. * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 17:15:17 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.4 2002/05/15 19:23:52 thorpej Exp $ */
/* NetBSD: pci_machdep.h,v 1.3 1999/03/19 03:40:46 cgd Exp */ /* NetBSD: pci_machdep.h,v 1.3 1999/03/19 03:40:46 cgd Exp */
/* /*
@ -92,3 +92,6 @@ struct arc_pci_chipset {
(*(c)->pc_intr_establish)((c), (ih), (l), (h), (a)) (*(c)->pc_intr_establish)((c), (ih), (l), (h), (a))
#define pci_intr_disestablish(c, iv) \ #define pci_intr_disestablish(c, iv) \
(*(c)->pc_intr_disestablish)((c), (iv)) (*(c)->pc_intr_disestablish)((c), (iv))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.1 2001/02/23 21:23:48 reinoud Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:52 thorpej Exp $ */
/* /*
* Modified for arm32 by Mark Brinicombe * Modified for arm32 by Mark Brinicombe
@ -97,3 +97,6 @@ struct arm32_pci_chipset {
(*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a)) (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a))
#define pci_intr_disestablish(c, iv) \ #define pci_intr_disestablish(c, iv) \
(*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.9 2002/05/15 17:30:04 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.10 2002/05/15 19:23:53 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Leo Weppelman. All rights reserved. * Copyright (c) 1996 Leo Weppelman. All rights reserved.
@ -80,4 +80,7 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
#endif /* _ATARI_PCI_MACHDEP_H_ */ #endif /* _ATARI_PCI_MACHDEP_H_ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.9 2001/06/06 17:42:30 matt Exp $ */ /* $NetBSD: pci_machdep.h,v 1.10 2002/05/15 19:23:53 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -75,3 +75,6 @@ const struct evcnt *pci_intr_evcnt(pci_chipset_tag_t, pci_intr_handle_t);
void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.4 2001/06/08 04:48:57 simonb Exp $ */ /* $NetBSD: pci_machdep.h,v 1.5 2002/05/15 19:23:53 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -72,3 +72,6 @@ const struct evcnt *pci_intr_evcnt(pci_chipset_tag_t, pci_intr_handle_t);
void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 17:09:05 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 19:23:53 thorpej Exp $ */
/*- /*-
* Copyright (c) 2001 Marcus Comstedt * Copyright (c) 2001 Marcus Comstedt
@ -94,3 +94,6 @@ struct dreamcast_pci_chipset {
(*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a)) (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a))
#define pci_intr_disestablish(c, ih) \ #define pci_intr_disestablish(c, ih) \
(*(c)->pc_intr_disestablish)((v)->pc_intr_v, (ih)) (*(c)->pc_intr_disestablish)((v)->pc_intr_v, (ih))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.2 2002/01/13 14:18:31 takemura Exp $ */ /* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 19:23:54 thorpej Exp $ */
/*- /*-
* Copyright (c) 2001 Enami Tsugutomo. * Copyright (c) 2001 Enami Tsugutomo.
@ -101,3 +101,6 @@ struct hpcmips_pci_chipset {
(*(c)->pc_intr_establish)((c), (ih), (l), (h), (a)) (*(c)->pc_intr_establish)((c), (ih), (l), (h), (a))
#define pci_intr_disestablish(c, iv) \ #define pci_intr_disestablish(c, iv) \
(*(c)->pc_intr_disestablish)((c), (iv)) (*(c)->pc_intr_disestablish)((c), (iv))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.17 2001/06/08 04:48:57 simonb Exp $ */ /* $NetBSD: pci_machdep.h,v 1.18 2002/05/15 19:23:54 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -100,6 +100,9 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
* BY PORTABLE CODE. * BY PORTABLE CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.15 2001/06/19 12:02:57 simonb Exp $ */ /* $NetBSD: pci_machdep.h,v 1.16 2002/05/15 19:23:54 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -88,6 +88,9 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* Internal functions. * Internal functions.
*/ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.1 2002/03/18 03:08:09 simonb Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:54 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Carnegie-Mellon University. * Copyright (c) 1996 Carnegie-Mellon University.
@ -106,6 +106,9 @@ struct mips_pci_chipset {
#define pci_conf_interrupt(c, b, d, p, s, lp) \ #define pci_conf_interrupt(c, b, d, p, s, lp) \
(*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (p), (s), (lp)) (*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (p), (s), (lp))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* mips-specific PCI functions. * mips-specific PCI functions.
* NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE. * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.1 2002/02/27 21:02:18 scw Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:55 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -81,6 +81,9 @@ void pci_intr_disestablish(pci_chipset_tag_t, void *);
void pci_conf_interrupt(pci_chipset_tag_t pc, int bus, int dev, void pci_conf_interrupt(pci_chipset_tag_t pc, int bus, int dev,
int func, int swiz, int *iline); int func, int swiz, int *iline);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
#endif /* _KERNEL */ #endif /* _KERNEL */
#endif /* _MACHINE_PCI_MACHDEP_H_ */ #endif /* _MACHINE_PCI_MACHDEP_H_ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.1 2001/10/29 22:28:37 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:55 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Carnegie-Mellon University. * Copyright (c) 1996 Carnegie-Mellon University.
@ -105,6 +105,9 @@ struct ppc_pci_chipset {
#define pci_conf_interrupt(c, b, d, f, s, lp) \ #define pci_conf_interrupt(c, b, d, f, s, lp) \
(*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (f), (s), (lp)) (*(c)->pc_conf_interrupt)((c)->pc_intr_v, (b), (d), (f), (s), (lp))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* PowerPC-specific PCI functions. * PowerPC-specific PCI functions.
* NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE. * NOT TO BE USED DIRECTLY BY MACHINE INDEPENDENT CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.8 2002/02/25 00:34:13 kleink Exp $ */ /* $NetBSD: pci_machdep.h,v 1.9 2002/05/15 19:23:55 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Carnegie-Mellon University. * Copyright (c) 1996 Carnegie-Mellon University.
@ -102,6 +102,9 @@ struct prep_pci_chipset {
#define pci_conf_hook(c, b, d, f, i) \ #define pci_conf_hook(c, b, d, f, i) \
(*(c)->pc_conf_hook)((c)->pc_conf_v, (b), (d), (f), (i)) (*(c)->pc_conf_hook)((c)->pc_conf_v, (b), (d), (f), (i))
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
#ifdef _KERNEL #ifdef _KERNEL
/* /*
* prep-specific PCI functions. * prep-specific PCI functions.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.2 2001/06/10 03:16:30 briggs Exp $ */ /* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 19:23:55 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -72,3 +72,6 @@ const struct evcnt *pci_intr_evcnt(pci_chipset_tag_t, pci_intr_handle_t);
void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.2 2000/12/28 22:59:10 sommerfeld Exp $ */ /* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 19:23:56 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -78,3 +78,6 @@ const struct evcnt *pci_intr_evcnt(pci_chipset_tag_t, pci_intr_handle_t);
void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 18:37:54 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.3 2002/05/15 19:23:56 thorpej Exp $ */
/* /*
* Copyright (c) 1999 Matthew R. Green * Copyright (c) 1999 Matthew R. Green
@ -34,15 +34,6 @@
/* /*
* Machine-specific definitions for PCI autoconfiguration. * Machine-specific definitions for PCI autoconfiguration.
*/ */
#if 0
/*
* On sparc64 we want device & function to be probed in PROM order.
* Do we need this on ms-IIep systems (perhaps for cp1200 that can
* have a PCI-to-PCI bridge)???
*/
#define __PCI_BUS_DEVORDER
#endif /* 0 */
/* /*
* Types provided to machine-independent PCI code * Types provided to machine-independent PCI code
@ -88,9 +79,6 @@ struct sparc_pci_chipset {
*/ */
void pci_attach_hook(struct device *, struct device *, void pci_attach_hook(struct device *, struct device *,
struct pcibus_attach_args *); struct pcibus_attach_args *);
#ifdef __PCI_BUS_DEVORDER
int pci_bus_devorder(pci_chipset_tag_t, int, char *);
#endif
int pci_bus_maxdevs(pci_chipset_tag_t, int); int pci_bus_maxdevs(pci_chipset_tag_t, int);
pcitag_t pci_make_tag(pci_chipset_tag_t, int, int, int); pcitag_t pci_make_tag(pci_chipset_tag_t, int, int, int);
void pci_decompose_tag(pci_chipset_tag_t, pcitag_t, void pci_decompose_tag(pci_chipset_tag_t, pcitag_t,
@ -104,4 +92,7 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
#endif /* _SPARC_PCI_MACHDEP_H_ */ #endif /* _SPARC_PCI_MACHDEP_H_ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.11 2002/05/15 18:37:55 thorpej Exp $ */ /* $NetBSD: pci_machdep.h,v 1.12 2002/05/15 19:23:56 thorpej Exp $ */
/* /*
* Copyright (c) 1999 Matthew R. Green * Copyright (c) 1999 Matthew R. Green
@ -92,4 +92,7 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
#endif /* _MACHINE_PCI_MACHDEP_H_ */ #endif /* _MACHINE_PCI_MACHDEP_H_ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.3 2002/02/25 00:34:14 kleink Exp $ */ /* $NetBSD: pci_machdep.h,v 1.4 2002/05/15 19:23:56 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -79,6 +79,10 @@ void pci_intr_disestablish(pci_chipset_tag_t, void *);
int pci_conf_hook(pci_chipset_tag_t, int, int, int, pcireg_t); int pci_conf_hook(pci_chipset_tag_t, int, int, int, pcireg_t);
void pci_machdep_init(void); void pci_machdep_init(void);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* Internal functions. * Internal functions.
*/ */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci_machdep.h,v 1.1 2001/06/19 00:20:12 fvdl Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:57 thorpej Exp $ */
/* /*
* Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
@ -92,6 +92,9 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t,
int, int (*)(void *), void *); int, int (*)(void *), void *);
void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_intr_disestablish(pci_chipset_tag_t, void *);
#define pci_enumerate_bus(sc, m, p) \
pci_enumerate_bus_generic((sc), (m), (p))
/* /*
* ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED * ALL OF THE FOLLOWING ARE MACHINE-DEPENDENT, AND SHOULD NOT BE USED
* BY PORTABLE CODE. * BY PORTABLE CODE.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pci.c,v 1.60 2002/05/15 18:39:47 thorpej Exp $ */ /* $NetBSD: pci.c,v 1.61 2002/05/15 19:23:51 thorpej Exp $ */
/* /*
* Copyright (c) 1995, 1996, 1997, 1998 * Copyright (c) 1995, 1996, 1997, 1998
@ -36,7 +36,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: pci.c,v 1.60 2002/05/15 18:39:47 thorpej Exp $"); __KERNEL_RCSID(0, "$NetBSD: pci.c,v 1.61 2002/05/15 19:23:51 thorpej Exp $");
#include "opt_pci.h" #include "opt_pci.h"
@ -117,9 +117,6 @@ pcimatch(parent, cf, aux)
return (1); return (1);
} }
/* XXX Temporary */
#define pci_enumerate_bus pci_enumerate_bus_generic
void void
pciattach(parent, self, aux) pciattach(parent, self, aux)
struct device *parent, *self; struct device *parent, *self;