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