~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to include/usb_defs.h

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * (C) Copyright 2001
 
3
 * Denis Peter, MPL AG Switzerland
 
4
 *
 
5
 * See file CREDITS for list of people who contributed to this
 
6
 * project.
 
7
 *
 
8
 * This program is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU General Public License as
 
10
 * published by the Free Software Foundation; either version 2 of
 
11
 * the License, or (at your option) any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful,
 
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 * GNU General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program; if not, write to the Free Software
 
20
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 
21
 * MA 02111-1307 USA
 
22
 *
 
23
 * Note: Part of this code has been derived from linux
 
24
 *
 
25
 */
 
26
#ifndef _USB_DEFS_H_
 
27
#define _USB_DEFS_H_
 
28
 
 
29
/* USB constants */
 
30
 
 
31
/* Device and/or Interface Class codes */
 
32
#define USB_CLASS_PER_INTERFACE  0      /* for DeviceClass */
 
33
#define USB_CLASS_AUDIO          1
 
34
#define USB_CLASS_COMM           2
 
35
#define USB_CLASS_HID            3
 
36
#define USB_CLASS_PRINTER              7
 
37
#define USB_CLASS_MASS_STORAGE   8
 
38
#define USB_CLASS_HUB            9
 
39
#define USB_CLASS_DATA           10
 
40
#define USB_CLASS_VENDOR_SPEC    0xff
 
41
 
 
42
/* some HID sub classes */
 
43
#define USB_SUB_HID_NONE        0
 
44
#define USB_SUB_HID_BOOT        1
 
45
 
 
46
/* some UID Protocols */
 
47
#define USB_PROT_HID_NONE       0
 
48
#define USB_PROT_HID_KEYBOARD   1
 
49
#define USB_PROT_HID_MOUSE      2
 
50
 
 
51
 
 
52
/* Sub STORAGE Classes */
 
53
#define US_SC_RBC              1                /* Typically, flash devices */
 
54
#define US_SC_8020             2                /* CD-ROM */
 
55
#define US_SC_QIC              3                /* QIC-157 Tapes */
 
56
#define US_SC_UFI              4                /* Floppy */
 
57
#define US_SC_8070             5                /* Removable media */
 
58
#define US_SC_SCSI             6                /* Transparent */
 
59
#define US_SC_MIN              US_SC_RBC
 
60
#define US_SC_MAX              US_SC_SCSI
 
61
 
 
62
/* STORAGE Protocols */
 
63
#define US_PR_CB               1                /* Control/Bulk w/o interrupt */
 
64
#define US_PR_CBI              0                /* Control/Bulk/Interrupt */
 
65
#define US_PR_BULK             0x50             /* bulk only */
 
66
 
 
67
/* USB types */
 
68
#define USB_TYPE_STANDARD   (0x00 << 5)
 
69
#define USB_TYPE_CLASS      (0x01 << 5)
 
70
#define USB_TYPE_VENDOR     (0x02 << 5)
 
71
#define USB_TYPE_RESERVED   (0x03 << 5)
 
72
 
 
73
/* USB recipients */
 
74
#define USB_RECIP_DEVICE      0x00
 
75
#define USB_RECIP_INTERFACE   0x01
 
76
#define USB_RECIP_ENDPOINT    0x02
 
77
#define USB_RECIP_OTHER       0x03
 
78
 
 
79
/* USB directions */
 
80
#define USB_DIR_OUT           0
 
81
#define USB_DIR_IN            0x80
 
82
 
 
83
/* USB device speeds */
 
84
#define USB_SPEED_FULL          0x0     /* 12Mbps */
 
85
#define USB_SPEED_LOW           0x1     /* 1.5Mbps */
 
86
#define USB_SPEED_HIGH          0x2     /* 480Mbps */
 
87
#define USB_SPEED_RESERVED      0x3
 
88
 
 
89
/* Descriptor types */
 
90
#define USB_DT_DEVICE        0x01
 
91
#define USB_DT_CONFIG        0x02
 
92
#define USB_DT_STRING        0x03
 
93
#define USB_DT_INTERFACE     0x04
 
94
#define USB_DT_ENDPOINT      0x05
 
95
 
 
96
#define USB_DT_HID          (USB_TYPE_CLASS | 0x01)
 
97
#define USB_DT_REPORT       (USB_TYPE_CLASS | 0x02)
 
98
#define USB_DT_PHYSICAL     (USB_TYPE_CLASS | 0x03)
 
99
#define USB_DT_HUB          (USB_TYPE_CLASS | 0x09)
 
100
 
 
101
/* Descriptor sizes per descriptor type */
 
102
#define USB_DT_DEVICE_SIZE      18
 
103
#define USB_DT_CONFIG_SIZE      9
 
104
#define USB_DT_INTERFACE_SIZE   9
 
105
#define USB_DT_ENDPOINT_SIZE    7
 
106
#define USB_DT_ENDPOINT_AUDIO_SIZE  9   /* Audio extension */
 
107
#define USB_DT_HUB_NONVAR_SIZE  7
 
108
#define USB_DT_HID_SIZE         9
 
109
 
 
110
/* Endpoints */
 
111
#define USB_ENDPOINT_NUMBER_MASK  0x0f  /* in bEndpointAddress */
 
112
#define USB_ENDPOINT_DIR_MASK     0x80
 
113
 
 
114
#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
 
115
#define USB_ENDPOINT_XFER_CONTROL  0
 
116
#define USB_ENDPOINT_XFER_ISOC     1
 
117
#define USB_ENDPOINT_XFER_BULK     2
 
118
#define USB_ENDPOINT_XFER_INT      3
 
119
 
 
120
/* USB Packet IDs (PIDs) */
 
121
#define USB_PID_UNDEF_0             0xf0
 
122
#define USB_PID_OUT                 0xe1
 
123
#define USB_PID_ACK                 0xd2
 
124
#define USB_PID_DATA0               0xc3
 
125
#define USB_PID_UNDEF_4             0xb4
 
126
#define USB_PID_SOF                 0xa5
 
127
#define USB_PID_UNDEF_6             0x96
 
128
#define USB_PID_UNDEF_7             0x87
 
129
#define USB_PID_UNDEF_8             0x78
 
130
#define USB_PID_IN                  0x69
 
131
#define USB_PID_NAK                 0x5a
 
132
#define USB_PID_DATA1               0x4b
 
133
#define USB_PID_PREAMBLE            0x3c
 
134
#define USB_PID_SETUP               0x2d
 
135
#define USB_PID_STALL               0x1e
 
136
#define USB_PID_UNDEF_F             0x0f
 
137
 
 
138
/* Standard requests */
 
139
#define USB_REQ_GET_STATUS          0x00
 
140
#define USB_REQ_CLEAR_FEATURE       0x01
 
141
#define USB_REQ_SET_FEATURE         0x03
 
142
#define USB_REQ_SET_ADDRESS         0x05
 
143
#define USB_REQ_GET_DESCRIPTOR      0x06
 
144
#define USB_REQ_SET_DESCRIPTOR      0x07
 
145
#define USB_REQ_GET_CONFIGURATION   0x08
 
146
#define USB_REQ_SET_CONFIGURATION   0x09
 
147
#define USB_REQ_GET_INTERFACE       0x0A
 
148
#define USB_REQ_SET_INTERFACE       0x0B
 
149
#define USB_REQ_SYNCH_FRAME         0x0C
 
150
 
 
151
/* HID requests */
 
152
#define USB_REQ_GET_REPORT          0x01
 
153
#define USB_REQ_GET_IDLE            0x02
 
154
#define USB_REQ_GET_PROTOCOL        0x03
 
155
#define USB_REQ_SET_REPORT          0x09
 
156
#define USB_REQ_SET_IDLE            0x0A
 
157
#define USB_REQ_SET_PROTOCOL        0x0B
 
158
 
 
159
 
 
160
/* "pipe" definitions */
 
161
 
 
162
#define PIPE_ISOCHRONOUS    0
 
163
#define PIPE_INTERRUPT      1
 
164
#define PIPE_CONTROL        2
 
165
#define PIPE_BULK           3
 
166
#define PIPE_DEVEP_MASK     0x0007ff00
 
167
 
 
168
#define USB_ISOCHRONOUS    0
 
169
#define USB_INTERRUPT      1
 
170
#define USB_CONTROL        2
 
171
#define USB_BULK           3
 
172
 
 
173
/* USB-status codes: */
 
174
#define USB_ST_ACTIVE           0x1             /* TD is active */
 
175
#define USB_ST_STALLED          0x2             /* TD is stalled */
 
176
#define USB_ST_BUF_ERR          0x4             /* buffer error */
 
177
#define USB_ST_BABBLE_DET       0x8             /* Babble detected */
 
178
#define USB_ST_NAK_REC          0x10    /* NAK Received*/
 
179
#define USB_ST_CRC_ERR          0x20    /* CRC/timeout Error */
 
180
#define USB_ST_BIT_ERR          0x40    /* Bitstuff error */
 
181
#define USB_ST_NOT_PROC         0x80000000L     /* Not yet processed */
 
182
 
 
183
 
 
184
/*************************************************************************
 
185
 * Hub defines
 
186
 */
 
187
 
 
188
/*
 
189
 * Hub request types
 
190
 */
 
191
 
 
192
#define USB_RT_HUB      (USB_TYPE_CLASS | USB_RECIP_DEVICE)
 
193
#define USB_RT_PORT     (USB_TYPE_CLASS | USB_RECIP_OTHER)
 
194
 
 
195
/*
 
196
 * Hub Class feature numbers
 
197
 */
 
198
#define C_HUB_LOCAL_POWER   0
 
199
#define C_HUB_OVER_CURRENT  1
 
200
 
 
201
/*
 
202
 * Port feature numbers
 
203
 */
 
204
#define USB_PORT_FEAT_CONNECTION     0
 
205
#define USB_PORT_FEAT_ENABLE         1
 
206
#define USB_PORT_FEAT_SUSPEND        2
 
207
#define USB_PORT_FEAT_OVER_CURRENT   3
 
208
#define USB_PORT_FEAT_RESET          4
 
209
#define USB_PORT_FEAT_POWER          8
 
210
#define USB_PORT_FEAT_LOWSPEED       9
 
211
#define USB_PORT_FEAT_HIGHSPEED      10
 
212
#define USB_PORT_FEAT_C_CONNECTION   16
 
213
#define USB_PORT_FEAT_C_ENABLE       17
 
214
#define USB_PORT_FEAT_C_SUSPEND      18
 
215
#define USB_PORT_FEAT_C_OVER_CURRENT 19
 
216
#define USB_PORT_FEAT_C_RESET        20
 
217
 
 
218
/* wPortStatus bits */
 
219
#define USB_PORT_STAT_CONNECTION    0x0001
 
220
#define USB_PORT_STAT_ENABLE        0x0002
 
221
#define USB_PORT_STAT_SUSPEND       0x0004
 
222
#define USB_PORT_STAT_OVERCURRENT   0x0008
 
223
#define USB_PORT_STAT_RESET         0x0010
 
224
#define USB_PORT_STAT_POWER         0x0100
 
225
#define USB_PORT_STAT_LOW_SPEED     0x0200
 
226
#define USB_PORT_STAT_HIGH_SPEED    0x0400      /* support for EHCI */
 
227
#define USB_PORT_STAT_SPEED     \
 
228
        (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED)
 
229
 
 
230
/* wPortChange bits */
 
231
#define USB_PORT_STAT_C_CONNECTION  0x0001
 
232
#define USB_PORT_STAT_C_ENABLE      0x0002
 
233
#define USB_PORT_STAT_C_SUSPEND     0x0004
 
234
#define USB_PORT_STAT_C_OVERCURRENT 0x0008
 
235
#define USB_PORT_STAT_C_RESET       0x0010
 
236
 
 
237
/* wHubCharacteristics (masks) */
 
238
#define HUB_CHAR_LPSM               0x0003
 
239
#define HUB_CHAR_COMPOUND           0x0004
 
240
#define HUB_CHAR_OCPM               0x0018
 
241
 
 
242
/*
 
243
 *Hub Status & Hub Change bit masks
 
244
 */
 
245
#define HUB_STATUS_LOCAL_POWER  0x0001
 
246
#define HUB_STATUS_OVERCURRENT  0x0002
 
247
 
 
248
#define HUB_CHANGE_LOCAL_POWER  0x0001
 
249
#define HUB_CHANGE_OVERCURRENT  0x0002
 
250
 
 
251
#endif /*_USB_DEFS_H_ */