4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 1999 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
28 * PCMCIA Event Manager Driver
34 #pragma ident "%Z%%M% %I% %E% SMI"
40 /* #define PEM_DEBUG */
42 #define PEM_MAX_EVENTS 64
43 #define PEM_IDNUM 0x454D
44 #define PEM_NAME "pem"
47 #define PEM_HIWATER 4096
48 #define PEM_LOWATER 1024
52 #define EM_MODIFY_EVENT_MASK_REQ 2
53 #define EM_GET_FIRST_TUPLE_REQ 3
54 #define EM_GET_NEXT_TUPLE_REQ 4
58 #define EM_EVENT_IND 7
60 #define EM_ADAPTER_INFO_REQ 8
61 #define EM_ADAPTER_INFO_ACK 9
62 #define EM_SOCKET_INFO_REQ 10
63 #define EM_SOCKET_INFO_ACK 11
64 #define EM_GET_SOCKET_REQ 12
65 #define EM_GET_SOCKET_ACK 13
66 #define EM_IDENT_SOCKET_REQ 14
67 #define EM_GET_FIRST_TUPLE_ACK 15
72 #define ___VERSION(a, b) (((a)<<8)|(b))
73 #define EM_VERSION ___VERSION(0, 1)
74 #define EM_CURRENT_VERSION EM_VERSION
78 uint32_t em_primitive
;
79 uint32_t em_logical_socket
;
80 uint32_t em_event_mask_offset
;
81 uint32_t em_event_mask_length
;
82 uint32_t em_event_class_offset
;
83 uint32_t em_event_class_length
;
88 uint32_t em_primitive
;
92 struct em_modify_event_mask_req
{
93 uint32_t em_primitive
;
94 } em_modify_event_mask_req_t
;
97 struct em_get_first_tuple_req
{
98 uint32_t em_primitive
;
100 uint32_t em_desired_tuple
;
101 } em_get_first_tuple_req_t
;
104 struct em_get_first_tuple_ack
{
105 uint32_t em_primitive
;
106 } em_get_first_tuple_ack_t
;
109 struct em_get_next_tuple_req
{
110 uint32_t em_primitive
;
111 } em_get_next_tuple_req_t
;
114 struct em_get_next_tuple_ack
{
115 uint32_t em_primitive
;
116 } em_get_next_tuple_ack_t
;
120 uint32_t em_primitive
;
123 uint32_t em_event_mask_offset
;
124 uint32_t em_event_mask_length
;
125 uint32_t em_event_class_offset
;
126 uint32_t em_event_class_length
;
130 struct em_event_ind
{
131 uint32_t em_primitive
;
132 uint32_t em_logical_socket
;
134 uint32_t em_event_info_offset
;
135 uint32_t em_event_info_length
;
140 uint32_t em_primitive
;
143 /* adapter info is essentially InquireAdapter */
145 struct em_adapter_info_req
{
146 uint32_t em_primitive
;
147 } em_adapter_info_req_t
;
150 struct em_adapter_info_ack
{
151 uint32_t em_primitive
;
152 uint32_t em_num_sockets
;
153 uint32_t em_num_windows
;
154 uint32_t em_num_power
;
155 uint32_t em_power_offset
;
156 uint32_t em_power_length
;
157 } em_adapter_info_ack_t
;
159 /* socket_info is essentially InquireSocket */
161 struct em_socket_info_req
{
162 uint32_t em_primitive
;
164 } em_socket_info_req_t
;
167 struct em_socket_info_ack
{
168 uint32_t em_primitive
;
169 uint32_t em_status_int_caps
;
170 uint32_t em_status_report_caps
;
171 uint32_t em_control_indicator_caps
;
172 uint32_t em_socket_caps
;
173 } em_socket_info_ack_t
;
177 struct em_get_socket_req
{
178 uint32_t em_primitive
;
180 } em_get_socket_req_t
;
183 struct em_get_socket_ack
{
184 uint32_t em_primitive
;
186 uint32_t em_vcc_level
;
187 uint32_t em_vpp1_level
;
188 uint32_t em_vpp2_level
;
190 uint32_t em_control_ind
;
191 uint32_t em_ireq_routing
;
193 } em_get_socket_ack_t
;
196 struct em_ident_socket_req
{
197 uint32_t em_primitive
;
199 } em_ident_socket_req_t
;
201 union em_primitives
{
202 uint32_t em_primitive
;
203 em_init_req_t init_req
;
204 em_info_req_t info_req
;
205 em_get_first_tuple_req_t get_first_tuple_req
;
206 em_get_next_tuple_req_t get_next_tuple_req
;
207 em_info_ack_t info_ack
;
208 em_event_ind_t event_ind
;
209 em_modify_event_mask_req_t modify_event_mask_req
;
210 em_get_socket_req_t get_socket_req
;
211 em_ident_socket_req_t ident_socket_req
;
214 #define EM_CLASS_SIZE 32
215 #define EM_EVENT_MASK_SIZE 32
218 #define EM_EVENT_SIZE 4
226 uchar_t pem_event_class
[EM_CLASS_SIZE
/sizeof (uchar_t
)];
227 uchar_t pem_event_mask
[EM_EVENT_MASK_SIZE
/sizeof (uchar_t
)];
231 #define PEMF_EVENTS 0x0001
232 #define PEMF_CLASSES 0x0002
233 #define PEMF_INIT 0x0004
235 #define PEMMAXINFO (16 + sizeof (struct pcm_make_dev))
241 uchar_t pe_info
[PEMMAXINFO
];
243 #define PE_OWN_FREE 0
244 #define PE_OWN_CLAIMED 1
245 #define PE_OWN_HANDLER 2
248 #define PEME_NO_INFO 1
249 #define PEME_UNAVAILABLE 2
250 #define PEME_NO_CIS 3
251 #define PEME_NO_TUPLE 4
253 #define PEMTRACE 0x0001
254 #define PEMERRS 0x0002