xref: /inferno-os/os/mpc/usb.h (revision 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a)
1 /*
2  * USB packet definitions
3  */
4 
5 #define	GET2(p)	((((p)[1]&0xFF)<<8)|((p)[0]&0xFF))
6 #define	PUT2(p,v)	{((p)[0] = (v)); ((p)[1] = (v)>>8);}
7 
8 enum {
9 	/* request type */
10 	RH2D = 0<<7,
11 	RD2H = 1<<7,
12 	Rstandard = 0<<5,
13 	Rclass = 1<<5,
14 	Rvendor = 2<<5,
15 	Rdevice = 0,
16 	Rinterface = 1,
17 	Rendpt = 2,
18 	Rother = 3,
19 
20 	/* standard requests */
21 	GET_STATUS = 0,
22 	CLEAR_FEATURE = 1,
23 	SET_FEATURE = 3,
24 	SET_ADDRESS = 5,
25 	GET_DESCRIPTOR = 6,
26 	SET_DESCRIPTOR = 7,
27 	GET_CONFIGURATION = 8,
28 	SET_CONFIGURATION = 9,
29 	GET_INTERFACE = 10,
30 	SET_INTERFACE = 11,
31 	SYNCH_FRAME = 12,
32 
33 	/* hub class feature selectors */
34 	C_HUB_LOCAL_POWER = 0,
35 	C_HUB_OVER_CURRENT,
36 	PORT_CONNECTION = 0,
37 	PORT_ENABLE = 1,
38 	PORT_SUSPEND = 2,
39 	PORT_OVER_CURRENT = 3,
40 	PORT_RESET = 4,
41 	PORT_POWER = 8,
42 	PORT_LOW_SPEED = 9,
43 	C_PORT_CONNECTION = 16,
44 	C_PORT_ENABLE,
45 	C_PORT_SUSPEND,
46 	C_PORT_OVER_CURRENT,
47 	C_PORT_RESET,
48 
49 	/* descriptor types */
50 	DEVICE = 1,
51 	CONFIGURATION = 2,
52 	STRING = 3,
53 	INTERFACE = 4,
54 	ENDPOINT = 5,
55 	HID = 0x21,
56 	REPORT = 0x22,
57 	PHYSICAL = 0x23,
58 
59 	/* feature selectors */
60 	DEVICE_REMOTE_WAKEUP = 1,
61 	ENDPOINT_STALL = 0,
62 };
63