Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/dev/cardbus/card_if.m
39507 views
1
#-
2
# Copyright (c) 1999 M. Warner Losh <[email protected]>
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
#
26
27
#include <sys/bus.h>
28
#include <machine/bus.h>
29
#include <dev/pccard/pccardvar.h>
30
31
INTERFACE card;
32
33
#
34
# Companion interface for pccard. We need to set attributes for memory
35
# and i/o port mappings (as well as other types of attributes) that have
36
# a well defined meaning inside the PC Card/CardBus system. The bus
37
# methods are inadequate for this because this must be done at the time the
38
# resources are set for the device, which predates their activation. Also,
39
# the driver activating the resources doesn't necessarily know or need to know
40
# these attributes.
41
#
42
METHOD int set_res_flags {
43
device_t dev;
44
device_t child;
45
int restype;
46
int rid;
47
u_long value;
48
};
49
50
METHOD int get_res_flags {
51
device_t dev;
52
device_t child;
53
int restype;
54
int rid;
55
u_long *value;
56
};
57
58
#
59
# Sets the memory offset of the pccard bridge's window into attribute
60
# or common memory space.
61
#
62
METHOD int set_memory_offset {
63
device_t dev;
64
device_t child;
65
int rid;
66
uint32_t cardaddr;
67
uint32_t *deltap;
68
}
69
70
METHOD int get_memory_offset {
71
device_t dev;
72
device_t child;
73
int rid;
74
uint32_t *offset;
75
}
76
77
#
78
# pccard bridges call this method to initate the attachment of a card
79
#
80
METHOD int attach_card {
81
device_t dev;
82
}
83
84
#
85
# pccard bridges call this to detach a card.
86
#
87
METHOD int detach_card {
88
device_t dev;
89
}
90
91
#
92
# Find "dev" in the passed table of devices. Return it or NULL.
93
#
94
METHOD const struct pccard_product * do_product_lookup {
95
device_t bus;
96
device_t dev;
97
const struct pccard_product *tab;
98
size_t ent_size;
99
pccard_product_match_fn matchfn;
100
}
101
102
#
103
# Scanning function for accessing the CIS of a card in its driver.
104
#
105
METHOD int cis_scan {
106
device_t bus;
107
device_t dev;
108
pccard_scan_t fnp;
109
void *argp;
110
};
111
112
#
113
# Convenience function to read attribute memory.
114
#
115
METHOD int attr_read {
116
device_t bus;
117
device_t dev;
118
uint32_t offset;
119
uint8_t *val;
120
}
121
122
#
123
# Convenience function to write attribute memory.
124
#
125
METHOD int attr_write {
126
device_t bus;
127
device_t dev;
128
uint32_t offset;
129
uint8_t val;
130
}
131
132
#
133
# Read the CCR register
134
#
135
METHOD int ccr_read {
136
device_t bus;
137
device_t dev;
138
uint32_t offset;
139
uint8_t *val;
140
}
141
142
#
143
# Write the CCR register
144
#
145
METHOD int ccr_write {
146
device_t bus;
147
device_t dev;
148
uint32_t offset;
149
uint8_t val;
150
}
151
152