2 * This file is part of the coreboot project.
4 * Copyright (C) 2007 AMD
5 * Written by Yinghai Lu <yinghai.lu@amd.com> for AMD.
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2 of the License.
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.
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 St, Fifth Floor, Boston, MA, 02110-1301 USA
24 #define USB_DIR_OUT 0 /* to device */
25 #define USB_DIR_IN 0x80 /* to host */
28 * USB types, the second of three bRequestType fields
30 #define USB_TYPE_MASK (0x03 << 5)
31 #define USB_TYPE_STANDARD (0x00 << 5)
32 #define USB_TYPE_CLASS (0x01 << 5)
33 #define USB_TYPE_VENDOR (0x02 << 5)
34 #define USB_TYPE_RESERVED (0x03 << 5)
36 * USB recipients, the third of three bRequestType fields
38 #define USB_RECIP_MASK 0x1f
39 #define USB_RECIP_DEVICE 0x00
40 #define USB_RECIP_INTERFACE 0x01
41 #define USB_RECIP_ENDPOINT 0x02
42 #define USB_RECIP_OTHER 0x03
43 /* From Wireless USB 1.0 */
44 #define USB_RECIP_PORT 0x04
45 #define USB_RECIP_RPIPE 0x05
48 * Standard requests, for the bRequest field of a SETUP packet.
50 * These are qualified by the bRequestType field, so that for example
51 * TYPE_CLASS or TYPE_VENDOR specific feature flags could be retrieved
52 * by a GET_STATUS request.
54 #define USB_REQ_GET_STATUS 0x00
55 #define USB_REQ_CLEAR_FEATURE 0x01
56 #define USB_REQ_SET_FEATURE 0x03
57 #define USB_REQ_SET_ADDRESS 0x05
58 #define USB_REQ_GET_DESCRIPTOR 0x06
59 #define USB_REQ_SET_DESCRIPTOR 0x07
60 #define USB_REQ_GET_CONFIGURATION 0x08
61 #define USB_REQ_SET_CONFIGURATION 0x09
62 #define USB_REQ_GET_INTERFACE 0x0A
63 #define USB_REQ_SET_INTERFACE 0x0B
64 #define USB_REQ_SYNCH_FRAME 0x0C
66 #define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */
67 #define USB_REQ_GET_ENCRYPTION 0x0E
68 #define USB_REQ_RPIPE_ABORT 0x0E
69 #define USB_REQ_SET_HANDSHAKE 0x0F
70 #define USB_REQ_RPIPE_RESET 0x0F
71 #define USB_REQ_GET_HANDSHAKE 0x10
72 #define USB_REQ_SET_CONNECTION 0x11
73 #define USB_REQ_SET_SECURITY_DATA 0x12
74 #define USB_REQ_GET_SECURITY_DATA 0x13
75 #define USB_REQ_SET_WUSB_DATA 0x14
76 #define USB_REQ_LOOPBACK_DATA_WRITE 0x15
77 #define USB_REQ_LOOPBACK_DATA_READ 0x16
78 #define USB_REQ_SET_INTERFACE_DS 0x17
80 #define USB_DT_DEBUG 0x0a
82 #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */
84 struct usb_ctrlrequest {
90 } __attribute__ ((packed));
92 struct usb_debug_descriptor {
96 /* bulk endpoints with 8 byte maxpacket */