File indexing completed on 2025-05-11 08:23:05
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef LIBBSP_ARM_STM32F4_STM32F4XXXX_OTGFS_H
0016 #define LIBBSP_ARM_STM32F4_STM32F4XXXX_OTGFS_H
0017
0018 #include <bsp/utility.h>
0019
0020 #define USB_OTG_NUM_EPS 4
0021 #define USB_OTG_MAX_TX_FIFOS 4
0022
0023 #define USB_FIFO_BASE 0x1000
0024 #define USB_FIFO_OFFS 0x1000
0025
0026 struct stm32f4_otgfs_s {
0027 uint32_t gotgctl;
0028 #define STM32F4_OTGFS_GOTGCTL_BSVLD BSP_BIT32(19)
0029 #define STM32F4_OTGFS_GOTGCTL_ASVLD BSP_BIT32(18)
0030 #define STM32F4_OTGFS_GOTGCTL_DBCT BSP_BIT32(17)
0031 #define STM32F4_OTGFS_GOTGCTL_CIDSTS BSP_BIT32(16)
0032 #define STM32F4_OTGFS_GOTGCTL_DHNPEN BSP_BIT32(11)
0033 #define STM32F4_OTGFS_GOTGCTL_HSHNPEN BSP_BIT32(10)
0034 #define STM32F4_OTGFS_GOTGCTL_HNPRQ BSP_BIT32(9)
0035 #define STM32F4_OTGFS_GOTGCTL_HNGSCS BSP_BIT32(8)
0036 #define STM32F4_OTGFS_GOTGCTL_SRQ BSP_BIT32(1)
0037 #define STM32F4_OTGFS_GOTGCTL_SRQSCS BSP_BIT32(0)
0038
0039 uint32_t gotgint;
0040 #define STM32F4_OTGFS_GOTGINT_DBCDNE BSP_BIT32(19)
0041 #define STM32F4_OTGFS_GOTGINT_ADTOCHG BSP_BIT32(18)
0042 #define STM32F4_OTGFS_GOTGINT_HNGDET BSP_BIT32(17)
0043 #define STM32F4_OTGFS_GOTGINT_HNSSCHG BSP_BIT32(9)
0044 #define STM32F4_OTGFS_GOTGINT_SRSSCHG BSP_BIT32(8)
0045 #define STM32F4_OTGFS_GOTGINT_SEDET BSP_BIT32(2)
0046
0047 uint32_t gahbcfg;
0048 #define STM32F4_OTGFS_GAHBCFG_PTXFELVL BSP_BIT32(8)
0049 #define STM32F4_OTGFS_GAHBCFG_TXFELVL BSP_BIT32(7)
0050 #define STM32F4_OTGFS_GAHBCFG_GINTMSK BSP_BIT32(0)
0051
0052 uint32_t gusbcfg;
0053 #define STM32F4_OTGFS_GUSBCFG_CTXPKT BSP_BIT32(31)
0054 #define STM32F4_OTGFS_GUSBCFG_FDMOD BSP_BIT32(30)
0055 #define STM32F4_OTGFS_GUSBCFG_FHMOD BSP_BIT32(29)
0056 #define STM32F4_OTGFS_GUSBCFG_TRDT(val) BSP_FLD32(val, 10, 13)
0057 #define STM32F4_OTGFS_GUSBCFG_TRDT_GET(reg) BSP_FLD32GET(reg, 10, 13)
0058 #define STM32F4_OTGFS_GUSBCFG_TRDT_SET(reg, val) BSP_FLD32SET(reg, val, 10, 13)
0059 #define STM32F4_OTGFS_GUSBCFG_HNPCAP BSP_BIT32(9)
0060 #define STM32F4_OTGFS_GUSBCFG_SRPCAP BSP_BIT32(8)
0061 #define STM32F4_OTGFS_GUSBCFG_PHYSEL BSP_BIT32(6)
0062 #define STM32F4_OTGFS_GUSBCFG_TOCAL(val) BSP_FLD32(val, 0, 2)
0063 #define STM32F4_OTGFS_GUSBCFG_TOCAL_GET(reg) BSP_FLD32GET(reg, 0, 2)
0064 #define STM32F4_OTGFS_GUSBCFG_TOCAL_SET(reg, val) BSP_FLD32SET(reg, val, 0, 2)
0065
0066 uint32_t grstctl;
0067 #define STM32F4_OTGFS_GRSTCTL_AHBIDL BSP_BIT32(31)
0068 #define STM32F4_OTGFS_GRSTCTL_TXFNUM(val) BSP_FLD32(val, 6, 10)
0069 #define STM32F4_OTGFS_GRSTCTL_TXFNUM_GET(reg) BSP_FLD32GET(reg, 6, 10)
0070 #define STM32F4_OTGFS_GRSTCTL_TXFNUM_SET(reg, val) BSP_FLD32SET(reg, val, 6, 10)
0071 #define STM32F4_OTGFS_GRSTCTL_TXFNUM_ALL STM32F4_OTGFS_GRSTCTL_TXFNUM(0x10)
0072 #define STM32F4_OTGFS_GRSTCTL_TXFFLSH BSP_BIT32(5)
0073 #define STM32F4_OTGFS_GRSTCTL_RXFFLSH BSP_BIT32(4)
0074 #define STM32F4_OTGFS_GRSTCTL_FCRST BSP_BIT32(2)
0075 #define STM32F4_OTGFS_GRSTCTL_HSRST BSP_BIT32(1)
0076 #define STM32F4_OTGFS_GRSTCTL_CSRST BSP_BIT32(0)
0077
0078 uint32_t gintsts;
0079 #define STM32F4_OTGFS_GINTSTS_WKUPINT BSP_BIT32(31)
0080 #define STM32F4_OTGFS_GINTSTS_SRQINT BSP_BIT32(30)
0081 #define STM32F4_OTGFS_GINTSTS_DISCINT BSP_BIT32(29)
0082 #define STM32F4_OTGFS_GINTSTS_CIDSCHG BSP_BIT32(28)
0083 #define STM32F4_OTGFS_GINTSTS_PTXFE BSP_BIT32(26)
0084 #define STM32F4_OTGFS_GINTSTS_HCINT BSP_BIT32(25)
0085 #define STM32F4_OTGFS_GINTSTS_HPRTINT BSP_BIT32(24)
0086 #define STM32F4_OTGFS_GINTSTS_IPXFR BSP_BIT32(21)
0087 #define STM32F4_OTGFS_GINTSTS_IISOOXFR BSP_BIT32(21)
0088 #define STM32F4_OTGFS_GINTSTS_IISOIXFR BSP_BIT32(20)
0089 #define STM32F4_OTGFS_GINTSTS_OEPINT BSP_BIT32(19)
0090 #define STM32F4_OTGFS_GINTSTS_IEPINT BSP_BIT32(18)
0091 #define STM32F4_OTGFS_GINTSTS_EOPF BSP_BIT32(15)
0092 #define STM32F4_OTGFS_GINTSTS_ISOODRP BSP_BIT32(14)
0093 #define STM32F4_OTGFS_GINTSTS_ENUMDNE BSP_BIT32(13)
0094 #define STM32F4_OTGFS_GINTSTS_USBRST BSP_BIT32(12)
0095 #define STM32F4_OTGFS_GINTSTS_USBSUSP BSP_BIT32(11)
0096 #define STM32F4_OTGFS_GINTSTS_ESUSP BSP_BIT32(10)
0097 #define STM32F4_OTGFS_GINTSTS_GONAKEFF BSP_BIT32(7)
0098 #define STM32F4_OTGFS_GINTSTS_GINAKEFF BSP_BIT32(6)
0099 #define STM32F4_OTGFS_GINTSTS_NPTXFE BSP_BIT32(5)
0100 #define STM32F4_OTGFS_GINTSTS_RXFLVL BSP_BIT32(4)
0101 #define STM32F4_OTGFS_GINTSTS_SOF BSP_BIT32(3)
0102 #define STM32F4_OTGFS_GINTSTS_OTGINT BSP_BIT32(2)
0103 #define STM32F4_OTGFS_GINTSTS_MMIS BSP_BIT32(1)
0104 #define STM32F4_OTGFS_GINTSTS_CMOD BSP_BIT32(0)
0105
0106 uint32_t gintmsk;
0107
0108 uint32_t grxstsr;
0109
0110 uint32_t grxstsp;
0111 #define STM32F4_OTGFS_GRXSTSP_FRMNUM(val) BSP_FLD32(val, 21, 24)
0112 #define STM32F4_OTGFS_GRXSTSP_FRMNUM_GET(reg) BSP_FLD32GET(reg, 21, 24)
0113 #define STM32F4_OTGFS_GRXSTSP_FRMNUM_SET(reg, val) BSP_FLD32SET(reg, val, 21, 24)
0114 #define STM32F4_OTGFS_GRXSTSP_PKTSTS(val) BSP_FLD32(val, 17, 20)
0115 #define STM32F4_OTGFS_GRXSTSP_PKTSTS_GET(reg) BSP_FLD32GET(reg, 17, 20)
0116 #define STM32F4_OTGFS_GRXSTSP_PKTSTS_SET(reg, val) BSP_FLD32SET(reg, val, 17, 20)
0117 #define PKTSTS_IN_DATA (0x2)
0118 #define PKTSTS_IN_COMPLETE (0x3)
0119 #define PKTSTS_TOGGLE_ERR (0x5)
0120 #define PKTSTS_HALTED (0x7)
0121 #define PKTSTS_OUTNAK (0x1)
0122 #define PKTSTS_OUT_DATA (0x2)
0123 #define PKTSTS_OUT_COMPLETE (0x3)
0124 #define PKTSTS_SETUP_COMPLETE (0x4)
0125 #define PKTSTS_SETUP_DATA (0x6)
0126 #define STM32F4_OTGFS_GRXSTSP_DPIG(val) BSP_FLD32(val, 15, 16)
0127 #define STM32F4_OTGFS_GRXSTSP_DPID_GET(reg) BSP_FLD32GET(reg, 15, 16)
0128 #define STM32F4_OTGFS_GRXSTSP_DPID_SET(reg, val) BSP_FLD32SET(reg, val, 15, 16)
0129 #define STM32F4_OTGFS_GRXSTSP_DPID_DATA0 STM32F4_OTGFS_GRXSTSP_PKTSTS(0x0)
0130 #define STM32F4_OTGFS_GRXSTSP_DPID_DATA1 STM32F4_OTGFS_GRXSTSP_PKTSTS(0x1)
0131 #define STM32F4_OTGFS_GRXSTSP_DPID_DATA2 STM32F4_OTGFS_GRXSTSP_PKTSTS(0x2)
0132 #define STM32F4_OTGFS_GRXSTSP_DPID_MDATA0 STM32F4_OTGFS_GRXSTSP_PKTSTS(0x3)
0133 #define STM32F4_OTGFS_GRXSTSP_BCNT(val) BSP_FLD32(val, 4, 14)
0134 #define STM32F4_OTGFS_GRXSTSP_BCNT_GET(reg) BSP_FLD32GET(reg, 4, 14)
0135 #define STM32F4_OTGFS_GRXSTSP_BCNT_SET(reg, val) BSP_FLD32SET(reg, val, 4, 14)
0136 #define STM32F4_OTGFS_GRXSTSP_CHNUM(val) BSP_FLD32(val, 0, 3)
0137 #define STM32F4_OTGFS_GRXSTSP_CHNUM_GET(reg) BSP_FLD32GET(reg, 0, 3)
0138 #define STM32F4_OTGFS_GRXSTSP_CHNUM_SET(reg, val) BSP_FLD32SET(reg, val, 0, 3)
0139 #define STM32F4_OTGFS_GRXSTSP_EPNUM(val) BSP_FLD32(val, 0, 3)
0140 #define STM32F4_OTGFS_GRXSTSP_EPNUM_GET(reg) BSP_FLD32GET(reg, 0, 3)
0141 #define STM32F4_OTGFS_GRXSTSP_EPNUM_SET(reg, val) BSP_FLD32SET(reg, val, 0, 3)
0142
0143 uint32_t grxfsiz;
0144 #define STM32F4_OTGFS_GRXFSIZ_RXFD(val) BSP_FLD32(val, 0, 15)
0145 #define STM32F4_OTGFS_GRXFSIZ_RXFD_GET(reg) BSP_FLD32GET(reg, 0, 15)
0146 #define STM32F4_OTGFS_GRXFSIZ_RXFD_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0147 #define STM32F4_OTGFS_GRXFSIZ_RXFD_MIN 16
0148 #define STM32F4_OTGFS_GRXFSIZ_RXFD_MAX 256
0149
0150 uint32_t dieptxf0;
0151 #define STM32F4_OTGFS_DIEPTXF_DEPTH(val) BSP_FLD32(val, 16, 31)
0152 #define STM32F4_OTGFS_DIEPTXF_DEPTH_GET(reg) BSP_FLD32GET(reg, 16, 31)
0153 #define STM32F4_OTGFS_DIEPTXF_DEPTH_SET(reg, val) BSP_FLD32SET(reg, val, 16, 31)
0154 #define STM32F4_OTGFS_DIEPTXF_DEPTH_MIN 16
0155 #define STM32F4_OTGFS_DIEPTXF_DEPTH_MAX 256
0156 #define STM32F4_OTGFS_DIEPTXF_SADDR(val) BSP_FLD32(val, 0, 15)
0157 #define STM32F4_OTGFS_DIEPTXF_SADDR_GET(reg) BSP_FLD32GET(reg, 0, 15)
0158 #define STM32F4_OTGFS_DIEPTXF_SADDR_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0159
0160 uint32_t resv2C;
0161
0162 uint32_t gi2cctl;
0163 uint32_t resv34;
0164
0165 uint32_t gccfg;
0166 #define STM32F4_OTGFS_GCCFG_NOVBUSSENS BSP_BIT32(21)
0167 #define STM32F4_OTGFS_GCCFG_SOFOUTEN BSP_BIT32(20)
0168 #define STM32F4_OTGFS_GCCFG_VBUSBSEN BSP_BIT32(19)
0169 #define STM32F4_OTGFS_GCCFG_VBUSASEN BSP_BIT32(18)
0170 #define STM32F4_OTGFS_GCCFG_PWRDWN BSP_BIT32(16)
0171
0172 uint32_t cid;
0173
0174 uint32_t resv40[48];
0175
0176 uint32_t hptxfsiz;
0177
0178 uint32_t dieptxf[USB_OTG_MAX_TX_FIFOS];
0179
0180 } __attribute__ ((packed));
0181 typedef struct stm32f4_otgfs_s stm32f4_otgfs;
0182
0183 struct stm32f4_otgfs_dregs_s {
0184 uint32_t dcfg;
0185 #define STM32F4_OTGFS_DCFG_PFIVL(val) BSP_FLD32(val, 11, 12)
0186 #define STM32F4_OTGFS_DCFG_PFIVL_GET(reg) BSP_FLD32GET(reg, 11, 12)
0187 #define STM32F4_OTGFS_DCFG_PFIVL_SET(reg, val) BSP_FLD32SET(reg, val, 11, 12)
0188 #define PFIVL_80 0
0189 #define PFIVL_85 1
0190 #define PFIVL_90 2
0191 #define PFIVL_95 3
0192 #define STM32F4_OTGFS_DCFG_DAD(val) BSP_FLD32(val, 4, 10)
0193 #define STM32F4_OTGFS_DCFG_DAD_GET(reg) BSP_FLD32GET(reg, 4, 10)
0194 #define STM32F4_OTGFS_DCFG_DAD_SET(reg, val) BSP_FLD32SET(reg, val, 4, 10)
0195 #define STM32F4_OTGFS_DCFG_NZLSOHSK BSP_BIT32(2)
0196 #define STM32F4_OTGFS_DCFG_DSPD(val) BSP_FLD32(val, 0, 1)
0197 #define STM32F4_OTGFS_DCFG_DSPD_GET(reg) BSP_FLD32GET(reg, 0, 1)
0198 #define STM32F4_OTGFS_DCFG_DSPD_SET(reg, val) BSP_FLD32SET(reg, val, 0, 1)
0199 #define STM32F4_OTGFS_DCFG_DSPD_FULL STM32F4_OTGFS_DCFG_DSPD(0x3)
0200
0201 uint32_t dctl;
0202 #define STM32F4_OTGFS_DCTL_POPRGDNE BSP_BIT32(11)
0203 #define STM32F4_OTGFS_DCTL_CGONAK BSP_BIT32(10)
0204 #define STM32F4_OTGFS_DCTL_SGONAK BSP_BIT32(9)
0205 #define STM32F4_OTGFS_DCTL_CGINAK BSP_BIT32(8)
0206 #define STM32F4_OTGFS_DCTL_SGINAK BSP_BIT32(7)
0207 #define STM32F4_OTGFS_DCTL_TCTL(val) BSP_FLD32(val, 4, 6)
0208 #define STM32F4_OTGFS_DCTL_TCTL_GET(reg) BSP_FLD32GET(reg, 4, 6)
0209 #define STM32F4_OTGFS_DCTL_TCTL_SET(reg, val) BSP_FLD32SET(reg, val, 4, 6)
0210 #define STM32F4_OTGFS_DCTL_GONSTS BSP_BIT32(3)
0211 #define STM32F4_OTGFS_DCTL_GINSTS BSP_BIT32(2)
0212 #define STM32F4_OTGFS_DCTL_SDIS BSP_BIT32(1)
0213 #define STM32F4_OTGFS_DCTL_RWUSIG BSP_BIT32(0)
0214
0215 uint32_t dsts;
0216 #define STM32F4_OTGFS_DSTS_FNSOF(val) BSP_FLD32(val, 8, 21)
0217 #define STM32F4_OTGFS_DSTS_FNSOF_GET(reg) BSP_FLD32GET(reg, 8, 21)
0218 #define STM32F4_OTGFS_DSTS_EERR BSP_BIT32(3)
0219 #define STM32F4_OTGFS_DSTS_ENUMSPD(val) BSP_FLD32(val, 1, 2)
0220 #define STM32F4_OTGFS_DSTS_ENUMSPD_GET(reg) BSP_FLD32GET(reg, 1, 2)
0221 #define STM32F4_OTGFS_DSTS_ENUMSPD_FULL STM32F4_OTGFS_DSTS_ENUMSPD(0x3)
0222 #define STM32F4_OTGFS_DSTS_SUSPSTS BSP_BIT32(0)
0223
0224 uint32_t unused4;
0225
0226 uint32_t diepmsk;
0227
0228 uint32_t doepmsk;
0229
0230 uint32_t daint;
0231 #define STM32F4_OTGFS_DAINT_OEPINT15 BSP_BIT32(31)
0232 #define STM32F4_OTGFS_DAINT_OEPINT14 BSP_BIT32(30)
0233 #define STM32F4_OTGFS_DAINT_OEPINT13 BSP_BIT32(29)
0234 #define STM32F4_OTGFS_DAINT_OEPINT12 BSP_BIT32(28)
0235 #define STM32F4_OTGFS_DAINT_OEPINT11 BSP_BIT32(27)
0236 #define STM32F4_OTGFS_DAINT_OEPINT10 BSP_BIT32(26)
0237 #define STM32F4_OTGFS_DAINT_OEPINT9 BSP_BIT32(25)
0238 #define STM32F4_OTGFS_DAINT_OEPINT8 BSP_BIT32(24)
0239 #define STM32F4_OTGFS_DAINT_OEPINT7 BSP_BIT32(23)
0240 #define STM32F4_OTGFS_DAINT_OEPINT6 BSP_BIT32(22)
0241 #define STM32F4_OTGFS_DAINT_OEPINT5 BSP_BIT32(21)
0242 #define STM32F4_OTGFS_DAINT_OEPINT4 BSP_BIT32(20)
0243 #define STM32F4_OTGFS_DAINT_OEPINT3 BSP_BIT32(19)
0244 #define STM32F4_OTGFS_DAINT_OEPINT2 BSP_BIT32(18)
0245 #define STM32F4_OTGFS_DAINT_OEPINT1 BSP_BIT32(17)
0246 #define STM32F4_OTGFS_DAINT_OEPINT0 BSP_BIT32(16)
0247 #define STM32F4_OTGFS_DAINT_IEPINT15 BSP_BIT32(15)
0248 #define STM32F4_OTGFS_DAINT_IEPINT14 BSP_BIT32(14)
0249 #define STM32F4_OTGFS_DAINT_IEPINT13 BSP_BIT32(13)
0250 #define STM32F4_OTGFS_DAINT_IEPINT12 BSP_BIT32(12)
0251 #define STM32F4_OTGFS_DAINT_IEPINT11 BSP_BIT32(11)
0252 #define STM32F4_OTGFS_DAINT_IEPINT10 BSP_BIT32(10)
0253 #define STM32F4_OTGFS_DAINT_IEPINT9 BSP_BIT32(9)
0254 #define STM32F4_OTGFS_DAINT_IEPINT8 BSP_BIT32(8)
0255 #define STM32F4_OTGFS_DAINT_IEPINT7 BSP_BIT32(7)
0256 #define STM32F4_OTGFS_DAINT_IEPINT6 BSP_BIT32(6)
0257 #define STM32F4_OTGFS_DAINT_IEPINT5 BSP_BIT32(5)
0258 #define STM32F4_OTGFS_DAINT_IEPINT4 BSP_BIT32(4)
0259 #define STM32F4_OTGFS_DAINT_IEPINT3 BSP_BIT32(3)
0260 #define STM32F4_OTGFS_DAINT_IEPINT2 BSP_BIT32(2)
0261 #define STM32F4_OTGFS_DAINT_IEPINT1 BSP_BIT32(1)
0262 #define STM32F4_OTGFS_DAINT_IEPINT0 BSP_BIT32(0)
0263
0264 uint32_t daintmsk;
0265 #define STM32F4_OTGFS_DAINTMSK_OEPM(val) BSP_FLD32(val, 16, 31)
0266 #define STM32F4_OTGFS_DAINTMSK_OEPM_GET(reg) BSP_FLD32GET(reg, 16, 31)
0267 #define STM32F4_OTGFS_DAINTMSK_OEPM_SET(reg, val) BSP_FLD32SET(reg, val, 16, 31)
0268 #define STM32F4_OTGFS_DAINTMSK_IEPM(val) BSP_FLD32(val, 0, 15)
0269 #define STM32F4_OTGFS_DAINTMSK_IEPM_GET(reg) BSP_FLD32GET(reg, 0, 15)
0270 #define STM32F4_OTGFS_DAINTMSK_IEPM_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0271
0272 uint32_t unused5[2];
0273
0274 uint32_t dvbusdis;
0275 #define STM32F4_OTGFS_DVBUSDIS_VBUSDT(val) BSP_FLD32(val, 0, 15)
0276 #define STM32F4_OTGFS_DVBUSDIS_VBUSDT_GET(reg) BSP_FLD32GET(reg, 0, 15)
0277 #define STM32F4_OTGFS_DVBUSDIS_VBUSDT_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0278
0279 uint32_t dvbuspulse;
0280 #define STM32F4_OTGFS_DVBUSPULSE_DVBUSP(val) BSP_FLD32(val, 0, 15)
0281 #define STM32F4_OTGFS_DVBUSPULSE_DVBUSP_GET(reg) BSP_FLD32GET(reg, 0, 15)
0282 #define STM32F4_OTGFS_DVBUSPULSE_DVBUSP_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0283
0284 uint32_t unused6;
0285
0286 uint32_t diepempmsk;
0287 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM15 BSP_BIT32(15)
0288 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM14 BSP_BIT32(14)
0289 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM13 BSP_BIT32(13)
0290 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM12 BSP_BIT32(12)
0291 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM11 BSP_BIT32(11)
0292 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM10 BSP_BIT32(10)
0293 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM9 BSP_BIT32(9)
0294 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM8 BSP_BIT32(8)
0295 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM7 BSP_BIT32(7)
0296 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM6 BSP_BIT32(6)
0297 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM5 BSP_BIT32(5)
0298 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM4 BSP_BIT32(4)
0299 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM3 BSP_BIT32(3)
0300 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM2 BSP_BIT32(2)
0301 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM1 BSP_BIT32(1)
0302 #define STM32F4_OTGFS_DIEPEMPMSK_INEPTXFEM0 BSP_BIT32(0)
0303
0304 } __attribute__ ((packed));
0305 typedef struct stm32f4_otgfs_dregs_s stm32f4_otgfs_dregs;
0306
0307 struct stm32f4_otgfs_inepregs_s {
0308 uint32_t diepctl;
0309 #define STM32F4_OTGFS_DIEPCTL_EPENA BSP_BIT32(31)
0310 #define STM32F4_OTGFS_DIEPCTL_EPDIS BSP_BIT32(30)
0311 #define STM32F4_OTGFS_DIEPCTL_SODDFRM BSP_BIT32(29)
0312 #define STM32F4_OTGFS_DIEPCTL_SD0PID BSP_BIT32(28)
0313 #define STM32F4_OTGFS_DIEPCTL_SEVNFRM BSP_BIT32(28)
0314 #define STM32F4_OTGFS_DIEPCTL_SNAK BSP_BIT32(27)
0315 #define STM32F4_OTGFS_DIEPCTL_CNAK BSP_BIT32(26)
0316 #define STM32F4_OTGFS_DIEPCTL_TXFNUM(val) BSP_FLD32(val, 22, 25)
0317 #define STM32F4_OTGFS_DIEPCTL_TXFNUM_GET(reg) BSP_FLD32GET(reg, 22, 25)
0318 #define STM32F4_OTGFS_DIEPCTL_TXFNUM_SET(reg, val) BSP_FLD32SET(reg, val, 22, 25)
0319 #define STM32F4_OTGFS_DIEPCTL_STALL BSP_BIT32(21)
0320 #define STM32F4_OTGFS_DIEPCTL_EPTYP(val) BSP_FLD32(val, 18, 19)
0321 #define STM32F4_OTGFS_DIEPCTL_EPTYP_GET(reg) BSP_FLD32GET(reg, 18, 19)
0322 #define STM32F4_OTGFS_DIEPCTL_EPTYP_SET(reg, val) BSP_FLD32SET(reg, val, 18, 19)
0323 #define EPTYPE_CTRL 0
0324 #define EPTYPE_ISOC 1
0325 #define EPTYPE_BULK 2
0326 #define EPTYPE_INTR 3
0327 #define STM32F4_OTGFS_DIEPCTL_NAKSTS BSP_BIT32(17)
0328 #define STM32F4_OTGFS_DIEPCTL_EONUM_DPID BSP_BIT32(16)
0329 #define STM32F4_OTGFS_DIEPCTL_USBAEP BSP_BIT32(15)
0330 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ(val) BSP_FLD32(val, 0, 1)
0331 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_GET(reg) BSP_FLD32GET(reg, 0, 1)
0332 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 1)
0333 #define EP0_MPSIZ_8 3
0334 #define EP0_MPSIZ_16 2
0335 #define EP0_MPSIZ_32 1
0336 #define EP0_MPSIZ_64 0
0337 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_8 STM32F4_OTGFS_DIEPCTL_MPSIZ(EP0_MPSIZ_8)
0338 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_16 STM32F4_OTGFS_DIEPCTL_MPSIZ(EP0_MPSIZ_16)
0339 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_32 STM32F4_OTGFS_DIEPCTL_MPSIZ(EP0_MPSIZ_32)
0340 #define STM32F4_OTGFS_DIEPCTL_EP0_MPSIZ_64 STM32F4_OTGFS_DIEPCTL_MPSIZ(EP0_MPSIZ_64)
0341 #define STM32F4_OTGFS_DIEPCTL_MPSIZ(val) BSP_FLD32(val, 0, 10)
0342 #define STM32F4_OTGFS_DIEPCTL_MPSIZ_GET(reg) BSP_FLD32GET(reg, 0, 10)
0343 #define STM32F4_OTGFS_DIEPCTL_MPSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 10)
0344
0345 uint32_t reserved_04;
0346
0347 uint32_t diepint;
0348 #define STM32F4_OTGFS_DIEPINT_TXFE BSP_BIT32(7)
0349 #define STM32F4_OTGFS_DIEPINT_INEPNE BSP_BIT32(6)
0350 #define STM32F4_OTGFS_DIEPINT_ITTXFE BSP_BIT32(4)
0351 #define STM32F4_OTGFS_DIEPINT_TOC BSP_BIT32(3)
0352 #define STM32F4_OTGFS_DIEPINT_EPDISD BSP_BIT32(1)
0353 #define STM32F4_OTGFS_DIEPINT_XFRC BSP_BIT32(0)
0354
0355 uint32_t reserved_0C;
0356
0357 uint32_t dieptsiz;
0358 #define STM32F4_OTGFS_DIEPTSIZ_EP0_PKTCNT(val) BSP_FLD32(val, 19, 20)
0359 #define STM32F4_OTGFS_DIEPTSIZ_EP0_PKTCNT_GET(reg) BSP_FLD32GET(reg, 19, 20)
0360 #define STM32F4_OTGFS_DIEPTSIZ_EP0_PKTCNT_SET(reg, val) BSP_FLD32SET(reg, val, 19, 20)
0361 #define STM32F4_OTGFS_DIEPTSIZ_EP0_XFRSIZ(val) BSP_FLD32(val, 0, 6)
0362 #define STM32F4_OTGFS_DIEPTSIZ_EP0_XFRSIZ_GET(reg) BSP_FLD32GET(reg, 0, 6)
0363 #define STM32F4_OTGFS_DIEPTSIZ_EP0_XFRSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 6)
0364 #define STM32F4_OTGFS_DIEPTSIZ_MCNT(val) BSP_FLD32(val, 29, 30)
0365 #define STM32F4_OTGFS_DIEPTSIZ_MCNT_GET(reg) BSP_FLD32GET(reg, 29, 30)
0366 #define STM32F4_OTGFS_DIEPTSIZ_MCNT_SET(reg, val) BSP_FLD32SET(reg, val, 29, 30)
0367 #define STM32F4_OTGFS_DIEPTSIZ_PKTCNT(val) BSP_FLD32(val, 19, 28)
0368 #define STM32F4_OTGFS_DIEPTSIZ_PKTCNT_GET(reg) BSP_FLD32GET(reg, 19, 28)
0369 #define STM32F4_OTGFS_DIEPTSIZ_PKTCNT_SET(reg, val) BSP_FLD32SET(reg, val, 19, 28)
0370 #define STM32F4_OTGFS_DIEPTSIZ_XFRSIZ(val) BSP_FLD32(val, 0, 18)
0371 #define STM32F4_OTGFS_DIEPTSIZ_XFRSIZ_GET(reg) BSP_FLD32GET(reg, 0, 18)
0372 #define STM32F4_OTGFS_DIEPTSIZ_XFRSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 18)
0373
0374 uint32_t reserved_14;
0375
0376 uint32_t dtxfsts;
0377 #define STM32F4_OTGFS_DTXFSTS_INEPTFSAV(val) BSP_FLD32(val, 0, 15)
0378 #define STM32F4_OTGFS_DTXFSTS_INEPTFSAV_GET(reg) BSP_FLD32(reg, 0, 15)
0379 #define STM32F4_OTGFS_DTXFSTS_INEPTFSAV_SET(reg, val) BSP_FLD32SET(reg, val, 0, 15)
0380
0381 uint32_t reserved_1C;
0382
0383 } __attribute__ ((packed));
0384 typedef struct stm32f4_otgfs_inepregs_s stm32f4_otgfs_inepregs;
0385
0386 struct stm32f4_otgfs_outepregs_s {
0387 uint32_t doepctl;
0388 #define STM32F4_OTGFS_DOEPCTL_EPENA BSP_BIT32(31)
0389 #define STM32F4_OTGFS_DOEPCTL_EPDIS BSP_BIT32(30)
0390 #define STM32F4_OTGFS_DOEPCTL_SD1PID BSP_BIT32(29)
0391 #define STM32F4_OTGFS_DOEPCTL_SD0PID BSP_BIT32(28)
0392 #define STM32F4_OTGFS_DOEPCTL_SNAK BSP_BIT32(27)
0393 #define STM32F4_OTGFS_DOEPCTL_CNAK BSP_BIT32(26)
0394 #define STM32F4_OTGFS_DOEPCTL_STALL BSP_BIT32(21)
0395 #define STM32F4_OTGFS_DOEPCTL_SNPM BSP_BIT32(20)
0396 #define STM32F4_OTGFS_DOEPCTL_EPTYP(val) BSP_FLD32(val, 18, 19)
0397 #define STM32F4_OTGFS_DOEPCTL_EPTYP_GET(reg) BSP_FLD32GET(reg, 18, 19)
0398 #define STM32F4_OTGFS_DOEPCTL_EPTYP_SET(reg, val) BSP_FLD32SET(reg, val, 18, 19)
0399 #define STM32F4_OTGFS_DOEPCTL_NAKSTS BSP_BIT32(17)
0400 #define STM32F4_OTGFS_DOEPCTL_EONUM_DPID BSP_BIT32(16)
0401 #define STM32F4_OTGFS_DOEPCTL_USBAEP BSP_BIT32(15)
0402 #define STM32F4_OTGFS_DOEPCTL_MPSIZ(val) BSP_FLD32(val, 0, 10)
0403 #define STM32F4_OTGFS_DOEPCTL_MPSIZ_GET(reg) BSP_FLD32GET(reg, 0, 10)
0404 #define STM32F4_OTGFS_DOEPCTL_MPSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 10)
0405
0406 uint32_t resv04;
0407
0408 uint32_t doepint;
0409 #define STM32F4_OTGFS_DOEPINT_B2BSTUP BSP_BIT32(6)
0410 #define STM32F4_OTGFS_DOEPINT_OTEPDIS BSP_BIT32(4)
0411 #define STM32F4_OTGFS_DOEPINT_STUP BSP_BIT32(3)
0412 #define STM32F4_OTGFS_DOEPINT_EPDISD BSP_BIT32(1)
0413 #define STM32F4_OTGFS_DOEPINT_XFRC BSP_BIT32(0)
0414
0415 uint32_t doeptsiz;
0416 #define STM32F4_OTGFS_DOEPTSIZ_EP0_STUPCNT(val) BSP_FLD32(val, 29, 30)
0417 #define STM32F4_OTGFS_DOEPTSIZ_EP0_STUPCNT_GET(reg) BSP_FLD32GET(reg, 29, 30)
0418 #define STM32F4_OTGFS_DOEPTSIZ_EP0_STUPCNT_SET(reg, val) BSP_FLD32SET(reg, val, 29, 30)
0419 #define STM32F4_OTGFS_DOEPTSIZ_EP0_PKTCNT BSP_BIT32(19)
0420 #define STM32F4_OTGFS_DOEPTSIZ_EP0_XFRSIZ(val) BSP_FLD32(val, 0, 6)
0421 #define STM32F4_OTGFS_DOEPTSIZ_EP0_XFRSIZ_GET(reg) BSP_FLD32GET(reg, 0, 6)
0422 #define STM32F4_OTGFS_DOEPTSIZ_EP0_XFRSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 6)
0423 #define STM32F4_OTGFS_DOEPTSIZ_RXDPID(val) BSP_FLD32(val, 29, 30)
0424 #define STM32F4_OTGFS_DOEPTSIZ_RXDPID_GET(reg) BSP_FLD32GET(reg, 29, 30)
0425 #define STM32F4_OTGFS_DOEPTSIZ_RXDPID_SET(reg, val) BSP_FLD32SET(reg, val, 29, 30)
0426 #define STM32F4_OTGFS_DOEPTSIZ_PKTCNT(val) BSP_FLD32(val, 19, 28)
0427 #define STM32F4_OTGFS_DOEPTSIZ_PKTCNT_GET(reg) BSP_FLD32GET(reg, 19, 28)
0428 #define STM32F4_OTGFS_DOEPTSIZ_PKTCNT_SET(reg, val) BSP_FLD32SET(reg, val, 19, 28)
0429 #define STM32F4_OTGFS_DOEPTSIZ_XFRSIZ(val) BSP_FLD32(val, 0, 18)
0430 #define STM32F4_OTGFS_DOEPTSIZ_XFRSIZ_GET(reg) BSP_FLD32GET(reg, 0, 18)
0431 #define STM32F4_OTGFS_DOEPTSIZ_XFRSIZ_SET(reg, val) BSP_FLD32SET(reg, val, 0, 18)
0432
0433 uint32_t resv14[3];
0434 } __attribute__ ((packed));
0435 typedef struct stm32f4_otgfs_outepregs_s stm32f4_otgfs_outepregs;
0436
0437 struct stm32f4_otgfs_pwrctlregs_s {
0438 uint32_t pcgcctl;
0439 #define STM32F4_OTGFS_PCGCCTL_PHYSUSP BSP_BIT32(4)
0440 #define STM32F4_OTGFS_PCGCCTL_GATEHCLK BSP_BIT32(1)
0441 #define STM32F4_OTGFS_PCGCCTL_STPPCLK BSP_BIT32(0)
0442 } __attribute__ ((packed));
0443 typedef struct stm32f4_otgfs_pwrctlregs_s stm32f4_otgfs_pwrctlregs;
0444
0445 #endif