|  | /* | 
|  | * Copyright (c) 2016 Intel Corporation | 
|  | * Copyright (c) 2023 Nordic Semiconductor ASA | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #ifndef ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW | 
|  | #define ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | /* This file describes register set for the DesignWare USB 2.0 controller IP */ | 
|  |  | 
|  | /* IN endpoint register block */ | 
|  | struct usb_dwc2_in_ep { | 
|  | volatile uint32_t diepctl; | 
|  | uint32_t reserved; | 
|  | volatile uint32_t diepint; | 
|  | uint32_t reserved1; | 
|  | volatile uint32_t dieptsiz; | 
|  | volatile uint32_t diepdma; | 
|  | volatile uint32_t dtxfsts; | 
|  | volatile uint32_t diepdmab; | 
|  | }; | 
|  |  | 
|  | /* OUT endpoint register block */ | 
|  | struct usb_dwc2_out_ep { | 
|  | volatile uint32_t doepctl; | 
|  | uint32_t reserved; | 
|  | volatile uint32_t doepint; | 
|  | uint32_t reserved1; | 
|  | volatile uint32_t doeptsiz; | 
|  | volatile uint32_t doepdma; | 
|  | uint32_t reserved2; | 
|  | volatile uint32_t doepdmab; | 
|  | }; | 
|  |  | 
|  | /* DWC2 register map | 
|  | * TODO: This should probably be split into global, host, and device register | 
|  | * blocks | 
|  | */ | 
|  | struct usb_dwc2_reg { | 
|  | volatile uint32_t gotgctl; | 
|  | volatile uint32_t gotgint; | 
|  | volatile uint32_t gahbcfg; | 
|  | volatile uint32_t gusbcfg; | 
|  | volatile uint32_t grstctl; | 
|  | volatile uint32_t gintsts; | 
|  | volatile uint32_t gintmsk; | 
|  | volatile uint32_t grxstsr; | 
|  | volatile uint32_t grxstsp; | 
|  | volatile uint32_t grxfsiz; | 
|  | volatile uint32_t gnptxfsiz; | 
|  | volatile uint32_t gnptxsts; | 
|  | volatile uint32_t gi2cctl; | 
|  | volatile uint32_t gpvndctl; | 
|  | volatile uint32_t ggpio; | 
|  | volatile uint32_t guid; | 
|  | volatile uint32_t gsnpsid; | 
|  | volatile uint32_t ghwcfg1; | 
|  | volatile uint32_t ghwcfg2; | 
|  | volatile uint32_t ghwcfg3; | 
|  | volatile uint32_t ghwcfg4; | 
|  | volatile uint32_t glpmcfg; | 
|  | volatile uint32_t gpwrdn; | 
|  | volatile uint32_t gdfifocfg; | 
|  | volatile uint32_t gadpctl; | 
|  | volatile uint32_t grefclk; | 
|  | volatile uint32_t gintmsk2; | 
|  | volatile uint32_t gintsts2; | 
|  | volatile uint32_t reserved1[36]; | 
|  | volatile uint32_t hptxfsiz; | 
|  | union { | 
|  | volatile uint32_t dptxfsiz[15]; | 
|  | volatile uint32_t dieptxf[15]; | 
|  | }; | 
|  | volatile uint32_t reserved2[176]; | 
|  | /* Host mode register 0x0400 .. 0x0670 */ | 
|  | uint32_t reserved3[256]; | 
|  | /* Device mode register 0x0800 .. 0x0D00 */ | 
|  | volatile uint32_t dcfg; | 
|  | volatile uint32_t dctl; | 
|  | volatile uint32_t dsts; | 
|  | uint32_t reserved4; | 
|  | volatile uint32_t diepmsk; | 
|  | volatile uint32_t doepmsk; | 
|  | volatile uint32_t daint; | 
|  | volatile uint32_t daintmsk; | 
|  | volatile uint32_t dtknqr1; | 
|  | volatile uint32_t dtknqr2; | 
|  | volatile uint32_t dvbusdis; | 
|  | volatile uint32_t dvbuspulse; | 
|  | union { | 
|  | volatile uint32_t dtknqr3; | 
|  | volatile uint32_t dthrctl; | 
|  | }; | 
|  | union { | 
|  | volatile uint32_t dtknqr4; | 
|  | volatile uint32_t diepempmsk; | 
|  | }; | 
|  | volatile uint32_t deachint; | 
|  | volatile uint32_t deachintmsk; | 
|  | volatile uint32_t diepeachmsk[16]; | 
|  | volatile uint32_t doepeachmsk[16]; | 
|  | volatile uint32_t reserved5[16]; | 
|  | struct usb_dwc2_in_ep in_ep[16]; | 
|  | struct usb_dwc2_out_ep out_ep[16]; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * With the maximum number of supported endpoints, register map | 
|  | * of the controller must be equal to 0x0D00. | 
|  | */ | 
|  | BUILD_ASSERT(sizeof(struct usb_dwc2_reg) == 0x0D00); | 
|  |  | 
|  | /* | 
|  | * GET_FIELD/SET_FIELD macros below are intended to be used to define functions | 
|  | * to get/set a bitfield of a register from/into a value. They should not be | 
|  | * used to get/set a bitfield consisting of only one bit. | 
|  | */ | 
|  | #define USB_DWC2_GET_FIELD_DEFINE(name, reg_name_and_field)			\ | 
|  | static inline uint32_t usb_dwc2_get_##name(const uint32_t value)	\ | 
|  | {									\ | 
|  | return (value & USB_DWC2_##reg_name_and_field##_MASK) >>	\ | 
|  | USB_DWC2_##reg_name_and_field##_POS;			\ | 
|  | } | 
|  |  | 
|  | #define USB_DWC2_SET_FIELD_DEFINE(name, reg_name_and_field)			\ | 
|  | static inline uint32_t usb_dwc2_set_##name(const uint32_t value)	\ | 
|  | {									\ | 
|  | return (value << USB_DWC2_##reg_name_and_field##_POS) &		\ | 
|  | USB_DWC2_##reg_name_and_field##_MASK;			\ | 
|  | } | 
|  |  | 
|  | #define USB_DWC2_GET_FIELD_AND_IDX_DEFINE(name, reg_name_and_field)		\ | 
|  | static inline uint32_t usb_dwc2_get_##name(const uint32_t value,	\ | 
|  | const uint32_t idx)		\ | 
|  | {									\ | 
|  | return (value & USB_DWC2_##reg_name_and_field##_MASK(idx)) >>	\ | 
|  | USB_DWC2_##reg_name_and_field##_POS(idx);		\ | 
|  | } | 
|  |  | 
|  | /* AHB configuration register */ | 
|  | #define USB_DWC2_GAHBCFG			0x0008UL | 
|  | #define USB_DWC2_GAHBCFG_DMAEN_POS		5UL | 
|  | #define USB_DWC2_GAHBCFG_DMAEN			BIT(USB_DWC2_GAHBCFG_DMAEN_POS) | 
|  | #define USB_DWC2_GAHBCFG_GLBINTRMASK_POS	0UL | 
|  | #define USB_DWC2_GAHBCFG_GLBINTRMASK		BIT(USB_DWC2_GAHBCFG_GLBINTRMASK_POS) | 
|  |  | 
|  | /* USB configuration register */ | 
|  | #define USB_DWC2_GUSBCFG			0x000CUL | 
|  | #define USB_DWC2_GUSBCFG_FORCEDEVMODE_POS	30UL | 
|  | #define USB_DWC2_GUSBCFG_FORCEDEVMODE		BIT(USB_DWC2_GUSBCFG_FORCEDEVMODE_POS) | 
|  | #define USB_DWC2_GUSBCFG_FORCEHSTMODE_POS	29UL | 
|  | #define USB_DWC2_GUSBCFG_FORCEHSTMODE		BIT(USB_DWC2_GUSBCFG_FORCEHSTMODE_POS) | 
|  | #define USB_DWC2_GUSBCFG_PHYSEL_POS		6UL | 
|  | #define USB_DWC2_GUSBCFG_PHYSEL_USB11		BIT(USB_DWC2_GUSBCFG_PHYSEL_POS) | 
|  | #define USB_DWC2_GUSBCFG_PHYSEL_USB20		0UL | 
|  | #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_POS	4UL | 
|  | #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_ULPI	BIT(USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_POS) | 
|  | #define USB_DWC2_GUSBCFG_ULPI_UTMI_SEL_UTMI	0UL | 
|  | #define USB_DWC2_GUSBCFG_PHYIF_POS		3UL | 
|  | #define USB_DWC2_GUSBCFG_PHYIF_16_BIT		BIT(USB_DWC2_GUSBCFG_PHYIF_POS) | 
|  | #define USB_DWC2_GUSBCFG_PHYIF_8_BIT		0UL | 
|  |  | 
|  | /* Reset register */ | 
|  | #define USB_DWC2_GRSTCTL			0x0010UL | 
|  | #define USB_DWC2_GRSTCTL_AHBIDLE_POS		31UL | 
|  | #define USB_DWC2_GRSTCTL_AHBIDLE		BIT(USB_DWC2_GRSTCTL_AHBIDLE_POS) | 
|  | #define USB_DWC2_GRSTCTL_CSFTRSTDONE_POS	29UL | 
|  | #define USB_DWC2_GRSTCTL_CSFTRSTDONE		BIT(USB_DWC2_GRSTCTL_CSFTRSTDONE_POS) | 
|  | #define USB_DWC2_GRSTCTL_TXFNUM_POS		6UL | 
|  | #define USB_DWC2_GRSTCTL_TXFNUM_MASK		(0x1FUL << USB_DWC2_GRSTCTL_TXFNUM_POS) | 
|  | #define USB_DWC2_GRSTCTL_TXFFLSH_POS		5UL | 
|  | #define USB_DWC2_GRSTCTL_TXFFLSH		BIT(USB_DWC2_GRSTCTL_TXFFLSH_POS) | 
|  | #define USB_DWC2_GRSTCTL_RXFFLSH_POS		4UL | 
|  | #define USB_DWC2_GRSTCTL_RXFFLSH		BIT(USB_DWC2_GRSTCTL_RXFFLSH_POS) | 
|  | #define USB_DWC2_GRSTCTL_CSFTRST_POS		0UL | 
|  | #define USB_DWC2_GRSTCTL_CSFTRST		BIT(USB_DWC2_GRSTCTL_CSFTRST_POS) | 
|  |  | 
|  | USB_DWC2_SET_FIELD_DEFINE(grstctl_txfnum, GRSTCTL_TXFNUM) | 
|  |  | 
|  | /* Core interrupt registers */ | 
|  | #define USB_DWC2_GINTSTS			0x0014UL | 
|  | #define USB_DWC2_GINTMSK			0x0018UL | 
|  | #define USB_DWC2_GINTSTS_WKUPINT_POS		31UL | 
|  | #define USB_DWC2_GINTSTS_WKUPINT		BIT(USB_DWC2_GINTSTS_WKUPINT_POS) | 
|  | #define USB_DWC2_GINTSTS_OEPINT_POS		19UL | 
|  | #define USB_DWC2_GINTSTS_OEPINT			BIT(USB_DWC2_GINTSTS_OEPINT_POS) | 
|  | #define USB_DWC2_GINTSTS_IEPINT_POS		18UL | 
|  | #define USB_DWC2_GINTSTS_IEPINT			BIT(USB_DWC2_GINTSTS_IEPINT_POS) | 
|  | #define USB_DWC2_GINTSTS_ENUMDONE_POS		13UL | 
|  | #define USB_DWC2_GINTSTS_ENUMDONE		BIT(USB_DWC2_GINTSTS_ENUMDONE_POS) | 
|  | #define USB_DWC2_GINTSTS_USBRST_POS		12UL | 
|  | #define USB_DWC2_GINTSTS_USBRST			BIT(USB_DWC2_GINTSTS_USBRST_POS) | 
|  | #define USB_DWC2_GINTSTS_USBSUSP_POS		11UL | 
|  | #define USB_DWC2_GINTSTS_USBSUSP		BIT(USB_DWC2_GINTSTS_USBSUSP_POS) | 
|  | #define USB_DWC2_GINTSTS_RXFLVL_POS		4UL | 
|  | #define USB_DWC2_GINTSTS_RXFLVL			BIT(USB_DWC2_GINTSTS_RXFLVL_POS) | 
|  | #define USB_DWC2_GINTSTS_OTGINT_POS		2UL | 
|  | #define USB_DWC2_GINTSTS_OTGINT			BIT(USB_DWC2_GINTSTS_OTGINT_POS) | 
|  |  | 
|  | /* Status read and pop registers */ | 
|  | #define USB_DWC2_GRXSTSR			0x001CUL | 
|  | #define USB_DWC2_GRXSTSP			0x0020UL | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_POS		17UL | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_MASK		(0xFUL << USB_DWC2_GRXSTSR_PKTSTS_POS) | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_OUT_DATA	2 | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_OUT_DATA_DONE	3 | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_SETUP_DONE	4 | 
|  | #define USB_DWC2_GRXSTSR_PKTSTS_SETUP		6 | 
|  | #define USB_DWC2_GRXSTSR_BCNT_POS		4UL | 
|  | #define USB_DWC2_GRXSTSR_BCNT_MASK		(0x000007FFUL << USB_DWC2_GRXSTSR_BCNT_POS) | 
|  | #define USB_DWC2_GRXSTSR_EPNUM_POS		0UL | 
|  | #define USB_DWC2_GRXSTSR_EPNUM_MASK		0x0000000FUL | 
|  | #define USB_DWC2_GRXSTSR_CHNUM_POS		0UL | 
|  | #define USB_DWC2_GRXSTSR_CHNUM_MASK		0x0000000FUL | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(grxstsp_pktsts, GRXSTSR_PKTSTS) | 
|  | USB_DWC2_GET_FIELD_DEFINE(grxstsp_bcnt, GRXSTSR_BCNT) | 
|  | USB_DWC2_GET_FIELD_DEFINE(grxstsp_epnum, GRXSTSR_EPNUM) | 
|  |  | 
|  | /* Receive FIFO size register (device mode) */ | 
|  | #define USB_DWC2_GRXFSIZ			0x0024UL | 
|  | #define USB_DWC2_GRXFSIZ_RXFDEP_POS		0UL | 
|  | #define USB_DWC2_GRXFSIZ_RXFDEP_MASK		(0xFFFFUL << USB_DWC2_GRXFSIZ_RXFDEP_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(grxfsiz, GRXFSIZ_RXFDEP) | 
|  | USB_DWC2_SET_FIELD_DEFINE(grxfsiz, GRXFSIZ_RXFDEP) | 
|  |  | 
|  | /* Non-periodic transmit FIFO size register (device mode) */ | 
|  | #define USB_DWC2_GNPTXFSIZ			0x0028UL | 
|  | #define USB_DWC2_GNPTXFSIZ_NPTXFDEP_POS		16UL | 
|  | #define USB_DWC2_GNPTXFSIZ_NPTXFDEP_MASK	(0xFFFFUL << USB_DWC2_GNPTXFSIZ_NPTXFDEP_POS) | 
|  | #define USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_POS	0UL | 
|  | #define USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_MASK	(0xFFFFUL << USB_DWC2_GNPTXFSIZ_NPTXFSTADDR_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(gnptxfsiz_nptxfdep, GNPTXFSIZ_NPTXFDEP) | 
|  | USB_DWC2_GET_FIELD_DEFINE(gnptxfsiz_nptxfstaddr, GNPTXFSIZ_NPTXFSTADDR) | 
|  | USB_DWC2_SET_FIELD_DEFINE(gnptxfsiz_nptxfdep, GNPTXFSIZ_NPTXFDEP) | 
|  | USB_DWC2_SET_FIELD_DEFINE(gnptxfsiz_nptxfstaddr, GNPTXFSIZ_NPTXFSTADDR) | 
|  |  | 
|  | /* Application (vendor) general purpose registers */ | 
|  | #define USB_DWC2_GGPIO				0x0038UL | 
|  | #define USB_DWC2_GGPIO_STM32_VBDEN_POS		21UL | 
|  | #define USB_DWC2_GGPIO_STM32_VBDEN		BIT(USB_DWC2_GGPIO_STM32_VBDEN_POS) | 
|  | #define USB_DWC2_GGPIO_STM32_PWRDWN_POS		16UL | 
|  | #define USB_DWC2_GGPIO_STM32_PWRDWN		BIT(USB_DWC2_GGPIO_STM32_PWRDWN_POS) | 
|  |  | 
|  | /* GHWCFG1 register */ | 
|  | #define USB_DWC2_GHWCFG1			0x0044UL | 
|  | #define USB_DWC2_GHWCFG1_EPDIR_POS(i)		(i * 2) | 
|  | #define USB_DWC2_GHWCFG1_EPDIR_MASK(i)		(0x3UL << USB_DWC2_GHWCFG1_EPDIR_POS(i)) | 
|  | #define USB_DWC2_GHWCFG1_EPDIR_OUT		2 | 
|  | #define USB_DWC2_GHWCFG1_EPDIR_IN		1 | 
|  | #define USB_DWC2_GHWCFG1_EPDIR_BDIR		0 | 
|  |  | 
|  | USB_DWC2_GET_FIELD_AND_IDX_DEFINE(ghwcfg1_epdir, GHWCFG1_EPDIR) | 
|  |  | 
|  | /* GHWCFG2 register */ | 
|  | #define USB_DWC2_GHWCFG2			0x0048UL | 
|  | #define USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS	19UL | 
|  | #define USB_DWC2_GHWCFG2_DYNFIFOSIZING		BIT(USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS) | 
|  | #define USB_DWC2_GHWCFG2_NUMDEVEPS_POS		10UL | 
|  | #define USB_DWC2_GHWCFG2_NUMDEVEPS_MASK		(0xFUL << USB_DWC2_GHWCFG2_NUMDEVEPS_POS) | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_POS		8UL | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_MASK		(0x3UL << USB_DWC2_GHWCFG2_FSPHYTYPE_POS) | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_FSPLUSULPI	3 | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_FSPLUSUTMI	2 | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_FS		1 | 
|  | #define USB_DWC2_GHWCFG2_FSPHYTYPE_NO_FS	0 | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_POS		6UL | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_MASK		(0x3UL << USB_DWC2_GHWCFG2_HSPHYTYPE_POS) | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_UTMIPLUSULPI	3 | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_ULPI		2 | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_UTMIPLUS	1 | 
|  | #define USB_DWC2_GHWCFG2_HSPHYTYPE_NO_HS	0 | 
|  | #define USB_DWC2_GHWCFG2_OTGARCH_POS		3UL | 
|  | #define USB_DWC2_GHWCFG2_OTGARCH_MASK		(0x3UL << USB_DWC2_GHWCFG2_OTGARCH_POS) | 
|  | #define USB_DWC2_GHWCFG2_OTGARCH_INTERNALDMA	2 | 
|  | #define USB_DWC2_GHWCFG2_OTGARCH_EXTERNALDMA	1 | 
|  | #define USB_DWC2_GHWCFG2_OTGARCH_SLAVEMODE	0 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_POS		0UL | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_MASK		(0x7UL << USB_DWC2_GHWCFG2_OTGMODE_POS) | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_NONOTGH	6 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_SRPCAPH	5 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_NONOTGD	4 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_SRPCAPD	3 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_NHNPNSRP	2 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_SRPOTG		1 | 
|  | #define USB_DWC2_GHWCFG2_OTGMODE_HNPSRP		0 | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_numdeveps, GHWCFG2_NUMDEVEPS) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_fsphytype, GHWCFG2_FSPHYTYPE) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_hsphytype, GHWCFG2_HSPHYTYPE) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_otgarch, GHWCFG2_OTGARCH) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_otgmode, GHWCFG2_OTGMODE) | 
|  |  | 
|  | /* GHWCFG3 register */ | 
|  | #define USB_DWC2_GHWCFG3			0x004CUL | 
|  | #define USB_DWC2_GHWCFG3_DFIFODEPTH_POS		16UL | 
|  | #define USB_DWC2_GHWCFG3_DFIFODEPTH_MASK	(0xFFFFUL << USB_DWC2_GHWCFG3_DFIFODEPTH_POS) | 
|  | #define USB_DWC2_GHWCFG3_LPMMODE_POS		15UL | 
|  | #define USB_DWC2_GHWCFG3_LPMMODE		BIT(USB_DWC2_GHWCFG3_LPMMODE_POS) | 
|  | #define USB_DWC2_GHWCFG3_OPTFEATURE_POS		10UL | 
|  | #define USB_DWC2_GHWCFG3_OPTFEATURE		BIT(USB_DWC2_GHWCFG3_OPTFEATURE_POS) | 
|  | #define USB_DWC2_GHWCFG3_VNDCTLSUPT_POS		9UL | 
|  | #define USB_DWC2_GHWCFG3_VNDCTLSUPT		BIT(USB_DWC2_GHWCFG3_VNDCTLSUPT_POS) | 
|  | #define USB_DWC2_GHWCFG3_OTGEN_POS		7UL | 
|  | #define USB_DWC2_GHWCFG3_OTGEN			BIT(USB_DWC2_GHWCFG3_OTGEN_POS) | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_POS	4UL | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_MASK	(0x7UL << USB_DWC2_GHWCFG3_PKTSIZEWIDTH_POS) | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS10	6U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS9	5U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS8	4U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS7	3U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS6	2U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS5	1U | 
|  | #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_BITS4	0U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_POS	0UL | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_MASK	(0xFUL << USB_DWC2_GHWCFG3_XFERSIZEWIDTH_POS) | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH19	8U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH18	7U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH17	6U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH16	5U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH15	4U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH14	3U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH13	2U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH12	1U | 
|  | #define USB_DWC2_GHWCFG3_XFERSIZEWIDTH_WIDTH11	0U | 
|  |  | 
|  | #define GHWCFG3_PKTCOUNT(pktsizewidth) BIT_MASK(pktsizewidth + 4) | 
|  | #define GHWCFG3_XFERSIZE(xfersizewidth) BIT_MASK(xfersizewidth + 11) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_dfifodepth, GHWCFG3_DFIFODEPTH) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_pktsizewidth, GHWCFG3_PKTSIZEWIDTH) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_xfersizewidth, GHWCFG3_XFERSIZEWIDTH) | 
|  |  | 
|  | /* GHWCFG4 register */ | 
|  | #define USB_DWC2_GHWCFG4			0x0050UL | 
|  | #define USB_DWC2_GHWCFG4_INEPS_POS		26UL | 
|  | #define USB_DWC2_GHWCFG4_INEPS_MASK		(0xFUL << USB_DWC2_GHWCFG4_INEPS_POS) | 
|  | #define USB_DWC2_GHWCFG4_DEDFIFOMODE_POS	25UL | 
|  | #define USB_DWC2_GHWCFG4_DEDFIFOMODE		BIT(USB_DWC2_GHWCFG4_DEDFIFOMODE_POS) | 
|  | #define USB_DWC2_GHWCFG4_NUMCTLEPS_POS		16UL | 
|  | #define USB_DWC2_GHWCFG4_NUMCTLEPS_MASK		(0xFUL << USB_DWC2_GHWCFG4_NUMCTLEPS_POS) | 
|  | #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS	14UL | 
|  | #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_MASK	(0x3UL << USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS) | 
|  | #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS	0UL | 
|  | #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_MASK	(0xFUL << USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_ineps, GHWCFG4_INEPS) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numctleps, GHWCFG4_NUMCTLEPS) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_phydatawidth, GHWCFG4_PHYDATAWIDTH) | 
|  | USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numdevperioeps, GHWCFG4_NUMDEVPERIOEPS) | 
|  |  | 
|  | /* Device IN endpoint transmit FIFO size register */ | 
|  | #define USB_DWC2_DIEPTXF1			0x0104UL | 
|  | #define USB_DWC2_DIEPTXF_INEPNTXFDEP_POS	16UL | 
|  | #define USB_DWC2_DIEPTXF_INEPNTXFDEP_MASK	(0xFFFFUL << USB_DWC2_DIEPTXF_INEPNTXFDEP_POS) | 
|  | #define USB_DWC2_DIEPTXF_INEPNTXFSTADDR_POS	0UL | 
|  | #define USB_DWC2_DIEPTXF_INEPNTXFSTADDR_MASK	(0xFFFFUL << USB_DWC2_DIEPTXF_INEPNTXFSTADDR_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(dieptxf_inepntxfdep, DIEPTXF_INEPNTXFDEP) | 
|  | USB_DWC2_GET_FIELD_DEFINE(dieptxf_inepntxfstaddr, DIEPTXF_INEPNTXFSTADDR) | 
|  | USB_DWC2_SET_FIELD_DEFINE(dieptxf_inepntxfdep, DIEPTXF_INEPNTXFDEP) | 
|  | USB_DWC2_SET_FIELD_DEFINE(dieptxf_inepntxfstaddr, DIEPTXF_INEPNTXFSTADDR) | 
|  |  | 
|  | /* Device configuration registers */ | 
|  | #define USB_DWC2_DCFG				0x0800UL | 
|  | #define USB_DWC2_DCFG_DEVADDR_POS		4UL | 
|  | #define USB_DWC2_DCFG_DEVADDR_MASK		(0x7FUL << USB_DWC2_DCFG_DEVADDR_POS) | 
|  | #define USB_DWC2_DCFG_DEVSPD_POS		0UL | 
|  | #define USB_DWC2_DCFG_DEVSPD_MASK		(0x03UL << USB_DWC2_DCFG_DEVSPD_POS) | 
|  | #define USB_DWC2_DCFG_DEVSPD_USBHS20		0 | 
|  | #define USB_DWC2_DCFG_DEVSPD_USBFS20		1 | 
|  | #define USB_DWC2_DCFG_DEVSPD_USBLS116		2 | 
|  | #define USB_DWC2_DCFG_DEVSPD_USBFS1148		3 | 
|  |  | 
|  | USB_DWC2_SET_FIELD_DEFINE(dcfg_devaddr, DCFG_DEVADDR) | 
|  | USB_DWC2_GET_FIELD_DEFINE(dcfg_devspd, DCFG_DEVSPD) | 
|  |  | 
|  | /* Device control register */ | 
|  | #define USB_DWC2_DCTL				0x0804UL | 
|  | #define USB_DWC2_DCTL_SERVINT_POS		19UL | 
|  | #define USB_DWC2_DCTL_SERVINT			BIT(USB_DWC2_DCTL_SERVINT_POS) | 
|  | #define USB_DWC2_DCTL_DEEPSLEEPBESLREJECT_POS	18UL | 
|  | #define USB_DWC2_DCTL_DEEPSLEEPBESLREJECT	BIT(USB_DWC2_DCTL_DEEPSLEEPBESLREJECT_POS) | 
|  | #define USB_DWC2_DCTL_NAKONBBLE_POS		16UL | 
|  | #define USB_DWC2_DCTL_NAKONBBLE			BIT(USB_DWC2_DCTL_NAKONBBLE_POS) | 
|  | #define USB_DWC2_DCTL_IGNRFRMNUM_POS		15UL | 
|  | #define USB_DWC2_DCTL_IGNRFRMNUM		BIT(USB_DWC2_DCTL_IGNRFRMNUM_POS) | 
|  | #define USB_DWC2_DCTL_PWRONPRGDONE_POS		11UL | 
|  | #define USB_DWC2_DCTL_PWRONPRGDONE		BIT(USB_DWC2_DCTL_PWRONPRGDONE_POS) | 
|  | #define USB_DWC2_DCTL_CGOUTNAK_POS		10UL | 
|  | #define USB_DWC2_DCTL_CGOUTNAK			BIT(USB_DWC2_DCTL_CGOUTNAK_POS) | 
|  | #define USB_DWC2_DCTL_SGOUTNAK_POS		9UL | 
|  | #define USB_DWC2_DCTL_SGOUTNAK			BIT(USB_DWC2_DCTL_SGOUTNAK_POS) | 
|  | #define USB_DWC2_DCTL_CGNPINNAK_POS		8UL | 
|  | #define USB_DWC2_DCTL_CGNPINNAK			BIT(USB_DWC2_DCTL_CGNPINNAK_POS) | 
|  | #define USB_DWC2_DCTL_SGNPINNAK_POS		7UL | 
|  | #define USB_DWC2_DCTL_SGNPINNAK			BIT(USB_DWC2_DCTL_SGNPINNAK_POS) | 
|  | #define USB_DWC2_DCTL_TSTCTL_POS		4UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_MASK		(0x7UL << USB_DWC2_DCTL_TSTCTL_POS) | 
|  | #define USB_DWC2_DCTL_TSTCTL_TESTFE		5UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_TESTPM		4UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_TESTSN		3UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_TESTK		2UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_TESTJ		1UL | 
|  | #define USB_DWC2_DCTL_TSTCTL_DISABLED		0UL | 
|  | #define USB_DWC2_DCTL_GOUTNAKSTS_POS		3UL | 
|  | #define USB_DWC2_DCTL_GOUTNAKSTS		BIT(USB_DWC2_DCTL_GOUTNAKSTS_POS) | 
|  | #define USB_DWC2_DCTL_GNPINNAKSTS_POS		2UL | 
|  | #define USB_DWC2_DCTL_GNPINNAKSTS		BIT(USB_DWC2_DCTL_GNPINNAKSTS_POS) | 
|  | #define USB_DWC2_DCTL_SFTDISCON_POS		1UL | 
|  | #define USB_DWC2_DCTL_SFTDISCON			BIT(USB_DWC2_DCTL_SFTDISCON_POS) | 
|  | #define USB_DWC2_DCTL_RMTWKUPSIG_POS		0UL | 
|  | #define USB_DWC2_DCTL_RMTWKUPSIG		BIT(USB_DWC2_DCTL_RMTWKUPSIG_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(dctl_tstctl, DCTL_TSTCTL) | 
|  | USB_DWC2_SET_FIELD_DEFINE(dctl_tstctl, DCTL_TSTCTL) | 
|  |  | 
|  | /* Device status register */ | 
|  | #define USB_DWC2_DSTS				0x0808UL | 
|  | #define USB_DWC2_DSTS_ENUMSPD_POS		1UL | 
|  | #define USB_DWC2_DSTS_ENUMSPD_MASK		(0x3UL << USB_DWC2_DSTS_ENUMSPD_POS) | 
|  | #define USB_DWC2_DSTS_ENUMSPD_HS3060		0 | 
|  | #define USB_DWC2_DSTS_ENUMSPD_FS3060		1 | 
|  | #define USB_DWC2_DSTS_ENUMSPD_LS6		2 | 
|  | #define USB_DWC2_DSTS_ENUMSPD_FS48		3 | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(dsts_enumspd, DSTS_ENUMSPD) | 
|  |  | 
|  | /* Device all endpoints interrupt registers */ | 
|  | #define USB_DWC2_DAINT				0x0818UL | 
|  | #define USB_DWC2_DAINTMSK			0x081CUL | 
|  | #define USB_DWC2_DAINT_OUTEPINT(ep_num)		BIT(16UL + ep_num) | 
|  | #define USB_DWC2_DAINT_INEPINT(ep_num)		BIT(ep_num) | 
|  |  | 
|  | /* | 
|  | * Device IN/OUT endpoint control register | 
|  | * IN endpoint offsets 0x0900 + (0x20 * n), n = 0 .. x, | 
|  | * OUT endpoint offsets 0x0B00 + (0x20 * n), n = 0 .. x, | 
|  | * | 
|  | */ | 
|  | #define USB_DWC2_DIEPCTL0			0x0900UL | 
|  | #define USB_DWC2_DOEPCTL0			0x0B00UL | 
|  | #define USB_DWC2_DEPCTL_EPENA_POS		31UL | 
|  | #define USB_DWC2_DEPCTL_EPENA			BIT(USB_DWC2_DEPCTL_EPENA_POS) | 
|  | #define USB_DWC2_DEPCTL_EPDIS_POS		30UL | 
|  | #define USB_DWC2_DEPCTL_EPDIS			BIT(USB_DWC2_DEPCTL_EPDIS_POS) | 
|  | #define USB_DWC2_DEPCTL_SETD0PID_POS		28UL | 
|  | #define USB_DWC2_DEPCTL_SETD0PID		BIT(USB_DWC2_DEPCTL_SETD0PID_POS) | 
|  | #define USB_DWC2_DEPCTL_SNAK_POS		27UL | 
|  | #define USB_DWC2_DEPCTL_SNAK			BIT(USB_DWC2_DEPCTL_SNAK_POS) | 
|  | #define USB_DWC2_DEPCTL_CNAK_POS		26UL | 
|  | #define USB_DWC2_DEPCTL_CNAK			BIT(USB_DWC2_DEPCTL_CNAK_POS) | 
|  | #define USB_DWC2_DEPCTL_TXFNUM_POS		22UL | 
|  | #define USB_DWC2_DEPCTL_TXFNUM_MASK		(0xFUL << USB_DWC2_DEPCTL_TXFNUM_POS) | 
|  | #define USB_DWC2_DEPCTL_STALL_POS		21UL | 
|  | #define USB_DWC2_DEPCTL_STALL			BIT(USB_DWC2_DEPCTL_STALL_POS) | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_POS		18UL | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_MASK		(0x3UL << USB_DWC2_DEPCTL_EPTYPE_POS) | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_INTERRUPT	3 | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_BULK		2 | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_ISO		1 | 
|  | #define USB_DWC2_DEPCTL_EPTYPE_CONTROL		0 | 
|  | #define USB_DWC2_DEPCTL_USBACTEP_POS		15UL | 
|  | #define USB_DWC2_DEPCTL_USBACTEP		BIT(USB_DWC2_DEPCTL_USBACTEP_POS) | 
|  | #define USB_DWC2_DEPCTL0_MPS_POS		0UL | 
|  | #define USB_DWC2_DEPCTL0_MPS_MASK		(0x3UL << USB_DWC2_DEPCTL0_MPS_POS) | 
|  | #define USB_DWC2_DEPCTL0_MPS_8			3 | 
|  | #define USB_DWC2_DEPCTL0_MPS_16			2 | 
|  | #define USB_DWC2_DEPCTL0_MPS_32			1 | 
|  | #define USB_DWC2_DEPCTL0_MPS_64			0 | 
|  | #define USB_DWC2_DEPCTL_MPS_POS			0UL | 
|  | #define USB_DWC2_DEPCTL_MPS_MASK		(0x7FF << USB_DWC2_DEPCTL_MPS_POS) | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(depctl_txfnum, DEPCTL_TXFNUM) | 
|  | USB_DWC2_SET_FIELD_DEFINE(depctl_txfnum, DEPCTL_TXFNUM) | 
|  | USB_DWC2_GET_FIELD_DEFINE(depctl_eptype, DEPCTL_EPTYPE) | 
|  | USB_DWC2_SET_FIELD_DEFINE(depctl_eptype, DEPCTL_EPTYPE) | 
|  | USB_DWC2_GET_FIELD_DEFINE(depctl0_mps, DEPCTL0_MPS) | 
|  | USB_DWC2_SET_FIELD_DEFINE(depctl0_mps, DEPCTL0_MPS) | 
|  | USB_DWC2_GET_FIELD_DEFINE(depctl_mps, DEPCTL_MPS) | 
|  | USB_DWC2_SET_FIELD_DEFINE(depctl_mps, DEPCTL_MPS) | 
|  |  | 
|  | /* | 
|  | * Device IN endpoint interrupt register | 
|  | * offsets 0x0908 + (0x20 * n), n = 0 .. x | 
|  | */ | 
|  | #define USB_DWC2_DIEPINT0			0x0908UL | 
|  | #define USB_DWC2_DIEPINT_NYETINTRPT_POS		14UL | 
|  | #define USB_DWC2_DIEPINT_NYETINTRPT		BIT(USB_DWC2_DIEPINT_NYETINTRPT_POS) | 
|  | #define USB_DWC2_DIEPINT_NAKINTRPT_POS		13UL | 
|  | #define USB_DWC2_DIEPINT_NAKINTRPT		BIT(USB_DWC2_DIEPINT_NAKINTRPT_POS) | 
|  | #define USB_DWC2_DIEPINT_BBLEERR_POS		12UL | 
|  | #define USB_DWC2_DIEPINT_BBLEERR		BIT(USB_DWC2_DIEPINT_BBLEERR_POS) | 
|  | #define USB_DWC2_DIEPINT_PKTDRPSTS_POS		11UL | 
|  | #define USB_DWC2_DIEPINT_PKTDRPSTS		BIT(USB_DWC2_DIEPINT_PKTDRPSTS_POS) | 
|  | #define USB_DWC2_DIEPINT_BNAINTR_POS		9UL | 
|  | #define USB_DWC2_DIEPINT_BNAINTR		BIT(USB_DWC2_DIEPINT_BNAINTR_POS) | 
|  | #define USB_DWC2_DIEPINT_TXFIFOUNDRN_POS	8UL | 
|  | #define USB_DWC2_DIEPINT_TXFIFOUNDRN		BIT(USB_DWC2_DIEPINT_TXFIFOUNDRN_POS) | 
|  | #define USB_DWC2_DIEPINT_TXFEMP_POS		7UL | 
|  | #define USB_DWC2_DIEPINT_TXFEMP			BIT(USB_DWC2_DIEPINT_TXFEMP_POS) | 
|  | #define USB_DWC2_DIEPINT_INEPNAKEFF_POS		6UL | 
|  | #define USB_DWC2_DIEPINT_INEPNAKEFF		BIT(USB_DWC2_DIEPINT_INEPNAKEFF_POS) | 
|  | #define USB_DWC2_DIEPINT_INTKNEPMIS_POS		5UL | 
|  | #define USB_DWC2_DIEPINT_INTKNEPMIS		BIT(USB_DWC2_DIEPINT_INTKNEPMIS_POS) | 
|  | #define USB_DWC2_DIEPINT_INTKNTXFEMP_POS	4UL | 
|  | #define USB_DWC2_DIEPINT_INTKNTXFEMP		BIT(USB_DWC2_DIEPINT_INTKNTXFEMP_POS) | 
|  | #define USB_DWC2_DIEPINT_TIMEOUT_POS		3UL | 
|  | #define USB_DWC2_DIEPINT_TIMEOUT		BIT(USB_DWC2_DIEPINT_TIMEOUT_POS) | 
|  | #define USB_DWC2_DIEPINT_AHBERR_POS		2UL | 
|  | #define USB_DWC2_DIEPINT_AHBERR			BIT(USB_DWC2_DIEPINT_AHBERR_POS) | 
|  | #define USB_DWC2_DIEPINT_EPDISBLD_POS		1UL | 
|  | #define USB_DWC2_DIEPINT_EPDISBLD		BIT(USB_DWC2_DIEPINT_EPDISBLD_POS) | 
|  | #define USB_DWC2_DIEPINT_XFERCOMPL_POS		0UL | 
|  | #define USB_DWC2_DIEPINT_XFERCOMPL		BIT(USB_DWC2_DIEPINT_XFERCOMPL_POS) | 
|  |  | 
|  | /* | 
|  | * Device OUT endpoint interrupt register | 
|  | * offsets 0x0B08 + (0x20 * n), n = 0 .. x | 
|  | */ | 
|  | #define USB_DWC2_DOEPINT0			0x0B08UL | 
|  | #define USB_DWC2_DOEPINT_STUPPKTRCVD_POS	15UL | 
|  | #define USB_DWC2_DOEPINT_STUPPKTRCVD		BIT(USB_DWC2_DOEPINT_STUPPKTRCVD_POS) | 
|  | #define USB_DWC2_DOEPINT_NYETINTRPT_POS		14UL | 
|  | #define USB_DWC2_DOEPINT_NYETINTRPT		BIT(USB_DWC2_DOEPINT_NYETINTRPT_POS) | 
|  | #define USB_DWC2_DOEPINT_NAKINTRPT_POS		13UL | 
|  | #define USB_DWC2_DOEPINT_NAKINTRPT		BIT(USB_DWC2_DOEPINT_NAKINTRPT_POS) | 
|  | #define USB_DWC2_DOEPINT_BBLEERR_POS		12UL | 
|  | #define USB_DWC2_DOEPINT_BBLEERR		BIT(USB_DWC2_DOEPINT_BBLEERR_POS) | 
|  | #define USB_DWC2_DOEPINT_PKTDRPSTS_POS		11UL | 
|  | #define USB_DWC2_DOEPINT_PKTDRPSTS		BIT(USB_DWC2_DOEPINT_PKTDRPSTS_POS) | 
|  | #define USB_DWC2_DOEPINT_BNAINTR_POS		9UL | 
|  | #define USB_DWC2_DOEPINT_BNAINTR		BIT(USB_DWC2_DOEPINT_BNAINTR_POS) | 
|  | #define USB_DWC2_DOEPINT_OUTPKTERR_POS		8UL | 
|  | #define USB_DWC2_DOEPINT_OUTPKTERR		BIT(USB_DWC2_DOEPINT_OUTPKTERR_POS) | 
|  | #define USB_DWC2_DOEPINT_BACK2BACKSETUP_POS	6UL | 
|  | #define USB_DWC2_DOEPINT_BACK2BACKSETUP		BIT(USB_DWC2_DOEPINT_BACK2BACKSETUP_POS) | 
|  | #define USB_DWC2_DOEPINT_STSPHSERCVD_POS	5UL | 
|  | #define USB_DWC2_DOEPINT_STSPHSERCVD		BIT(USB_DWC2_DOEPINT_STSPHSERCVD_POS) | 
|  | #define USB_DWC2_DOEPINT_OUTTKNEPDIS_POS	4UL | 
|  | #define USB_DWC2_DOEPINT_OUTTKNEPDIS		BIT(USB_DWC2_DOEPINT_OUTTKNEPDIS_POS) | 
|  | #define USB_DWC2_DOEPINT_SETUP_POS		3UL | 
|  | #define USB_DWC2_DOEPINT_SETUP			BIT(USB_DWC2_DOEPINT_SETUP_POS) | 
|  | #define USB_DWC2_DOEPINT_AHBERR_POS		2UL | 
|  | #define USB_DWC2_DOEPINT_AHBERR			BIT(USB_DWC2_DOEPINT_AHBERR_POS) | 
|  | #define USB_DWC2_DOEPINT_EPDISBLD_POS		1UL | 
|  | #define USB_DWC2_DOEPINT_EPDISBLD		BIT(USB_DWC2_DOEPINT_EPDISBLD_POS) | 
|  | #define USB_DWC2_DOEPINT_XFERCOMPL_POS		0UL | 
|  | #define USB_DWC2_DOEPINT_XFERCOMPL		BIT(USB_DWC2_DOEPINT_XFERCOMPL_POS) | 
|  |  | 
|  | /* | 
|  | * Device IN/OUT control endpoint transfer size register | 
|  | */ | 
|  | #define USB_DWC2_DIEPTSIZ0			0x0910UL | 
|  | #define USB_DWC2_DOEPTSIZ0			0x0B10UL | 
|  | #define USB_DWC2_DOEPTSIZ0_SUPCNT_POS		29UL | 
|  | #define USB_DWC2_DOEPTSIZ0_SUPCNT_MASK		(0x3UL << USB_DWC2_DOEPTSIZ0_SUPCNT_POS) | 
|  | #define USB_DWC2_DOEPTSIZ0_PKTCNT_POS		19UL | 
|  | #define USB_DWC2_DOEPTSIZ0_PKTCNT_MASK		(0x1UL << USB_DWC2_DOEPTSIZ0_PKTCNT_POS) | 
|  | #define USB_DWC2_DIEPTSIZ0_PKTCNT_POS		19UL | 
|  | #define USB_DWC2_DIEPTSIZ0_PKTCNT_MASK		(0x3UL << USB_DWC2_DIEPTSIZ0_PKTCNT_POS) | 
|  | #define USB_DWC2_DEPTSIZ0_XFERSIZE_POS		0UL | 
|  | #define USB_DWC2_DEPTSIZ0_XFERSIZE_MASK		0x7FUL | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_supcnt, DOEPTSIZ0_SUPCNT) | 
|  | USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_pktcnt, DOEPTSIZ0_PKTCNT) | 
|  | USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_xfersize, DEPTSIZ0_XFERSIZE) | 
|  | USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_pktcnt, DIEPTSIZ0_PKTCNT) | 
|  | USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_xfersize, DEPTSIZ0_XFERSIZE) | 
|  |  | 
|  | /* | 
|  | * Device IN/OUT endpoint transfer size register | 
|  | * IN at offsets 0x0910 + (0x20 * n), n = 1 .. x, | 
|  | * OUT at offsets 0x0B10 + (0x20 * n), n = 1 .. x | 
|  | */ | 
|  | #define USB_DWC2_DEPTSIZN_PKTCNT_POS		19UL | 
|  | #define USB_DWC2_DEPTSIZN_PKTCNT_MASK		(0x3FFUL << USB_DWC2_DEPTSIZN_PKTCNT_POS) | 
|  | #define USB_DWC2_DEPTSIZN_XFERSIZE_POS		0UL | 
|  | #define USB_DWC2_DEPTSIZN_XFERSIZE_MASK		0x7FFFFUL | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(deptsizn_pktcnt, DEPTSIZN_PKTCNT) | 
|  | USB_DWC2_GET_FIELD_DEFINE(deptsizn_xfersize, DEPTSIZN_XFERSIZE) | 
|  |  | 
|  | /* | 
|  | * Device IN/OUT endpoint transfer size register | 
|  | * IN at offsets 0x0910 + (0x20 * n), n = 0 .. x, | 
|  | * OUT at offsets 0x0B10 + (0x20 * n), n = 0 .. x | 
|  | * | 
|  | * Note: Legacy definitions for the usb_dc_dw.c driver only. | 
|  | */ | 
|  | #define USB_DWC2_DEPTSIZ_PKT_CNT_POS		19UL | 
|  | #define USB_DWC2_DIEPTSIZ0_PKT_CNT_MASK		(0x3 << 19) | 
|  | #define USB_DWC2_DIEPTSIZn_PKT_CNT_MASK		(0x3FF << 19) | 
|  | #define USB_DWC2_DOEPTSIZn_PKT_CNT_MASK		(0x3FF << 19) | 
|  | #define USB_DWC2_DOEPTSIZ0_PKT_CNT_MASK		(0x1 << 19) | 
|  | #define USB_DWC2_DOEPTSIZ_SUP_CNT_POS		29UL | 
|  | #define USB_DWC2_DOEPTSIZ_SUP_CNT_MASK		(0x3 << 29) | 
|  | #define USB_DWC2_DEPTSIZ_XFER_SIZE_POS		0UL | 
|  | #define USB_DWC2_DEPTSIZ0_XFER_SIZE_MASK	0x7F | 
|  | #define USB_DWC2_DEPTSIZn_XFER_SIZE_MASK	0x7FFFF | 
|  |  | 
|  | /* | 
|  | * Device IN endpoint transmit FIFO status register, | 
|  | * offsets 0x0918 + (0x20 * n), n = 0 .. x | 
|  | */ | 
|  | #define USB_DWC2_DTXFSTS0			0x0918UL | 
|  | #define USB_DWC2_DTXFSTS_INEPTXFSPCAVAIL_POS	0UL | 
|  | #define USB_DWC2_DTXFSTS_INEPTXFSPCAVAIL_MASK	0xFFFFUL | 
|  |  | 
|  | USB_DWC2_GET_FIELD_DEFINE(dtxfsts_ineptxfspcavail, DTXFSTS_INEPTXFSPCAVAIL) | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif /* ZEPHYR_DRIVERS_USB_COMMON_USB_DWC2_HW */ |