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