1 #ifndef __LINUX_ULPI_REGS_H 2 #define __LINUX_ULPI_REGS_H 3 4 /* 5 * Macros for Set and Clear 6 * See ULPI 1.1 specification to find the registers with Set and Clear offsets 7 */ 8 #define ULPI_SET(a) (a + 1) 9 #define ULPI_CLR(a) (a + 2) 10 11 /* 12 * Register Map 13 */ 14 #define ULPI_VENDOR_ID_LOW 0x00 15 #define ULPI_VENDOR_ID_HIGH 0x01 16 #define ULPI_PRODUCT_ID_LOW 0x02 17 #define ULPI_PRODUCT_ID_HIGH 0x03 18 #define ULPI_FUNC_CTRL 0x04 19 #define ULPI_IFC_CTRL 0x07 20 #define ULPI_OTG_CTRL 0x0a 21 #define ULPI_USB_INT_EN_RISE 0x0d 22 #define ULPI_USB_INT_EN_FALL 0x10 23 #define ULPI_USB_INT_STS 0x13 24 #define ULPI_USB_INT_LATCH 0x14 25 #define ULPI_DEBUG 0x15 26 #define ULPI_SCRATCH 0x16 27 /* Optional Carkit Registers */ 28 #define ULPI_CARKIT_CTRL 0x19 29 #define ULPI_CARKIT_INT_DELAY 0x1c 30 #define ULPI_CARKIT_INT_EN 0x1d 31 #define ULPI_CARKIT_INT_STS 0x20 32 #define ULPI_CARKIT_INT_LATCH 0x21 33 #define ULPI_CARKIT_PLS_CTRL 0x22 34 /* Other Optional Registers */ 35 #define ULPI_TX_POS_WIDTH 0x25 36 #define ULPI_TX_NEG_WIDTH 0x26 37 #define ULPI_POLARITY_RECOVERY 0x27 38 /* Access Extended Register Set */ 39 #define ULPI_ACCESS_EXTENDED 0x2f 40 /* Vendor Specific */ 41 #define ULPI_VENDOR_SPECIFIC 0x30 42 /* Extended Registers */ 43 #define ULPI_EXT_VENDOR_SPECIFIC 0x80 44 45 /* 46 * Register Bits 47 */ 48 49 /* Function Control */ 50 #define ULPI_FUNC_CTRL_XCVRSEL BIT(0) 51 #define ULPI_FUNC_CTRL_XCVRSEL_MASK 0x3 52 #define ULPI_FUNC_CTRL_HIGH_SPEED 0x0 53 #define ULPI_FUNC_CTRL_FULL_SPEED 0x1 54 #define ULPI_FUNC_CTRL_LOW_SPEED 0x2 55 #define ULPI_FUNC_CTRL_FS4LS 0x3 56 #define ULPI_FUNC_CTRL_TERMSELECT BIT(2) 57 #define ULPI_FUNC_CTRL_OPMODE BIT(3) 58 #define ULPI_FUNC_CTRL_OPMODE_MASK (0x3 << 3) 59 #define ULPI_FUNC_CTRL_OPMODE_NORMAL (0x0 << 3) 60 #define ULPI_FUNC_CTRL_OPMODE_NONDRIVING (0x1 << 3) 61 #define ULPI_FUNC_CTRL_OPMODE_DISABLE_NRZI (0x2 << 3) 62 #define ULPI_FUNC_CTRL_OPMODE_NOSYNC_NOEOP (0x3 << 3) 63 #define ULPI_FUNC_CTRL_RESET BIT(5) 64 #define ULPI_FUNC_CTRL_SUSPENDM BIT(6) 65 66 /* Interface Control */ 67 #define ULPI_IFC_CTRL_6_PIN_SERIAL_MODE BIT(0) 68 #define ULPI_IFC_CTRL_3_PIN_SERIAL_MODE BIT(1) 69 #define ULPI_IFC_CTRL_CARKITMODE BIT(2) 70 #define ULPI_IFC_CTRL_CLOCKSUSPENDM BIT(3) 71 #define ULPI_IFC_CTRL_AUTORESUME BIT(4) 72 #define ULPI_IFC_CTRL_EXTERNAL_VBUS BIT(5) 73 #define ULPI_IFC_CTRL_PASSTHRU BIT(6) 74 #define ULPI_IFC_CTRL_PROTECT_IFC_DISABLE BIT(7) 75 76 /* OTG Control */ 77 #define ULPI_OTG_CTRL_ID_PULLUP BIT(0) 78 #define ULPI_OTG_CTRL_DP_PULLDOWN BIT(1) 79 #define ULPI_OTG_CTRL_DM_PULLDOWN BIT(2) 80 #define ULPI_OTG_CTRL_DISCHRGVBUS BIT(3) 81 #define ULPI_OTG_CTRL_CHRGVBUS BIT(4) 82 #define ULPI_OTG_CTRL_DRVVBUS BIT(5) 83 #define ULPI_OTG_CTRL_DRVVBUS_EXT BIT(6) 84 #define ULPI_OTG_CTRL_EXTVBUSIND BIT(7) 85 86 /* USB Interrupt Enable Rising, 87 * USB Interrupt Enable Falling, 88 * USB Interrupt Status and 89 * USB Interrupt Latch 90 */ 91 #define ULPI_INT_HOST_DISCONNECT BIT(0) 92 #define ULPI_INT_VBUS_VALID BIT(1) 93 #define ULPI_INT_SESS_VALID BIT(2) 94 #define ULPI_INT_SESS_END BIT(3) 95 #define ULPI_INT_IDGRD BIT(4) 96 97 /* Debug */ 98 #define ULPI_DEBUG_LINESTATE0 BIT(0) 99 #define ULPI_DEBUG_LINESTATE1 BIT(1) 100 101 /* Carkit Control */ 102 #define ULPI_CARKIT_CTRL_CARKITPWR BIT(0) 103 #define ULPI_CARKIT_CTRL_IDGNDDRV BIT(1) 104 #define ULPI_CARKIT_CTRL_TXDEN BIT(2) 105 #define ULPI_CARKIT_CTRL_RXDEN BIT(3) 106 #define ULPI_CARKIT_CTRL_SPKLEFTEN BIT(4) 107 #define ULPI_CARKIT_CTRL_SPKRIGHTEN BIT(5) 108 #define ULPI_CARKIT_CTRL_MICEN BIT(6) 109 110 /* Carkit Interrupt Enable */ 111 #define ULPI_CARKIT_INT_EN_IDFLOAT_RISE BIT(0) 112 #define ULPI_CARKIT_INT_EN_IDFLOAT_FALL BIT(1) 113 #define ULPI_CARKIT_INT_EN_CARINTDET BIT(2) 114 #define ULPI_CARKIT_INT_EN_DP_RISE BIT(3) 115 #define ULPI_CARKIT_INT_EN_DP_FALL BIT(4) 116 117 /* Carkit Interrupt Status and 118 * Carkit Interrupt Latch 119 */ 120 #define ULPI_CARKIT_INT_IDFLOAT BIT(0) 121 #define ULPI_CARKIT_INT_CARINTDET BIT(1) 122 #define ULPI_CARKIT_INT_DP BIT(2) 123 124 /* Carkit Pulse Control*/ 125 #define ULPI_CARKIT_PLS_CTRL_TXPLSEN BIT(0) 126 #define ULPI_CARKIT_PLS_CTRL_RXPLSEN BIT(1) 127 #define ULPI_CARKIT_PLS_CTRL_SPKRLEFT_BIASEN BIT(2) 128 #define ULPI_CARKIT_PLS_CTRL_SPKRRIGHT_BIASEN BIT(3) 129 130 #endif /* __LINUX_ULPI_REGS_H */ 131