xref: /freebsd/sys/dev/cardbus/card_if.m (revision 069ac184)
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#
26
27#include <sys/bus.h>
28#include <machine/bus.h>
29#include <dev/pccard/pccardvar.h>
30
31INTERFACE 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#
42METHOD int set_res_flags {
43	device_t dev;
44	device_t child;
45	int	 restype;
46	int	 rid;
47	u_long	 value;
48};
49
50METHOD 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#
62METHOD 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
70METHOD 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#
80METHOD int attach_card {
81	device_t  dev;
82}
83
84#
85# pccard bridges call this to detach a card.
86#
87METHOD int detach_card {
88	device_t  dev;
89}
90
91#
92# Find "dev" in the passed table of devices.  Return it or NULL.
93#
94METHOD 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#
105METHOD 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#
115METHOD 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#
125METHOD 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#
135METHOD 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#
145METHOD int ccr_write {
146	device_t bus;
147	device_t dev;
148	uint32_t offset;
149	uint8_t val;
150}
151