1*10465441SEvalZero /* 2*10465441SEvalZero * File : x1000_otg_dwc.h 3*10465441SEvalZero * This file is part of RT-Thread RTOS 4*10465441SEvalZero * COPYRIGHT (C) 2008 - 2012, RT-Thread Development Team 5*10465441SEvalZero * 6*10465441SEvalZero * This program is free software; you can redistribute it and/or modify 7*10465441SEvalZero * it under the terms of the GNU General Public License as published by 8*10465441SEvalZero * the Free Software Foundation; either version 2 of the License, or 9*10465441SEvalZero * (at your option) any later version. 10*10465441SEvalZero * 11*10465441SEvalZero * This program is distributed in the hope that it will be useful, 12*10465441SEvalZero * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*10465441SEvalZero * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*10465441SEvalZero * GNU General Public License for more details. 15*10465441SEvalZero * 16*10465441SEvalZero * You should have received a copy of the GNU General Public License along 17*10465441SEvalZero * with this program; if not, write to the Free Software Foundation, Inc., 18*10465441SEvalZero * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19*10465441SEvalZero * 20*10465441SEvalZero * Change Logs: 21*10465441SEvalZero * Date Author Notes 22*10465441SEvalZero * 2017-02-03 Urey the first version 23*10465441SEvalZero */ 24*10465441SEvalZero 25*10465441SEvalZero #ifndef _X1000_OTG_DWC_H_ 26*10465441SEvalZero #define _X1000_OTG_DWC_H_ 27*10465441SEvalZero 28*10465441SEvalZero /* Globle Regs define */ 29*10465441SEvalZero #define GOTG_CTL (OTG_BASE + 0x00) 30*10465441SEvalZero #define GOTG_INTR (OTG_BASE + 0x04) 31*10465441SEvalZero #define GAHB_CFG (OTG_BASE + 0x08) 32*10465441SEvalZero #define GUSB_CFG (OTG_BASE + 0x0c) 33*10465441SEvalZero #define GRST_CTL (OTG_BASE + 0x10) 34*10465441SEvalZero #define GINT_STS (OTG_BASE + 0x14) 35*10465441SEvalZero #define GINT_MASK (OTG_BASE + 0x18) 36*10465441SEvalZero #define GRXSTS_READ (OTG_BASE + 0x1c) 37*10465441SEvalZero #define GRXSTS_POP (OTG_BASE + 0x20) 38*10465441SEvalZero #define GRXFIFO_SIZE (OTG_BASE + 0x24) 39*10465441SEvalZero #define GNPTXFIFO_SIZE (OTG_BASE + 0x28) 40*10465441SEvalZero #define GDTXFIFO_SIZE (OTG_BASE + 0x104) 41*10465441SEvalZero #define GHW_CFG1 (OTG_BASE + 0x44) 42*10465441SEvalZero #define GHW_CFG2 (OTG_BASE + 0x48) 43*10465441SEvalZero #define GHW_CFG3 (OTG_BASE + 0x4c) 44*10465441SEvalZero #define GHW_CFG4 (OTG_BASE + 0x50) 45*10465441SEvalZero #define GDFIFO_CFG (OTG_BASE + 0x5c) 46*10465441SEvalZero #define PCGC_CTL (OTG_BASE + 0xe00) 47*10465441SEvalZero 48*10465441SEvalZero /* Fifo number 1 ~ 15 */ 49*10465441SEvalZero #define GDEIP_TXF(n) (OTG_BASE + (0x104 + ((n-1) * 0x4))) 50*10465441SEvalZero 51*10465441SEvalZero #define REG_GOTG_CTL REG32(GOTG_CTL) 52*10465441SEvalZero #define REG_GOTG_INTR REG32(GOTG_INTR) 53*10465441SEvalZero #define REG_GAHB_CFG REG32(GAHB_CFG) 54*10465441SEvalZero #define REG_GUSB_CFG REG32(GUSB_CFG) 55*10465441SEvalZero #define REG_GRST_CTL REG32(GRST_CTL) 56*10465441SEvalZero #define REG_GINT_STS REG32(GINT_STS) 57*10465441SEvalZero #define REG_GINT_MASK REG32(GINT_MASK) 58*10465441SEvalZero #define REG_GRXSTS_READ REG32(GRXSTS_READ) 59*10465441SEvalZero #define REG_GRXSTS_POP REG32(GRXSTS_POP) 60*10465441SEvalZero #define REG_GRXFIFO_SIZE REG32(GRXFIFO_SIZE) 61*10465441SEvalZero #define REG_GNPTXFIFO_SIZE REG32(GNPTXFIFO_SIZE) 62*10465441SEvalZero #define REG_GDTXFIFO_SIZE REG32(GDTXFIFO_SIZE) 63*10465441SEvalZero #define REG_GHW_CFG1 REG32(GHW_CFG1) 64*10465441SEvalZero #define REG_GHW_CFG2 REG32(GHW_CFG2) 65*10465441SEvalZero #define REG_GHW_CFG3 REG32(GHW_CFG3) 66*10465441SEvalZero #define REG_GHW_CFG4 REG32(GHW_CFG4) 67*10465441SEvalZero #define REG_GDFIFO_CFG REG32(GDFIFO_CFG) 68*10465441SEvalZero #define REG_GDIEP_TXF(n) REG32(GDEIP_TXF(n)) 69*10465441SEvalZero #define REG_PCGC_CTL REG32(PCGC_CTL) 70*10465441SEvalZero /* Device Regs define */ 71*10465441SEvalZero #define EP_FIFO(n) (OTG_BASE + (n+1)*0x1000) // FiX ME 72*10465441SEvalZero #define REG_EP_FIFO(n) REG32(EP_FIFO(n)) 73*10465441SEvalZero 74*10465441SEvalZero 75*10465441SEvalZero #define OTG_DCFG (OTG_BASE + 0x800) 76*10465441SEvalZero #define OTG_DCTL (OTG_BASE + 0x804) 77*10465441SEvalZero #define OTG_DSTS (OTG_BASE + 0x808) 78*10465441SEvalZero #define DIEP_MASK (OTG_BASE + 0x810) 79*10465441SEvalZero #define DOEP_MASK (OTG_BASE + 0x814) 80*10465441SEvalZero #define OTG_DAINT (OTG_BASE + 0x818) 81*10465441SEvalZero #define DAINT_MASK (OTG_BASE + 0x81c) 82*10465441SEvalZero 83*10465441SEvalZero #define DIEP_EMPMSK (OTG_BASE + 0x834) 84*10465441SEvalZero 85*10465441SEvalZero 86*10465441SEvalZero /* It's used in OTG_MULT_PROC_INTRPT = 1 87*10465441SEvalZero #define DEACH_INT (OTG_BASE + 0x838) 88*10465441SEvalZero #define DEACH_INTMASK (OTG_BASE + 0x83c) 89*10465441SEvalZero #define DIEP0_INTMASK (OTG_BASE + 0x840) 90*10465441SEvalZero #define DIEP1_INTMASK (OTG_BASE + 0x844) 91*10465441SEvalZero #define DOEP0_INTMASK (OTG_BASE + 0x880) 92*10465441SEvalZero #define DOEP1_INTMASK (OTG_BASE + 0x884) 93*10465441SEvalZero */ 94*10465441SEvalZero 95*10465441SEvalZero #define DIEP_CTL(n) (OTG_BASE + (0x900 + (n)*0x20)) 96*10465441SEvalZero #define DOEP_CTL(n) (OTG_BASE + (0xb00 + (n)*0x20)) 97*10465441SEvalZero 98*10465441SEvalZero #define DIEP_INT(n) (OTG_BASE + (0x908 + (n)*0x20)) 99*10465441SEvalZero #define DOEP_INT(n) (OTG_BASE + (0xb08 + (n)*0x20)) 100*10465441SEvalZero 101*10465441SEvalZero #define DIEP_SIZE(n) (OTG_BASE + (0x910 + (n)*0x20)) 102*10465441SEvalZero #define DOEP_SIZE(n) (OTG_BASE + (0xb10 + (n)*0x20)) 103*10465441SEvalZero 104*10465441SEvalZero #define DIEP_TXFSTS(n) (OTG_BASE + (0x918 + (n)*0x20)) 105*10465441SEvalZero 106*10465441SEvalZero #define DIEP_DMA(n) (OTG_BASE + (0x914 + (n)*0x20)) 107*10465441SEvalZero #define DOEP_DMA(n) (OTG_BASE + (0xb14 + (n)*0x20)) 108*10465441SEvalZero 109*10465441SEvalZero #define REG_OTG_DCFG REG32(OTG_DCFG) 110*10465441SEvalZero #define REG_OTG_DCTL REG32(OTG_DCTL) 111*10465441SEvalZero #define REG_OTG_DSTS REG32(OTG_DSTS) 112*10465441SEvalZero #define REG_DIEP_MASK REG32(DIEP_MASK) 113*10465441SEvalZero #define REG_DOEP_MASK REG32(DOEP_MASK) 114*10465441SEvalZero #define REG_OTG_DAINT REG32(OTG_DAINT) 115*10465441SEvalZero #define REG_DAINT_MASK REG32(DAINT_MASK) 116*10465441SEvalZero #define REG_DIEP_EMPMSK REG32(DIEP_EMPMSK) 117*10465441SEvalZero 118*10465441SEvalZero #define REG_DIEP_CTL(n) REG32(DIEP_CTL(n)) 119*10465441SEvalZero #define REG_DOEP_CTL(n) REG32(DOEP_CTL(n)) 120*10465441SEvalZero 121*10465441SEvalZero #define REG_DIEP_INT(n) REG32(DIEP_INT(n)) 122*10465441SEvalZero #define REG_DOEP_INT(n) REG32(DOEP_INT(n)) 123*10465441SEvalZero 124*10465441SEvalZero #define REG_DIEP_SIZE(n) REG32(DIEP_SIZE(n)) 125*10465441SEvalZero #define REG_DOEP_SIZE(n) REG32(DOEP_SIZE(n)) 126*10465441SEvalZero 127*10465441SEvalZero #define REG_DIEP_TXFSTS(n) REG32(DIEP_TXFSTS(n)) 128*10465441SEvalZero 129*10465441SEvalZero #define REG_DIEP_DMA(n) REG32(DIEP_DMA(n)) 130*10465441SEvalZero #define REG_DOEP_DMA(n) REG32(DOEP_DMA(n)) 131*10465441SEvalZero 132*10465441SEvalZero /* Regs macro define */ 133*10465441SEvalZero /*************************************************/ 134*10465441SEvalZero #define AHBCFG_TXFE_LVL BIT7 135*10465441SEvalZero #define AHBCFG_DMA_ENA BIT5 136*10465441SEvalZero #define AHBCFG_GLOBLE_INTRMASK BIT0 137*10465441SEvalZero #define USBCFG_FORCE_DEVICE BIT30 138*10465441SEvalZero #define USBCFG_TRDTIME_MASK (0xf << 10) 139*10465441SEvalZero #define USBCFG_TRDTIME_9 (9 << 10) 140*10465441SEvalZero #define USBCFG_TRDTIME_6 (6 << 10) 141*10465441SEvalZero 142*10465441SEvalZero /* GRSTCTL */ 143*10465441SEvalZero #define RSTCTL_AHB_IDLE BIT31 144*10465441SEvalZero #define RSTCTL_TXFNUM_ALL (0x10 << 6) 145*10465441SEvalZero #define RSTCTL_TXFIFO_FLUSH BIT5 146*10465441SEvalZero #define RSTCTL_RXFIFO_FLUSH BIT4 147*10465441SEvalZero #define RSTCTL_INTK_FLUSH BIT3 148*10465441SEvalZero #define RSTCTL_FRMCNT_RST BIT2 149*10465441SEvalZero #define RSTCTL_CORE_RST BIT0 150*10465441SEvalZero 151*10465441SEvalZero /* GINTMSK */ 152*10465441SEvalZero #define GINTMSK_RSUME_DETE BIT31 153*10465441SEvalZero #define GINTMSK_CONID_STSCHG BIT28 154*10465441SEvalZero #define GINTMSK_RESET_DETE BIT23 155*10465441SEvalZero #define GINTMSK_FETCH_SUSPEND BIT22 156*10465441SEvalZero #define GINTMSK_OEP_INTR BIT19 157*10465441SEvalZero #define GINTMSK_IEP_INTR BIT18 158*10465441SEvalZero #define GINTMSK_EP_MISMATCH BIT17 159*10465441SEvalZero #define GINTMSK_ENUM_DONE BIT13 160*10465441SEvalZero #define GINTMSK_USB_RESET BIT12 161*10465441SEvalZero #define GINTMSK_USB_SUSPEND BIT11 162*10465441SEvalZero #define GINTMSK_USB_EARLYSUSPEND BIT10 163*10465441SEvalZero #define GINTMSK_I2C_INT BIT9 164*10465441SEvalZero #define GINTMSK_ULPK_CKINT BIT8 165*10465441SEvalZero #define GINTMSK_GOUTNAK_EFF BIT7 166*10465441SEvalZero #define GINTMSK_GINNAK_EFF BIT6 167*10465441SEvalZero #define GINTMSK_NPTXFIFO_EMPTY BIT5 168*10465441SEvalZero #define GINTMSK_RXFIFO_NEMPTY BIT4 169*10465441SEvalZero #define GINTMSK_START_FRAM BIT3 170*10465441SEvalZero #define GINTMSK_OTG_INTR BIT2 171*10465441SEvalZero #define GINTMSK_MODE_MISMATCH BIT1 172*10465441SEvalZero 173*10465441SEvalZero /* GINTSTS */ 174*10465441SEvalZero #define GINTSTS_RSUME_DETE BIT31 175*10465441SEvalZero #define GINTSTS_CONID_STSCHG BIT28 176*10465441SEvalZero #define GINTSTS_RESET_DETE BIT23 177*10465441SEvalZero #define GINTSTS_FETCH_SUSPEND BIT22 178*10465441SEvalZero #define GINTSTS_OEP_INTR BIT19 179*10465441SEvalZero #define GINTSTS_IEP_INTR BIT18 180*10465441SEvalZero #define GINTSTS_EP_MISMATCH BIT17 181*10465441SEvalZero #define GINTSTS_ENUM_DONE BIT13 182*10465441SEvalZero #define GINTSTS_USB_RESET BIT12 183*10465441SEvalZero #define GINTSTS_USB_SUSPEND BIT11 184*10465441SEvalZero #define GINTSTS_USB_EARLYSUSPEND BIT10 185*10465441SEvalZero #define GINTSTS_I2C_INT BIT9 186*10465441SEvalZero #define GINTSTS_ULPK_CKINT BIT8 187*10465441SEvalZero #define GINTSTS_GOUTNAK_EFF BIT7 188*10465441SEvalZero #define GINTSTS_GINNAK_EFF BIT6 189*10465441SEvalZero #define GINTSTS_NPTXFIFO_EMPTY BIT5 190*10465441SEvalZero #define GINTSTS_RXFIFO_NEMPTY BIT4 191*10465441SEvalZero #define GINTSTS_START_FRAM BIT3 192*10465441SEvalZero #define GINTSTS_OTG_INTR BIT2 193*10465441SEvalZero #define GINTSTS_MODE_MISMATCH BIT1 194*10465441SEvalZero 195*10465441SEvalZero /* DCTL */ 196*10465441SEvalZero #define DCTL_CGOUTNAK BIT10 197*10465441SEvalZero #define DCTL_CLR_GNPINNAK BIT8 198*10465441SEvalZero #define DCTL_SGNPINNAK BIT7 199*10465441SEvalZero #define DCTL_SOFT_DISCONN BIT1 200*10465441SEvalZero #define DCTL_SGOUTNAK BIT9 201*10465441SEvalZero /* DCFG */ 202*10465441SEvalZero #define DCFG_DEV_ADDR_MASK (0x7f << 4) 203*10465441SEvalZero #define DCFG_DEV_ADDR_BIT 4 204*10465441SEvalZero #define DCFG_DEV_DESC_DMA (1 << 23) 205*10465441SEvalZero /* DSTS */ 206*10465441SEvalZero #define DSTS_ERRATIC_ERROR BIT3 207*10465441SEvalZero #define DSTS_ENUM_SPEED_MASK (0x3 << 1) 208*10465441SEvalZero #define DSTS_ENUM_SPEED_BIT BIT1 209*10465441SEvalZero #define DSTS_ENUM_SPEED_HIGH (0x0 << 1) 210*10465441SEvalZero #define DSTS_ENUM_SPEED_FULL_30OR60 (0x1 << 1) 211*10465441SEvalZero #define DSTS_ENUM_SPEED_LOW (0x2 << 1) 212*10465441SEvalZero #define DSTS_ENUM_SPEED_FULL_48 (0x3 << 1) 213*10465441SEvalZero 214*10465441SEvalZero /* GRXSTSR/GRXSTSP */ 215*10465441SEvalZero #define GRXSTSP_PKSTS_MASK (0xf << 17) 216*10465441SEvalZero #define GRXSTSP_PKSTS_GOUT_NAK (0x1 << 17) 217*10465441SEvalZero #define GRXSTSP_PKSTS_GOUT_RECV (0x2 << 17) 218*10465441SEvalZero #define GRXSTSP_PKSTS_TX_COMP (0x3 << 17) 219*10465441SEvalZero #define GRXSTSP_PKSTS_SETUP_COMP (0x4 << 17) 220*10465441SEvalZero #define GRXSTSP_PKSTS_SETUP_RECV (0x6 << 17) 221*10465441SEvalZero #define GRXSTSP_BYTE_CNT_MASK (0x7ff << 4) 222*10465441SEvalZero #define GRXSTSP_BYTE_CNT_BIT 4 223*10465441SEvalZero #define GRXSTSP_EPNUM_MASK (0xf) 224*10465441SEvalZero #define GRXSTSP_EPNUM_BIT BIT0 225*10465441SEvalZero 226*10465441SEvalZero 227*10465441SEvalZero /* DIOEPCTL */ 228*10465441SEvalZero // ep0 229*10465441SEvalZero #define DEP_EP0_MAXPKET_SIZE 64 230*10465441SEvalZero #define DEP_EP0_MPS_64 (0x0) 231*10465441SEvalZero #define DEP_EP0_MPS_32 (0x1) 232*10465441SEvalZero #define DEP_EP0_MPS_16 (0x2) 233*10465441SEvalZero #define DEP_EP0_MPS_8 (0x3) 234*10465441SEvalZero 235*10465441SEvalZero #define DEP_ENA_BIT BIT31 236*10465441SEvalZero #define DEP_DISENA_BIT BIT30 237*10465441SEvalZero #define DEP_SET_NAK BIT27 238*10465441SEvalZero #define DEP_CLEAR_NAK BIT26 239*10465441SEvalZero #define DEP_SET_STALL BIT21 240*10465441SEvalZero #define DEP_TYPE_MASK (0x3 << 18) 241*10465441SEvalZero #define DEP_TYPE_CNTL (0x0 << 18) 242*10465441SEvalZero #define DEP_TYPE_ISO (0x1 << 18) 243*10465441SEvalZero #define DEP_TYPE_BULK (0x2 << 18) 244*10465441SEvalZero #define DEP_TYPE_INTR (0x3 << 18) 245*10465441SEvalZero #define USB_ACTIVE_EP BIT15 246*10465441SEvalZero #define DEP_PKTSIZE_MASK 0x7ff 247*10465441SEvalZero #define DEP_FS_PKTSIZE 64 248*10465441SEvalZero #define DEP_HS_PKTSIZE 512 249*10465441SEvalZero 250*10465441SEvalZero /* DIOEPINT */ 251*10465441SEvalZero #define DEP_NYET_INT BIT14 252*10465441SEvalZero #define DEP_NAK_INT BIT13 253*10465441SEvalZero #define DEP_BABBLE_ERR_INT BIT12 254*10465441SEvalZero #define DEP_PKT_DROP_STATUS BIT11 255*10465441SEvalZero #define DEP_BNA_INT BIT9 256*10465441SEvalZero #define DEP_TXFIFO_UNDRN BIT8 // Only for INEP 257*10465441SEvalZero #define DEP_OUTPKT_ERR BIT8 // Only for OUTEP 258*10465441SEvalZero #define DEP_TXFIFO_EMPTY BIT7 259*10465441SEvalZero #define DEP_INEP_NAKEFF BIT6 // Only for INEP 260*10465441SEvalZero #define DEP_B2B_SETUP_RECV BIT6 // Only for OUTEP0 261*10465441SEvalZero #define DEP_INTOKEN_EPMISATCH BIT5 // Only for INEP 262*10465441SEvalZero #define DEP_STATUS_PHASE_RECV BIT5 // Only for OUTEP0 263*10465441SEvalZero #define DEP_INTOKEN_RECV_TXFIFO_EMPTY BIT4 // Only for INEP 264*10465441SEvalZero #define DEP_OUTTOKEN_RECV_EPDIS BIT4 // Only for OUTEP 265*10465441SEvalZero #define DEP_TIME_OUT BIT3 // Only for INEP 266*10465441SEvalZero #define DEP_SETUP_PHASE_DONE BIT3 // Only for OUTEP0 267*10465441SEvalZero #define DEP_AHB_ERR BIT2 268*10465441SEvalZero #define DEP_EPDIS_INT BIT1 269*10465441SEvalZero #define DEP_XFER_COMP BIT0 // Used by INEP and OUTEP 270*10465441SEvalZero 271*10465441SEvalZero /* DOEPSIZ0 */ 272*10465441SEvalZero #define DOEPSIZE0_SUPCNT_1 (0x1 << 29) 273*10465441SEvalZero #define DOEPSIZE0_SUPCNT_2 (0x2 << 29) 274*10465441SEvalZero #define DOEPSIZE0_SUPCNT_3 (0x3 << 29) 275*10465441SEvalZero #define DOEPSIZE0_PKTCNT_BIT BIT19 276*10465441SEvalZero 277*10465441SEvalZero 278*10465441SEvalZero #define DEP_RXFIFO_SIZE 1064 279*10465441SEvalZero #define DEP_NPTXFIFO_SIZE 1024 280*10465441SEvalZero #define DEP_DTXFIFO_SIZE 768 281*10465441SEvalZero 282*10465441SEvalZero 283*10465441SEvalZero #define DWC_GAHBCFG_INT_DMA_BURST_SINGLE 0 284*10465441SEvalZero #define DWC_GAHBCFG_INT_DMA_BURST_INCR 1 285*10465441SEvalZero #define DWC_GAHBCFG_INT_DMA_BURST_INCR4 3 286*10465441SEvalZero #define DWC_GAHBCFG_INT_DMA_BURST_INCR8 5 287*10465441SEvalZero #define DWC_GAHBCFG_INT_DMA_BURST_INCR16 7 288*10465441SEvalZero 289*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_1word 0x0 290*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_4word 0x1 291*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_8word 0x2 292*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_16word 0x3 293*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_32word 0x4 294*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_64word 0x5 295*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_128word 0x6 296*10465441SEvalZero #define DWC_GAHBCFG_EXT_DMA_BURST_256word 0x7 297*10465441SEvalZero 298*10465441SEvalZero #define DEP_NUM 2 299*10465441SEvalZero 300*10465441SEvalZero #if 0 301*10465441SEvalZero #define UTMI_PHY_WIDTH 8 302*10465441SEvalZero #else 303*10465441SEvalZero #define UTMI_PHY_WIDTH 16 304*10465441SEvalZero #endif 305*10465441SEvalZero 306*10465441SEvalZero #endif /* _X1000_OTG_DWC_H_ */ 307