1 /* 2 * Copyright (c) 2016 Intel Corporation 3 * Copyright (c) 2023 Nordic Semiconductor ASA 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8 #ifndef ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW 9 #define ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW 10 11 #include <stdint.h> 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 /* This file describes register set for the DesignWare USB 2.0 controller IP */ 18 19 /* IN endpoint register block */ 20 struct usb_dwc2_in_ep { 21 volatile uint32_t diepctl; 22 uint32_t reserved; 23 volatile uint32_t diepint; 24 uint32_t reserved1; 25 volatile uint32_t dieptsiz; 26 volatile uint32_t diepdma; 27 volatile uint32_t dtxfsts; 28 volatile uint32_t diepdmab; 29 }; 30 31 /* OUT endpoint register block */ 32 struct usb_dwc2_out_ep { 33 volatile uint32_t doepctl; 34 uint32_t reserved; 35 volatile uint32_t doepint; 36 uint32_t reserved1; 37 volatile uint32_t doeptsiz; 38 volatile uint32_t doepdma; 39 uint32_t reserved2; 40 volatile uint32_t doepdmab; 41 }; 42 43 /* DWC2 register map 44 * TODO: This should probably be split into global, host, and device register 45 * blocks 46 */ 47 struct usb_dwc2_reg { 48 volatile uint32_t gotgctl; 49 volatile uint32_t gotgint; 50 volatile uint32_t gahbcfg; 51 volatile uint32_t gusbcfg; 52 volatile uint32_t grstctl; 53 volatile uint32_t gintsts; 54 volatile uint32_t gintmsk; 55 volatile uint32_t grxstsr; 56 volatile uint32_t grxstsp; 57 volatile uint32_t grxfsiz; 58 volatile uint32_t gnptxfsiz; 59 volatile uint32_t gnptxsts; 60 volatile uint32_t gi2cctl; 61 volatile uint32_t gpvndctl; 62 volatile uint32_t ggpio; 63 volatile uint32_t guid; 64 volatile uint32_t gsnpsid; 65 volatile uint32_t ghwcfg1; 66 volatile uint32_t ghwcfg2; 67 volatile uint32_t ghwcfg3; 68 volatile uint32_t ghwcfg4; 69 volatile uint32_t glpmcfg; 70 volatile uint32_t gpwrdn; 71 volatile uint32_t gdfifocfg; 72 volatile uint32_t gadpctl; 73 volatile uint32_t grefclk; 74 volatile uint32_t gintmsk2; 75 volatile uint32_t gintsts2; 76 volatile uint32_t reserved1[36]; 77 volatile uint32_t hptxfsiz; 78 union { 79 volatile uint32_t dptxfsiz[15]; 80 volatile uint32_t dieptxf[15]; 81 }; 82 volatile uint32_t reserved2[176]; 83 /* Host mode register 0x0400 .. 0x0670 */ 84 uint32_t reserved3[256]; 85 /* Device mode register 0x0800 .. 0x0D00 */ 86 volatile uint32_t dcfg; 87 volatile uint32_t dctl; 88 volatile uint32_t dsts; 89 uint32_t reserved4; 90 volatile uint32_t diepmsk; 91 volatile uint32_t doepmsk; 92 volatile uint32_t daint; 93 volatile uint32_t daintmsk; 94 volatile uint32_t dtknqr1; 95 volatile uint32_t dtknqr2; 96 volatile uint32_t dvbusdis; 97 volatile uint32_t dvbuspulse; 98 union { 99 volatile uint32_t dtknqr3; 100 volatile uint32_t dthrctl; 101 }; 102 union { 103 volatile uint32_t dtknqr4; 104 volatile uint32_t diepempmsk; 105 }; 106 volatile uint32_t deachint; 107 volatile uint32_t deachintmsk; 108 volatile uint32_t diepeachmsk[16]; 109 volatile uint32_t doepeachmsk[16]; 110 volatile uint32_t reserved5[16]; 111 struct usb_dwc2_in_ep in_ep[16]; 112 struct usb_dwc2_out_ep out_ep[16]; 113 volatile uint32_t reserved6[64]; 114 volatile uint32_t pcgcctl; 115 }; 116 117 /* The last register (PCGCCTL) must be at offset 0xE00. */ 118 BUILD_ASSERT(offsetof(struct usb_dwc2_reg, pcgcctl) == 0x0E00); 119 120 /* 121 * GET_FIELD/SET_FIELD macros below are intended to be used to define functions 122 * to get/set a bitfield of a register from/into a value. They should not be 123 * used to get/set a bitfield consisting of only one bit. 124 */ 125 #define USB_DWC2_GET_FIELD_DEFINE(name, reg_name_and_field) \ 126 static inline uint32_t usb_dwc2_get_##name(const uint32_t value) \ 127 { \ 128 return (value & USB_DWC2_##reg_name_and_field##_MASK) >> \ 129 USB_DWC2_##reg_name_and_field##_POS; \ 130 } 131 132 #define USB_DWC2_SET_FIELD_DEFINE(name, reg_name_and_field) \ 133 static inline uint32_t usb_dwc2_set_##name(const uint32_t value) \ 134 { \ 135 return (value << USB_DWC2_##reg_name_and_field##_POS) & \ 136 USB_DWC2_##reg_name_and_field##_MASK; \ 137 } 138 139 #define USB_DWC2_GET_FIELD_AND_IDX_DEFINE(name, reg_name_and_field) \ 140 static inline uint32_t usb_dwc2_get_##name(const uint32_t value, \ 141 const uint32_t idx) \ 142 { \ 143 return (value & USB_DWC2_##reg_name_and_field##_MASK(idx)) >> \ 144 USB_DWC2_##reg_name_and_field##_POS(idx); \ 145 } 146 147 /* AHB configuration register */ 148 #define USB_DWC2_GAHBCFG 0x0008UL 149 #define USB_DWC2_GAHBCFG_LOA_EOP_WORD_POS 27UL 150 #define USB_DWC2_GAHBCFG_LOA_EOP_WORD_MASK (0x3UL << USB_DWC2_GAHBCFG_LOA_EOP_WORD_POS) 151 #define USB_DWC2_GAHBCFG_LOA_EOP_WORD_ONE 1 152 #define USB_DWC2_GAHBCFG_LOA_EOP_WORD_TWO 2 153 #define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_POS 25UL 154 #define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_MASK (0x3UL << USB_DWC2_GAHBCFG_LOA_EOP_BYTE_POS) 155 #define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_ONE 1 156 #define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_TWO 2 157 #define USB_DWC2_GAHBCFG_INVDESCENDIANESS_POS 24UL 158 #define USB_DWC2_GAHBCFG_INVDESCENDIANESS BIT(USB_DWC2_GAHBCFG_INVDESCENDIANESS_POS) 159 #define USB_DWC2_GAHBCFG_AHBSINGLE_POS 23UL 160 #define USB_DWC2_GAHBCFG_AHBSINGLE BIT(USB_DWC2_GAHBCFG_AHBSINGLE_POS) 161 #define USB_DWC2_GAHBCFG_NOTIALLDMAWRIT_POS 22UL 162 #define USB_DWC2_GAHBCFG_NOTIALLDMAWRIT BIT(USB_DWC2_GAHBCFG_NOTIALLDMAWRIT_POS) 163 #define USB_DWC2_GAHBCFG_REMMEMSUPP_POS 21UL 164 #define USB_DWC2_GAHBCFG_REMMEMSUPP BIT(USB_DWC2_GAHBCFG_REMMEMSUPP_POS) 165 #define USB_DWC2_GAHBCFG_PTXFEMPLVL_POS 8UL 166 #define USB_DWC2_GAHBCFG_PTXFEMPLVL BIT(USB_DWC2_GAHBCFG_PTXFEMPLVL_POS) 167 #define USB_DWC2_GAHBCFG_NPTXFEMPLVL_POS 7UL 168 #define USB_DWC2_GAHBCFG_NPTXFEMPLVL BIT(USB_DWC2_GAHBCFG_NPTXFEMPLVL_POS) 169 #define USB_DWC2_GAHBCFG_DMAEN_POS 5UL 170 #define USB_DWC2_GAHBCFG_DMAEN BIT(USB_DWC2_GAHBCFG_DMAEN_POS) 171 #define USB_DWC2_GAHBCFG_HBSTLEN_POS 1UL 172 #define USB_DWC2_GAHBCFG_HBSTLEN_MASK (0xFUL << USB_DWC2_GAHBCFG_HBSTLEN_POS) 173 #define USB_DWC2_GAHBCFG_HBSTLEN_SINGLE 0 174 #define USB_DWC2_GAHBCFG_HBSTLEN_INCR 1 175 #define USB_DWC2_GAHBCFG_HBSTLEN_INCR4 3 176 #define USB_DWC2_GAHBCFG_HBSTLEN_INCR8 5 177 #define USB_DWC2_GAHBCFG_HBSTLEN_INCR16 7 178 #define USB_DWC2_GAHBCFG_GLBINTRMASK_POS 0UL 179 #define USB_DWC2_GAHBCFG_GLBINTRMASK BIT(USB_DWC2_GAHBCFG_GLBINTRMASK_POS) 180 181 USB_DWC2_SET_FIELD_DEFINE(gahbcfg_loa_eop_word, GAHBCFG_LOA_EOP_WORD) 182 USB_DWC2_SET_FIELD_DEFINE(gahbcfg_loa_eop_byte, GAHBCFG_LOA_EOP_BYTE) 183 USB_DWC2_SET_FIELD_DEFINE(gahbcfg_hbstlen, GAHBCFG_HBSTLEN) 184 USB_DWC2_GET_FIELD_DEFINE(gahbcfg_loa_eop_word, GAHBCFG_LOA_EOP_WORD) 185 USB_DWC2_GET_FIELD_DEFINE(gahbcfg_loa_eop_byte, GAHBCFG_LOA_EOP_BYTE) 186 USB_DWC2_GET_FIELD_DEFINE(gahbcfg_hbstlen, GAHBCFG_HBSTLEN) 187 188 /* USB configuration register */ 189 #define USB_DWC2_GUSBCFG 0x000CUL 190 #define USB_DWC2_GUSBCFG_FORCEDEVMODE_POS 30UL 191 #define USB_DWC2_GUSBCFG_FORCEDEVMODE BIT(USB_DWC2_GUSBCFG_FORCEDEVMODE_POS) 192 #define USB_DWC2_GUSBCFG_FORCEHSTMODE_POS 29UL 193 #define USB_DWC2_GUSBCFG_FORCEHSTMODE BIT(USB_DWC2_GUSBCFG_FORCEHSTMODE_POS) 194 #define USB_DWC2_GUSBCFG_PHYSEL_POS 6UL 195 #define USB_DWC2_GUSBCFG_PHYSEL_USB11 BIT(USB_DWC2_GUSBCFG_PHYSEL_POS) 196 #define USB_DWC2_GUSBCFG_PHYSEL_USB20 0UL 197 #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_POS 4UL 198 #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_ULPI BIT(USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_POS) 199 #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_UTMI 0UL 200 #define USB_DWC2_GUSBCFG_PHYIF_POS 3UL 201 #define USB_DWC2_GUSBCFG_PHYIF_16_BIT BIT(USB_DWC2_GUSBCFG_PHYIF_POS) 202 #define USB_DWC2_GUSBCFG_PHYIF_8_BIT 0UL 203 204 /* Reset register */ 205 #define USB_DWC2_GRSTCTL 0x0010UL 206 #define USB_DWC2_GRSTCTL_AHBIDLE_POS 31UL 207 #define USB_DWC2_GRSTCTL_AHBIDLE BIT(USB_DWC2_GRSTCTL_AHBIDLE_POS) 208 #define USB_DWC2_GRSTCTL_CSFTRSTDONE_POS 29UL 209 #define USB_DWC2_GRSTCTL_CSFTRSTDONE BIT(USB_DWC2_GRSTCTL_CSFTRSTDONE_POS) 210 #define USB_DWC2_GRSTCTL_TXFNUM_POS 6UL 211 #define USB_DWC2_GRSTCTL_TXFNUM_MASK (0x1FUL << USB_DWC2_GRSTCTL_TXFNUM_POS) 212 #define USB_DWC2_GRSTCTL_TXFFLSH_POS 5UL 213 #define USB_DWC2_GRSTCTL_TXFFLSH BIT(USB_DWC2_GRSTCTL_TXFFLSH_POS) 214 #define USB_DWC2_GRSTCTL_RXFFLSH_POS 4UL 215 #define USB_DWC2_GRSTCTL_RXFFLSH BIT(USB_DWC2_GRSTCTL_RXFFLSH_POS) 216 #define USB_DWC2_GRSTCTL_CSFTRST_POS 0UL 217 #define USB_DWC2_GRSTCTL_CSFTRST BIT(USB_DWC2_GRSTCTL_CSFTRST_POS) 218 219 USB_DWC2_SET_FIELD_DEFINE(grstctl_txfnum, GRSTCTL_TXFNUM) 220 221 /* Core interrupt registers */ 222 #define USB_DWC2_GINTSTS 0x0014UL 223 #define USB_DWC2_GINTMSK 0x0018UL 224 #define USB_DWC2_GINTSTS_WKUPINT_POS 31UL 225 #define USB_DWC2_GINTSTS_WKUPINT BIT(USB_DWC2_GINTSTS_WKUPINT_POS) 226 #define USB_DWC2_GINTSTS_SESSREQINT_POS 30UL 227 #define USB_DWC2_GINTSTS_SESSREQINT BIT(USB_DWC2_GINTSTS_SESSREQINT_POS) 228 #define USB_DWC2_GINTSTS_DISCONNINT_POS 29UL 229 #define USB_DWC2_GINTSTS_DISCONNINT BIT(USB_DWC2_GINTSTS_DISCONNINT_POS) 230 #define USB_DWC2_GINTSTS_CONIDSTSCHNG_POS 28UL 231 #define USB_DWC2_GINTSTS_CONIDSTSCHNG BIT(USB_DWC2_GINTSTS_CONIDSTSCHNG_POS) 232 #define USB_DWC2_GINTSTS_LPM_INT_POS 27UL 233 #define USB_DWC2_GINTSTS_LPM_INT BIT(USB_DWC2_GINTSTS_LPM_INT_POS) 234 #define USB_DWC2_GINTSTS_HCHINT_POS 25UL 235 #define USB_DWC2_GINTSTS_HCHINT BIT(USB_DWC2_GINTSTS_HCHINT_POS) 236 #define USB_DWC2_GINTSTS_PRTINT_POS 24UL 237 #define USB_DWC2_GINTSTS_PRTINT BIT(USB_DWC2_GINTSTS_PRTINT_POS) 238 #define USB_DWC2_GINTSTS_RESETDET_POS 23UL 239 #define USB_DWC2_GINTSTS_RESETDET BIT(USB_DWC2_GINTSTS_RESETDET_POS) 240 #define USB_DWC2_GINTSTS_FETSUSP_POS 22UL 241 #define USB_DWC2_GINTSTS_FETSUSP BIT(USB_DWC2_GINTSTS_FETSUSP_POS) 242 #define USB_DWC2_GINTSTS_INCOMPIP_POS 21UL 243 #define USB_DWC2_GINTSTS_INCOMPIP BIT(USB_DWC2_GINTSTS_INCOMPIP_POS) 244 #define USB_DWC2_GINTSTS_INCOMPISOOUT USB_DWC2_GINTSTS_INCOMPIP 245 #define USB_DWC2_GINTSTS_INCOMPISOIN_POS 20UL 246 #define USB_DWC2_GINTSTS_INCOMPISOIN BIT(USB_DWC2_GINTSTS_INCOMPISOIN_POS) 247 #define USB_DWC2_GINTSTS_OEPINT_POS 19UL 248 #define USB_DWC2_GINTSTS_OEPINT BIT(USB_DWC2_GINTSTS_OEPINT_POS) 249 #define USB_DWC2_GINTSTS_IEPINT_POS 18UL 250 #define USB_DWC2_GINTSTS_IEPINT BIT(USB_DWC2_GINTSTS_IEPINT_POS) 251 #define USB_DWC2_GINTSTS_EPMIS_POS 17UL 252 #define USB_DWC2_GINTSTS_EPMIS BIT(USB_DWC2_GINTSTS_EPMIS_POS) 253 #define USB_DWC2_GINTSTS_RSTRDONEINT_POS 16UL 254 #define USB_DWC2_GINTSTS_RSTRDONEINT BIT(USB_DWC2_GINTSTS_RSTRDONEINT_POS) 255 #define USB_DWC2_GINTSTS_EOPF_POS 15UL 256 #define USB_DWC2_GINTSTS_EOPF BIT(USB_DWC2_GINTSTS_EOPF_POS) 257 #define USB_DWC2_GINTSTS_ISOOUTDROP_POS 14UL 258 #define USB_DWC2_GINTSTS_ISOOUTDROP BIT(USB_DWC2_GINTSTS_ISOOUTDROP_POS) 259 #define USB_DWC2_GINTSTS_ENUMDONE_POS 13UL 260 #define USB_DWC2_GINTSTS_ENUMDONE BIT(USB_DWC2_GINTSTS_ENUMDONE_POS) 261 #define USB_DWC2_GINTSTS_USBRST_POS 12UL 262 #define USB_DWC2_GINTSTS_USBRST BIT(USB_DWC2_GINTSTS_USBRST_POS) 263 #define USB_DWC2_GINTSTS_USBSUSP_POS 11UL 264 #define USB_DWC2_GINTSTS_USBSUSP BIT(USB_DWC2_GINTSTS_USBSUSP_POS) 265 #define USB_DWC2_GINTSTS_ERLYSUSP_POS 10UL 266 #define USB_DWC2_GINTSTS_ERLYSUSP BIT(USB_DWC2_GINTSTS_ERLYSUSP_POS) 267 #define USB_DWC2_GINTSTS_GOUTNAKEFF_POS 7UL 268 #define USB_DWC2_GINTSTS_GOUTNAKEFF BIT(USB_DWC2_GINTSTS_GOUTNAKEFF_POS) 269 #define USB_DWC2_GINTSTS_GINNAKEFF_POS 6UL 270 #define USB_DWC2_GINTSTS_GINNAKEFF BIT(USB_DWC2_GINTSTS_GINNAKEFF_POS) 271 #define USB_DWC2_GINTSTS_NPTXFEMP_POS 5UL 272 #define USB_DWC2_GINTSTS_NPTXFEMP BIT(USB_DWC2_GINTSTS_NPTXFEMP_POS) 273 #define USB_DWC2_GINTSTS_RXFLVL_POS 4UL 274 #define USB_DWC2_GINTSTS_RXFLVL BIT(USB_DWC2_GINTSTS_RXFLVL_POS) 275 #define USB_DWC2_GINTSTS_SOF_POS 3UL 276 #define USB_DWC2_GINTSTS_SOF BIT(USB_DWC2_GINTSTS_SOF_POS) 277 #define USB_DWC2_GINTSTS_OTGINT_POS 2UL 278 #define USB_DWC2_GINTSTS_OTGINT BIT(USB_DWC2_GINTSTS_OTGINT_POS) 279 #define USB_DWC2_GINTSTS_MODEMIS_POS 1UL 280 #define USB_DWC2_GINTSTS_MODEMIS BIT(USB_DWC2_GINTSTS_MODEMIS_POS) 281 #define USB_DWC2_GINTSTS_CURMOD_POS 0UL 282 #define USB_DWC2_GINTSTS_CURMOD BIT(USB_DWC2_GINTSTS_CURMOD_POS) 283 284 /* Status read and pop registers */ 285 #define USB_DWC2_GRXSTSR 0x001CUL 286 #define USB_DWC2_GRXSTSP 0x0020UL 287 #define USB_DWC2_GRXSTSR_FN_POS 21UL 288 #define USB_DWC2_GRXSTSR_FN_MASK (0xFUL << USB_DWC2_GRXSTSR_FN_POS) 289 #define USB_DWC2_GRXSTSR_PKTSTS_POS 17UL 290 #define USB_DWC2_GRXSTSR_PKTSTS_MASK (0xFUL << USB_DWC2_GRXSTSR_PKTSTS_POS) 291 #define USB_DWC2_GRXSTSR_PKTSTS_GLOBAL_OUT_NAK 1 292 #define USB_DWC2_GRXSTSR_PKTSTS_OUT_DATA 2 293 #define USB_DWC2_GRXSTSR_PKTSTS_OUT_DATA_DONE 3 294 #define USB_DWC2_GRXSTSR_PKTSTS_SETUP_DONE 4 295 #define USB_DWC2_GRXSTSR_PKTSTS_SETUP 6 296 #define USB_DWC2_GRXSTSR_DPID_POS 15UL 297 #define USB_DWC2_GRXSTSR_DPID_MASK (0x3UL << USB_DWC2_GRXSTSR_DPID_POS) 298 #define USB_DWC2_GRXSTSR_DPID_DATA0 0 299 #define USB_DWC2_GRXSTSR_DPID_DATA2 1 300 #define USB_DWC2_GRXSTSR_DPID_DATA1 2 301 #define USB_DWC2_GRXSTSR_DPID_MDATA 3 302 #define USB_DWC2_GRXSTSR_BCNT_POS 4UL 303 #define USB_DWC2_GRXSTSR_BCNT_MASK (0x000007FFUL << USB_DWC2_GRXSTSR_BCNT_POS) 304 #define USB_DWC2_GRXSTSR_EPNUM_POS 0UL 305 #define USB_DWC2_GRXSTSR_EPNUM_MASK 0x0000000FUL 306 #define USB_DWC2_GRXSTSR_CHNUM_POS 0UL 307 #define USB_DWC2_GRXSTSR_CHNUM_MASK 0x0000000FUL 308 309 USB_DWC2_GET_FIELD_DEFINE(grxstsp_fn, GRXSTSR_FN) 310 USB_DWC2_GET_FIELD_DEFINE(grxstsp_pktsts, GRXSTSR_PKTSTS) 311 USB_DWC2_GET_FIELD_DEFINE(grxstsp_bcnt, GRXSTSR_BCNT) 312 USB_DWC2_GET_FIELD_DEFINE(grxstsp_epnum, GRXSTSR_EPNUM) 313 314 /* Receive FIFO size register (device mode) */ 315 #define USB_DWC2_GRXFSIZ 0x0024UL 316 #define USB_DWC2_GRXFSIZ_RXFDEP_POS 0UL 317 #define USB_DWC2_GRXFSIZ_RXFDEP_MASK (0xFFFFUL << USB_DWC2_GRXFSIZ_RXFDEP_POS) 318 319 USB_DWC2_GET_FIELD_DEFINE(grxfsiz, GRXFSIZ_RXFDEP) 320 USB_DWC2_SET_FIELD_DEFINE(grxfsiz, GRXFSIZ_RXFDEP) 321 322 /* Non-periodic transmit FIFO size register (device mode) */ 323 #define USB_DWC2_GNPTXFSIZ 0x0028UL 324 #define USB_DWC2_GNPTXFSIZ_NPTXFDEP_POS 16UL 325 #define USB_DWC2_GNPTXFSIZ_NPTXFDEP_MASK (0xFFFFUL << USB_DWC2_GNPTXFSIZ_NPTXFDEP_POS) 326 #define USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_POS 0UL 327 #define USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_MASK (0xFFFFUL << USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_POS) 328 329 USB_DWC2_GET_FIELD_DEFINE(gnptxfsiz_nptxfdep, GNPTXFSIZ_NPTXFDEP) 330 USB_DWC2_GET_FIELD_DEFINE(gnptxfsiz_nptxfstaddr, GNPTXFSIZ_NPTXFSTADDR) 331 USB_DWC2_SET_FIELD_DEFINE(gnptxfsiz_nptxfdep, GNPTXFSIZ_NPTXFDEP) 332 USB_DWC2_SET_FIELD_DEFINE(gnptxfsiz_nptxfstaddr, GNPTXFSIZ_NPTXFSTADDR) 333 334 /* Application (vendor) general purpose registers */ 335 #define USB_DWC2_GGPIO 0x0038UL 336 #define USB_DWC2_GGPIO_STM32_VBDEN_POS 21UL 337 #define USB_DWC2_GGPIO_STM32_VBDEN BIT(USB_DWC2_GGPIO_STM32_VBDEN_POS) 338 #define USB_DWC2_GGPIO_STM32_PWRDWN_POS 16UL 339 #define USB_DWC2_GGPIO_STM32_PWRDWN BIT(USB_DWC2_GGPIO_STM32_PWRDWN_POS) 340 341 /* GSNPSID register */ 342 #define USB_DWC2_GSNPSID_REV_5_00A 0x4F54500AUL 343 344 /* GHWCFG1 register */ 345 #define USB_DWC2_GHWCFG1 0x0044UL 346 #define USB_DWC2_GHWCFG1_EPDIR_POS(i) (i * 2) 347 #define USB_DWC2_GHWCFG1_EPDIR_MASK(i) (0x3UL << USB_DWC2_GHWCFG1_EPDIR_POS(i)) 348 #define USB_DWC2_GHWCFG1_EPDIR_OUT 2 349 #define USB_DWC2_GHWCFG1_EPDIR_IN 1 350 #define USB_DWC2_GHWCFG1_EPDIR_BDIR 0 351 352 USB_DWC2_GET_FIELD_AND_IDX_DEFINE(ghwcfg1_epdir, GHWCFG1_EPDIR) 353 354 /* GHWCFG2 register */ 355 #define USB_DWC2_GHWCFG2 0x0048UL 356 #define USB_DWC2_GHWCFG2_TKNQDEPTH_POS 26UL 357 #define USB_DWC2_GHWCFG2_TKNQDEPTH_MASK (0x1FUL << USB_DWC2_GHWCFG2_TKNQDEPTH_POS) 358 #define USB_DWC2_GHWCFG2_PTXQDEPTH_POS 24UL 359 #define USB_DWC2_GHWCFG2_PTXQDEPTH_MASK (0x3UL << USB_DWC2_GHWCFG2_PTXQDEPTH_POS) 360 #define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE16 3 361 #define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE8 2 362 #define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE4 1 363 #define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE2 0 364 #define USB_DWC2_GHWCFG2_NPTXQDEPTH_POS 22UL 365 #define USB_DWC2_GHWCFG2_NPTXQDEPTH_MASK (0x3UL << USB_DWC2_GHWCFG2_NPTXQDEPTH_POS) 366 #define USB_DWC2_GHWCFG2_NPTXQDEPTH_EIGHT 2 367 #define USB_DWC2_GHWCFG2_NPTXQDEPTH_FOUR 1 368 #define USB_DWC2_GHWCFG2_NPTXQDEPTH_TWO 0 369 #define USB_DWC2_GHWCFG2_MULTIPROCINTRPT_POS 20UL 370 #define USB_DWC2_GHWCFG2_MULTIPROCINTRPT BIT(USB_DWC2_GHWCFG2_MULTIPROCINTRPT_POS) 371 #define USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS 19UL 372 #define USB_DWC2_GHWCFG2_DYNFIFOSIZING BIT(USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS) 373 #define USB_DWC2_GHWCFG2_PERIOSUPPORT_POS 18UL 374 #define USB_DWC2_GHWCFG2_PERIOSUPPORT BIT(USB_DWC2_GHWCFG2_PERIOSUPPORT_POS) 375 #define USB_DWC2_GHWCFG2_NUMHSTCHNL_POS 14UL 376 #define USB_DWC2_GHWCFG2_NUMHSTCHNL_MASK (0xFUL << USB_DWC2_GHWCFG2_NUMHSTCHNL_POS) 377 #define USB_DWC2_GHWCFG2_NUMDEVEPS_POS 10UL 378 #define USB_DWC2_GHWCFG2_NUMDEVEPS_MASK (0xFUL << USB_DWC2_GHWCFG2_NUMDEVEPS_POS) 379 #define USB_DWC2_GHWCFG2_FSPHYTYPE_POS 8UL 380 #define USB_DWC2_GHWCFG2_FSPHYTYPE_MASK (0x3UL << USB_DWC2_GHWCFG2_FSPHYTYPE_POS) 381 #define USB_DWC2_GHWCFG2_FSPHYTYPE_FSPLUSULPI 3 382 #define USB_DWC2_GHWCFG2_FSPHYTYPE_FSPLUSUTMI 2 383 #define USB_DWC2_GHWCFG2_FSPHYTYPE_FS 1 384 #define USB_DWC2_GHWCFG2_FSPHYTYPE_NO_FS 0 385 #define USB_DWC2_GHWCFG2_HSPHYTYPE_POS 6UL 386 #define USB_DWC2_GHWCFG2_HSPHYTYPE_MASK (0x3UL << USB_DWC2_GHWCFG2_HSPHYTYPE_POS) 387 #define USB_DWC2_GHWCFG2_HSPHYTYPE_UTMIPLUSULPI 3 388 #define USB_DWC2_GHWCFG2_HSPHYTYPE_ULPI 2 389 #define USB_DWC2_GHWCFG2_HSPHYTYPE_UTMIPLUS 1 390 #define USB_DWC2_GHWCFG2_HSPHYTYPE_NO_HS 0 391 #define USB_DWC2_GHWCFG2_SINGPNT_POS 5UL 392 #define USB_DWC2_GHWCFG2_SINGPNT BIT(USB_DWC2_GHWCFG2_SINGPNT_POS) 393 #define USB_DWC2_GHWCFG2_OTGARCH_POS 3UL 394 #define USB_DWC2_GHWCFG2_OTGARCH_MASK (0x3UL << USB_DWC2_GHWCFG2_OTGARCH_POS) 395 #define USB_DWC2_GHWCFG2_OTGARCH_INTERNALDMA 2 396 #define USB_DWC2_GHWCFG2_OTGARCH_EXTERNALDMA 1 397 #define USB_DWC2_GHWCFG2_OTGARCH_SLAVEMODE 0 398 #define USB_DWC2_GHWCFG2_OTGMODE_POS 0UL 399 #define USB_DWC2_GHWCFG2_OTGMODE_MASK (0x7UL << USB_DWC2_GHWCFG2_OTGMODE_POS) 400 #define USB_DWC2_GHWCFG2_OTGMODE_NONOTGH 6 401 #define USB_DWC2_GHWCFG2_OTGMODE_SRPCAPH 5 402 #define USB_DWC2_GHWCFG2_OTGMODE_NONOTGD 4 403 #define USB_DWC2_GHWCFG2_OTGMODE_SRPCAPD 3 404 #define USB_DWC2_GHWCFG2_OTGMODE_NHNPNSRP 2 405 #define USB_DWC2_GHWCFG2_OTGMODE_SRPOTG 1 406 #define USB_DWC2_GHWCFG2_OTGMODE_HNPSRP 0 407 408 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_tknqdepth, GHWCFG2_TKNQDEPTH) 409 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_ptxqdepth, GHWCFG2_PTXQDEPTH) 410 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_nptxqdepth, GHWCFG2_NPTXQDEPTH) 411 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_numhstchnl, GHWCFG2_NUMHSTCHNL) 412 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_numdeveps, GHWCFG2_NUMDEVEPS) 413 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_fsphytype, GHWCFG2_FSPHYTYPE) 414 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_hsphytype, GHWCFG2_HSPHYTYPE) 415 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_otgarch, GHWCFG2_OTGARCH) 416 USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_otgmode, GHWCFG2_OTGMODE) 417 418 /* GHWCFG3 register */ 419 #define USB_DWC2_GHWCFG3 0x004CUL 420 #define USB_DWC2_GHWCFG3_DFIFODEPTH_POS 16UL 421 #define USB_DWC2_GHWCFG3_DFIFODEPTH_MASK (0xFFFFUL << USB_DWC2_GHWCFG3_DFIFODEPTH_POS) 422 #define USB_DWC2_GHWCFG3_LPMMODE_POS 15UL 423 #define USB_DWC2_GHWCFG3_LPMMODE BIT(USB_DWC2_GHWCFG3_LPMMODE_POS) 424 #define USB_DWC2_GHWCFG3_BCSUPPORT_POS 14UL 425 #define USB_DWC2_GHWCFG3_BCSUPPORT BIT(USB_DWC2_GHWCFG3_BCSUPPORT_POS) 426 #define USB_DWC2_GHWCFG3_HSICMODE_POS 13UL 427 #define USB_DWC2_GHWCFG3_HSICMODE BIT(USB_DWC2_GHWCFG3_HSICMODE_POS) 428 #define USB_DWC2_GHWCFG3_ADPSUPPORT_POS 12UL 429 #define USB_DWC2_GHWCFG3_ADPSUPPORT BIT(USB_DWC2_GHWCFG3_ADPSUPPORT_POS) 430 #define USB_DWC2_GHWCFG3_RSTTYPE_POS 11UL 431 #define USB_DWC2_GHWCFG3_RSTTYPE BIT(USB_DWC2_GHWCFG3_RSTTYPE_POS) 432 #define USB_DWC2_GHWCFG3_OPTFEATURE_POS 10UL 433 #define USB_DWC2_GHWCFG3_OPTFEATURE BIT(USB_DWC2_GHWCFG3_OPTFEATURE_POS) 434 #define USB_DWC2_GHWCFG3_VNDCTLSUPT_POS 9UL 435 #define USB_DWC2_GHWCFG3_VNDCTLSUPT BIT(USB_DWC2_GHWCFG3_VNDCTLSUPT_POS) 436 #define USB_DWC2_GHWCFG3_I2CINTSEL_POS 8UL 437 #define USB_DWC2_GHWCFG3_I2CINTSEL BIT(USB_DWC2_GHWCFG3_I2CINTSEL) 438 #define USB_DWC2_GHWCFG3_OTGEN_POS 7UL 439 #define USB_DWC2_GHWCFG3_OTGEN BIT(USB_DWC2_GHWCFG3_OTGEN_POS) 440 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_POS 4UL 441 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_MASK (0x7UL << USB_DWC2_GHWCFG3_PKTSIZEWIDTH_POS) 442 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS10 6U 443 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS9 5U 444 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS8 4U 445 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS7 3U 446 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS6 2U 447 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS5 1U 448 #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS4 0U 449 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_POS 0UL 450 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_MASK (0xFUL << USB_DWC2_GHWCFG3_XFERSIZEWIDTH_POS) 451 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH19 8U 452 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH18 7U 453 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH17 6U 454 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH16 5U 455 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH15 4U 456 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH14 3U 457 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH13 2U 458 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH12 1U 459 #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH11 0U 460 461 #define GHWCFG3_PKTCOUNT(pktsizewidth) BIT_MASK(pktsizewidth + 4) 462 #define GHWCFG3_XFERSIZE(xfersizewidth) BIT_MASK(xfersizewidth + 11) 463 464 USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_dfifodepth, GHWCFG3_DFIFODEPTH) 465 USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_pktsizewidth, GHWCFG3_PKTSIZEWIDTH) 466 USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_xfersizewidth, GHWCFG3_XFERSIZEWIDTH) 467 468 /* GHWCFG4 register */ 469 #define USB_DWC2_GHWCFG4 0x0050UL 470 #define USB_DWC2_GHWCFG4_DESCDMA_POS 31UL 471 #define USB_DWC2_GHWCFG4_DESCDMA BIT(USB_DWC2_GHWCFG4_DESCDMA_POS) 472 #define USB_DWC2_GHWCFG4_DESCDMAENABLED_POS 30UL 473 #define USB_DWC2_GHWCFG4_DESCDMAENABLED BIT(USB_DWC2_GHWCFG4_DESCDMAENABLED_POS) 474 #define USB_DWC2_GHWCFG4_INEPS_POS 26UL 475 #define USB_DWC2_GHWCFG4_INEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_INEPS_POS) 476 #define USB_DWC2_GHWCFG4_DEDFIFOMODE_POS 25UL 477 #define USB_DWC2_GHWCFG4_DEDFIFOMODE BIT(USB_DWC2_GHWCFG4_DEDFIFOMODE_POS) 478 #define USB_DWC2_GHWCFG4_SESSENDFLTR_POS 24UL 479 #define USB_DWC2_GHWCFG4_SESSENDFLTR BIT(USB_DWC2_GHWCFG4_SESSENDFLTR_POS) 480 #define USB_DWC2_GHWCFG4_BVALIDFLTR_POS 23UL 481 #define USB_DWC2_GHWCFG4_BVALIDFLTR BIT(USB_DWC2_GHWCFG4_BVALIDFLTR_POS) 482 #define USB_DWC2_GHWCFG4_AVALIDFLTR_POS 22UL 483 #define USB_DWC2_GHWCFG4_AVALIDFLTR BIT(USB_DWC2_GHWCFG4_AVALIDFLTR_POS) 484 #define USB_DWC2_GHWCFG4_VBUSVALIDFLTR_POS 21UL 485 #define USB_DWC2_GHWCFG4_VBUSVALIDFLTR BIT(USB_DWC2_GHWCFG4_VBUSVALIDFLTR_POS) 486 #define USB_DWC2_GHWCFG4_IDDGFLTR_POS 20UL 487 #define USB_DWC2_GHWCFG4_IDDGFLTR BIT(USB_DWC2_GHWCFG4_IDDGFLTR_POS) 488 #define USB_DWC2_GHWCFG4_NUMCTLEPS_POS 16UL 489 #define USB_DWC2_GHWCFG4_NUMCTLEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_NUMCTLEPS_POS) 490 #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS 14UL 491 #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_MASK (0x3UL << USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS) 492 #define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT_POS 13UL 493 #define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT BIT(USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT_POS) 494 #define USB_DWC2_GHWCFG4_ACGSUPT_POS 12UL 495 #define USB_DWC2_GHWCFG4_ACGSUPT BIT(USB_DWC2_GHWCFG4_ACGSUPT_POS) 496 #define USB_DWC2_GHWCFG4_IPGISOCSUPT_POS 11UL 497 #define USB_DWC2_GHWCFG4_IPGISOCSUPT BIT(USB_DWC2_GHWCFG4_IPGISOCSUPT_POS) 498 #define USB_DWC2_GHWCFG4_SERVINTFLOW_POS 10UL 499 #define USB_DWC2_GHWCFG4_SERVINTFLOW BIT(USB_DWC2_GHWCFG4_SERVINTFLOW_POS) 500 #define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1_POS 9UL 501 #define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1 BIT(USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1_POS) 502 #define USB_DWC2_GHWCFG4_EXT_HIBERNATION_POS 7UL 503 #define USB_DWC2_GHWCFG4_EXT_HIBERNATION BIT(USB_DWC2_GHWCFG4_EXT_HIBERNATION_POS) 504 #define USB_DWC2_GHWCFG4_HIBERNATION_POS 6UL 505 #define USB_DWC2_GHWCFG4_HIBERNATION BIT(USB_DWC2_GHWCFG4_HIBERNATION_POS) 506 #define USB_DWC2_GHWCFG4_AHBFREQ_POS 5UL 507 #define USB_DWC2_GHWCFG4_AHBFREQ BIT(USB_DWC2_GHWCFG4_AHBFREQ_POS) 508 #define USB_DWC2_GHWCFG4_PARTIALPWRDN_POS 4UL 509 #define USB_DWC2_GHWCFG4_PARTIALPWRDN BIT(USB_DWC2_GHWCFG4_PARTIALPWRDN_POS) 510 #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS 0UL 511 #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS) 512 513 USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_ineps, GHWCFG4_INEPS) 514 USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numctleps, GHWCFG4_NUMCTLEPS) 515 USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_phydatawidth, GHWCFG4_PHYDATAWIDTH) 516 USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numdevperioeps, GHWCFG4_NUMDEVPERIOEPS) 517 518 /* LPM Config Register */ 519 #define USB_DWC2_GLPMCFG 0x0054UL 520 #define USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS_POS 29UL 521 #define USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS BIT(USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS_POS) 522 #define USB_DWC2_GLPMCFG_LPM_ENBESL_POS 28UL 523 #define USB_DWC2_GLPMCFG_LPM_ENBESL BIT(USB_DWC2_GLPMCFG_LPM_ENBESL_POS) 524 #define USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_POS 25UL 525 #define USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_MASK (0x7UL << USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_POS) 526 #define USB_DWC2_GLPMCFG_SNDLPM_POS 24UL 527 #define USB_DWC2_GLPMCFG_SNDLPM BIT(USB_DWC2_GLPMCFG_SNDLPM_POS) 528 /* Host mode LPM Retry Count and LPM Channel Index */ 529 #define USB_DWC2_GLPMCFG_LPM_RETRY_CNT_POS 21UL 530 #define USB_DWC2_GLPMCFG_LPM_RETRY_CNT_MASK (0x7UL << USB_DWC2_GLPMCFG_LPM_RETRY_CNT_POS) 531 #define USB_DWC2_GLPMCFG_LPM_CHNL_INDX_POS 17UL 532 #define USB_DWC2_GLPMCFG_LPM_CHNL_INDX_MASK (0xFUL << USB_DWC2_GLPMCFG_LPM_CHNL_INDX_POS) 533 /* Device mode LPM Accept Control */ 534 #define USB_DWC2_GLPMCFG_LPM_ACK_BULK_POS 23UL 535 #define USB_DWC2_GLPMCFG_LPM_ACK_BULK BIT(USB_DWC2_GLPMCFG_LPM_ACK_BULK_POS) 536 #define USB_DWC2_GLPMCFG_LPM_ACK_ISO_POS 22UL 537 #define USB_DWC2_GLPMCFG_LPM_ACK_ISO BIT(USB_DWC2_GLPMCFG_LPM_ACK_ISO_POS) 538 #define USB_DWC2_GLPMCFG_LPM_NYET_CTRL_POS 21UL 539 #define USB_DWC2_GLPMCFG_LPM_NYET_CTRL BIT(USB_DWC2_GLPMCFG_LPM_NYET_CTRL_POS) 540 #define USB_DWC2_GLPMCFG_LPM_ACK_INTR_POS 20UL 541 #define USB_DWC2_GLPMCFG_LPM_ACK_INTR BIT(USB_DWC2_GLPMCFG_LPM_ACK_INTR_POS) 542 #define USB_DWC2_GLPMCFG_L1RESUMEOK_POS 16UL 543 #define USB_DWC2_GLPMCFG_L1RESUMEOK BIT(USB_DWC2_GLPMCFG_L1RESUMEOK_POS) 544 #define USB_DWC2_GLPMCFG_SLPSTS_POS 15UL 545 #define USB_DWC2_GLPMCFG_SLPSTS BIT(USB_DWC2_GLPMCFG_SLPSTS_POS) 546 #define USB_DWC2_GLPMCFG_COREL1RES_POS 13UL 547 #define USB_DWC2_GLPMCFG_COREL1RES_MASK (0x3UL << USB_DWC2_GLPMCFG_COREL1RES_POS) 548 #define USB_DWC2_GLPMCFG_COREL1RES_ERROR 0 549 #define USB_DWC2_GLPMCFG_COREL1RES_STALL 1 550 #define USB_DWC2_GLPMCFG_COREL1RES_NYET 2 551 #define USB_DWC2_GLPMCFG_COREL1RES_ACK 3 552 #define USB_DWC2_GLPMCFG_HIRD_THRES_POS 8UL 553 #define USB_DWC2_GLPMCFG_HIRD_THRES_MASK (0x1FUL << USB_DWC2_GLPMCFG_HIRD_THRES_POS) 554 #define USB_DWC2_GLPMCFG_ENBLSLPM_POS 7UL 555 #define USB_DWC2_GLPMCFG_ENBLSLPM BIT(USB_DWC2_GLPMCFG_ENBLSLPM_POS) 556 #define USB_DWC2_GLPMCFG_BREMOTEWAKE_POS 6UL 557 #define USB_DWC2_GLPMCFG_BREMOTEWAKE BIT(USB_DWC2_GLPMCFG_BREMOTEWAKE_POS) 558 #define USB_DWC2_GLPMCFG_HIRD_POS 2UL 559 #define USB_DWC2_GLPMCFG_HIRD_MASK (0xFUL << USB_DWC2_GLPMCFG_HIRD_POS) 560 #define USB_DWC2_GLPMCFG_APPL1RES_POS 1UL 561 #define USB_DWC2_GLPMCFG_APPL1RES BIT(USB_DWC2_GLPMCFG_APPL1RES_POS) 562 #define USB_DWC2_GLPMCFG_LPMCAP_POS 0UL 563 #define USB_DWC2_GLPMCFG_LPMCAP BIT(USB_DWC2_GLPMCFG_LPMCAP_POS) 564 565 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_retrycnt_sts, GLPMCFG_LPM_RETRYCNT_STS) 566 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_retry_cnt, GLPMCFG_LPM_RETRY_CNT) 567 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_chnl_indx, GLPMCFG_LPM_CHNL_INDX) 568 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_corel1res, GLPMCFG_COREL1RES) 569 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_hird_thres, GLPMCFG_HIRD_THRES) 570 USB_DWC2_GET_FIELD_DEFINE(glpmcfg_hird, GLPMCFG_HIRD) 571 USB_DWC2_SET_FIELD_DEFINE(glpmcfg_lpm_retry_cnt, GLPMCFG_LPM_RETRY_CNT) 572 USB_DWC2_SET_FIELD_DEFINE(glpmcfg_lpm_chnl_indx, GLPMCFG_LPM_CHNL_INDX) 573 USB_DWC2_SET_FIELD_DEFINE(glpmcfg_hird_thres, GLPMCFG_HIRD_THRES) 574 USB_DWC2_SET_FIELD_DEFINE(glpmcfg_hird, GLPMCFG_HIRD) 575 576 /* Global Power Down Register */ 577 #define USB_DWC2_GPWRDN 0x0058UL 578 #define USB_DWC2_GPWRDN_MULTVALIDBC_POS 24UL 579 #define USB_DWC2_GPWRDN_MULTVALIDBC_MASK (0x1FUL << USB_DWC2_GPWRDN_MULTVALIDBC_POS) 580 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_0 0 581 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_C 1 582 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_B 2 583 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_A 4 584 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_GND 8 585 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_A_GND 12 586 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_FLOAT 16 587 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_C_FLOAT 17 588 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_B_FLOAT 18 589 #define USB_DWC2_GPWRDN_MULTVALIDBC_RID_1 31 590 #define USB_DWC2_GPWRDN_BSESSVLD_POS 22UL 591 #define USB_DWC2_GPWRDN_BSESSVLD BIT(USB_DWC2_GPWRDN_BSESSVLD_POS) 592 #define USB_DWC2_GPWRDN_IDDIG_POS 21UL 593 #define USB_DWC2_GPWRDN_IDDIG BIT(USB_DWC2_GPWRDN_IDDIG_POS) 594 #define USB_DWC2_GPWRDN_LINESTATE_POS 19UL 595 #define USB_DWC2_GPWRDN_LINESTATE_MASK (0x3UL << USB_DWC2_GPWRDN_LINESTATE_POS) 596 #define USB_DWC2_GPWRDN_LINESTATE_DM0DP0 0 597 #define USB_DWC2_GPWRDN_LINESTATE_DM0DP1 1 598 #define USB_DWC2_GPWRDN_LINESTATE_DM1DP0 2 599 #define USB_DWC2_GPWRDN_LINESTATE_NOT_DEFINED 3 600 #define USB_DWC2_GPWRDN_STSCHNGINTMSK_POS 18UL 601 #define USB_DWC2_GPWRDN_STSCHNGINTMSK BIT(USB_DWC2_GPWRDN_STSCHNGINTMSK_POS) 602 #define USB_DWC2_GPWRDN_STSCHNGINT_POS 17UL 603 #define USB_DWC2_GPWRDN_STSCHNGINT BIT(USB_DWC2_GPWRDN_STSCHNGINT_POS) 604 #define USB_DWC2_GPWRDN_SRPDETECTMSK_POS 16UL 605 #define USB_DWC2_GPWRDN_SRPDETECTMSK BIT(USB_DWC2_GPWRDN_SRPDETECTMSK_POS) 606 #define USB_DWC2_GPWRDN_SRPDETECT_POS 15UL 607 #define USB_DWC2_GPWRDN_SRPDETECT BIT(USB_DWC2_GPWRDN_SRPDETECT_POS) 608 #define USB_DWC2_GPWRDN_CONNDETMSK_POS 14UL 609 #define USB_DWC2_GPWRDN_CONNDETMSK BIT(USB_DWC2_GPWRDN_CONNDETMSK_POS) 610 #define USB_DWC2_GPWRDN_CONNECTDET_POS 13UL 611 #define USB_DWC2_GPWRDN_CONNECTDET BIT(USB_DWC2_GPWRDN_CONNECTDET_POS) 612 #define USB_DWC2_GPWRDN_DISCONNECTDETECTMSK_POS 12UL 613 #define USB_DWC2_GPWRDN_DISCONNECTDETECTMSK BIT(USB_DWC2_GPWRDN_DISCONNECTDETECTMSK_POS) 614 #define USB_DWC2_GPWRDN_DISCONNECTDETECT_POS 11UL 615 #define USB_DWC2_GPWRDN_DISCONNECTDETECT BIT(USB_DWC2_GPWRDN_DISCONNECTDETECT_POS) 616 #define USB_DWC2_GPWRDN_RESETDETMSK_POS 10UL 617 #define USB_DWC2_GPWRDN_RESETDETMSK BIT(USB_DWC2_GPWRDN_RESETDETMSK_POS) 618 #define USB_DWC2_GPWRDN_RESETDETECTED_POS 9UL 619 #define USB_DWC2_GPWRDN_RESETDETECTED BIT(USB_DWC2_GPWRDN_RESETDETECTED_POS) 620 #define USB_DWC2_GPWRDN_LINESTAGECHANGEMSK_POS 8UL 621 #define USB_DWC2_GPWRDN_LINESTAGECHANGEMSK BIT(USB_DWC2_GPWRDN_LINESTAGECHANGEMSK_POS) 622 #define USB_DWC2_GPWRDN_LNSTSCHNG_POS 7UL 623 #define USB_DWC2_GPWRDN_LNSTSCHNG BIT(USB_DWC2_GPWRDN_LNSTSCHNG_POS) 624 #define USB_DWC2_GPWRDN_DISABLEVBUS_POS 6UL 625 #define USB_DWC2_GPWRDN_DISABLEVBUS BIT(USB_DWC2_GPWRDN_DISABLEVBUS_POS) 626 #define USB_DWC2_GPWRDN_PWRDNSWTCH_POS 5UL 627 #define USB_DWC2_GPWRDN_PWRDNSWTCH BIT(USB_DWC2_GPWRDN_PWRDNSWTCH_POS) 628 #define USB_DWC2_GPWRDN_PWRDNRST_N_POS 4UL 629 #define USB_DWC2_GPWRDN_PWRDNRST_N BIT(USB_DWC2_GPWRDN_PWRDNRST_N_POS) 630 #define USB_DWC2_GPWRDN_PWRDNCLMP_POS 3UL 631 #define USB_DWC2_GPWRDN_PWRDNCLMP BIT(USB_DWC2_GPWRDN_PWRDNCLMP_POS) 632 #define USB_DWC2_GPWRDN_RESTORE_POS 2UL 633 #define USB_DWC2_GPWRDN_RESTORE BIT(USB_DWC2_GPWRDN_RESTORE_POS) 634 #define USB_DWC2_GPWRDN_PMUACTV_POS 1UL 635 #define USB_DWC2_GPWRDN_PMUACTV BIT(USB_DWC2_GPWRDN_PMUACTV_POS) 636 #define USB_DWC2_GPWRDN_PMUINTSEL_POS 0UL 637 #define USB_DWC2_GPWRDN_PMUINTSEL BIT(USB_DWC2_GPWRDN_PMUINTSEL_POS) 638 639 USB_DWC2_GET_FIELD_DEFINE(gpwrdn_multvalidbc, GPWRDN_MULTVALIDBC) 640 USB_DWC2_GET_FIELD_DEFINE(gpwrdn_linestate, GPWRDN_LINESTATE) 641 642 /* GDFIFOCFG register */ 643 #define USB_DWC2_GDFIFOCFG 0x005CUL 644 #define USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_POS 16UL 645 #define USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_MASK (0xFFFFUL << USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_POS) 646 #define USB_DWC2_GDFIFOCFG_GDFIFOCFG_POS 0UL 647 #define USB_DWC2_GDFIFOCFG_GDFIFOCFG_MASK (0xFFFFUL << USB_DWC2_GDFIFOCFG_GDFIFOCFG_POS) 648 649 USB_DWC2_GET_FIELD_DEFINE(gdfifocfg_epinfobaseaddr, GDFIFOCFG_EPINFOBASEADDR) 650 USB_DWC2_GET_FIELD_DEFINE(gdfifocfg_gdfifocfg, GDFIFOCFG_GDFIFOCFG) 651 USB_DWC2_SET_FIELD_DEFINE(gdfifocfg_epinfobaseaddr, GDFIFOCFG_EPINFOBASEADDR) 652 USB_DWC2_SET_FIELD_DEFINE(gdfifocfg_gdfifocfg, GDFIFOCFG_GDFIFOCFG) 653 654 /* Device IN endpoint transmit FIFO size register */ 655 #define USB_DWC2_DIEPTXF1 0x0104UL 656 #define USB_DWC2_DIEPTXF_INEPNTXFDEP_POS 16UL 657 #define USB_DWC2_DIEPTXF_INEPNTXFDEP_MASK (0xFFFFUL << USB_DWC2_DIEPTXF_INEPNTXFDEP_POS) 658 #define USB_DWC2_DIEPTXF_INEPNTXFSTADDR_POS 0UL 659 #define USB_DWC2_DIEPTXF_INEPNTXFSTADDR_MASK (0xFFFFUL << USB_DWC2_DIEPTXF_INEPNTXFSTADDR_POS) 660 661 USB_DWC2_GET_FIELD_DEFINE(dieptxf_inepntxfdep, DIEPTXF_INEPNTXFDEP) 662 USB_DWC2_GET_FIELD_DEFINE(dieptxf_inepntxfstaddr, DIEPTXF_INEPNTXFSTADDR) 663 USB_DWC2_SET_FIELD_DEFINE(dieptxf_inepntxfdep, DIEPTXF_INEPNTXFDEP) 664 USB_DWC2_SET_FIELD_DEFINE(dieptxf_inepntxfstaddr, DIEPTXF_INEPNTXFSTADDR) 665 666 /* Device configuration registers */ 667 #define USB_DWC2_DCFG 0x0800UL 668 #define USB_DWC2_DCFG_RESVALID_POS 26UL 669 #define USB_DWC2_DCFG_RESVALID_MASK (0x3FUL << USB_DWC2_DCFG_RESVALID_POS) 670 #define USB_DWC2_DCFG_PERSCHINTVL_POS 24UL 671 #define USB_DWC2_DCFG_PERSCHINTVL_MASK (0x3UL << USB_DWC2_DCFG_PERSCHINTVL_POS) 672 #define USB_DWC2_DCFG_PERSCHINTVL_MF25 0 673 #define USB_DWC2_DCFG_PERSCHINTVL_MF50 1 674 #define USB_DWC2_DCFG_PERSCHINTVL_MF75 2 675 #define USB_DWC2_DCFG_PERSCHINTVL_RESERVED 3 676 #define USB_DWC2_DCFG_DESCDMA_POS 23UL 677 #define USB_DWC2_DCFG_DESCDMA BIT(USB_DWC2_DCFG_DESCDMA_POS) 678 #define USB_DWC2_DCFG_EPMISCNT_POS 18UL 679 #define USB_DWC2_DCFG_EPMISCNT_MASK (0x1FUL << USB_DWC2_DCFG_EPMISCNT_POS) 680 #define USB_DWC2_DCFG_IPGISOCSUPT_POS 17UL 681 #define USB_DWC2_DCFG_IPGISOCSUPT BIT(USB_DWC2_DCFG_IPGISOCSUPT_POS) 682 #define USB_DWC2_DCFG_ERRATICINTMSK_POS 15UL 683 #define USB_DWC2_DCFG_ERRATICINTMSK BIT(USB_DWC2_DCFG_ERRATICINTMSK_POS) 684 #define USB_DWC2_DCFG_XCVRDLY_POS 14UL 685 #define USB_DWC2_DCFG_XCVRDLY BIT(USB_DWC2_DCFG_XCVRDLY_POS) 686 #define USB_DWC2_DCFG_ENDEVOUTNAK_POS 13UL 687 #define USB_DWC2_DCFG_ENDEVOUTNAK BIT(USB_DWC2_DCFG_ENDEVOUTNAK_POS) 688 #define USB_DWC2_DCFG_PERFRINT_POS 11UL 689 #define USB_DWC2_DCFG_PERFRINT_MASK (0x3UL << USB_DWC2_DCFG_PERFRINT_POS) 690 #define USB_DWC2_DCFG_PERFRINT_EOPF80 0 691 #define USB_DWC2_DCFG_PERFRINT_EOPF85 1 692 #define USB_DWC2_DCFG_PERFRINT_EOPF90 2 693 #define USB_DWC2_DCFG_PERFRINT_EOPF95 3 694 #define USB_DWC2_DCFG_DEVADDR_POS 4UL 695 #define USB_DWC2_DCFG_DEVADDR_MASK (0x7FUL << USB_DWC2_DCFG_DEVADDR_POS) 696 #define USB_DWC2_DCFG_ENA32KHZSUSP_POS 3UL 697 #define USB_DWC2_DCFG_ENA32KHZSUSP BIT(USB_DWC2_DCFG_ENA32KHZSUSP_POS) 698 #define USB_DWC2_DCFG_NZSTSOUTHSHK_POS 2UL 699 #define USB_DWC2_DCFG_NZSTSOUTHSHK BIT(USB_DWC2_DCFG_NZSTSOUTHSHK_POS) 700 #define USB_DWC2_DCFG_DEVSPD_POS 0UL 701 #define USB_DWC2_DCFG_DEVSPD_MASK (0x03UL << USB_DWC2_DCFG_DEVSPD_POS) 702 #define USB_DWC2_DCFG_DEVSPD_USBHS20 0 703 #define USB_DWC2_DCFG_DEVSPD_USBFS20 1 704 #define USB_DWC2_DCFG_DEVSPD_USBLS116 2 705 #define USB_DWC2_DCFG_DEVSPD_USBFS1148 3 706 707 USB_DWC2_SET_FIELD_DEFINE(dcfg_resvalid, DCFG_RESVALID) 708 USB_DWC2_SET_FIELD_DEFINE(dcfg_perschintvl, DCFG_PERSCHINTVL) 709 USB_DWC2_SET_FIELD_DEFINE(dcfg_epmiscnt, DCFG_EPMISCNT) 710 USB_DWC2_SET_FIELD_DEFINE(dcfg_perfrint, DCFG_PERFRINT) 711 USB_DWC2_SET_FIELD_DEFINE(dcfg_devaddr, DCFG_DEVADDR) 712 USB_DWC2_SET_FIELD_DEFINE(dcfg_devspd, DCFG_DEVSPD) 713 USB_DWC2_GET_FIELD_DEFINE(dcfg_resvalid, DCFG_RESVALID) 714 USB_DWC2_GET_FIELD_DEFINE(dcfg_perschintvl, DCFG_PERSCHINTVL) 715 USB_DWC2_GET_FIELD_DEFINE(dcfg_epmiscnt, DCFG_EPMISCNT) 716 USB_DWC2_GET_FIELD_DEFINE(dcfg_perfrint, DCFG_PERFRINT) 717 USB_DWC2_GET_FIELD_DEFINE(dcfg_devaddr, DCFG_DEVADDR) 718 USB_DWC2_GET_FIELD_DEFINE(dcfg_devspd, DCFG_DEVSPD) 719 720 /* Device control register */ 721 #define USB_DWC2_DCTL 0x0804UL 722 #define USB_DWC2_DCTL_SERVINT_POS 19UL 723 #define USB_DWC2_DCTL_SERVINT BIT(USB_DWC2_DCTL_SERVINT_POS) 724 #define USB_DWC2_DCTL_DEEPSLEEPBESLREJECT_POS 18UL 725 #define USB_DWC2_DCTL_DEEPSLEEPBESLREJECT BIT(USB_DWC2_DCTL_DEEPSLEEPBESLREJECT_POS) 726 #define USB_DWC2_DCTL_NAKONBBLE_POS 16UL 727 #define USB_DWC2_DCTL_NAKONBBLE BIT(USB_DWC2_DCTL_NAKONBBLE_POS) 728 #define USB_DWC2_DCTL_IGNRFRMNUM_POS 15UL 729 #define USB_DWC2_DCTL_IGNRFRMNUM BIT(USB_DWC2_DCTL_IGNRFRMNUM_POS) 730 #define USB_DWC2_DCTL_PWRONPRGDONE_POS 11UL 731 #define USB_DWC2_DCTL_PWRONPRGDONE BIT(USB_DWC2_DCTL_PWRONPRGDONE_POS) 732 #define USB_DWC2_DCTL_CGOUTNAK_POS 10UL 733 #define USB_DWC2_DCTL_CGOUTNAK BIT(USB_DWC2_DCTL_CGOUTNAK_POS) 734 #define USB_DWC2_DCTL_SGOUTNAK_POS 9UL 735 #define USB_DWC2_DCTL_SGOUTNAK BIT(USB_DWC2_DCTL_SGOUTNAK_POS) 736 #define USB_DWC2_DCTL_CGNPINNAK_POS 8UL 737 #define USB_DWC2_DCTL_CGNPINNAK BIT(USB_DWC2_DCTL_CGNPINNAK_POS) 738 #define USB_DWC2_DCTL_SGNPINNAK_POS 7UL 739 #define USB_DWC2_DCTL_SGNPINNAK BIT(USB_DWC2_DCTL_SGNPINNAK_POS) 740 #define USB_DWC2_DCTL_TSTCTL_POS 4UL 741 #define USB_DWC2_DCTL_TSTCTL_MASK (0x7UL << USB_DWC2_DCTL_TSTCTL_POS) 742 #define USB_DWC2_DCTL_TSTCTL_TESTFE 5UL 743 #define USB_DWC2_DCTL_TSTCTL_TESTPM 4UL 744 #define USB_DWC2_DCTL_TSTCTL_TESTSN 3UL 745 #define USB_DWC2_DCTL_TSTCTL_TESTK 2UL 746 #define USB_DWC2_DCTL_TSTCTL_TESTJ 1UL 747 #define USB_DWC2_DCTL_TSTCTL_DISABLED 0UL 748 #define USB_DWC2_DCTL_GOUTNAKSTS_POS 3UL 749 #define USB_DWC2_DCTL_GOUTNAKSTS BIT(USB_DWC2_DCTL_GOUTNAKSTS_POS) 750 #define USB_DWC2_DCTL_GNPINNAKSTS_POS 2UL 751 #define USB_DWC2_DCTL_GNPINNAKSTS BIT(USB_DWC2_DCTL_GNPINNAKSTS_POS) 752 #define USB_DWC2_DCTL_SFTDISCON_POS 1UL 753 #define USB_DWC2_DCTL_SFTDISCON BIT(USB_DWC2_DCTL_SFTDISCON_POS) 754 #define USB_DWC2_DCTL_RMTWKUPSIG_POS 0UL 755 #define USB_DWC2_DCTL_RMTWKUPSIG BIT(USB_DWC2_DCTL_RMTWKUPSIG_POS) 756 757 USB_DWC2_GET_FIELD_DEFINE(dctl_tstctl, DCTL_TSTCTL) 758 USB_DWC2_SET_FIELD_DEFINE(dctl_tstctl, DCTL_TSTCTL) 759 760 /* Device status register */ 761 #define USB_DWC2_DSTS 0x0808UL 762 #define USB_DWC2_DSTS_DEVLNSTS_POS 22UL 763 #define USB_DWC2_DSTS_DEVLNSTS_MASK (0x3UL << USB_DWC2_DSTS_DEVLNSTS_POS) 764 #define USB_DWC2_DSTS_SOFFN_POS 8UL 765 #define USB_DWC2_DSTS_SOFFN_MASK (0x3FFFUL << USB_DWC2_DSTS_SOFFN_POS) 766 #define USB_DWC2_DSTS_ERRTICERR_POS 3UL 767 #define USB_DWC2_DSTS_ERRTICERR BIT(USB_DWC2_DSTS_ERRTICERR_POS) 768 #define USB_DWC2_DSTS_ENUMSPD_POS 1UL 769 #define USB_DWC2_DSTS_ENUMSPD_MASK (0x3UL << USB_DWC2_DSTS_ENUMSPD_POS) 770 #define USB_DWC2_DSTS_ENUMSPD_HS3060 0 771 #define USB_DWC2_DSTS_ENUMSPD_FS3060 1 772 #define USB_DWC2_DSTS_ENUMSPD_LS6 2 773 #define USB_DWC2_DSTS_ENUMSPD_FS48 3 774 #define USB_DWC2_DSTS_SUSPSTS_POS 0UL 775 #define USB_DWC2_DSTS_SUSPSTS BIT(USB_DWC2_DSTS_SUSPSTS_POS) 776 777 USB_DWC2_GET_FIELD_DEFINE(dsts_devlnsts, DSTS_DEVLNSTS) 778 USB_DWC2_GET_FIELD_DEFINE(dsts_soffn, DSTS_SOFFN) 779 USB_DWC2_GET_FIELD_DEFINE(dsts_enumspd, DSTS_ENUMSPD) 780 781 /* Device all endpoints interrupt registers */ 782 #define USB_DWC2_DAINT 0x0818UL 783 #define USB_DWC2_DAINTMSK 0x081CUL 784 #define USB_DWC2_DAINT_OUTEPINT(ep_num) BIT(16UL + ep_num) 785 #define USB_DWC2_DAINT_INEPINT(ep_num) BIT(ep_num) 786 787 /* Device threshold control register */ 788 #define USB_DWC2_DTHRCTL 0x0830UL 789 #define USB_DWC2_DTHRCTL_ARBPRKEN_POS 27UL 790 #define USB_DWC2_DTHRCTL_ARBPRKEN BIT(USB_DWC2_DTHRCTL_ARBPRKEN_POS) 791 #define USB_DWC2_DTHRCTL_RXTHRLEN_POS 17UL 792 #define USB_DWC2_DTHRCTL_RXTHRLEN_MASK (0x1FFUL << USB_DWC2_DTHRCTL_RXTHRLEN_POS) 793 #define USB_DWC2_DTHRCTL_RXTHREN_POS 16UL 794 #define USB_DWC2_DTHRCTL_RXTHREN BIT(USB_DWC2_DTHRCTL_RXTHREN_POS) 795 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_POS 11UL 796 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_MASK (0x3UL << USB_DWC2_DTHRCTL_AHBTHRRATIO_POS) 797 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESZERO 0 798 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESONE 1 799 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESTWO 2 800 #define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESTHREE 3 801 #define USB_DWC2_DTHRCTL_TXTHRLEN_POS 2UL 802 #define USB_DWC2_DTHRCTL_TXTHRLEN_MASK (0x1FFUL << USB_DWC2_DTHRCTL_TXTHRLEN_POS) 803 #define USB_DWC2_DTHRCTL_ISOTHREN_POS 1UL 804 #define USB_DWC2_DTHRCTL_ISOTHREN BIT(USB_DWC2_DTHRCTL_ISOTHREN_POS) 805 #define USB_DWC2_DTHRCTL_NONISOTHREN_POS 0UL 806 #define USB_DWC2_DTHRCTL_NONISOTHREN BIT(USB_DWC2_DTHRCTL_NONISOTHREN_POS) 807 808 USB_DWC2_GET_FIELD_DEFINE(dthrctl_rxthrlen, DTHRCTL_RXTHRLEN) 809 USB_DWC2_GET_FIELD_DEFINE(dthrctl_ahbthrratio, DTHRCTL_AHBTHRRATIO) 810 USB_DWC2_GET_FIELD_DEFINE(dthrctl_txthrlen, DTHRCTL_TXTHRLEN) 811 USB_DWC2_SET_FIELD_DEFINE(dthrctl_rxthrlen, DTHRCTL_RXTHRLEN) 812 USB_DWC2_SET_FIELD_DEFINE(dthrctl_ahbthrratio, DTHRCTL_AHBTHRRATIO) 813 USB_DWC2_SET_FIELD_DEFINE(dthrctl_txthrlen, DTHRCTL_TXTHRLEN) 814 815 /* 816 * Device IN/OUT endpoint control register 817 * IN endpoint offsets 0x0900 + (0x20 * n), n = 0 .. x, 818 * OUT endpoint offsets 0x0B00 + (0x20 * n), n = 0 .. x, 819 * 820 */ 821 #define USB_DWC2_DIEPCTL0 0x0900UL 822 #define USB_DWC2_DOEPCTL0 0x0B00UL 823 #define USB_DWC2_DEPCTL_EPENA_POS 31UL 824 #define USB_DWC2_DEPCTL_EPENA BIT(USB_DWC2_DEPCTL_EPENA_POS) 825 #define USB_DWC2_DEPCTL_EPDIS_POS 30UL 826 #define USB_DWC2_DEPCTL_EPDIS BIT(USB_DWC2_DEPCTL_EPDIS_POS) 827 #define USB_DWC2_DEPCTL_SETD1PID_POS 29UL 828 #define USB_DWC2_DEPCTL_SETD1PID BIT(USB_DWC2_DEPCTL_SETD1PID_POS) 829 #define USB_DWC2_DEPCTL_SETODDFR USB_DWC2_DEPCTL_SETD1PID 830 #define USB_DWC2_DEPCTL_SETD0PID_POS 28UL 831 #define USB_DWC2_DEPCTL_SETD0PID BIT(USB_DWC2_DEPCTL_SETD0PID_POS) 832 #define USB_DWC2_DEPCTL_SETEVENFR USB_DWC2_DEPCTL_SETD0PID 833 #define USB_DWC2_DEPCTL_SNAK_POS 27UL 834 #define USB_DWC2_DEPCTL_SNAK BIT(USB_DWC2_DEPCTL_SNAK_POS) 835 #define USB_DWC2_DEPCTL_CNAK_POS 26UL 836 #define USB_DWC2_DEPCTL_CNAK BIT(USB_DWC2_DEPCTL_CNAK_POS) 837 #define USB_DWC2_DEPCTL_TXFNUM_POS 22UL 838 #define USB_DWC2_DEPCTL_TXFNUM_MASK (0xFUL << USB_DWC2_DEPCTL_TXFNUM_POS) 839 #define USB_DWC2_DEPCTL_STALL_POS 21UL 840 #define USB_DWC2_DEPCTL_STALL BIT(USB_DWC2_DEPCTL_STALL_POS) 841 #define USB_DWC2_DEPCTL_EPTYPE_POS 18UL 842 #define USB_DWC2_DEPCTL_EPTYPE_MASK (0x3UL << USB_DWC2_DEPCTL_EPTYPE_POS) 843 #define USB_DWC2_DEPCTL_EPTYPE_INTERRUPT 3 844 #define USB_DWC2_DEPCTL_EPTYPE_BULK 2 845 #define USB_DWC2_DEPCTL_EPTYPE_ISO 1 846 #define USB_DWC2_DEPCTL_EPTYPE_CONTROL 0 847 #define USB_DWC2_DEPCTL_NAKSTS_POS 17UL 848 #define USB_DWC2_DEPCTL_NAKSTS BIT(USB_DWC2_DEPCTL_NAKSTS_POS) 849 #define USB_DWC2_DEPCTL_DPID_POS 16UL 850 #define USB_DWC2_DEPCTL_DPID BIT(USB_DWC2_DEPCTL_DPID_POS) 851 #define USB_DWC2_DEPCTL_USBACTEP_POS 15UL 852 #define USB_DWC2_DEPCTL_USBACTEP BIT(USB_DWC2_DEPCTL_USBACTEP_POS) 853 #define USB_DWC2_DEPCTL0_MPS_POS 0UL 854 #define USB_DWC2_DEPCTL0_MPS_MASK (0x3UL << USB_DWC2_DEPCTL0_MPS_POS) 855 #define USB_DWC2_DEPCTL0_MPS_8 3 856 #define USB_DWC2_DEPCTL0_MPS_16 2 857 #define USB_DWC2_DEPCTL0_MPS_32 1 858 #define USB_DWC2_DEPCTL0_MPS_64 0 859 #define USB_DWC2_DEPCTL_MPS_POS 0UL 860 #define USB_DWC2_DEPCTL_MPS_MASK (0x7FF << USB_DWC2_DEPCTL_MPS_POS) 861 862 USB_DWC2_GET_FIELD_DEFINE(depctl_txfnum, DEPCTL_TXFNUM) 863 USB_DWC2_SET_FIELD_DEFINE(depctl_txfnum, DEPCTL_TXFNUM) 864 USB_DWC2_GET_FIELD_DEFINE(depctl_eptype, DEPCTL_EPTYPE) 865 USB_DWC2_SET_FIELD_DEFINE(depctl_eptype, DEPCTL_EPTYPE) 866 USB_DWC2_GET_FIELD_DEFINE(depctl0_mps, DEPCTL0_MPS) 867 USB_DWC2_SET_FIELD_DEFINE(depctl0_mps, DEPCTL0_MPS) 868 USB_DWC2_GET_FIELD_DEFINE(depctl_mps, DEPCTL_MPS) 869 USB_DWC2_SET_FIELD_DEFINE(depctl_mps, DEPCTL_MPS) 870 871 /* 872 * Device IN endpoint interrupt register 873 * offsets 0x0908 + (0x20 * n), n = 0 .. x 874 */ 875 #define USB_DWC2_DIEPINT0 0x0908UL 876 #define USB_DWC2_DIEPINT_NYETINTRPT_POS 14UL 877 #define USB_DWC2_DIEPINT_NYETINTRPT BIT(USB_DWC2_DIEPINT_NYETINTRPT_POS) 878 #define USB_DWC2_DIEPINT_NAKINTRPT_POS 13UL 879 #define USB_DWC2_DIEPINT_NAKINTRPT BIT(USB_DWC2_DIEPINT_NAKINTRPT_POS) 880 #define USB_DWC2_DIEPINT_BBLEERR_POS 12UL 881 #define USB_DWC2_DIEPINT_BBLEERR BIT(USB_DWC2_DIEPINT_BBLEERR_POS) 882 #define USB_DWC2_DIEPINT_PKTDRPSTS_POS 11UL 883 #define USB_DWC2_DIEPINT_PKTDRPSTS BIT(USB_DWC2_DIEPINT_PKTDRPSTS_POS) 884 #define USB_DWC2_DIEPINT_BNAINTR_POS 9UL 885 #define USB_DWC2_DIEPINT_BNAINTR BIT(USB_DWC2_DIEPINT_BNAINTR_POS) 886 #define USB_DWC2_DIEPINT_TXFIFOUNDRN_POS 8UL 887 #define USB_DWC2_DIEPINT_TXFIFOUNDRN BIT(USB_DWC2_DIEPINT_TXFIFOUNDRN_POS) 888 #define USB_DWC2_DIEPINT_TXFEMP_POS 7UL 889 #define USB_DWC2_DIEPINT_TXFEMP BIT(USB_DWC2_DIEPINT_TXFEMP_POS) 890 #define USB_DWC2_DIEPINT_INEPNAKEFF_POS 6UL 891 #define USB_DWC2_DIEPINT_INEPNAKEFF BIT(USB_DWC2_DIEPINT_INEPNAKEFF_POS) 892 #define USB_DWC2_DIEPINT_INTKNEPMIS_POS 5UL 893 #define USB_DWC2_DIEPINT_INTKNEPMIS BIT(USB_DWC2_DIEPINT_INTKNEPMIS_POS) 894 #define USB_DWC2_DIEPINT_INTKNTXFEMP_POS 4UL 895 #define USB_DWC2_DIEPINT_INTKNTXFEMP BIT(USB_DWC2_DIEPINT_INTKNTXFEMP_POS) 896 #define USB_DWC2_DIEPINT_TIMEOUT_POS 3UL 897 #define USB_DWC2_DIEPINT_TIMEOUT BIT(USB_DWC2_DIEPINT_TIMEOUT_POS) 898 #define USB_DWC2_DIEPINT_AHBERR_POS 2UL 899 #define USB_DWC2_DIEPINT_AHBERR BIT(USB_DWC2_DIEPINT_AHBERR_POS) 900 #define USB_DWC2_DIEPINT_EPDISBLD_POS 1UL 901 #define USB_DWC2_DIEPINT_EPDISBLD BIT(USB_DWC2_DIEPINT_EPDISBLD_POS) 902 #define USB_DWC2_DIEPINT_XFERCOMPL_POS 0UL 903 #define USB_DWC2_DIEPINT_XFERCOMPL BIT(USB_DWC2_DIEPINT_XFERCOMPL_POS) 904 905 /* 906 * Device OUT endpoint interrupt register 907 * offsets 0x0B08 + (0x20 * n), n = 0 .. x 908 */ 909 #define USB_DWC2_DOEPINT0 0x0B08UL 910 #define USB_DWC2_DOEPINT_STUPPKTRCVD_POS 15UL 911 #define USB_DWC2_DOEPINT_STUPPKTRCVD BIT(USB_DWC2_DOEPINT_STUPPKTRCVD_POS) 912 #define USB_DWC2_DOEPINT_NYETINTRPT_POS 14UL 913 #define USB_DWC2_DOEPINT_NYETINTRPT BIT(USB_DWC2_DOEPINT_NYETINTRPT_POS) 914 #define USB_DWC2_DOEPINT_NAKINTRPT_POS 13UL 915 #define USB_DWC2_DOEPINT_NAKINTRPT BIT(USB_DWC2_DOEPINT_NAKINTRPT_POS) 916 #define USB_DWC2_DOEPINT_BBLEERR_POS 12UL 917 #define USB_DWC2_DOEPINT_BBLEERR BIT(USB_DWC2_DOEPINT_BBLEERR_POS) 918 #define USB_DWC2_DOEPINT_PKTDRPSTS_POS 11UL 919 #define USB_DWC2_DOEPINT_PKTDRPSTS BIT(USB_DWC2_DOEPINT_PKTDRPSTS_POS) 920 #define USB_DWC2_DOEPINT_BNAINTR_POS 9UL 921 #define USB_DWC2_DOEPINT_BNAINTR BIT(USB_DWC2_DOEPINT_BNAINTR_POS) 922 #define USB_DWC2_DOEPINT_OUTPKTERR_POS 8UL 923 #define USB_DWC2_DOEPINT_OUTPKTERR BIT(USB_DWC2_DOEPINT_OUTPKTERR_POS) 924 #define USB_DWC2_DOEPINT_BACK2BACKSETUP_POS 6UL 925 #define USB_DWC2_DOEPINT_BACK2BACKSETUP BIT(USB_DWC2_DOEPINT_BACK2BACKSETUP_POS) 926 #define USB_DWC2_DOEPINT_STSPHSERCVD_POS 5UL 927 #define USB_DWC2_DOEPINT_STSPHSERCVD BIT(USB_DWC2_DOEPINT_STSPHSERCVD_POS) 928 #define USB_DWC2_DOEPINT_OUTTKNEPDIS_POS 4UL 929 #define USB_DWC2_DOEPINT_OUTTKNEPDIS BIT(USB_DWC2_DOEPINT_OUTTKNEPDIS_POS) 930 #define USB_DWC2_DOEPINT_SETUP_POS 3UL 931 #define USB_DWC2_DOEPINT_SETUP BIT(USB_DWC2_DOEPINT_SETUP_POS) 932 #define USB_DWC2_DOEPINT_AHBERR_POS 2UL 933 #define USB_DWC2_DOEPINT_AHBERR BIT(USB_DWC2_DOEPINT_AHBERR_POS) 934 #define USB_DWC2_DOEPINT_EPDISBLD_POS 1UL 935 #define USB_DWC2_DOEPINT_EPDISBLD BIT(USB_DWC2_DOEPINT_EPDISBLD_POS) 936 #define USB_DWC2_DOEPINT_XFERCOMPL_POS 0UL 937 #define USB_DWC2_DOEPINT_XFERCOMPL BIT(USB_DWC2_DOEPINT_XFERCOMPL_POS) 938 939 /* Device IN control endpoint transfer size register */ 940 #define USB_DWC2_DIEPTSIZ0 0x0910UL 941 #define USB_DWC2_DIEPTSIZ0_PKTCNT_POS 19UL 942 #define USB_DWC2_DIEPTSIZ0_PKTCNT_MASK (0x3UL << USB_DWC2_DIEPTSIZ0_PKTCNT_POS) 943 #define USB_DWC2_DIEPTSIZ0_XFERSIZE_POS 0UL 944 #define USB_DWC2_DIEPTSIZ0_XFERSIZE_MASK 0x7FUL 945 946 USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_pktcnt, DIEPTSIZ0_PKTCNT) 947 USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_xfersize, DIEPTSIZ0_XFERSIZE) 948 949 /* Device OUT control endpoint transfer size register */ 950 #define USB_DWC2_DOEPTSIZ0 0x0B10UL 951 #define USB_DWC2_DOEPTSIZ0_SUPCNT_POS 29UL 952 #define USB_DWC2_DOEPTSIZ0_SUPCNT_MASK (0x3UL << USB_DWC2_DOEPTSIZ0_SUPCNT_POS) 953 #define USB_DWC2_DOEPTSIZ0_PKTCNT_POS 19UL 954 #define USB_DWC2_DOEPTSIZ0_PKTCNT_MASK (0x1UL << USB_DWC2_DOEPTSIZ0_PKTCNT_POS) 955 #define USB_DWC2_DOEPTSIZ0_XFERSIZE_POS 0UL 956 #define USB_DWC2_DOEPTSIZ0_XFERSIZE_MASK 0x7FUL 957 958 USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_supcnt, DOEPTSIZ0_SUPCNT) 959 USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_pktcnt, DOEPTSIZ0_PKTCNT) 960 USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_xfersize, DOEPTSIZ0_XFERSIZE) 961 962 /* 963 * Device IN endpoint transfer size register 964 * at offsets 0x0910 + (0x20 * n), n = 1 .. x 965 */ 966 #define USB_DWC2_DIEPTSIZN_MC_POS 29UL 967 #define USB_DWC2_DIEPTSIZN_MC_MASK (0x3UL << USB_DWC2_DIEPTSIZN_MC_POS) 968 #define USB_DWC2_DIEPTSIZN_PKTCNT_POS 19UL 969 #define USB_DWC2_DIEPTSIZN_PKTCNT_MASK (0x3FFUL << USB_DWC2_DIEPTSIZN_PKTCNT_POS) 970 #define USB_DWC2_DIEPTSIZN_XFERSIZE_POS 0UL 971 #define USB_DWC2_DIEPTSIZN_XFERSIZE_MASK 0x7FFFFUL 972 973 USB_DWC2_GET_FIELD_DEFINE(dieptsizn_mc, DIEPTSIZN_MC) 974 USB_DWC2_GET_FIELD_DEFINE(dieptsizn_pktcnt, DIEPTSIZN_PKTCNT) 975 USB_DWC2_GET_FIELD_DEFINE(dieptsizn_xfersize, DIEPTSIZN_XFERSIZE) 976 USB_DWC2_SET_FIELD_DEFINE(dieptsizn_mc, DIEPTSIZN_MC) 977 USB_DWC2_SET_FIELD_DEFINE(dieptsizn_pktcnt, DIEPTSIZN_PKTCNT) 978 USB_DWC2_SET_FIELD_DEFINE(dieptsizn_xfersize, DIEPTSIZN_XFERSIZE) 979 980 /* 981 * Device OUT endpoint transfer size register 982 * at offsets 0x0B10 + (0x20 * n), n = 1 .. x 983 */ 984 #define USB_DWC2_DOEPTSIZN_RXDPID_POS 29UL 985 #define USB_DWC2_DOEPTSIZN_RXDPID_MASK (0x3UL << USB_DWC2_DOEPTSIZN_RXDPID_POS) 986 #define USB_DWC2_DOEPTSIZN_RXDPID_MDATA 3 987 #define USB_DWC2_DOEPTSIZN_RXDPID_DATA1 2 988 #define USB_DWC2_DOEPTSIZN_RXDPID_DATA2 1 989 #define USB_DWC2_DOEPTSIZN_RXDPID_DATA0 0 990 #define USB_DWC2_DOEPTSIZN_PKTCNT_POS 19UL 991 #define USB_DWC2_DOEPTSIZN_PKTCNT_MASK (0x3FFUL << USB_DWC2_DOEPTSIZN_PKTCNT_POS) 992 #define USB_DWC2_DOEPTSIZN_XFERSIZE_POS 0UL 993 #define USB_DWC2_DOEPTSIZN_XFERSIZE_MASK 0x7FFFFUL 994 995 USB_DWC2_GET_FIELD_DEFINE(doeptsizn_rxdpid, DOEPTSIZN_RXDPID) 996 USB_DWC2_GET_FIELD_DEFINE(doeptsizn_pktcnt, DOEPTSIZN_PKTCNT) 997 USB_DWC2_GET_FIELD_DEFINE(doeptsizn_xfersize, DOEPTSIZN_XFERSIZE) 998 USB_DWC2_SET_FIELD_DEFINE(doeptsizn_pktcnt, DOEPTSIZN_PKTCNT) 999 USB_DWC2_SET_FIELD_DEFINE(doeptsizn_xfersize, DOEPTSIZN_XFERSIZE) 1000 1001 /* Power and Clock Gating Control Register */ 1002 #define USB_DWC2_PCGCCTL 0x0E00UL 1003 #define USB_DWC2_PCGCCTL_IF_DEV_MODE_POS 31UL 1004 #define USB_DWC2_PCGCCTL_IF_DEV_MODE BIT(USB_DWC2_PCGCCTL_IF_DEV_MODE_POS) 1005 #define USB_DWC2_PCGCCTL_P2HD_PRT_SPD_POS 29UL 1006 #define USB_DWC2_PCGCCTL_P2HD_PRT_SPD_MASK (0x3UL << USB_DWC2_PCGCCTL_P2HD_PRT_SPD_POS) 1007 #define USB_DWC2_PCGCCTL_P2HD_PRT_SPD_LS 2 1008 #define USB_DWC2_PCGCCTL_P2HD_PRT_SPD_FS 1 1009 #define USB_DWC2_PCGCCTL_P2HD_PRT_SPD_HS 0 1010 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_POS 27UL 1011 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_MASK (0x3UL << USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_POS) 1012 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_FS48 3 1013 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_LS 2 1014 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_FS 1 1015 #define USB_DWC2_PCGCCTL_P2HD_DEV_ENUM_SPD_HS 0 1016 #define USB_DWC2_PCGCCTL_MAC_DEV_ADDR_POS 20UL 1017 #define USB_DWC2_PCGCCTL_MAC_DEV_ADDR_MASK (0x7FUL << USB_DWC2_PCGCCTL_MAC_DEV_ADDR_POS) 1018 #define USB_DWC2_PCGCCTL_MAX_TERMSELECT_POS 19UL 1019 #define USB_DWC2_PCGCCTL_MAX_TERMSELECT BIT(USB_DWC2_PCGCCTL_MAX_TERMSELECT_POS) 1020 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_POS 17UL 1021 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_MASK (0x3UL << USB_DWC2_PCGCCTL_MAC_XCVRSELECT_POS) 1022 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_LFS 3 1023 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_LS 2 1024 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_FS 1 1025 #define USB_DWC2_PCGCCTL_MAC_XCVRSELECT_HS 0 1026 #define USB_DWC2_PCGCCTL_SH2PL_PRT_CTL0_POS 16UL 1027 #define USB_DWC2_PCGCCTL_SH2PL_PRT_CTL0 BIT(USB_DWC2_PCGCCTL_SH2PL_PRT_CTL0_POS) 1028 #define USB_DWC2_PCGCCTL_PRT_CLK_SEL_POS 14UL 1029 #define USB_DWC2_PCGCCTL_PRT_CLK_SEL_MASK (0x3UL << USB_DWC2_PCGCCTL_PRT_CLK_SEL_POS) 1030 #define USB_DWC2_PCGCCTL_RESTOREVALUE_POS 14UL 1031 #define USB_DWC2_PCGCCTL_RESTOREVALUE_MASK (0x3FFFFUL << USB_DWC2_PCGCCTL_RESTOREVALUE_POS) 1032 #define USB_DWC2_PCGCCTL_ESSREGRESTORED_POS 13UL 1033 #define USB_DWC2_PCGCCTL_ESSREGRESTORED BIT(USB_DWC2_PCGCCTL_ESSREGRESTORED_POS) 1034 #define USB_DWC2_PCGCCTL_RESTOREMODE_POS 9UL 1035 #define USB_DWC2_PCGCCTL_RESTOREMODE BIT(USB_DWC2_PCGCCTL_RESTOREMODE_POS) 1036 #define USB_DWC2_PCGCCTL_L1SUSPENDED_POS 7UL 1037 #define USB_DWC2_PCGCCTL_L1SUSPENDED BIT(USB_DWC2_PCGCCTL_L1SUSPENDED_POS) 1038 #define USB_DWC2_PCGCCTL_PHYSLEEP_POS 6UL 1039 #define USB_DWC2_PCGCCTL_PHYSLEEP BIT(USB_DWC2_PCGCCTL_PHYSLEEP_POS) 1040 #define USB_DWC2_PCGCCTL_ENBL_L1GATING_POS 5UL 1041 #define USB_DWC2_PCGCCTL_ENBL_L1GATING BIT(USB_DWC2_PCGCCTL_ENBL_L1GATING_POS) 1042 #define USB_DWC2_PCGCCTL_RSTPDWNMODULE_POS 3UL 1043 #define USB_DWC2_PCGCCTL_RSTPDWNMODULE BIT(USB_DWC2_PCGCCTL_RSTPDWNMODULE_POS) 1044 #define USB_DWC2_PCGCCTL_GATEHCLK_POS 1UL 1045 #define USB_DWC2_PCGCCTL_GATEHCLK BIT(USB_DWC2_PCGCCTL_GATEHCLK_POS) 1046 #define USB_DWC2_PCGCCTL_STOPPCLK_POS 0UL 1047 #define USB_DWC2_PCGCCTL_STOPPCLK BIT(USB_DWC2_PCGCCTL_STOPPCLK_POS) 1048 1049 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_p2hd_prt_spd, PCGCCTL_P2HD_PRT_SPD) 1050 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_p2hd_dev_enum_spd, PCGCCTL_P2HD_DEV_ENUM_SPD) 1051 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_mac_dev_addr, PCGCCTL_MAC_DEV_ADDR) 1052 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_mac_xcvrselect, PCGCCTL_MAC_XCVRSELECT) 1053 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_prt_clk_sel, PCGCCTL_PRT_CLK_SEL) 1054 USB_DWC2_GET_FIELD_DEFINE(pcgcctl_restorevalue, PCGCCTL_RESTOREVALUE) 1055 USB_DWC2_SET_FIELD_DEFINE(pcgcctl_restorevalue, PCGCCTL_RESTOREVALUE) 1056 1057 /* 1058 * Device IN/OUT endpoint transfer size register 1059 * IN at offsets 0x0910 + (0x20 * n), n = 0 .. x, 1060 * OUT at offsets 0x0B10 + (0x20 * n), n = 0 .. x 1061 * 1062 * Note: Legacy definitions for the usb_dc_dw.c driver only. 1063 */ 1064 #define USB_DWC2_DEPTSIZ_PKT_CNT_POS 19UL 1065 #define USB_DWC2_DIEPTSIZ0_PKT_CNT_MASK (0x3 << 19) 1066 #define USB_DWC2_DIEPTSIZn_PKT_CNT_MASK (0x3FF << 19) 1067 #define USB_DWC2_DOEPTSIZn_PKT_CNT_MASK (0x3FF << 19) 1068 #define USB_DWC2_DOEPTSIZ0_PKT_CNT_MASK (0x1 << 19) 1069 #define USB_DWC2_DOEPTSIZ_SUP_CNT_POS 29UL 1070 #define USB_DWC2_DOEPTSIZ_SUP_CNT_MASK (0x3 << 29) 1071 #define USB_DWC2_DEPTSIZ_XFER_SIZE_POS 0UL 1072 #define USB_DWC2_DEPTSIZ0_XFER_SIZE_MASK 0x7F 1073 #define USB_DWC2_DEPTSIZn_XFER_SIZE_MASK 0x7FFFF 1074 1075 /* 1076 * Device IN endpoint transmit FIFO status register, 1077 * offsets 0x0918 + (0x20 * n), n = 0 .. x 1078 */ 1079 #define USB_DWC2_DTXFSTS0 0x0918UL 1080 #define USB_DWC2_DTXFSTS_INEPTXFSPCAVAIL_POS 0UL 1081 #define USB_DWC2_DTXFSTS_INEPTXFSPCAVAIL_MASK 0xFFFFUL 1082 1083 USB_DWC2_GET_FIELD_DEFINE(dtxfsts_ineptxfspcavail, DTXFSTS_INEPTXFSPCAVAIL) 1084 1085 #ifdef __cplusplus 1086 } 1087 #endif 1088 1089 #endif /* ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW */ 1090