blob: 65409ee966e897adfe425e06f7ca5412520b8965 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_USB_USB_MIDVAR_H
#define _SYS_USB_USB_MIDVAR_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/usb/usba/usbai_private.h>
/*
* soft state information for this usb_mid
*/
typedef struct usb_mid {
int mi_instance;
uint_t mi_init_state;
uint_t mi_ugen_open_count;
kmutex_t mi_mutex;
/*
* dev_info_t reference
*/
dev_info_t *mi_dip;
/* pointer to usb_common_power_t */
usb_common_power_t *mi_pm;
/*
* save the usba_device pointer
*/
usba_device_t *mi_usba_device;
int mi_softstate;
int mi_dev_state;
int mi_n_ifs;
/* track event registration of children */
uint8_t *mi_child_events;
/* record the interface num of each child node */
uint_t *mi_children_ifs;
/*
* mi_children_dips is an array for holding
* each child dip indexed by interface number
*/
dev_info_t **mi_children_dips;
boolean_t mi_removed_children;
size_t mi_cd_list_length;
int mi_attach_count;
/* logging of messages */
usb_log_handle_t mi_log_handle;
/* usb registration */
usb_client_dev_data_t *mi_dev_data;
/* event support */
ndi_event_hdl_t mi_ndi_event_hdl;
/* ugen support */
usb_ugen_hdl_t mi_ugen_hdl;
} usb_mid_t;
_NOTE(MUTEX_PROTECTS_DATA(usb_mid::mi_mutex, usb_mid))
_NOTE(MUTEX_PROTECTS_DATA(usb_mid::mi_mutex, usb_common_power_t))
_NOTE(DATA_READABLE_WITHOUT_LOCK(usb_mid::mi_instance
usb_mid::mi_ndi_event_hdl
usb_mid::mi_dev_data
usb_mid::mi_log_handle
usb_mid::mi_ugen_hdl
usb_mid::mi_dip
usb_mid::mi_pm))
#define USB_MID_MINOR_UGEN_BITS_MASK 0x1ff
#define USB_MID_MINOR_INSTANCE_SHIFT 9
#define USB_MID_MINOR_INSTANCE_MASK ~USB_MID_MINOR_UGEN_BITS_MASK
#define USB_MID_MINOR_TO_INSTANCE(minor) \
(((minor) & USB_MID_MINOR_INSTANCE_MASK) >> \
USB_MID_MINOR_INSTANCE_SHIFT)
/* init state */
#define USB_MID_LOCK_INIT 0x0001
#define USB_MID_MINOR_NODE_CREATED 0x0002
#define USB_MID_EVENTS_REGISTERED 0x0004
/* Tracking events registered by children */
#define USB_MID_CHILD_EVENT_DISCONNECT 0x01
#define USB_MID_CHILD_EVENT_PRESUSPEND 0x02
/*
* Debug printing
* Masks
*/
#define DPRINT_MASK_ATTA 0x00000001
#define DPRINT_MASK_CBOPS 0x00000002
#define DPRINT_MASK_EVENTS 0x00000004
#define DPRINT_MASK_DUMPING 0x00000008 /* usb_mid dump mask */
#define DPRINT_MASK_PM 0x00000010
#define DPRINT_MASK_ALL 0xFFFFFFFF
#ifdef __cplusplus
}
#endif
#endif /* _SYS_USB_USB_MIDVAR_H */
|