pcivar.h revision 1.12 1 /* $NetBSD: pcivar.h,v 1.12 1996/03/08 20:25:30 cgd Exp $ */
2
3 /*
4 * Copyright (c) 1994 Charles Hannum. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 * must display the following acknowledgement:
16 * This product includes software developed by Charles Hannum.
17 * 4. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
22 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
23 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
24 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 #ifndef _DEV_PCI_PCIVAR_H_
33 #define _DEV_PCI_PCIVAR_H_
34
35 /*
36 * Definitions for PCI autoconfiguration.
37 *
38 * This file describes types and functions which are used for PCI
39 * configuration. Some of this information is machine-specific, and is
40 * separated into pci_machdep.h.
41 */
42
43 #include <machine/bus.h>
44
45 #if (alpha + i386 != 1)
46 ERROR: COMPILING FOR UNSUPPORTED MACHINE, OR MORE THAN ONE.
47 #endif
48
49 #if alpha
50 #include <alpha/pci/pci_machdep.h>
51 #endif
52
53 #if i386
54 #include <i386/pci/pci_machdep.h>
55 #endif
56
57 /*
58 * PCI bus attach arguments.
59 */
60 struct pcibus_attach_args {
61 char *pba_busname; /* XXX should be common */
62 bus_chipset_tag_t pba_bc; /* XXX should be common */
63
64 int pba_bus; /* PCI bus number */
65 int pba_maxndevs; /* max # of devs on bus [0..n-1] */
66 };
67
68 /*
69 * PCI device attach arguments.
70 */
71 struct pci_attach_args {
72 bus_chipset_tag_t pa_bc; /* bus chipset tag */
73
74 int pa_device;
75 int pa_function;
76 pcitag_t pa_tag;
77 pcireg_t pa_id, pa_class;
78 };
79
80 pcireg_t pci_conf_read __P((pcitag_t, int));
81 void pci_conf_write __P((pcitag_t, int, pcireg_t));
82 void pci_devinfo __P((pcireg_t, pcireg_t, int, char *));
83 pcitag_t pci_make_tag __P((int, int, int));
84 void *pci_map_int __P((pcitag_t, int, int (*)(void *), void *));
85 int pci_map_mem __P((pcitag_t, int, vm_offset_t *, vm_offset_t *));
86
87 #endif /* _DEV_PCI_PCIVAR_H_ */
88