pcivar.h revision 1.13 1 /* $NetBSD: pcivar.h,v 1.13 1996/03/14 02:35:33 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 * The maximum number of devices on a PCI bus is 32. However, some
59 * PCI chipsets (e.g. chipsets that implement 'Configuration Mechanism #2'
60 * on the i386) can't deal with that many, so let pci_machdep.h override it.
61 */
62 #ifndef PCI_MAX_DEVICE_NUMBER
63 #define PCI_MAX_DEVICE_NUMBER 32
64 #endif
65
66 /*
67 * PCI bus attach arguments.
68 */
69 struct pcibus_attach_args {
70 char *pba_busname; /* XXX should be common */
71 bus_chipset_tag_t pba_bc; /* XXX should be common */
72
73 int pba_bus; /* PCI bus number */
74 };
75
76 /*
77 * PCI device attach arguments.
78 */
79 struct pci_attach_args {
80 bus_chipset_tag_t pa_bc; /* bus chipset tag */
81
82 int pa_device;
83 int pa_function;
84 pcitag_t pa_tag;
85 pcireg_t pa_id, pa_class;
86 };
87
88 /*
89 * Locators devices that attach to 'pcibus', as specified to config.
90 */
91 #define pcibuscf_bus cf_loc[0]
92 #define PCIBUS_UNK_BUS -1 /* wildcarded 'bus' */
93
94 /*
95 * Locators for PCI devices, as specified to config.
96 */
97 #define pcicf_dev cf_loc[0]
98 #define PCI_UNK_DEV -1 /* wildcarded 'dev' */
99
100 #define pcicf_function cf_loc[1]
101 #define PCI_UNK_FUNCTION -1 /* wildcarded 'function' */
102
103 pcireg_t pci_conf_read __P((pcitag_t, int));
104 void pci_conf_write __P((pcitag_t, int, pcireg_t));
105 void pci_devinfo __P((pcireg_t, pcireg_t, int, char *));
106 pcitag_t pci_make_tag __P((int, int, int));
107 void *pci_map_int __P((pcitag_t, int, int (*)(void *), void *));
108 int pci_map_mem __P((pcitag_t, int, vm_offset_t *, vm_offset_t *));
109
110 #endif /* _DEV_PCI_PCIVAR_H_ */
111