|
@@ -0,0 +1,365 @@
|
|
|
+/*
|
|
|
+ * hw_dwc_otg.h
|
|
|
+ *
|
|
|
+ * USB register definitions for DWC-OTG USB 2.0 controller.
|
|
|
+ *
|
|
|
+ * Written & released by Keir Fraser <keir.xen@gmail.com>
|
|
|
+ *
|
|
|
+ * This is free and unencumbered software released into the public domain.
|
|
|
+ * See the file COPYING for more details, or visit <http://unlicense.org>.
|
|
|
+ */
|
|
|
+
|
|
|
+#define PORT_FS 0
|
|
|
+#define PORT_HS 1
|
|
|
+
|
|
|
+#define IFACE_FS 0
|
|
|
+#define IFACE_HS_EMBEDDED 1
|
|
|
+#define IFACE_HS_ULPI 2
|
|
|
+
|
|
|
+#define conf_port PORT_HS
|
|
|
+#define conf_iface IFACE_FS
|
|
|
+#define conf_nr_ep 4
|
|
|
+
|
|
|
+/* USB On-The-Go Full Speed interface */
|
|
|
+struct otg {
|
|
|
+ /* GLOBAL */
|
|
|
+ uint32_t gotgctl; /* 00: Control and status */
|
|
|
+ uint32_t gotgint; /* 04: Interrupt */
|
|
|
+ uint32_t gahbcfg; /* 08: AHB configuration */
|
|
|
+ uint32_t gusbcfg; /* 0C: USB configuration */
|
|
|
+ uint32_t grstctl; /* 10: Reset */
|
|
|
+ uint32_t gintsts; /* 14: Core interrupt */
|
|
|
+ uint32_t gintmsk; /* 18: Interrupt mask */
|
|
|
+ uint32_t grxstsr; /* 1C: Receive status debug read */
|
|
|
+ uint32_t grxstsp; /* 20: Receive status read & pop */
|
|
|
+ uint32_t grxfsiz; /* 24: Receive FIFO size */
|
|
|
+ union {
|
|
|
+ uint32_t hnptxfsiz; /* 28: Host non-periodic transmit FIFO size */
|
|
|
+ uint32_t dieptxf0; /* 28: Endpoint 0 transmit FIFO size */
|
|
|
+ };
|
|
|
+ uint32_t hnptxsts; /* 2C: Non-periodic transmit FIFO/queue status */
|
|
|
+ uint32_t _0[2];
|
|
|
+ uint32_t gccfg; /* 38: General core configuration */
|
|
|
+ uint32_t cid; /* 3C: Core ID */
|
|
|
+ uint32_t _1[48];
|
|
|
+ uint32_t hptxfsiz; /* 100: Host periodic transmit FIFO size */
|
|
|
+ uint32_t dieptxf[15]; /* 104: Device IN endpoint transmit FIFO sizes */
|
|
|
+};
|
|
|
+
|
|
|
+struct otgh {
|
|
|
+ /* HOST */
|
|
|
+ uint32_t hcfg; /* 400: Host configuration */
|
|
|
+ uint32_t hfir; /* 404: Host frame interval */
|
|
|
+ uint32_t hfnum; /* 408: Host frame number / frame time remaining */
|
|
|
+ uint32_t _3[1]; /* 40C: */
|
|
|
+ uint32_t hptxsts; /* 410: Host periodic transmit FIFO / queue status */
|
|
|
+ uint32_t haint; /* 414: Host all channels interrupt status */
|
|
|
+ uint32_t haintmsk; /* 418: Host all channels interrupt mask */
|
|
|
+ uint32_t _4[9];
|
|
|
+ uint32_t hprt; /* 440: Host port control and status */
|
|
|
+ uint32_t _5[47];
|
|
|
+ struct {
|
|
|
+ uint32_t charac; /* +00: Host channel-x characteristics */
|
|
|
+ uint32_t _0[1];
|
|
|
+ uint32_t intsts; /* +08: Host channel-x interrupt status */
|
|
|
+ uint32_t intmsk; /* +0C: Host channel-x interrupt mask */
|
|
|
+ uint32_t tsiz; /* +10: Host channel x transfer size */
|
|
|
+ uint32_t _1[3];
|
|
|
+ } hc[8]; /* 500..5E0: */
|
|
|
+};
|
|
|
+
|
|
|
+struct otgd {
|
|
|
+ /* DEVICE */
|
|
|
+ uint32_t dcfg; /* 800: Device configuration */
|
|
|
+ uint32_t dctl; /* 804: Device control */
|
|
|
+ uint32_t dsts; /* 808: Device status */
|
|
|
+ uint32_t _7[1];
|
|
|
+ uint32_t diepmsk; /* 810: Device IN endpoint common interrupt mask */
|
|
|
+ uint32_t doepmsk; /* 814: Device OUT endpoint common interrupt mask */
|
|
|
+ uint32_t daint; /* 818: Device all endpoints interrupt status */
|
|
|
+ uint32_t daintmsk; /* 81C: Device all endpoints interrupt mask */
|
|
|
+ uint32_t _8[2];
|
|
|
+ uint32_t dvbusdis; /* 828: Device VBUS discharge time */
|
|
|
+ uint32_t dvbuspulse; /* 82C: Device VBUS pulsing time */
|
|
|
+ uint32_t _9[1];
|
|
|
+ uint32_t diepempmsk; /* 834: Device IN endpoint FIFO empty int. mask */
|
|
|
+};
|
|
|
+
|
|
|
+struct otg_diep { /* 900.. */
|
|
|
+ /* DEVICE IN */
|
|
|
+ uint32_t ctl; /* +00: Device IN endpoint-x control */
|
|
|
+ uint32_t _0[1];
|
|
|
+ uint32_t intsts; /* +08: Device IN endpoint-x interrupt status */
|
|
|
+ uint32_t _1[1];
|
|
|
+ uint32_t tsiz; /* +10: Device IN endpoint-x transfer size */
|
|
|
+ uint32_t dma; /* +14: Device IN endpoint-x DMA address */
|
|
|
+ uint32_t txfsts; /* +18: Device IN endpoint-x transmit FIFO status */
|
|
|
+ uint32_t _3[1];
|
|
|
+};
|
|
|
+
|
|
|
+struct otg_doep { /* B00.. */
|
|
|
+ /* DEVICE OUT */
|
|
|
+ uint32_t ctl; /* +00: Device OUT endpoint-x control */
|
|
|
+ uint32_t _0[1];
|
|
|
+ uint32_t intsts; /* +08: Device OUT endpoint-x interrupt status */
|
|
|
+ uint32_t _1[1];
|
|
|
+ uint32_t tsiz; /* +10: Device OUT endpoint-x transmit FIFO status */
|
|
|
+ uint32_t dma; /* +14: Device OUT endpoint-x DMA address */
|
|
|
+ uint32_t _2[2];
|
|
|
+};
|
|
|
+
|
|
|
+struct otg_pcgcctl {
|
|
|
+ uint32_t pcgcctl; /* E00: Power and clock gating control */
|
|
|
+};
|
|
|
+
|
|
|
+struct otg_dfifo { /* 1000.. */
|
|
|
+ uint32_t x[0x1000/4];
|
|
|
+};
|
|
|
+
|
|
|
+#define OTG_GOTGCTL_CURMOD (1u<<21)
|
|
|
+#define OTG_GOTGCTL_OTGVER (1u<<20)
|
|
|
+#define OTG_GOTGCTL_BSVLD (1u<<19)
|
|
|
+#define OTG_GOTGCTL_ASVLD (1u<<18)
|
|
|
+#define OTG_GOTGCTL_DBCT (1u<<17)
|
|
|
+#define OTG_GOTGCTL_CIDSTS (1u<<16)
|
|
|
+#define OTG_GOTGCTL_EHEN (1u<<12)
|
|
|
+#define OTG_GOTGCTL_DHNPEN (1u<<11)
|
|
|
+#define OTG_GOTGCTL_HSHNPEN (1u<<10)
|
|
|
+#define OTG_GOTGCTL_HNPRQ (1u<< 9)
|
|
|
+#define OTG_GOTGCTL_HNGSCS (1u<< 8)
|
|
|
+#define OTG_GOTGCTL_BVALOVAL (1u<< 7)
|
|
|
+#define OTG_GOTGCTL_BVALOEN (1u<< 6)
|
|
|
+#define OTG_GOTGCTL_AVALOVAL (1u<< 5)
|
|
|
+#define OTG_GOTGCTL_AVALOEN (1u<< 4)
|
|
|
+#define OTG_GOTGCTL_VBVALOVAL (1u<< 3)
|
|
|
+#define OTG_GOTGCTL_VBVALOEN (1u<< 2)
|
|
|
+#define OTG_GOTGCTL_SRQ (1u<< 1)
|
|
|
+#define OTG_GOTGCTL_SRQSCS (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_GAHBCFG_PTXFELVL (1u<< 8)
|
|
|
+#define OTG_GAHBCFG_TXFELVL (1u<< 7)
|
|
|
+#define OTG_GAHBCFG_GINTMSK (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_GUSBCFG_CTXPKT (1u<<31)
|
|
|
+#define OTG_GUSBCFG_FDMOD (1u<<30)
|
|
|
+#define OTG_GUSBCFG_FHMOD (1u<<29)
|
|
|
+#define OTG_GUSBCFG_TRDT(x) ((x)<<10)
|
|
|
+#define OTG_GUSBCFG_HNPCAP (1u<< 9)
|
|
|
+#define OTG_GUSBCFG_SRPCAP (1u<< 8)
|
|
|
+#define OTG_GUSBCFG_PHYSEL (1u<< 6)
|
|
|
+#define OTG_GUSBCFG_TOCAL(x) ((x)<< 0)
|
|
|
+
|
|
|
+#define OTG_GRSTCTL_AHBIDL (1u<<31)
|
|
|
+#define OTG_GRSTCTL_DMAREQ (1u<<30)
|
|
|
+#define OTG_GRSTCTL_TXFNUM(x) ((x)<<6)
|
|
|
+#define OTG_GRSTCTL_TXFFLSH (1u<< 5)
|
|
|
+#define OTG_GRSTCTL_RXFFLSH (1u<< 4)
|
|
|
+#define OTG_GRSTCTL_PSRST (1u<< 1)
|
|
|
+#define OTG_GRSTCTL_CSRST (1u<< 0)
|
|
|
+
|
|
|
+/* GINTSTS and GINTMSK */
|
|
|
+#define OTG_GINT_WKUPINT (1u<<31) /* Host + Device */
|
|
|
+#define OTG_GINT_SRQINT (1u<<30) /* H + D */
|
|
|
+#define OTG_GINT_DISCINT (1u<<29) /* H */
|
|
|
+#define OTG_GINT_CIDSCHG (1u<<28) /* H + D */
|
|
|
+#define OTG_GINT_PTXFE (1u<<26) /* H */
|
|
|
+#define OTG_GINT_HCINT (1u<<25) /* H */
|
|
|
+#define OTG_GINT_HPRTINT (1u<<24) /* H */
|
|
|
+#define OTG_GINT_IPXFR (1u<<21) /* H */
|
|
|
+#define OTG_GINT_IISOIXFR (1u<<20) /* D */
|
|
|
+#define OTG_GINT_OEPINT (1u<<19) /* D */
|
|
|
+#define OTG_GINT_IEPINT (1u<<18) /* D */
|
|
|
+#define OTG_GINT_EOPF (1u<<15) /* D */
|
|
|
+#define OTG_GINT_ISOODRP (1u<<14) /* D */
|
|
|
+#define OTG_GINT_ENUMDNE (1u<<13) /* D */
|
|
|
+#define OTG_GINT_USBRST (1u<<12) /* D */
|
|
|
+#define OTG_GINT_USBSUSP (1u<<11) /* D */
|
|
|
+#define OTG_GINT_ESUSP (1u<<10) /* D */
|
|
|
+#define OTG_GINT_GONAKEFF (1u<< 7) /* D */
|
|
|
+#define OTG_GINT_GINAKEFF (1u<< 6) /* D */
|
|
|
+#define OTG_GINT_NPTXFE (1u<< 5) /* H */
|
|
|
+#define OTG_GINT_RXFLVL (1u<< 4) /* H + D */
|
|
|
+#define OTG_GINT_SOF (1u<< 3) /* H + D */
|
|
|
+#define OTG_GINT_OTGINT (1u<< 2) /* H + D */
|
|
|
+#define OTG_GINT_MMIS (1u<< 1) /* H + D */
|
|
|
+#define OTG_GINT_CMOD (1u<< 0) /* H + D */
|
|
|
+
|
|
|
+#define STS_GOUT_NAK 1U
|
|
|
+#define STS_DATA_UPDT 2U
|
|
|
+#define STS_XFER_COMP 3U
|
|
|
+#define STS_SETUP_COMP 4U
|
|
|
+#define STS_SETUP_UPDT 6U
|
|
|
+#define OTG_RXSTS_PKTSTS(r) (((r)>>17)&0xf)
|
|
|
+#define OTG_RXSTS_BCNT(r) (((r)>>4)&0x7ff)
|
|
|
+#define OTG_RXSTS_CHNUM(r) ((r)&0xf)
|
|
|
+
|
|
|
+#define OTG_GCCFG_VBDEN (1u<<21)
|
|
|
+#define OTG_GCCFG_PWRDWN (1u<<16)
|
|
|
+
|
|
|
+#define OTG_HCFG_FSLSS (1u<<2)
|
|
|
+#define OTG_HCFG_FSLSPCS (3u<<0)
|
|
|
+#define OTG_HCFG_FSLSPCS_48 (1u<<0)
|
|
|
+#define OTG_HCFG_FSLSPCS_6 (2u<<0)
|
|
|
+
|
|
|
+#define OTG_HPRT_PSPD_FULL (1u<<17)
|
|
|
+#define OTG_HPRT_PSPD_LOW (2u<<17)
|
|
|
+#define OTG_HPRT_PSPD_MASK (1u<<17) /* read-only */
|
|
|
+#define OTG_HPRT_PPWR (1u<<12)
|
|
|
+#define OTG_HPRT_PRST (1u<< 8)
|
|
|
+#define OTG_HPRT_PSUSP (1u<< 7)
|
|
|
+#define OTG_HPRT_PRES (1u<< 6)
|
|
|
+#define OTG_HPRT_POCCHNG (1u<< 5) /* raises HPRTINT */
|
|
|
+#define OTG_HPRT_POCA (1u<< 4)
|
|
|
+#define OTG_HPRT_PENCHNG (1u<< 3) /* raises HPRTINT */
|
|
|
+#define OTG_HPRT_PENA (1u<< 2)
|
|
|
+#define OTG_HPRT_PCDET (1u<< 1) /* raises HPRTINT */
|
|
|
+#define OTG_HPRT_PCSTS (1u<< 0)
|
|
|
+#define OTG_HPRT_INTS (OTG_HPRT_POCCHNG|OTG_HPRT_PENCHNG|OTG_HPRT_PCDET| \
|
|
|
+ OTG_HPRT_PENA) /* PENA is also set-to-clear */
|
|
|
+
|
|
|
+/* HCINTSTS and HCINTMSK */
|
|
|
+#define OTG_HCINT_DTERR (1u<<10)
|
|
|
+#define OTG_HCINT_FRMOR (1u<< 9)
|
|
|
+#define OTG_HCINT_BBERR (1u<< 8)
|
|
|
+#define OTG_HCINT_TXERR (1u<< 7)
|
|
|
+#define OTG_HCINT_NYET (1u<< 6) /* high-speed only; not STM32F10x */
|
|
|
+#define OTG_HCINT_ACK (1u<< 5)
|
|
|
+#define OTG_HCINT_NAK (1u<< 4)
|
|
|
+#define OTG_HCINT_STALL (1u<< 3)
|
|
|
+#define OTG_HCINT_CHH (1u<< 1)
|
|
|
+#define OTG_HCINT_XFRC (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_HCCHAR_CHENA (1u<<31)
|
|
|
+#define OTG_HCCHAR_CHDIS (1u<<30)
|
|
|
+#define OTG_HCCHAR_ODDFRM (1u<<29)
|
|
|
+#define OTG_HCCHAR_DAD(x) ((x)<<22)
|
|
|
+#define OTG_HCCHAR_MCNT(x) ((x)<<20)
|
|
|
+#define OTG_HCCHAR_ETYP_CTRL (0u<<18)
|
|
|
+#define OTG_HCCHAR_ETYP_ISO (1u<<18)
|
|
|
+#define OTG_HCCHAR_ETYP_BULK (2u<<18)
|
|
|
+#define OTG_HCCHAR_ETYP_INT (3u<<18)
|
|
|
+#define OTG_HCCHAR_LSDEV (1u<<17)
|
|
|
+#define OTG_HCCHAR_EPDIR_OUT (0u<<15)
|
|
|
+#define OTG_HCCHAR_EPDIR_IN (1u<<15)
|
|
|
+#define OTG_HCCHAR_EPNUM(x) ((x)<<11)
|
|
|
+#define OTG_HCCHAR_MPSIZ(x) ((x)<< 0)
|
|
|
+
|
|
|
+#define OTG_HCTSIZ_DPID_DATA0 (0u<<29)
|
|
|
+#define OTG_HCTSIZ_DPID_DATA2 (1u<<29)
|
|
|
+#define OTG_HCTSIZ_DPID_DATA1 (2u<<29)
|
|
|
+#define OTG_HCTSIZ_DPID_MDATA (3u<<29)
|
|
|
+#define OTG_HCTSIZ_DPID_SETUP (3u<<29)
|
|
|
+#define OTG_HCTSIZ_PKTCNT(x) ((x)<<19)
|
|
|
+#define OTG_HCTSIZ_XFRSIZ(x) ((x)<< 0)
|
|
|
+
|
|
|
+#define OTG_DCFG_PERSCHIVL(x) ((x)<<24)
|
|
|
+#define OTG_DCFG_ERRATIM (1u<<15)
|
|
|
+#define OTG_DCFG_XCVRDLY (1u<<14)
|
|
|
+#define OTG_DCFG_PFIVL(x) ((x)<<11)
|
|
|
+#define OTG_DCFG_DAD(x) ((x)<<4)
|
|
|
+#define OTG_DCFG_NZLSOHSK (1u<< 2)
|
|
|
+#define OTG_DCFG_DSPD(x) ((x)<<0)
|
|
|
+
|
|
|
+#define OTG_DCTL_DSBESLRJCT (1u<<18)
|
|
|
+#define OTG_DCTL_POPRGDNE (1u<<11)
|
|
|
+#define OTG_DCTL_CGONAK (1u<<10)
|
|
|
+#define OTG_DCTL_SGONAK (1u<< 9)
|
|
|
+#define OTG_DCTL_CGINAK (1u<< 8)
|
|
|
+#define OTG_DCTL_SGINAK (1u<< 7)
|
|
|
+#define OTG_DCTL_GONSTS (1u<< 3)
|
|
|
+#define OTG_DCTL_GINSTS (1u<< 2)
|
|
|
+#define OTG_DCTL_SDIS (1u<< 1)
|
|
|
+#define OTG_DCTL_RWUSIG (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_DIEPMSK_NAKM (1u<<13)
|
|
|
+#define OTG_DIEPMSK_TXFURM (1u<< 8)
|
|
|
+#define OTG_DIEPMSK_INEPNEM (1u<< 6)
|
|
|
+#define OTG_DIEPMSK_INEPNMM (1u<< 5)
|
|
|
+#define OTG_DIEPMSK_ITTXFEMSK (1u<< 4)
|
|
|
+#define OTG_DIEPMSK_TOM (1u<< 3)
|
|
|
+#define OTG_DIEPMSK_AHBERRM (1u<< 2)
|
|
|
+#define OTG_DIEPMSK_EPDM (1u<< 1)
|
|
|
+#define OTG_DIEPMSK_XFRCM (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_DIEPINT_TXFE (1u<< 7)
|
|
|
+#define OTG_DIEPINT_XFRC (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_DOEPMSK_NYETMSK (1u<<14)
|
|
|
+#define OTG_DOEPMSK_NAKM (1u<<13)
|
|
|
+#define OTG_DOEPMSK_BERRM (1u<<12)
|
|
|
+#define OTG_DOEPMSK_OUTPKTERRM (1u<< 8)
|
|
|
+#define OTG_DOEPMSK_B2BSTUPM (1u<< 6)
|
|
|
+#define OTG_DOEPMSK_STSPHSRXM (1u<< 5)
|
|
|
+#define OTG_DOEPMSK_OTEPDM (1u<< 4)
|
|
|
+#define OTG_DOEPMSK_STUPM (1u<< 3)
|
|
|
+#define OTG_DOEPMSK_AHBERRM (1u<< 2)
|
|
|
+#define OTG_DOEPMSK_EPDM (1u<< 1)
|
|
|
+#define OTG_DOEPMSK_XFRCM (1u<< 0)
|
|
|
+
|
|
|
+#define OTG_DIEPCTL_EPENA (1u<<31)
|
|
|
+#define OTG_DIEPCTL_EPDIS (1u<<30)
|
|
|
+#define OTG_DIEPCTL_SODDFRM (1u<<29)
|
|
|
+#define OTG_DIEPCTL_SD0PID (1u<<28)
|
|
|
+#define OTG_DIEPCTL_SNAK (1u<<27)
|
|
|
+#define OTG_DIEPCTL_CNAK (1u<<26)
|
|
|
+#define OTG_DIEPCTL_TXFNUM(x) ((x)<<22)
|
|
|
+#define OTG_DIEPCTL_STALL (1u<<21)
|
|
|
+#define OTG_DIEPCTL_EPTYP(x) ((x)<<18)
|
|
|
+#define OTG_DIEPCTL_NAKSTS (1u<<17)
|
|
|
+#define OTG_DIEPCTL_DPID (1u<<16)
|
|
|
+#define OTG_DIEPCTL_USBAEP (1u<<15)
|
|
|
+#define OTG_DIEPCTL_MPSIZ(x) ((x)<<0)
|
|
|
+
|
|
|
+#define OTG_DIEPTSIZ_PKTCNT(x) ((x)<<19)
|
|
|
+#define OTG_DIEPTSIZ_XFRSIZ(x) ((x)<<0)
|
|
|
+
|
|
|
+#define OTG_DOEPCTL_EPENA (1u<<31)
|
|
|
+#define OTG_DOEPCTL_EPDIS (1u<<30)
|
|
|
+#define OTG_DOEPCTL_SD1PID (1u<<29)
|
|
|
+#define OTG_DOEPCTL_SD0PID (1u<<28)
|
|
|
+#define OTG_DOEPCTL_SNAK (1u<<27)
|
|
|
+#define OTG_DOEPCTL_CNAK (1u<<26)
|
|
|
+#define OTG_DOEPCTL_STALL (1u<<21)
|
|
|
+#define OTG_DOEPCTL_SNPM (1u<<20)
|
|
|
+#define OTG_DOEPCTL_EPTYP(x) ((x)<<18)
|
|
|
+#define OTG_DOEPCTL_NAKSTS (1u<<17)
|
|
|
+#define OTG_DOEPCTL_DPID (1u<<16)
|
|
|
+#define OTG_DOEPCTL_USBAEP (1u<<15)
|
|
|
+#define OTG_DOEPCTL_MPSIZ(x) ((x)<<0)
|
|
|
+
|
|
|
+#define OTG_DOEPTSZ_STUPCNT (3u<<29)
|
|
|
+#define OTG_DOEPTSZ_PKTCNT(x) ((x)<<19)
|
|
|
+#define OTG_DOEPTSZ_XFERSIZ(x) ((x)<<0)
|
|
|
+
|
|
|
+/* C pointer types */
|
|
|
+#define OTG volatile struct otg * const
|
|
|
+#define OTGH volatile struct otgh * const
|
|
|
+#define OTGD volatile struct otgd * const
|
|
|
+#define OTG_DIEP volatile struct otg_diep * const
|
|
|
+#define OTG_DOEP volatile struct otg_doep * const
|
|
|
+#define OTG_PCGCCTL volatile struct otg_pcgcctl * const
|
|
|
+#define OTG_DFIFO volatile struct otg_dfifo * const
|
|
|
+
|
|
|
+/* C-accessible registers. */
|
|
|
+#if conf_port == PORT_FS
|
|
|
+#define OTG_BASE USB_OTG_FS_BASE
|
|
|
+#else
|
|
|
+#define OTG_BASE USB_OTG_HS_BASE
|
|
|
+#endif
|
|
|
+static OTG otg = (struct otg *)(OTG_BASE + 0x000);
|
|
|
+static OTGH otgh = (struct otgh *)(OTG_BASE + 0x400);
|
|
|
+static OTGD otgd = (struct otgd *)(OTG_BASE + 0x800);
|
|
|
+static OTG_DIEP otg_diep = (struct otg_diep *)(OTG_BASE + 0x900);
|
|
|
+static OTG_DOEP otg_doep = (struct otg_doep *)(OTG_BASE + 0xb00);
|
|
|
+static OTG_PCGCCTL otg_pcgcctl = (struct otg_pcgcctl *)(OTG_BASE + 0xe00);
|
|
|
+static OTG_DFIFO otg_dfifo = (struct otg_dfifo *)(OTG_BASE + 0x1000);
|
|
|
+
|
|
|
+/*
|
|
|
+ * Local variables:
|
|
|
+ * mode: C
|
|
|
+ * c-file-style: "Linux"
|
|
|
+ * c-basic-offset: 4
|
|
|
+ * tab-width: 4
|
|
|
+ * indent-tabs-mode: nil
|
|
|
+ * End:
|
|
|
+ */
|