139 lines
4.6 KiB
C
139 lines
4.6 KiB
C
#ifndef _DWC2_COMPAT_H
|
|
#define _DWC2_COMPAT_H
|
|
|
|
|
|
/* OTG defines lots of enumeration states before device reset */
|
|
enum usb_otg_state {
|
|
OTG_STATE_UNDEFINED = 0,
|
|
|
|
/* single-role peripheral, and dual-role default-b */
|
|
OTG_STATE_B_IDLE,
|
|
OTG_STATE_B_SRP_INIT,
|
|
OTG_STATE_B_PERIPHERAL,
|
|
|
|
/* extra dual-role default-b states */
|
|
OTG_STATE_B_WAIT_ACON,
|
|
OTG_STATE_B_HOST,
|
|
|
|
/* dual-role default-a */
|
|
OTG_STATE_A_IDLE,
|
|
OTG_STATE_A_WAIT_VRISE,
|
|
OTG_STATE_A_WAIT_BCON,
|
|
OTG_STATE_A_HOST,
|
|
OTG_STATE_A_SUSPEND,
|
|
OTG_STATE_A_PERIPHERAL,
|
|
OTG_STATE_A_WAIT_VFALL,
|
|
OTG_STATE_A_VBUS_ERR,
|
|
};
|
|
|
|
|
|
enum usb_dr_mode {
|
|
USB_DR_MODE_UNKNOWN,
|
|
USB_DR_MODE_HOST,
|
|
USB_DR_MODE_PERIPHERAL,
|
|
USB_DR_MODE_OTG,
|
|
};
|
|
|
|
#define URB_DIR_IN 0x0200 /* Transfer from device to host */
|
|
#define URB_DIR_OUT 0
|
|
#define URB_DIR_MASK URB_DIR_IN
|
|
|
|
#define URB_DMA_MAP_SINGLE 0x00010000 /* Non-scatter-gather mapping */
|
|
#define URB_DMA_MAP_PAGE 0x00020000 /* HCD-unsupported S-G */
|
|
#define URB_DMA_MAP_SG 0x00040000 /* HCD-supported S-G */
|
|
#define URB_MAP_LOCAL 0x00080000 /* HCD-local-memory mapping */
|
|
#define URB_SETUP_MAP_SINGLE 0x00100000 /* Setup packet DMA mapped */
|
|
#define URB_SETUP_MAP_LOCAL 0x00200000 /* HCD-local setup packet */
|
|
#define URB_DMA_SG_COMBINED 0x00400000 /* S-G entries were combined */
|
|
#define URB_ALIGNED_TEMP_BUFFER 0x00800000 /* Temp buffer was alloc'd */
|
|
|
|
|
|
#define USB_RESUME_TIMEOUT 40 /* ms */
|
|
|
|
|
|
|
|
/* class requests from the USB 2.0 hub spec, table 11-15 */
|
|
#define HUB_CLASS_REQ(dir, type, request) ((((dir) | (type)) << 8) | (request))
|
|
/* GetBusState and SetHubDescriptor are optional, omitted */
|
|
#define ClearHubFeature HUB_CLASS_REQ(USB_DIR_OUT, USB_RT_HUB, USB_REQ_CLEAR_FEATURE)
|
|
#define ClearPortFeature HUB_CLASS_REQ(USB_DIR_OUT, USB_RT_PORT, USB_REQ_CLEAR_FEATURE)
|
|
#define GetHubDescriptor HUB_CLASS_REQ(USB_DIR_IN, USB_RT_HUB, USB_REQ_GET_DESCRIPTOR)
|
|
#define GetHubStatus HUB_CLASS_REQ(USB_DIR_IN, USB_RT_HUB, USB_REQ_GET_STATUS)
|
|
#define GetPortStatus HUB_CLASS_REQ(USB_DIR_IN, USB_RT_PORT, USB_REQ_GET_STATUS)
|
|
#define SetHubFeature HUB_CLASS_REQ(USB_DIR_OUT, USB_RT_HUB, USB_REQ_SET_FEATURE)
|
|
#define SetPortFeature HUB_CLASS_REQ(USB_DIR_OUT, USB_RT_PORT, USB_REQ_SET_FEATURE)
|
|
|
|
|
|
/*
|
|
* Port feature numbers
|
|
* See USB 2.0 spec Table 11-17
|
|
*/
|
|
#define USB_PORT_FEAT_CONNECTION 0
|
|
#define USB_PORT_FEAT_ENABLE 1
|
|
#define USB_PORT_FEAT_SUSPEND 2 /* L2 suspend */
|
|
#define USB_PORT_FEAT_OVER_CURRENT 3
|
|
#define USB_PORT_FEAT_RESET 4
|
|
#define USB_PORT_FEAT_L1 5 /* L1 suspend */
|
|
#define USB_PORT_FEAT_POWER 8
|
|
#define USB_PORT_FEAT_LOWSPEED 9 /* Should never be used */
|
|
#define USB_PORT_FEAT_C_CONNECTION 16
|
|
#define USB_PORT_FEAT_C_ENABLE 17
|
|
#define USB_PORT_FEAT_C_SUSPEND 18
|
|
#define USB_PORT_FEAT_C_OVER_CURRENT 19
|
|
#define USB_PORT_FEAT_C_RESET 20
|
|
#define USB_PORT_FEAT_TEST 21
|
|
#define USB_PORT_FEAT_INDICATOR 22
|
|
#define USB_PORT_FEAT_C_PORT_L1 23
|
|
|
|
/*
|
|
* wPortChange bit field
|
|
* See USB 2.0 spec Table 11-22 and USB 2.0 LPM ECN Table-4.10
|
|
* Bits 0 to 5 shown, bits 6 to 15 are reserved
|
|
*/
|
|
#define USB_PORT_STAT_C_CONNECTION 0x0001
|
|
#define USB_PORT_STAT_C_ENABLE 0x0002
|
|
#define USB_PORT_STAT_C_SUSPEND 0x0004
|
|
#define USB_PORT_STAT_C_OVERCURRENT 0x0008
|
|
#define USB_PORT_STAT_C_RESET 0x0010
|
|
#define USB_PORT_STAT_C_L1 0x0020
|
|
|
|
/*
|
|
* wPortStatus bit field
|
|
* See USB 2.0 spec Table 11-21
|
|
*/
|
|
#define USB_PORT_STAT_CONNECTION 0x0001
|
|
#define USB_PORT_STAT_ENABLE 0x0002
|
|
#define USB_PORT_STAT_SUSPEND 0x0004
|
|
#define USB_PORT_STAT_OVERCURRENT 0x0008
|
|
#define USB_PORT_STAT_RESET 0x0010
|
|
#define USB_PORT_STAT_L1 0x0020
|
|
/* bits 6 to 7 are reserved */
|
|
#define USB_PORT_STAT_POWER 0x0100
|
|
#define USB_PORT_STAT_LOW_SPEED 0x0200
|
|
#define USB_PORT_STAT_HIGH_SPEED 0x0400
|
|
#define USB_PORT_STAT_TEST 0x0800
|
|
#define USB_PORT_STAT_INDICATOR 0x1000
|
|
/* bits 13 to 15 are reserved */
|
|
|
|
/*
|
|
* wHubCharacteristics (masks)
|
|
* See USB 2.0 spec Table 11-13, offset 3
|
|
*/
|
|
#define HUB_CHAR_LPSM 0x0003 /* Logical Power Switching Mode mask */
|
|
#define HUB_CHAR_COMMON_LPSM 0x0000 /* All ports power control at once */
|
|
#define HUB_CHAR_INDV_PORT_LPSM 0x0001 /* per-port power control */
|
|
#define HUB_CHAR_NO_LPSM 0x0002 /* no power switching */
|
|
|
|
#define HUB_CHAR_COMPOUND 0x0004 /* hub is part of a compound device */
|
|
|
|
#define HUB_CHAR_OCPM 0x0018 /* Over-Current Protection Mode mask */
|
|
#define HUB_CHAR_COMMON_OCPM 0x0000 /* All ports Over-Current reporting */
|
|
#define HUB_CHAR_INDV_PORT_OCPM 0x0008 /* per-port Over-current reporting */
|
|
#define HUB_CHAR_NO_OCPM 0x0010 /* No Over-current Protection support */
|
|
|
|
#define HUB_CHAR_TTTT 0x0060 /* TT Think Time mask */
|
|
#define HUB_CHAR_PORTIND 0x0080 /* per-port indicators (LEDs) */
|
|
|
|
|
|
#endif
|