Rename __attribute__((packed)) --> __packed
[coreboot.git] / src / drivers / usb / usb_ch9.h
blob271b7d1cacb00fea6899a498a5bb337a099546e6
1 /*
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.
17 #ifndef USB_CH9_H
18 #define USB_CH9_H
20 #include <compiler.h>
22 #define USB_DIR_OUT 0 /* to device */
23 #define USB_DIR_IN 0x80 /* to host */
26 * USB types, the second of three bRequestType fields
28 #define USB_TYPE_MASK (0x03 << 5)
29 #define USB_TYPE_STANDARD (0x00 << 5)
30 #define USB_TYPE_CLASS (0x01 << 5)
31 #define USB_TYPE_VENDOR (0x02 << 5)
32 #define USB_TYPE_RESERVED (0x03 << 5)
34 * USB recipients, the third of three bRequestType fields
36 #define USB_RECIP_MASK 0x1f
37 #define USB_RECIP_DEVICE 0x00
38 #define USB_RECIP_INTERFACE 0x01
39 #define USB_RECIP_ENDPOINT 0x02
40 #define USB_RECIP_OTHER 0x03
41 /* From Wireless USB 1.0 */
42 #define USB_RECIP_PORT 0x04
43 #define USB_RECIP_RPIPE 0x05
46 * Standard requests, for the bRequest field of a SETUP packet.
48 * These are qualified by the bRequestType field, so that for example
49 * TYPE_CLASS or TYPE_VENDOR specific feature flags could be retrieved
50 * by a GET_STATUS request.
52 #define USB_REQ_GET_STATUS 0x00
53 #define USB_REQ_CLEAR_FEATURE 0x01
54 #define USB_REQ_SET_FEATURE 0x03
55 #define USB_REQ_SET_ADDRESS 0x05
56 #define USB_REQ_GET_DESCRIPTOR 0x06
57 #define USB_REQ_SET_DESCRIPTOR 0x07
58 #define USB_REQ_GET_CONFIGURATION 0x08
59 #define USB_REQ_SET_CONFIGURATION 0x09
60 #define USB_REQ_GET_INTERFACE 0x0A
61 #define USB_REQ_SET_INTERFACE 0x0B
62 #define USB_REQ_SYNCH_FRAME 0x0C
64 #define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */
65 #define USB_REQ_GET_ENCRYPTION 0x0E
66 #define USB_REQ_RPIPE_ABORT 0x0E
67 #define USB_REQ_SET_HANDSHAKE 0x0F
68 #define USB_REQ_RPIPE_RESET 0x0F
69 #define USB_REQ_GET_HANDSHAKE 0x10
70 #define USB_REQ_SET_CONNECTION 0x11
71 #define USB_REQ_SET_SECURITY_DATA 0x12
72 #define USB_REQ_GET_SECURITY_DATA 0x13
73 #define USB_REQ_SET_WUSB_DATA 0x14
74 #define USB_REQ_LOOPBACK_DATA_WRITE 0x15
75 #define USB_REQ_LOOPBACK_DATA_READ 0x16
76 #define USB_REQ_SET_INTERFACE_DS 0x17
78 #define USB_DT_DEBUG 0x0a
80 #define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */
83 * USB Packet IDs (PIDs)
86 /* token */
87 #define USB_PID_OUT 0xe1
88 #define USB_PID_IN 0x69
89 #define USB_PID_SOF 0xa5
90 #define USB_PID_SETUP 0x2d
91 /* handshake */
92 #define USB_PID_ACK 0xd2
93 #define USB_PID_NAK 0x5a
94 #define USB_PID_STALL 0x1e
95 #define USB_PID_NYET 0x96
96 /* data */
97 #define USB_PID_DATA0 0xc3
98 #define USB_PID_DATA1 0x4b
99 #define USB_PID_DATA2 0x87
100 #define USB_PID_MDATA 0x0f
101 /* Special */
102 #define USB_PID_PREAMBLE 0x3c
103 #define USB_PID_ERR 0x3c
104 #define USB_PID_SPLIT 0x78
105 #define USB_PID_PING 0xb4
106 #define USB_PID_UNDEF_0 0xf0
108 #define USB_PID_DATA_TOGGLE 0x88
110 struct usb_ctrlrequest {
111 u8 bRequestType;
112 u8 bRequest;
113 u16 wValue;
114 u16 wIndex;
115 u16 wLength;
116 } __packed;
118 struct usb_debug_descriptor {
119 u8 bLength;
120 u8 bDescriptorType;
122 /* bulk endpoints with 8 byte maxpacket */
123 u8 bDebugInEndpoint;
124 u8 bDebugOutEndpoint;
127 #endif