Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Definitions for TUSB6010 USB 2.0 OTG Dual Role controller
0004  *
0005  * Copyright (C) 2006 Nokia Corporation
0006  * Tony Lindgren <tony@atomide.com>
0007  */
0008 
0009 #ifndef __TUSB6010_H__
0010 #define __TUSB6010_H__
0011 
0012 /* VLYNQ control register. 32-bit at offset 0x000 */
0013 #define TUSB_VLYNQ_CTRL         0x004
0014 
0015 /* Mentor Graphics OTG core registers. 8,- 16- and 32-bit at offset 0x400 */
0016 #define TUSB_BASE_OFFSET        0x400
0017 
0018 /* FIFO registers 32-bit at offset 0x600 */
0019 #define TUSB_FIFO_BASE          0x600
0020 
0021 /* Device System & Control registers. 32-bit at offset 0x800 */
0022 #define TUSB_SYS_REG_BASE       0x800
0023 
0024 #define TUSB_DEV_CONF           (TUSB_SYS_REG_BASE + 0x000)
0025 #define     TUSB_DEV_CONF_USB_HOST_MODE     (1 << 16)
0026 #define     TUSB_DEV_CONF_PROD_TEST_MODE        (1 << 15)
0027 #define     TUSB_DEV_CONF_SOFT_ID           (1 << 1)
0028 #define     TUSB_DEV_CONF_ID_SEL            (1 << 0)
0029 
0030 #define TUSB_PHY_OTG_CTRL_ENABLE    (TUSB_SYS_REG_BASE + 0x004)
0031 #define TUSB_PHY_OTG_CTRL       (TUSB_SYS_REG_BASE + 0x008)
0032 #define     TUSB_PHY_OTG_CTRL_WRPROTECT     (0xa5 << 24)
0033 #define     TUSB_PHY_OTG_CTRL_OTG_ID_PULLUP     (1 << 23)
0034 #define     TUSB_PHY_OTG_CTRL_OTG_VBUS_DET_EN   (1 << 19)
0035 #define     TUSB_PHY_OTG_CTRL_OTG_SESS_END_EN   (1 << 18)
0036 #define     TUSB_PHY_OTG_CTRL_TESTM2        (1 << 17)
0037 #define     TUSB_PHY_OTG_CTRL_TESTM1        (1 << 16)
0038 #define     TUSB_PHY_OTG_CTRL_TESTM0        (1 << 15)
0039 #define     TUSB_PHY_OTG_CTRL_TX_DATA2      (1 << 14)
0040 #define     TUSB_PHY_OTG_CTRL_TX_GZ2        (1 << 13)
0041 #define     TUSB_PHY_OTG_CTRL_TX_ENABLE2        (1 << 12)
0042 #define     TUSB_PHY_OTG_CTRL_DM_PULLDOWN       (1 << 11)
0043 #define     TUSB_PHY_OTG_CTRL_DP_PULLDOWN       (1 << 10)
0044 #define     TUSB_PHY_OTG_CTRL_OSC_EN        (1 << 9)
0045 #define     TUSB_PHY_OTG_CTRL_PHYREF_CLKSEL(v)  (((v) & 3) << 7)
0046 #define     TUSB_PHY_OTG_CTRL_PD            (1 << 6)
0047 #define     TUSB_PHY_OTG_CTRL_PLL_ON        (1 << 5)
0048 #define     TUSB_PHY_OTG_CTRL_EXT_RPU       (1 << 4)
0049 #define     TUSB_PHY_OTG_CTRL_PWR_GOOD      (1 << 3)
0050 #define     TUSB_PHY_OTG_CTRL_RESET         (1 << 2)
0051 #define     TUSB_PHY_OTG_CTRL_SUSPENDM      (1 << 1)
0052 #define     TUSB_PHY_OTG_CTRL_CLK_MODE      (1 << 0)
0053 
0054 /*OTG status register */
0055 #define TUSB_DEV_OTG_STAT       (TUSB_SYS_REG_BASE + 0x00c)
0056 #define     TUSB_DEV_OTG_STAT_PWR_CLK_GOOD      (1 << 8)
0057 #define     TUSB_DEV_OTG_STAT_SESS_END      (1 << 7)
0058 #define     TUSB_DEV_OTG_STAT_SESS_VALID        (1 << 6)
0059 #define     TUSB_DEV_OTG_STAT_VBUS_VALID        (1 << 5)
0060 #define     TUSB_DEV_OTG_STAT_VBUS_SENSE        (1 << 4)
0061 #define     TUSB_DEV_OTG_STAT_ID_STATUS     (1 << 3)
0062 #define     TUSB_DEV_OTG_STAT_HOST_DISCON       (1 << 2)
0063 #define     TUSB_DEV_OTG_STAT_LINE_STATE        (3 << 0)
0064 #define     TUSB_DEV_OTG_STAT_DP_ENABLE     (1 << 1)
0065 #define     TUSB_DEV_OTG_STAT_DM_ENABLE     (1 << 0)
0066 
0067 #define TUSB_DEV_OTG_TIMER      (TUSB_SYS_REG_BASE + 0x010)
0068 #   define TUSB_DEV_OTG_TIMER_ENABLE        (1 << 31)
0069 #   define TUSB_DEV_OTG_TIMER_VAL(v)        ((v) & 0x07ffffff)
0070 #define TUSB_PRCM_REV           (TUSB_SYS_REG_BASE + 0x014)
0071 
0072 /* PRCM configuration register */
0073 #define TUSB_PRCM_CONF          (TUSB_SYS_REG_BASE + 0x018)
0074 #define     TUSB_PRCM_CONF_SFW_CPEN     (1 << 24)
0075 #define     TUSB_PRCM_CONF_SYS_CLKSEL(v)    (((v) & 3) << 16)
0076 
0077 /* PRCM management register */
0078 #define TUSB_PRCM_MNGMT         (TUSB_SYS_REG_BASE + 0x01c)
0079 #define     TUSB_PRCM_MNGMT_SRP_FIX_TIMER(v)    (((v) & 0xf) << 25)
0080 #define     TUSB_PRCM_MNGMT_SRP_FIX_EN      (1 << 24)
0081 #define     TUSB_PRCM_MNGMT_VBUS_VALID_TIMER(v) (((v) & 0xf) << 20)
0082 #define     TUSB_PRCM_MNGMT_VBUS_VALID_FLT_EN   (1 << 19)
0083 #define     TUSB_PRCM_MNGMT_DFT_CLK_DIS     (1 << 18)
0084 #define     TUSB_PRCM_MNGMT_VLYNQ_CLK_DIS       (1 << 17)
0085 #define     TUSB_PRCM_MNGMT_OTG_SESS_END_EN     (1 << 10)
0086 #define     TUSB_PRCM_MNGMT_OTG_VBUS_DET_EN     (1 << 9)
0087 #define     TUSB_PRCM_MNGMT_OTG_ID_PULLUP       (1 << 8)
0088 #define     TUSB_PRCM_MNGMT_15_SW_EN        (1 << 4)
0089 #define     TUSB_PRCM_MNGMT_33_SW_EN        (1 << 3)
0090 #define     TUSB_PRCM_MNGMT_5V_CPEN         (1 << 2)
0091 #define     TUSB_PRCM_MNGMT_PM_IDLE         (1 << 1)
0092 #define     TUSB_PRCM_MNGMT_DEV_IDLE        (1 << 0)
0093 
0094 /* Wake-up source clear and mask registers */
0095 #define TUSB_PRCM_WAKEUP_SOURCE     (TUSB_SYS_REG_BASE + 0x020)
0096 #define TUSB_PRCM_WAKEUP_CLEAR      (TUSB_SYS_REG_BASE + 0x028)
0097 #define TUSB_PRCM_WAKEUP_MASK       (TUSB_SYS_REG_BASE + 0x02c)
0098 #define     TUSB_PRCM_WAKEUP_RESERVED_BITS  (0xffffe << 13)
0099 #define     TUSB_PRCM_WGPIO_7   (1 << 12)
0100 #define     TUSB_PRCM_WGPIO_6   (1 << 11)
0101 #define     TUSB_PRCM_WGPIO_5   (1 << 10)
0102 #define     TUSB_PRCM_WGPIO_4   (1 << 9)
0103 #define     TUSB_PRCM_WGPIO_3   (1 << 8)
0104 #define     TUSB_PRCM_WGPIO_2   (1 << 7)
0105 #define     TUSB_PRCM_WGPIO_1   (1 << 6)
0106 #define     TUSB_PRCM_WGPIO_0   (1 << 5)
0107 #define     TUSB_PRCM_WHOSTDISCON   (1 << 4)    /* Host disconnect */
0108 #define     TUSB_PRCM_WBUS      (1 << 3)    /* USB bus resume */
0109 #define     TUSB_PRCM_WNORCS    (1 << 2)    /* NOR chip select */
0110 #define     TUSB_PRCM_WVBUS     (1 << 1)    /* OTG PHY VBUS */
0111 #define     TUSB_PRCM_WID       (1 << 0)    /* OTG PHY ID detect */
0112 
0113 #define TUSB_PULLUP_1_CTRL      (TUSB_SYS_REG_BASE + 0x030)
0114 #define TUSB_PULLUP_2_CTRL      (TUSB_SYS_REG_BASE + 0x034)
0115 #define TUSB_INT_CTRL_REV       (TUSB_SYS_REG_BASE + 0x038)
0116 #define TUSB_INT_CTRL_CONF      (TUSB_SYS_REG_BASE + 0x03c)
0117 #define TUSB_USBIP_INT_SRC      (TUSB_SYS_REG_BASE + 0x040)
0118 #define TUSB_USBIP_INT_SET      (TUSB_SYS_REG_BASE + 0x044)
0119 #define TUSB_USBIP_INT_CLEAR        (TUSB_SYS_REG_BASE + 0x048)
0120 #define TUSB_USBIP_INT_MASK     (TUSB_SYS_REG_BASE + 0x04c)
0121 #define TUSB_DMA_INT_SRC        (TUSB_SYS_REG_BASE + 0x050)
0122 #define TUSB_DMA_INT_SET        (TUSB_SYS_REG_BASE + 0x054)
0123 #define TUSB_DMA_INT_CLEAR      (TUSB_SYS_REG_BASE + 0x058)
0124 #define TUSB_DMA_INT_MASK       (TUSB_SYS_REG_BASE + 0x05c)
0125 #define TUSB_GPIO_INT_SRC       (TUSB_SYS_REG_BASE + 0x060)
0126 #define TUSB_GPIO_INT_SET       (TUSB_SYS_REG_BASE + 0x064)
0127 #define TUSB_GPIO_INT_CLEAR     (TUSB_SYS_REG_BASE + 0x068)
0128 #define TUSB_GPIO_INT_MASK      (TUSB_SYS_REG_BASE + 0x06c)
0129 
0130 /* NOR flash interrupt source registers */
0131 #define TUSB_INT_SRC            (TUSB_SYS_REG_BASE + 0x070)
0132 #define TUSB_INT_SRC_SET        (TUSB_SYS_REG_BASE + 0x074)
0133 #define TUSB_INT_SRC_CLEAR      (TUSB_SYS_REG_BASE + 0x078)
0134 #define TUSB_INT_MASK           (TUSB_SYS_REG_BASE + 0x07c)
0135 #define     TUSB_INT_SRC_TXRX_DMA_DONE      (1 << 24)
0136 #define     TUSB_INT_SRC_USB_IP_CORE        (1 << 17)
0137 #define     TUSB_INT_SRC_OTG_TIMEOUT        (1 << 16)
0138 #define     TUSB_INT_SRC_VBUS_SENSE_CHNG        (1 << 15)
0139 #define     TUSB_INT_SRC_ID_STATUS_CHNG     (1 << 14)
0140 #define     TUSB_INT_SRC_DEV_WAKEUP         (1 << 13)
0141 #define     TUSB_INT_SRC_DEV_READY          (1 << 12)
0142 #define     TUSB_INT_SRC_USB_IP_TX          (1 << 9)
0143 #define     TUSB_INT_SRC_USB_IP_RX          (1 << 8)
0144 #define     TUSB_INT_SRC_USB_IP_VBUS_ERR        (1 << 7)
0145 #define     TUSB_INT_SRC_USB_IP_VBUS_REQ        (1 << 6)
0146 #define     TUSB_INT_SRC_USB_IP_DISCON      (1 << 5)
0147 #define     TUSB_INT_SRC_USB_IP_CONN        (1 << 4)
0148 #define     TUSB_INT_SRC_USB_IP_SOF         (1 << 3)
0149 #define     TUSB_INT_SRC_USB_IP_RST_BABBLE      (1 << 2)
0150 #define     TUSB_INT_SRC_USB_IP_RESUME      (1 << 1)
0151 #define     TUSB_INT_SRC_USB_IP_SUSPEND     (1 << 0)
0152 
0153 /* NOR flash interrupt registers reserved bits. Must be written as 0 */
0154 #define     TUSB_INT_MASK_RESERVED_17       (0x3fff << 17)
0155 #define     TUSB_INT_MASK_RESERVED_13       (1 << 13)
0156 #define     TUSB_INT_MASK_RESERVED_8        (0xf << 8)
0157 #define     TUSB_INT_SRC_RESERVED_26        (0x1f << 26)
0158 #define     TUSB_INT_SRC_RESERVED_18        (0x3f << 18)
0159 #define     TUSB_INT_SRC_RESERVED_10        (0x03 << 10)
0160 
0161 /* Reserved bits for NOR flash interrupt mask and clear register */
0162 #define     TUSB_INT_MASK_RESERVED_BITS (TUSB_INT_MASK_RESERVED_17 | \
0163                         TUSB_INT_MASK_RESERVED_13 | \
0164                         TUSB_INT_MASK_RESERVED_8)
0165 
0166 /* Reserved bits for NOR flash interrupt status register */
0167 #define     TUSB_INT_SRC_RESERVED_BITS  (TUSB_INT_SRC_RESERVED_26 | \
0168                         TUSB_INT_SRC_RESERVED_18 | \
0169                         TUSB_INT_SRC_RESERVED_10)
0170 
0171 #define TUSB_GPIO_REV           (TUSB_SYS_REG_BASE + 0x080)
0172 #define TUSB_GPIO_CONF          (TUSB_SYS_REG_BASE + 0x084)
0173 #define TUSB_DMA_CTRL_REV       (TUSB_SYS_REG_BASE + 0x100)
0174 #define TUSB_DMA_REQ_CONF       (TUSB_SYS_REG_BASE + 0x104)
0175 #define TUSB_EP0_CONF           (TUSB_SYS_REG_BASE + 0x108)
0176 #define TUSB_DMA_EP_MAP         (TUSB_SYS_REG_BASE + 0x148)
0177 
0178 /* Offsets from each ep base register */
0179 #define TUSB_EP_TX_OFFSET       0x10c   /* EP_IN in docs */
0180 #define TUSB_EP_RX_OFFSET       0x14c   /* EP_OUT in docs */
0181 #define TUSB_EP_MAX_PACKET_SIZE_OFFSET  0x188
0182 
0183 #define TUSB_WAIT_COUNT         (TUSB_SYS_REG_BASE + 0x1c8)
0184 #define TUSB_SCRATCH_PAD        (TUSB_SYS_REG_BASE + 0x1c4)
0185 #define TUSB_PROD_TEST_RESET        (TUSB_SYS_REG_BASE + 0x1d8)
0186 
0187 /* Device System & Control register bitfields */
0188 #define TUSB_INT_CTRL_CONF_INT_RELCYC(v)    (((v) & 0x7) << 18)
0189 #define TUSB_INT_CTRL_CONF_INT_POLARITY     (1 << 17)
0190 #define TUSB_INT_CTRL_CONF_INT_MODE     (1 << 16)
0191 #define TUSB_GPIO_CONF_DMAREQ(v)        (((v) & 0x3f) << 24)
0192 #define TUSB_DMA_REQ_CONF_BURST_SIZE(v)     (((v) & 3) << 26)
0193 #define TUSB_DMA_REQ_CONF_DMA_REQ_EN(v)     (((v) & 0x3f) << 20)
0194 #define TUSB_DMA_REQ_CONF_DMA_REQ_ASSER(v)  (((v) & 0xf) << 16)
0195 #define TUSB_EP0_CONFIG_SW_EN           (1 << 8)
0196 #define TUSB_EP0_CONFIG_DIR_TX          (1 << 7)
0197 #define TUSB_EP0_CONFIG_XFR_SIZE(v)     ((v) & 0x7f)
0198 #define TUSB_EP_CONFIG_SW_EN            (1 << 31)
0199 #define TUSB_EP_CONFIG_XFR_SIZE(v)      ((v) & 0x7fffffff)
0200 #define TUSB_PROD_TEST_RESET_VAL        0xa596
0201 #define TUSB_EP_FIFO(ep)            (TUSB_FIFO_BASE + (ep) * 0x20)
0202 
0203 #define TUSB_DIDR1_LO               (TUSB_SYS_REG_BASE + 0x1f8)
0204 #define TUSB_DIDR1_HI               (TUSB_SYS_REG_BASE + 0x1fc)
0205 #define     TUSB_DIDR1_HI_CHIP_REV(v)       (((v) >> 17) & 0xf)
0206 #define         TUSB_DIDR1_HI_REV_20        0
0207 #define         TUSB_DIDR1_HI_REV_30        1
0208 #define         TUSB_DIDR1_HI_REV_31        2
0209 
0210 #define TUSB_REV_10 0x10
0211 #define TUSB_REV_20 0x20
0212 #define TUSB_REV_30 0x30
0213 #define TUSB_REV_31 0x31
0214 
0215 #endif /* __TUSB6010_H__ */