source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/usb_cdc.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

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