1 #-
2 # Copyright (c) 1999 M. Warner Losh <imp@FreeBSD.org>
3 #
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions
6 # are met:
7 # 1. Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer.
9 # 2. Redistributions in binary form must reproduce the above copyright
10 # notice, this list of conditions and the following disclaimer in the
11 # documentation and/or other materials provided with the distribution.
12 #
13 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 # SUCH DAMAGE.
24 #
25 # $FreeBSD$
26 #
27
28 #include <sys/bus.h>
29 #include <machine/bus.h>
30 #include <dev/pccard/pccardvar.h>
31
32 INTERFACE card;
33
34 #
35 # Companion interface for pccard. We need to set attributes for memory
36 # and i/o port mappings (as well as other types of attributes) that have
37 # a well defined meaning inside the PC Card/CardBus system. The bus
38 # methods are inadequate for this because this must be done at the time the
39 # resources are set for the device, which predates their activation. Also,
40 # the driver activating the resources doesn't necessarily know or need to know
41 # these attributes.
42 #
43 METHOD int set_res_flags {
44 device_t dev;
45 device_t child;
46 int restype;
47 int rid;
48 u_long value;
49 };
50
51 METHOD int get_res_flags {
52 device_t dev;
53 device_t child;
54 int restype;
55 int rid;
56 u_long *value;
57 };
58
59 #
60 # Sets the memory offset of the pccard bridge's window into attribute
61 # or common memory space.
62 #
63 METHOD int set_memory_offset {
64 device_t dev;
65 device_t child;
66 int rid;
67 uint32_t cardaddr;
68 uint32_t *deltap;
69 }
70
71 METHOD int get_memory_offset {
72 device_t dev;
73 device_t child;
74 int rid;
75 uint32_t *offset;
76 }
77
78 #
79 # pccard bridges call this method to initate the attachment of a card
80 #
81 METHOD int attach_card {
82 device_t dev;
83 }
84
85 #
86 # pccard bridges call this to detach a card.
87 #
88 METHOD int detach_card {
89 device_t dev;
90 }
91
92 #
93 # Find "dev" in the passed table of devices. Return it or NULL.
94 #
95 METHOD const struct pccard_product * do_product_lookup {
96 device_t bus;
97 device_t dev;
98 const struct pccard_product *tab;
99 size_t ent_size;
100 pccard_product_match_fn matchfn;
101 }
102
103 #
104 # Scanning function for accessing the CIS of a card in its driver.
105 #
106 METHOD int cis_scan {
107 device_t bus;
108 device_t dev;
109 pccard_scan_t fnp;
110 void *argp;
111 };
112
113 #
114 # Convenience function to read attribute memory.
115 #
116 METHOD int attr_read {
117 device_t bus;
118 device_t dev;
119 uint32_t offset;
120 uint8_t *val;
121 }
122
123 #
124 # Convenience function to write attribute memory.
125 #
126 METHOD int attr_write {
127 device_t bus;
128 device_t dev;
129 uint32_t offset;
130 uint8_t val;
131 }
132
133 #
134 # Read the CCR register
135 #
136 METHOD int ccr_read {
137 device_t bus;
138 device_t dev;
139 uint32_t offset;
140 uint8_t *val;
141 }
142
143 #
144 # Write the CCR register
145 #
146 METHOD int ccr_write {
147 device_t bus;
148 device_t dev;
149 uint32_t offset;
150 uint8_t val;
151 }
Cache object: d90cbce4971472db61d0544473d1e346
|