OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [usb/] [cdc.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * USB Communications Device Class (CDC) definitions
3
 *
4
 * CDC says how to talk to lots of different types of network adapters,
5
 * notably ethernet adapters and various modems.  It's used mostly with
6
 * firmware based USB peripherals.
7
 */
8
 
9
#define USB_CDC_SUBCLASS_ACM                    0x02
10
#define USB_CDC_SUBCLASS_ETHERNET               0x06
11
#define USB_CDC_SUBCLASS_WHCM                   0x08
12
#define USB_CDC_SUBCLASS_DMM                    0x09
13
#define USB_CDC_SUBCLASS_MDLM                   0x0a
14
#define USB_CDC_SUBCLASS_OBEX                   0x0b
15
 
16
#define USB_CDC_PROTO_NONE                      0
17
 
18
#define USB_CDC_ACM_PROTO_AT_V25TER             1
19
#define USB_CDC_ACM_PROTO_AT_PCCA101            2
20
#define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE       3
21
#define USB_CDC_ACM_PROTO_AT_GSM                4
22
#define USB_CDC_ACM_PROTO_AT_3G                 5
23
#define USB_CDC_ACM_PROTO_AT_CDMA               6
24
#define USB_CDC_ACM_PROTO_VENDOR                0xff
25
 
26
/*-------------------------------------------------------------------------*/
27
 
28
/*
29
 * Class-Specific descriptors ... there are a couple dozen of them
30
 */
31
 
32
#define USB_CDC_HEADER_TYPE             0x00            /* header_desc */
33
#define USB_CDC_CALL_MANAGEMENT_TYPE    0x01            /* call_mgmt_descriptor */
34
#define USB_CDC_ACM_TYPE                0x02            /* acm_descriptor */
35
#define USB_CDC_UNION_TYPE              0x06            /* union_desc */
36
#define USB_CDC_COUNTRY_TYPE            0x07
37
#define USB_CDC_NETWORK_TERMINAL_TYPE   0x0a            /* network_terminal_desc */
38
#define USB_CDC_ETHERNET_TYPE           0x0f            /* ether_desc */
39
#define USB_CDC_WHCM_TYPE               0x11
40
#define USB_CDC_MDLM_TYPE               0x12            /* mdlm_desc */
41
#define USB_CDC_MDLM_DETAIL_TYPE        0x13            /* mdlm_detail_desc */
42
#define USB_CDC_DMM_TYPE                0x14
43
#define USB_CDC_OBEX_TYPE               0x15
44
 
45
/* "Header Functional Descriptor" from CDC spec  5.2.3.1 */
46
struct usb_cdc_header_desc {
47
        __u8    bLength;
48
        __u8    bDescriptorType;
49
        __u8    bDescriptorSubType;
50
 
51
        __le16  bcdCDC;
52
} __attribute__ ((packed));
53
 
54
/* "Call Management Descriptor" from CDC spec  5.2.3.2 */
55
struct usb_cdc_call_mgmt_descriptor {
56
        __u8    bLength;
57
        __u8    bDescriptorType;
58
        __u8    bDescriptorSubType;
59
 
60
        __u8    bmCapabilities;
61
#define USB_CDC_CALL_MGMT_CAP_CALL_MGMT         0x01
62
#define USB_CDC_CALL_MGMT_CAP_DATA_INTF         0x02
63
 
64
        __u8    bDataInterface;
65
} __attribute__ ((packed));
66
 
67
/* "Abstract Control Management Descriptor" from CDC spec  5.2.3.3 */
68
struct usb_cdc_acm_descriptor {
69
        __u8    bLength;
70
        __u8    bDescriptorType;
71
        __u8    bDescriptorSubType;
72
 
73
        __u8    bmCapabilities;
74
} __attribute__ ((packed));
75
 
76
/* capabilities from 5.2.3.3 */
77
 
78
#define USB_CDC_COMM_FEATURE    0x01
79
#define USB_CDC_CAP_LINE        0x02
80
#define USB_CDC_CAP_BRK 0x04
81
#define USB_CDC_CAP_NOTIFY      0x08
82
 
83
/* "Union Functional Descriptor" from CDC spec 5.2.3.8 */
84
struct usb_cdc_union_desc {
85
        __u8    bLength;
86
        __u8    bDescriptorType;
87
        __u8    bDescriptorSubType;
88
 
89
        __u8    bMasterInterface0;
90
        __u8    bSlaveInterface0;
91
        /* ... and there could be other slave interfaces */
92
} __attribute__ ((packed));
93
 
94
/* "Country Selection Functional Descriptor" from CDC spec 5.2.3.9 */
95
struct usb_cdc_country_functional_desc {
96
        __u8    bLength;
97
        __u8    bDescriptorType;
98
        __u8    bDescriptorSubType;
99
 
100
        __u8    iCountryCodeRelDate;
101
        __le16  wCountyCode0;
102
        /* ... and there can be a lot of country codes */
103
} __attribute__ ((packed));
104
 
105
/* "Network Channel Terminal Functional Descriptor" from CDC spec 5.2.3.11 */
106
struct usb_cdc_network_terminal_desc {
107
        __u8    bLength;
108
        __u8    bDescriptorType;
109
        __u8    bDescriptorSubType;
110
 
111
        __u8    bEntityId;
112
        __u8    iName;
113
        __u8    bChannelIndex;
114
        __u8    bPhysicalInterface;
115
} __attribute__ ((packed));
116
 
117
/* "Ethernet Networking Functional Descriptor" from CDC spec 5.2.3.16 */
118
struct usb_cdc_ether_desc {
119
        __u8    bLength;
120
        __u8    bDescriptorType;
121
        __u8    bDescriptorSubType;
122
 
123
        __u8    iMACAddress;
124
        __le32  bmEthernetStatistics;
125
        __le16  wMaxSegmentSize;
126
        __le16  wNumberMCFilters;
127
        __u8    bNumberPowerFilters;
128
} __attribute__ ((packed));
129
 
130
/* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */
131
struct usb_cdc_mdlm_desc {
132
        __u8    bLength;
133
        __u8    bDescriptorType;
134
        __u8    bDescriptorSubType;
135
 
136
        __le16  bcdVersion;
137
        __u8    bGUID[16];
138
} __attribute__ ((packed));
139
 
140
/* "MDLM Detail Functional Descriptor" from CDC WMC spec 6.7.2.4 */
141
struct usb_cdc_mdlm_detail_desc {
142
        __u8    bLength;
143
        __u8    bDescriptorType;
144
        __u8    bDescriptorSubType;
145
 
146
        /* type is associated with mdlm_desc.bGUID */
147
        __u8    bGuidDescriptorType;
148
        __u8    bDetailData[0];
149
} __attribute__ ((packed));
150
 
151
/*-------------------------------------------------------------------------*/
152
 
153
/*
154
 * Class-Specific Control Requests (6.2)
155
 *
156
 * section 3.6.2.1 table 4 has the ACM profile, for modems.
157
 * section 3.8.2 table 10 has the ethernet profile.
158
 *
159
 * Microsoft's RNDIS stack for Ethernet is a vendor-specific CDC ACM variant,
160
 * heavily dependent on the encapsulated (proprietary) command mechanism.
161
 */
162
 
163
#define USB_CDC_SEND_ENCAPSULATED_COMMAND       0x00
164
#define USB_CDC_GET_ENCAPSULATED_RESPONSE       0x01
165
#define USB_CDC_REQ_SET_LINE_CODING             0x20
166
#define USB_CDC_REQ_GET_LINE_CODING             0x21
167
#define USB_CDC_REQ_SET_CONTROL_LINE_STATE      0x22
168
#define USB_CDC_REQ_SEND_BREAK                  0x23
169
#define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS  0x40
170
#define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER  0x41
171
#define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER  0x42
172
#define USB_CDC_SET_ETHERNET_PACKET_FILTER      0x43
173
#define USB_CDC_GET_ETHERNET_STATISTIC          0x44
174
 
175
/* Line Coding Structure from CDC spec 6.2.13 */
176
struct usb_cdc_line_coding {
177
        __le32  dwDTERate;
178
        __u8    bCharFormat;
179
#define USB_CDC_1_STOP_BITS                     0
180
#define USB_CDC_1_5_STOP_BITS                   1
181
#define USB_CDC_2_STOP_BITS                     2
182
 
183
        __u8    bParityType;
184
#define USB_CDC_NO_PARITY                       0
185
#define USB_CDC_ODD_PARITY                      1
186
#define USB_CDC_EVEN_PARITY                     2
187
#define USB_CDC_MARK_PARITY                     3
188
#define USB_CDC_SPACE_PARITY                    4
189
 
190
        __u8    bDataBits;
191
} __attribute__ ((packed));
192
 
193
/* table 62; bits in multicast filter */
194
#define USB_CDC_PACKET_TYPE_PROMISCUOUS         (1 << 0)
195
#define USB_CDC_PACKET_TYPE_ALL_MULTICAST       (1 << 1) /* no filter */
196
#define USB_CDC_PACKET_TYPE_DIRECTED            (1 << 2)
197
#define USB_CDC_PACKET_TYPE_BROADCAST           (1 << 3)
198
#define USB_CDC_PACKET_TYPE_MULTICAST           (1 << 4) /* filtered */
199
 
200
 
201
/*-------------------------------------------------------------------------*/
202
 
203
/*
204
 * Class-Specific Notifications (6.3) sent by interrupt transfers
205
 *
206
 * section 3.8.2 table 11 of the CDC spec lists Ethernet notifications
207
 * section 3.6.2.1 table 5 specifies ACM notifications, accepted by RNDIS
208
 * RNDIS also defines its own bit-incompatible notifications
209
 */
210
 
211
#define USB_CDC_NOTIFY_NETWORK_CONNECTION       0x00
212
#define USB_CDC_NOTIFY_RESPONSE_AVAILABLE       0x01
213
#define USB_CDC_NOTIFY_SERIAL_STATE             0x20
214
#define USB_CDC_NOTIFY_SPEED_CHANGE             0x2a
215
 
216
struct usb_cdc_notification {
217
        __u8    bmRequestType;
218
        __u8    bNotificationType;
219
        __le16  wValue;
220
        __le16  wIndex;
221
        __le16  wLength;
222
} __attribute__ ((packed));
223
 

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.