Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
usb
wusb-wa.h
Go to the documentation of this file.
1
/*
2
* Wireless USB Wire Adapter constants and structures.
3
*
4
* Copyright (C) 2005-2006 Intel Corporation.
5
* Inaky Perez-Gonzalez <
[email protected]
>
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License version
9
* 2 as published by the Free Software Foundation.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
* 02110-1301, USA.
20
*
21
*
22
* FIXME: docs
23
* FIXME: organize properly, group logically
24
*
25
* All the event structures are defined in uwb/spec.h, as they are
26
* common to the WHCI and WUSB radio control interfaces.
27
*
28
* References:
29
* [WUSB] Wireless Universal Serial Bus Specification, revision 1.0, ch8
30
*/
31
#ifndef __LINUX_USB_WUSB_WA_H
32
#define __LINUX_USB_WUSB_WA_H
33
40
enum
{
41
WA_EXEC_RC_CMD
= 40,
/* Radio Control command Request */
42
};
43
44
/* Wireless Adapter Requests ([WUSB] table 8-51) */
45
enum
{
46
WUSB_REQ_ADD_MMC_IE
= 20,
47
WUSB_REQ_REMOVE_MMC_IE
= 21,
48
WUSB_REQ_SET_NUM_DNTS
= 22,
49
WUSB_REQ_SET_CLUSTER_ID
= 23,
50
WUSB_REQ_SET_DEV_INFO
= 24,
51
WUSB_REQ_GET_TIME
= 25,
52
WUSB_REQ_SET_STREAM_IDX
= 26,
53
WUSB_REQ_SET_WUSB_MAS
= 27,
54
WUSB_REQ_CHAN_STOP
= 28,
55
};
56
57
58
/* Wireless Adapter WUSB Channel Time types ([WUSB] table 8-52) */
59
enum
{
60
WUSB_TIME_ADJ
= 0,
61
WUSB_TIME_BPST
= 1,
62
WUSB_TIME_WUSB
= 2,
63
};
64
65
enum
{
66
WA_ENABLE
= 0x01,
67
WA_RESET
= 0x02,
68
RPIPE_PAUSE
= 0x1,
69
};
70
71
/* Responses from Get Status request ([WUSB] section 8.3.1.6) */
72
enum
{
73
WA_STATUS_ENABLED
= 0x01,
74
WA_STATUS_RESETTING
= 0x02
75
};
76
77
enum
rpipe_crs
{
78
RPIPE_CRS_CTL
= 0x01,
79
RPIPE_CRS_ISO
= 0x02,
80
RPIPE_CRS_BULK
= 0x04,
81
RPIPE_CRS_INTR
= 0x08
82
};
83
89
struct
usb_rpipe_descriptor
{
90
u8
bLength
;
91
u8
bDescriptorType
;
92
__le16
wRPipeIndex
;
93
__le16
wRequests
;
94
__le16
wBlocks
;
/* rw if 0 */
95
__le16
wMaxPacketSize
;
/* rw? */
96
u8
bHSHubAddress
;
/* reserved: 0 */
97
u8
bHSHubPort
;
/* ??? FIXME ??? */
98
u8
bSpeed
;
/* rw: xfer rate 'enum uwb_phy_rate' */
99
u8
bDeviceAddress
;
/* rw: Target device address */
100
u8
bEndpointAddress
;
/* rw: Target EP address */
101
u8
bDataSequence
;
/* ro: Current Data sequence */
102
__le32
dwCurrentWindow
;
/* ro */
103
u8
bMaxDataSequence
;
/* ro?: max supported seq */
104
u8
bInterval
;
/* rw: */
105
u8
bOverTheAirInterval
;
/* rw: */
106
u8
bmAttribute
;
/* ro? */
107
u8
bmCharacteristics
;
/* ro? enum rpipe_attr, supported xsactions */
108
u8
bmRetryOptions
;
/* rw? */
109
__le16
wNumTransactionErrors
;
/* rw */
110
}
__attribute__
((packed));
111
118
enum
wa_notif_type
{
119
DWA_NOTIF_RWAKE
= 0x91,
120
DWA_NOTIF_PORTSTATUS
= 0x92,
121
WA_NOTIF_TRANSFER
= 0x93,
122
HWA_NOTIF_BPST_ADJ
= 0x94,
123
HWA_NOTIF_DN
= 0x95,
124
};
125
132
struct
wa_notif_hdr
{
133
u8
bLength
;
134
u8
bNotifyType
;
/* enum wa_notif_type */
135
}
__attribute__
((packed));
136
146
struct
hwa_notif_dn
{
147
struct
wa_notif_hdr
hdr
;
148
u8
bSourceDeviceAddr
;
/* from errata 2005/07 */
149
u8
bmAttributes
;
150
struct
wusb_dn_hdr
dndata
[];
151
}
__attribute__
((packed));
152
153
/* [WUSB] section 8.3.3 */
154
enum
wa_xfer_type
{
155
WA_XFER_TYPE_CTL
= 0x80,
156
WA_XFER_TYPE_BI
= 0x81,
/* bulk/interrupt */
157
WA_XFER_TYPE_ISO
= 0x82,
158
WA_XFER_RESULT
= 0x83,
159
WA_XFER_ABORT
= 0x84,
160
};
161
162
/* [WUSB] section 8.3.3 */
163
struct
wa_xfer_hdr
{
164
u8
bLength
;
/* 0x18 */
165
u8
bRequestType
;
/* 0x80 WA_REQUEST_TYPE_CTL */
166
__le16
wRPipe
;
/* RPipe index */
167
__le32
dwTransferID
;
/* Host-assigned ID */
168
__le32
dwTransferLength
;
/* Length of data to xfer */
169
u8
bTransferSegment
;
170
}
__attribute__
((packed));
171
172
struct
wa_xfer_ctl
{
173
struct
wa_xfer_hdr
hdr
;
174
u8
bmAttribute
;
175
__le16
wReserved
;
176
struct
usb_ctrlrequest
baSetupData
;
177
}
__attribute__
((packed));
178
179
struct
wa_xfer_bi
{
180
struct
wa_xfer_hdr
hdr
;
181
u8
bReserved
;
182
__le16
wReserved
;
183
}
__attribute__
((packed));
184
185
struct
wa_xfer_hwaiso
{
186
struct
wa_xfer_hdr
hdr
;
187
u8
bReserved
;
188
__le16
wPresentationTime
;
189
__le32
dwNumOfPackets
;
190
/* FIXME: u8 pktdata[]? */
191
}
__attribute__
((packed));
192
193
/* [WUSB] section 8.3.3.5 */
194
struct
wa_xfer_abort
{
195
u8
bLength
;
196
u8
bRequestType
;
197
__le16
wRPipe
;
/* RPipe index */
198
__le32
dwTransferID
;
/* Host-assigned ID */
199
}
__attribute__
((packed));
200
205
struct
wa_notif_xfer
{
206
struct
wa_notif_hdr
hdr
;
207
u8
bEndpoint
;
208
u8
Reserved
;
209
}
__attribute__
((packed));
210
212
enum
{
213
WA_XFER_STATUS_SUCCESS
,
214
WA_XFER_STATUS_HALTED
,
215
WA_XFER_STATUS_DATA_BUFFER_ERROR
,
216
WA_XFER_STATUS_BABBLE
,
217
WA_XFER_RESERVED
,
218
WA_XFER_STATUS_NOT_FOUND
,
219
WA_XFER_STATUS_INSUFFICIENT_RESOURCE
,
220
WA_XFER_STATUS_TRANSACTION_ERROR
,
221
WA_XFER_STATUS_ABORTED
,
222
WA_XFER_STATUS_RPIPE_NOT_READY
,
223
WA_XFER_INVALID_FORMAT
,
224
WA_XFER_UNEXPECTED_SEGMENT_NUMBER
,
225
WA_XFER_STATUS_RPIPE_TYPE_MISMATCH
,
226
};
227
229
struct
wa_xfer_result
{
230
struct
wa_notif_hdr
hdr
;
231
__le32
dwTransferID
;
232
__le32
dwTransferLength
;
233
u8
bTransferSegment
;
234
u8
bTransferStatus
;
235
__le32
dwNumOfPackets
;
236
}
__attribute__
((packed));
237
248
struct
usb_wa_descriptor
{
249
u8
bLength
;
250
u8
bDescriptorType
;
251
u16
bcdWAVersion
;
252
u8
bNumPorts
;
/* don't use!! */
253
u8
bmAttributes
;
/* Reserved == 0 */
254
u16
wNumRPipes
;
255
u16
wRPipeMaxBlock
;
256
u8
bRPipeBlockSize
;
257
u8
bPwrOn2PwrGood
;
258
u8
bNumMMCIEs
;
259
u8
DeviceRemovable
;
/* FIXME: in DWA this is up to 16 bytes */
260
}
__attribute__
((packed));
261
265
struct
hwa_dev_info
{
266
u8
bmDeviceAvailability
[32];
/* FIXME: ignored for now */
267
u8
bDeviceAddress
;
268
__le16
wPHYRates
;
269
u8
bmDeviceAttribute
;
270
}
__attribute__
((packed));
271
272
#endif
/* #ifndef __LINUX_USB_WUSB_WA_H */
Generated on Thu Jan 10 2013 14:52:45 for Linux Kernel by
1.8.2