]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/pccard/card_if.m
MFV: r362286
[FreeBSD/FreeBSD.git] / sys / dev / pccard / card_if.m
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 }