Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __LINUX_ULPI_REGS_H
0003 #define __LINUX_ULPI_REGS_H
0004 
0005 /*
0006  * Macros for Set and Clear
0007  * See ULPI 1.1 specification to find the registers with Set and Clear offsets
0008  */
0009 #define ULPI_SET(a)             (a + 1)
0010 #define ULPI_CLR(a)             (a + 2)
0011 
0012 /*
0013  * Register Map
0014  */
0015 #define ULPI_VENDOR_ID_LOW          0x00
0016 #define ULPI_VENDOR_ID_HIGH         0x01
0017 #define ULPI_PRODUCT_ID_LOW         0x02
0018 #define ULPI_PRODUCT_ID_HIGH            0x03
0019 #define ULPI_FUNC_CTRL              0x04
0020 #define ULPI_IFC_CTRL               0x07
0021 #define ULPI_OTG_CTRL               0x0a
0022 #define ULPI_USB_INT_EN_RISE            0x0d
0023 #define ULPI_USB_INT_EN_FALL            0x10
0024 #define ULPI_USB_INT_STS            0x13
0025 #define ULPI_USB_INT_LATCH          0x14
0026 #define ULPI_DEBUG              0x15
0027 #define ULPI_SCRATCH                0x16
0028 /* Optional Carkit Registers */
0029 #define ULPI_CARKIT_CTRL            0x19
0030 #define ULPI_CARKIT_INT_DELAY           0x1c
0031 #define ULPI_CARKIT_INT_EN          0x1d
0032 #define ULPI_CARKIT_INT_STS         0x20
0033 #define ULPI_CARKIT_INT_LATCH           0x21
0034 #define ULPI_CARKIT_PLS_CTRL            0x22
0035 /* Other Optional Registers */
0036 #define ULPI_TX_POS_WIDTH           0x25
0037 #define ULPI_TX_NEG_WIDTH           0x26
0038 #define ULPI_POLARITY_RECOVERY          0x27
0039 /* Access Extended Register Set */
0040 #define ULPI_ACCESS_EXTENDED            0x2f
0041 /* Vendor Specific */
0042 #define ULPI_VENDOR_SPECIFIC            0x30
0043 /* Extended Registers */
0044 #define ULPI_EXT_VENDOR_SPECIFIC        0x80
0045 
0046 /*
0047  * Register Bits
0048  */
0049 
0050 /* Function Control */
0051 #define ULPI_FUNC_CTRL_XCVRSEL          BIT(0)
0052 #define  ULPI_FUNC_CTRL_XCVRSEL_MASK        0x3
0053 #define  ULPI_FUNC_CTRL_HIGH_SPEED      0x0
0054 #define  ULPI_FUNC_CTRL_FULL_SPEED      0x1
0055 #define  ULPI_FUNC_CTRL_LOW_SPEED       0x2
0056 #define  ULPI_FUNC_CTRL_FS4LS           0x3
0057 #define ULPI_FUNC_CTRL_TERMSELECT       BIT(2)
0058 #define ULPI_FUNC_CTRL_OPMODE           BIT(3)
0059 #define  ULPI_FUNC_CTRL_OPMODE_MASK     (0x3 << 3)
0060 #define  ULPI_FUNC_CTRL_OPMODE_NORMAL       (0x0 << 3)
0061 #define  ULPI_FUNC_CTRL_OPMODE_NONDRIVING   (0x1 << 3)
0062 #define  ULPI_FUNC_CTRL_OPMODE_DISABLE_NRZI (0x2 << 3)
0063 #define  ULPI_FUNC_CTRL_OPMODE_NOSYNC_NOEOP (0x3 << 3)
0064 #define ULPI_FUNC_CTRL_RESET            BIT(5)
0065 #define ULPI_FUNC_CTRL_SUSPENDM         BIT(6)
0066 
0067 /* Interface Control */
0068 #define ULPI_IFC_CTRL_6_PIN_SERIAL_MODE     BIT(0)
0069 #define ULPI_IFC_CTRL_3_PIN_SERIAL_MODE     BIT(1)
0070 #define ULPI_IFC_CTRL_CARKITMODE        BIT(2)
0071 #define ULPI_IFC_CTRL_CLOCKSUSPENDM     BIT(3)
0072 #define ULPI_IFC_CTRL_AUTORESUME        BIT(4)
0073 #define ULPI_IFC_CTRL_EXTERNAL_VBUS     BIT(5)
0074 #define ULPI_IFC_CTRL_PASSTHRU          BIT(6)
0075 #define ULPI_IFC_CTRL_PROTECT_IFC_DISABLE   BIT(7)
0076 
0077 /* OTG Control */
0078 #define ULPI_OTG_CTRL_ID_PULLUP         BIT(0)
0079 #define ULPI_OTG_CTRL_DP_PULLDOWN       BIT(1)
0080 #define ULPI_OTG_CTRL_DM_PULLDOWN       BIT(2)
0081 #define ULPI_OTG_CTRL_DISCHRGVBUS       BIT(3)
0082 #define ULPI_OTG_CTRL_CHRGVBUS          BIT(4)
0083 #define ULPI_OTG_CTRL_DRVVBUS           BIT(5)
0084 #define ULPI_OTG_CTRL_DRVVBUS_EXT       BIT(6)
0085 #define ULPI_OTG_CTRL_EXTVBUSIND        BIT(7)
0086 
0087 /* USB Interrupt Enable Rising,
0088  * USB Interrupt Enable Falling,
0089  * USB Interrupt Status and
0090  * USB Interrupt Latch
0091  */
0092 #define ULPI_INT_HOST_DISCONNECT        BIT(0)
0093 #define ULPI_INT_VBUS_VALID         BIT(1)
0094 #define ULPI_INT_SESS_VALID         BIT(2)
0095 #define ULPI_INT_SESS_END           BIT(3)
0096 #define ULPI_INT_IDGRD              BIT(4)
0097 
0098 /* Debug */
0099 #define ULPI_DEBUG_LINESTATE0           BIT(0)
0100 #define ULPI_DEBUG_LINESTATE1           BIT(1)
0101 
0102 /* Carkit Control */
0103 #define ULPI_CARKIT_CTRL_CARKITPWR      BIT(0)
0104 #define ULPI_CARKIT_CTRL_IDGNDDRV       BIT(1)
0105 #define ULPI_CARKIT_CTRL_TXDEN          BIT(2)
0106 #define ULPI_CARKIT_CTRL_RXDEN          BIT(3)
0107 #define ULPI_CARKIT_CTRL_SPKLEFTEN      BIT(4)
0108 #define ULPI_CARKIT_CTRL_SPKRIGHTEN     BIT(5)
0109 #define ULPI_CARKIT_CTRL_MICEN          BIT(6)
0110 
0111 /* Carkit Interrupt Enable */
0112 #define ULPI_CARKIT_INT_EN_IDFLOAT_RISE     BIT(0)
0113 #define ULPI_CARKIT_INT_EN_IDFLOAT_FALL     BIT(1)
0114 #define ULPI_CARKIT_INT_EN_CARINTDET        BIT(2)
0115 #define ULPI_CARKIT_INT_EN_DP_RISE      BIT(3)
0116 #define ULPI_CARKIT_INT_EN_DP_FALL      BIT(4)
0117 
0118 /* Carkit Interrupt Status and
0119  * Carkit Interrupt Latch
0120  */
0121 #define ULPI_CARKIT_INT_IDFLOAT         BIT(0)
0122 #define ULPI_CARKIT_INT_CARINTDET       BIT(1)
0123 #define ULPI_CARKIT_INT_DP          BIT(2)
0124 
0125 /* Carkit Pulse Control*/
0126 #define ULPI_CARKIT_PLS_CTRL_TXPLSEN        BIT(0)
0127 #define ULPI_CARKIT_PLS_CTRL_RXPLSEN        BIT(1)
0128 #define ULPI_CARKIT_PLS_CTRL_SPKRLEFT_BIASEN    BIT(2)
0129 #define ULPI_CARKIT_PLS_CTRL_SPKRRIGHT_BIASEN   BIT(3)
0130 
0131 #endif /* __LINUX_ULPI_REGS_H */