diff options
-rw-r--r-- | sys/arch/alpha/pci/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/amd64/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/arm/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/hppa/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/hppa64/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/i386/pci/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/landisk/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/loongson/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/octeon/include/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/powerpc/pci/pci_machdep.h | 3 | ||||
-rw-r--r-- | sys/arch/sgi/pci/macepcibridge.c | 10 | ||||
-rw-r--r-- | sys/arch/sgi/pci/pci_machdep.h | 25 | ||||
-rw-r--r-- | sys/arch/sgi/xbow/xbridge.c | 14 | ||||
-rw-r--r-- | sys/arch/sparc64/include/pci_machdep.h | 4 | ||||
-rw-r--r-- | sys/dev/pci/pci.c | 9 |
15 files changed, 71 insertions, 21 deletions
diff --git a/sys/arch/alpha/pci/pci_machdep.h b/sys/arch/alpha/pci/pci_machdep.h index 9cc5cba318a..97e29450d16 100644 --- a/sys/arch/alpha/pci/pci_machdep.h +++ b/sys/arch/alpha/pci/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.25 2011/05/21 21:36:39 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.26 2011/10/10 19:42:34 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.6 1996/11/19 04:49:21 cgd Exp $ */ /* @@ -114,6 +114,7 @@ int alpha_sysctl_chipset(int *, u_int, char *, size_t *); (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a), (nm)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) +#define pci_probe_device_hook(c, a) (0) /* * alpha-specific PCI functions. diff --git a/sys/arch/amd64/include/pci_machdep.h b/sys/arch/amd64/include/pci_machdep.h index 75922d1e57c..939398f7002 100644 --- a/sys/arch/amd64/include/pci_machdep.h +++ b/sys/arch/amd64/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.18 2011/05/21 15:58:27 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.19 2011/10/10 19:42:36 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.1 2003/02/26 21:26:11 fvdl Exp $ */ /* @@ -89,6 +89,7 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_decompose_tag(pci_chipset_tag_t, pcitag_t, int *, int *, int *); +#define pci_probe_device_hook(c, a) (0) void pci_dev_postattach(struct device *, struct pci_attach_args *); diff --git a/sys/arch/arm/include/pci_machdep.h b/sys/arch/arm/include/pci_machdep.h index 79b7d57e814..3be97188dca 100644 --- a/sys/arch/arm/include/pci_machdep.h +++ b/sys/arch/arm/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.10 2011/05/21 21:36:39 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.11 2011/10/10 19:42:36 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.2 2002/05/15 19:23:52 thorpej Exp $ */ /* @@ -99,5 +99,6 @@ struct arm32_pci_chipset { (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a), (n)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) +#define pci_probe_device_hook(c, a) (0) #define pci_dev_postattach(a, b) diff --git a/sys/arch/hppa/include/pci_machdep.h b/sys/arch/hppa/include/pci_machdep.h index 3f3c60fdfc1..0678674fe78 100644 --- a/sys/arch/hppa/include/pci_machdep.h +++ b/sys/arch/hppa/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.8 2011/05/21 21:36:17 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.9 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2003 Michael Shalayeff @@ -88,6 +88,7 @@ struct hppa_pci_chipset_tag { (*(c)->pc_intr_establish)((c)->_cookie, (ih), (l), (h), (a), (nm)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->_cookie, (iv)) +#define pci_probe_device_hook(c, a) (0) #define pciide_machdep_compat_intr_establish(a, b, c, d, e) (NULL) #define pciide_machdep_compat_intr_disestablish(a, b) ((void)(a), (void)(b)) diff --git a/sys/arch/hppa64/include/pci_machdep.h b/sys/arch/hppa64/include/pci_machdep.h index fb2db437faa..122e508add2 100644 --- a/sys/arch/hppa64/include/pci_machdep.h +++ b/sys/arch/hppa64/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.8 2011/05/21 21:04:29 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.9 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2005 Michael Shalayeff @@ -79,6 +79,7 @@ struct hppa64_pci_chipset_tag { (*(c)->pc_intr_establish)((c)->_cookie, (ih), (l), (h), (a), (nm)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->_cookie, (iv)) +#define pci_probe_device_hook(c, a) (0) #define pciide_machdep_compat_intr_establish(a, b, c, d, e) (NULL) #define pciide_machdep_compat_intr_disestablish(a, b) ((void)(a), (void)(b)) diff --git a/sys/arch/i386/pci/pci_machdep.h b/sys/arch/i386/pci/pci_machdep.h index 13c5f711095..a358597e65e 100644 --- a/sys/arch/i386/pci/pci_machdep.h +++ b/sys/arch/i386/pci/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.22 2011/05/21 15:14:57 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.23 2011/10/10 19:42:36 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.7 1997/06/06 23:29:18 thorpej Exp $ */ /* @@ -105,6 +105,7 @@ void *pci_intr_establish(pci_chipset_tag_t, pci_intr_handle_t, void pci_intr_disestablish(pci_chipset_tag_t, void *); void pci_decompose_tag(pci_chipset_tag_t, pcitag_t, int *, int *, int *); +#define pci_probe_device_hook(c, a) (0) void pci_dev_postattach(struct device *, struct pci_attach_args *); diff --git a/sys/arch/landisk/include/pci_machdep.h b/sys/arch/landisk/include/pci_machdep.h index 74847e3ab52..10da37b602b 100644 --- a/sys/arch/landisk/include/pci_machdep.h +++ b/sys/arch/landisk/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.6 2011/05/21 21:36:39 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.7 2011/10/10 19:42:36 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.1 2006/09/01 21:26:18 uwe Exp $ */ /* @@ -82,5 +82,6 @@ void landisk_pci_conf_interrupt(void *v, int bus, int dev, int pin, landisk_pci_intr_establish(v, ih, level, ih_fun, ih_arg, ih_name) #define pci_intr_disestablish(v, cookie) \ landisk_pci_intr_disestablish(v, cookie) +#define pci_probe_device_hook(c, a) (0) #define pci_dev_postattach(a, b) diff --git a/sys/arch/loongson/include/pci_machdep.h b/sys/arch/loongson/include/pci_machdep.h index bf793286a94..7ee2396b940 100644 --- a/sys/arch/loongson/include/pci_machdep.h +++ b/sys/arch/loongson/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.5 2011/05/21 21:36:39 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.6 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2003-2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -82,6 +82,7 @@ struct mips_pci_chipset { (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a), (nm)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) +#define pci_probe_device_hook(c, a) (0) /* PCI view of CPU memory */ extern paddr_t loongson_dma_base; diff --git a/sys/arch/octeon/include/pci_machdep.h b/sys/arch/octeon/include/pci_machdep.h index 07d6bc5c881..806164aae28 100644 --- a/sys/arch/octeon/include/pci_machdep.h +++ b/sys/arch/octeon/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.3 2011/05/21 21:36:40 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.4 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2003-2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -110,6 +110,7 @@ static inline void pci_conf_write_db(void * c, pcitag_t t, int r, pcireg_t v, (*(c)->pc_intr_establish)((c)->pc_intr_v, (ih), (l), (h), (a), (nm)) #define pci_intr_disestablish(c, iv) \ (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) +#define pci_probe_device_hook(c, a) (0) /* PCI view of CPU memory */ extern paddr_t loongson_dma_base; diff --git a/sys/arch/powerpc/pci/pci_machdep.h b/sys/arch/powerpc/pci/pci_machdep.h index a2cd61a8661..d277464e09d 100644 --- a/sys/arch/powerpc/pci/pci_machdep.h +++ b/sys/arch/powerpc/pci/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.21 2011/05/21 20:47:39 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.22 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 1996 Carnegie-Mellon University. @@ -96,5 +96,6 @@ struct ppc_pci_chipset { (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) #define pci_ether_hw_addr(c, s) \ (*(c)->pc_ether_hw_addr)((c), (s)) +#define pci_probe_device_hook(c, a) (0) #define pci_dev_postattach(a, b) diff --git a/sys/arch/sgi/pci/macepcibridge.c b/sys/arch/sgi/pci/macepcibridge.c index 0dde121fd35..99ac177f89c 100644 --- a/sys/arch/sgi/pci/macepcibridge.c +++ b/sys/arch/sgi/pci/macepcibridge.c @@ -1,4 +1,4 @@ -/* $OpenBSD: macepcibridge.c,v 1.41 2010/12/04 17:06:31 miod Exp $ */ +/* $OpenBSD: macepcibridge.c,v 1.42 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2009 Miodrag Vallat. @@ -85,6 +85,7 @@ void mace_pcibr_decompose_tag(void *, pcitag_t, int *, int *, int *); int mace_pcibr_conf_size(void *, pcitag_t); pcireg_t mace_pcibr_conf_read(void *, pcitag_t, int); void mace_pcibr_conf_write(void *, pcitag_t, int, pcireg_t); +int mace_pcibr_probe_device_hook(void *, struct pci_attach_args *); int mace_pcibr_get_widget(void *); int mace_pcibr_get_dl(void *, pcitag_t, struct sgi_device_location *); int mace_pcibr_intr_map(struct pci_attach_args *, pci_intr_handle_t *); @@ -244,6 +245,7 @@ mace_pcibrattach(struct device *parent, struct device *self, void *aux) sc->sc_pc.pc_conf_read = mace_pcibr_conf_read; sc->sc_pc.pc_conf_write = mace_pcibr_conf_write; sc->sc_pc.pc_get_widget = mace_pcibr_get_widget; + sc->sc_pc.pc_probe_device_hook = mace_pcibr_probe_device_hook; sc->sc_pc.pc_get_dl = mace_pcibr_get_dl; sc->sc_pc.pc_intr_v = NULL; sc->sc_pc.pc_intr_map = mace_pcibr_intr_map; @@ -429,6 +431,12 @@ mace_pcibr_conf_write(void *cpv, pcitag_t tag, int offset, pcireg_t data) } int +mace_pcibr_probe_device_hook(void *unused, struct pci_attach_args *notused) +{ + return 0; +} + +int mace_pcibr_get_widget(void *unused) { return 0; diff --git a/sys/arch/sgi/pci/pci_machdep.h b/sys/arch/sgi/pci/pci_machdep.h index 58f2ae3d747..9bd17e04569 100644 --- a/sys/arch/sgi/pci/pci_machdep.h +++ b/sys/arch/sgi/pci/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.13 2011/05/21 21:36:40 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.14 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2003-2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -47,6 +47,8 @@ struct mips_pci_chipset { int (*pc_conf_size)(void *, pcitag_t); pcireg_t (*pc_conf_read)(void *, pcitag_t, int); void (*pc_conf_write)(void *, pcitag_t, int, pcireg_t); + int (*pc_probe_device_hook)(void *, struct pci_attach_args *); + int (*pc_get_widget)(void *); int (*pc_get_dl)(void *, pcitag_t, struct sgi_device_location *); @@ -82,10 +84,6 @@ struct mips_pci_chipset { (*(c)->pc_conf_read)((c)->pc_conf_v, (t), (r)) #define pci_conf_write(c, t, r, v) \ (*(c)->pc_conf_write)((c)->pc_conf_v, (t), (r), (v)) -#define pci_get_widget(c) \ - (*(c)->pc_get_widget)((c)->pc_conf_v) -#define pci_get_device_location(c,t,l) \ - (*(c)->pc_get_dl)((c)->pc_conf_v, (t), (l)) #define pci_intr_map(c, ihp) \ (*(c)->pa_pc->pc_intr_map)((c), (ihp)) #define pci_intr_map_msi(c, ihp) (-1) @@ -97,6 +95,21 @@ struct mips_pci_chipset { (*(c)->pc_intr_disestablish)((c)->pc_intr_v, (iv)) #define pci_intr_line(c, ih) \ (*(c)->pc_intr_line)((c)->pc_intr_v, (ih)) +#define pci_probe_device_hook(c, a) \ + (*(c)->pc_probe_device_hook)((c)->pc_conf_v, (a)) +#define pci_dev_postattach(a, b) do { } while (0) + +/* + * Functions provided to machine-dependent PCI code. + */ +#define pci_get_widget(c) \ + (*(c)->pc_get_widget)((c)->pc_conf_v) +#define pci_get_device_location(c,t,l) \ + (*(c)->pc_get_dl)((c)->pc_conf_v, (t), (l)) + +/* + * Functions provided to machine-independent rbus code. + */ #define rbus_pccbb_parent_io(dev, pa) \ (rbus_tag_t)((*(pa)->pa_pc->pc_rbus_parent_io)(pa)) #define rbus_pccbb_parent_mem(dev, pa) \ @@ -104,5 +117,3 @@ struct mips_pci_chipset { void pccbb_initialize(pci_chipset_tag_t, pcitag_t, uint, uint, uint); void ppb_initialize(pci_chipset_tag_t, pcitag_t, uint, uint, uint); - -#define pci_dev_postattach(a, b) diff --git a/sys/arch/sgi/xbow/xbridge.c b/sys/arch/sgi/xbow/xbridge.c index c7192ef6df6..e072c40e29e 100644 --- a/sys/arch/sgi/xbow/xbridge.c +++ b/sys/arch/sgi/xbow/xbridge.c @@ -1,4 +1,4 @@ -/* $OpenBSD: xbridge.c,v 1.82 2011/04/17 17:44:24 miod Exp $ */ +/* $OpenBSD: xbridge.c,v 1.83 2011/10/10 19:42:36 miod Exp $ */ /* * Copyright (c) 2008, 2009, 2011 Miodrag Vallat. @@ -205,6 +205,7 @@ void xbridge_intr_disestablish(void *, void *); int xbridge_intr_line(void *, pci_intr_handle_t); int xbridge_ppb_setup(void *, pcitag_t, bus_addr_t *, bus_addr_t *, bus_addr_t *, bus_addr_t *); +int xbridge_probe_device_hook(void *, struct pci_attach_args *); void *xbridge_rbus_parent_io(struct pci_attach_args *); void *xbridge_rbus_parent_mem(struct pci_attach_args *); int xbridge_get_widget(void *); @@ -569,6 +570,7 @@ xbpci_attach(struct device *parent, struct device *self, void *aux) xb->xb_pc.pc_conf_size = xbridge_conf_size; xb->xb_pc.pc_conf_read = xbridge_conf_read; xb->xb_pc.pc_conf_write = xbridge_conf_write; + xb->xb_pc.pc_probe_device_hook = xbridge_probe_device_hook; xb->xb_pc.pc_get_widget = xbridge_get_widget; xb->xb_pc.pc_get_dl = xbridge_get_dl; xb->xb_pc.pc_intr_v = xb; @@ -868,6 +870,16 @@ xbridge_conf_write(void *cookie, pcitag_t tag, int offset, pcireg_t data) } int +xbridge_probe_device_hook(void *cookie, struct pci_attach_args *pa) +{ +#if 0 + struct xbpci_softc *xb = cookie; +#endif + + return 0; +} + +int xbridge_get_widget(void *cookie) { struct xbpci_softc *xb = cookie; diff --git a/sys/arch/sparc64/include/pci_machdep.h b/sys/arch/sparc64/include/pci_machdep.h index 20deee3a3b8..3240314871b 100644 --- a/sys/arch/sparc64/include/pci_machdep.h +++ b/sys/arch/sparc64/include/pci_machdep.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pci_machdep.h,v 1.29 2011/07/06 05:08:50 kettenis Exp $ */ +/* $OpenBSD: pci_machdep.h,v 1.30 2011/10/10 19:42:36 miod Exp $ */ /* $NetBSD: pci_machdep.h,v 1.7 2001/07/20 00:07:14 eeh Exp $ */ /* @@ -102,6 +102,8 @@ int sparc64_pci_enumerate_bus(struct pci_softc *, #define PCI_MACHDEP_ENUMERATE_BUS sparc64_pci_enumerate_bus +#define pci_probe_device_hook(c, a) (0) + #define pciide_machdep_compat_intr_establish(a, b, c, d, e) (NULL) #define pciide_machdep_compat_intr_disestablish(a, b) do { } while (0) diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 0ecb5daeb04..e265743dd17 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pci.c,v 1.93 2011/06/12 11:13:28 kettenis Exp $ */ +/* $OpenBSD: pci.c,v 1.94 2011/10/10 19:42:37 miod Exp $ */ /* $NetBSD: pci.c,v 1.31 1997/06/06 23:48:04 thorpej Exp $ */ /* @@ -462,6 +462,13 @@ pci_probe_device(struct pci_softc *sc, pcitag_t tag, } } + /* + * Give the MD code a chance to alter pci_attach_args and/or + * skip devices. + */ + if (pci_probe_device_hook(pc, &pa) != 0) + return (0); + if (match != NULL) { ret = (*match)(&pa); if (ret != 0 && pap != NULL) |