Add support to run SMM handler in TSEG instead of ASEG
[coreboot.git] / src / include / usb_ch9.h
1 /*
2  * This file is part of the coreboot project.
3  *
4  * Copyright (C) 2007 AMD
5  * Written by Yinghai Lu <yinghai.lu@amd.com> for AMD.
6  *
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.
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 St, Fifth Floor, Boston, MA, 02110-1301 USA
19  */
20
21 #ifndef USB_CH9_H
22 #define USB_CH9_H
23
24 #define USB_DIR_OUT                     0               /* to device */
25 #define USB_DIR_IN                      0x80            /* to host */
26
27 /*
28  * USB types, the second of three bRequestType fields
29  */
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)
35 /*
36  * USB recipients, the third of three bRequestType fields
37  */
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
46
47 /*
48  * Standard requests, for the bRequest field of a SETUP packet.
49  *
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.
53  */
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
65
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
79
80 #define USB_DT_DEBUG                    0x0a
81
82 #define USB_DEVICE_DEBUG_MODE           6       /* (special devices only) */
83
84 struct usb_ctrlrequest {
85         u8  bRequestType;
86         u8  bRequest;
87         u16 wValue;
88         u16 wIndex;
89         u16 wLength;
90 } __attribute__ ((packed));
91
92 struct usb_debug_descriptor {
93         u8  bLength;
94         u8  bDescriptorType;
95
96         /* bulk endpoints with 8 byte maxpacket */
97         u8  bDebugInEndpoint;
98         u8  bDebugOutEndpoint;
99 };
100
101 #endif
102