FreeBSD/Linux Kernel Cross Reference
sys/pci/pcibus.h
1 /**************************************************************************
2 **
3 ** $FreeBSD: src/sys/pci/pcibus.h,v 1.4.4.3 1999/09/05 08:21:23 peter Exp $
4 **
5 ** Declarations for pci bus driver.
6 **
7 ** FreeBSD
8 **
9 **-------------------------------------------------------------------------
10 **
11 ** Copyright (c) 1995 Wolfgang Stanglmeier. All rights reserved.
12 **
13 ** Redistribution and use in source and binary forms, with or without
14 ** modification, are permitted provided that the following conditions
15 ** are met:
16 ** 1. Redistributions of source code must retain the above copyright
17 ** notice, this list of conditions and the following disclaimer.
18 ** 2. Redistributions in binary form must reproduce the above copyright
19 ** notice, this list of conditions and the following disclaimer in the
20 ** documentation and/or other materials provided with the distribution.
21 ** 3. The name of the author may not be used to endorse or promote products
22 ** derived from this software without specific prior written permission.
23 **
24 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
25 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 **
35 ***************************************************************************
36 */
37
38 #ifndef __PCI_BUS_H__
39 #define __PCI_BUS_H__ "pl1 95/03/13"
40
41 /*-----------------------------------------------------------------
42 **
43 ** The following functions are provided by the pci bios.
44 ** They are used only by the pci configuration.
45 **
46 ** pcibus_setup():
47 ** Probes for a pci system.
48 ** Sets pci_maxdevice and pci_mechanism.
49 **
50 ** pcibus_tag():
51 ** Creates a handle for pci configuration space access.
52 ** This handle is given to the read/write functions.
53 **
54 ** pcibus_ftag():
55 ** Creates a modified handle.
56 **
57 ** pcibus_read():
58 ** Read a long word from the pci configuration space.
59 ** Requires a tag (from pcitag) and the register
60 ** number (should be a long word alligned one).
61 **
62 ** pcibus_write():
63 ** Writes a long word to the pci configuration space.
64 ** Requires a tag (from pcitag), the register number
65 ** (should be a long word alligned one), and a value.
66 **
67 ** pcibus_regirq():
68 ** Register an interrupt handler for a pci device.
69 ** Requires a tag (from pcitag), the register number
70 ** (should be a long word alligned one), and a value.
71 **
72 **-----------------------------------------------------------------
73 */
74
75 struct pcibus {
76 char *pb_name;
77 void (*pb_setup ) (void);
78 pcici_t (*pb_tag ) (u_char bus, u_char device, u_char func);
79 pcici_t (*pb_ftag ) (pcici_t tag, u_char func);
80 int (*pb_bus ) (pcici_t tag);
81 int (*pb_device) (pcici_t tag);
82 int (*pb_function)(pcici_t tag);
83 u_long (*pb_read ) (pcici_t tag, u_long reg);
84 void (*pb_write ) (pcici_t tag, u_long reg, u_long data);
85 int (*pb_iattach) (int irq, inthand2_t *func, int arg,
86 unsigned *maskptr);
87 int (*pb_idetach) (int irq, inthand2_t *func);
88 int (*pb_imaskinc)(int irq, unsigned *maskptr);
89 int (*pb_imaskexc)(int irq, unsigned *maskptr);
90 };
91
92 #define PCI_MAX_IRQ (16)
93
94 /*
95 ** The following structure should be generated by the driver
96 */
97
98 extern struct linker_set pcibus_set;
99
100 int pci_register_lkm (struct pci_device *dvp, int if_revision);
101
102 #endif
Cache object: 156ca0e9420b52a82a541bf4bba3833f
|