Skip to content

Commit 2c9371e

Browse files
tmon-nordicnashif
authored andcommitted
drivers: udc_dwc2: Add DMA register bit defines
Add register bit defines for registers needed for DMA operation. Signed-off-by: Tomasz Moń <[email protected]>
1 parent 90ecdf0 commit 2c9371e

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

drivers/usb/common/usb_dwc2_hw.h

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,45 @@ BUILD_ASSERT(sizeof(struct usb_dwc2_reg) == 0x0D00);
147147

148148
/* AHB configuration register */
149149
#define USB_DWC2_GAHBCFG 0x0008UL
150+
#define USB_DWC2_GAHBCFG_LOA_EOP_WORD_POS 27UL
151+
#define USB_DWC2_GAHBCFG_LOA_EOP_WORD_MASK (0x3UL << USB_DWC2_GAHBCFG_LOA_EOP_WORD_POS)
152+
#define USB_DWC2_GAHBCFG_LOA_EOP_WORD_ONE 1
153+
#define USB_DWC2_GAHBCFG_LOA_EOP_WORD_TWO 2
154+
#define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_POS 25UL
155+
#define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_MASK (0x3UL << USB_DWC2_GAHBCFG_LOA_EOP_BYTE_POS)
156+
#define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_ONE 1
157+
#define USB_DWC2_GAHBCFG_LOA_EOP_BYTE_TWO 2
158+
#define USB_DWC2_GAHBCFG_INVDESCENDIANESS_POS 24UL
159+
#define USB_DWC2_GAHBCFG_INVDESCENDIANESS BIT(USB_DWC2_GAHBCFG_INVDESCENDIANESS_POS)
160+
#define USB_DWC2_GAHBCFG_AHBSINGLE_POS 23UL
161+
#define USB_DWC2_GAHBCFG_AHBSINGLE BIT(USB_DWC2_GAHBCFG_AHBSINGLE_POS)
162+
#define USB_DWC2_GAHBCFG_NOTIALLDMAWRIT_POS 22UL
163+
#define USB_DWC2_GAHBCFG_NOTIALLDMAWRIT BIT(USB_DWC2_GAHBCFG_NOTIALLDMAWRIT_POS)
164+
#define USB_DWC2_GAHBCFG_REMMEMSUPP_POS 21UL
165+
#define USB_DWC2_GAHBCFG_REMMEMSUPP BIT(USB_DWC2_GAHBCFG_REMMEMSUPP_POS)
166+
#define USB_DWC2_GAHBCFG_PTXFEMPLVL_POS 8UL
167+
#define USB_DWC2_GAHBCFG_PTXFEMPLVL BIT(USB_DWC2_GAHBCFG_PTXFEMPLVL_POS)
168+
#define USB_DWC2_GAHBCFG_NPTXFEMPLVL_POS 7UL
169+
#define USB_DWC2_GAHBCFG_NPTXFEMPLVL BIT(USB_DWC2_GAHBCFG_NPTXFEMPLVL_POS)
150170
#define USB_DWC2_GAHBCFG_DMAEN_POS 5UL
151171
#define USB_DWC2_GAHBCFG_DMAEN BIT(USB_DWC2_GAHBCFG_DMAEN_POS)
172+
#define USB_DWC2_GAHBCFG_HBSTLEN_POS 1UL
173+
#define USB_DWC2_GAHBCFG_HBSTLEN_MASK (0xFUL << USB_DWC2_GAHBCFG_HBSTLEN_POS)
174+
#define USB_DWC2_GAHBCFG_HBSTLEN_SINGLE 0
175+
#define USB_DWC2_GAHBCFG_HBSTLEN_INCR 1
176+
#define USB_DWC2_GAHBCFG_HBSTLEN_INCR4 3
177+
#define USB_DWC2_GAHBCFG_HBSTLEN_INCR8 5
178+
#define USB_DWC2_GAHBCFG_HBSTLEN_INCR16 7
152179
#define USB_DWC2_GAHBCFG_GLBINTRMASK_POS 0UL
153180
#define USB_DWC2_GAHBCFG_GLBINTRMASK BIT(USB_DWC2_GAHBCFG_GLBINTRMASK_POS)
154181

182+
USB_DWC2_SET_FIELD_DEFINE(gahbcfg_loa_eop_word, GAHBCFG_LOA_EOP_WORD)
183+
USB_DWC2_SET_FIELD_DEFINE(gahbcfg_loa_eop_byte, GAHBCFG_LOA_EOP_BYTE)
184+
USB_DWC2_SET_FIELD_DEFINE(gahbcfg_hbstlen, GAHBCFG_HBSTLEN)
185+
USB_DWC2_GET_FIELD_DEFINE(gahbcfg_loa_eop_word, GAHBCFG_LOA_EOP_WORD)
186+
USB_DWC2_GET_FIELD_DEFINE(gahbcfg_loa_eop_byte, GAHBCFG_LOA_EOP_BYTE)
187+
USB_DWC2_GET_FIELD_DEFINE(gahbcfg_hbstlen, GAHBCFG_HBSTLEN)
188+
155189
/* USB configuration register */
156190
#define USB_DWC2_GUSBCFG 0x000CUL
157191
#define USB_DWC2_GUSBCFG_FORCEDEVMODE_POS 30UL
@@ -411,6 +445,18 @@ USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numctleps, GHWCFG4_NUMCTLEPS)
411445
USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_phydatawidth, GHWCFG4_PHYDATAWIDTH)
412446
USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numdevperioeps, GHWCFG4_NUMDEVPERIOEPS)
413447

448+
/* GDFIFOCFG register */
449+
#define USB_DWC2_GDFIFOCFG 0x005CUL
450+
#define USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_POS 16UL
451+
#define USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_MASK (0xFFFFUL << USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_POS)
452+
#define USB_DWC2_GDFIFOCFG_GDFIFOCFG_POS 0UL
453+
#define USB_DWC2_GDFIFOCFG_GDFIFOCFG_MASK (0xFFFFUL << USB_DWC2_GDFIFOCFG_GDFIFOCFG_POS)
454+
455+
USB_DWC2_GET_FIELD_DEFINE(gdfifocfg_epinfobaseaddr, GDFIFOCFG_EPINFOBASEADDR)
456+
USB_DWC2_GET_FIELD_DEFINE(gdfifocfg_gdfifocfg, GDFIFOCFG_GDFIFOCFG)
457+
USB_DWC2_SET_FIELD_DEFINE(gdfifocfg_epinfobaseaddr, GDFIFOCFG_EPINFOBASEADDR)
458+
USB_DWC2_SET_FIELD_DEFINE(gdfifocfg_gdfifocfg, GDFIFOCFG_GDFIFOCFG)
459+
414460
/* Device IN endpoint transmit FIFO size register */
415461
#define USB_DWC2_DIEPTXF1 0x0104UL
416462
#define USB_DWC2_DIEPTXF_INEPNTXFDEP_POS 16UL
@@ -425,16 +471,56 @@ USB_DWC2_SET_FIELD_DEFINE(dieptxf_inepntxfstaddr, DIEPTXF_INEPNTXFSTADDR)
425471

426472
/* Device configuration registers */
427473
#define USB_DWC2_DCFG 0x0800UL
474+
#define USB_DWC2_DCFG_RESVALID_POS 26UL
475+
#define USB_DWC2_DCFG_RESVALID_MASK (0x3FUL << USB_DWC2_DCFG_RESVALID_POS)
476+
#define USB_DWC2_DCFG_PERSCHINTVL_POS 24UL
477+
#define USB_DWC2_DCFG_PERSCHINTVL_MASK (0x3UL << USB_DWC2_DCFG_PERSCHINTVL_POS)
478+
#define USB_DWC2_DCFG_PERSCHINTVL_MF25 0
479+
#define USB_DWC2_DCFG_PERSCHINTVL_MF50 1
480+
#define USB_DWC2_DCFG_PERSCHINTVL_MF75 2
481+
#define USB_DWC2_DCFG_PERSCHINTVL_RESERVED 3
482+
#define USB_DWC2_DCFG_DESCDMA_POS 23UL
483+
#define USB_DWC2_DCFG_DESCDMA BIT(USB_DWC2_DCFG_DESCDMA_POS)
484+
#define USB_DWC2_DCFG_EPMISCNT_POS 18UL
485+
#define USB_DWC2_DCFG_EPMISCNT_MASK (0x1FUL << USB_DWC2_DCFG_EPMISCNT_POS)
486+
#define USB_DWC2_DCFG_IPGISOCSUPT_POS 17UL
487+
#define USB_DWC2_DCFG_IPGISOCSUPT BIT(USB_DWC2_DCFG_IPGISOCSUPT_POS)
488+
#define USB_DWC2_DCFG_ERRATICINTMSK_POS 15UL
489+
#define USB_DWC2_DCFG_ERRATICINTMSK BIT(USB_DWC2_DCFG_ERRATICINTMSK_POS)
490+
#define USB_DWC2_DCFG_XCVRDLY_POS 14UL
491+
#define USB_DWC2_DCFG_XCVRDLY BIT(USB_DWC2_DCFG_XCVRDLY_POS)
492+
#define USB_DWC2_DCFG_ENDEVOUTNAK_POS 13UL
493+
#define USB_DWC2_DCFG_ENDEVOUTNAK BIT(USB_DWC2_DCFG_ENDEVOUTNAK_POS)
494+
#define USB_DWC2_DCFG_PERFRINT_POS 11UL
495+
#define USB_DWC2_DCFG_PERFRINT_MASK (0x3UL << USB_DWC2_DCFG_PERFRINT_POS)
496+
#define USB_DWC2_DCFG_PERFRINT_EOPF80 0
497+
#define USB_DWC2_DCFG_PERFRINT_EOPF85 1
498+
#define USB_DWC2_DCFG_PERFRINT_EOPF90 2
499+
#define USB_DWC2_DCFG_PERFRINT_EOPF95 3
428500
#define USB_DWC2_DCFG_DEVADDR_POS 4UL
429501
#define USB_DWC2_DCFG_DEVADDR_MASK (0x7FUL << USB_DWC2_DCFG_DEVADDR_POS)
502+
#define USB_DWC2_DCFG_ENA32KHZSUSP_POS 3UL
503+
#define USB_DWC2_DCFG_ENA32KHZSUSP BIT(USB_DWC2_DCFG_ENA32KHZSUSP_POS)
504+
#define USB_DWC2_DCFG_NZSTSOUTHSHK_POS 2UL
505+
#define USB_DWC2_DCFG_NZSTSOUTHSHK BIT(USB_DWC2_DCFG_NZSTSOUTHSHK_POS)
430506
#define USB_DWC2_DCFG_DEVSPD_POS 0UL
431507
#define USB_DWC2_DCFG_DEVSPD_MASK (0x03UL << USB_DWC2_DCFG_DEVSPD_POS)
432508
#define USB_DWC2_DCFG_DEVSPD_USBHS20 0
433509
#define USB_DWC2_DCFG_DEVSPD_USBFS20 1
434510
#define USB_DWC2_DCFG_DEVSPD_USBLS116 2
435511
#define USB_DWC2_DCFG_DEVSPD_USBFS1148 3
436512

513+
USB_DWC2_SET_FIELD_DEFINE(dcfg_resvalid, DCFG_RESVALID)
514+
USB_DWC2_SET_FIELD_DEFINE(dcfg_perschintvl, DCFG_PERSCHINTVL)
515+
USB_DWC2_SET_FIELD_DEFINE(dcfg_epmiscnt, DCFG_EPMISCNT)
516+
USB_DWC2_SET_FIELD_DEFINE(dcfg_perfrint, DCFG_PERFRINT)
437517
USB_DWC2_SET_FIELD_DEFINE(dcfg_devaddr, DCFG_DEVADDR)
518+
USB_DWC2_SET_FIELD_DEFINE(dcfg_devspd, DCFG_DEVSPD)
519+
USB_DWC2_GET_FIELD_DEFINE(dcfg_resvalid, DCFG_RESVALID)
520+
USB_DWC2_GET_FIELD_DEFINE(dcfg_perschintvl, DCFG_PERSCHINTVL)
521+
USB_DWC2_GET_FIELD_DEFINE(dcfg_epmiscnt, DCFG_EPMISCNT)
522+
USB_DWC2_GET_FIELD_DEFINE(dcfg_perfrint, DCFG_PERFRINT)
523+
USB_DWC2_GET_FIELD_DEFINE(dcfg_devaddr, DCFG_DEVADDR)
438524
USB_DWC2_GET_FIELD_DEFINE(dcfg_devspd, DCFG_DEVSPD)
439525

440526
/* Device control register */
@@ -494,6 +580,34 @@ USB_DWC2_GET_FIELD_DEFINE(dsts_enumspd, DSTS_ENUMSPD)
494580
#define USB_DWC2_DAINT_OUTEPINT(ep_num) BIT(16UL + ep_num)
495581
#define USB_DWC2_DAINT_INEPINT(ep_num) BIT(ep_num)
496582

583+
/* Device threshold control register */
584+
#define USB_DWC2_DTHRCTL 0x0830UL
585+
#define USB_DWC2_DTHRCTL_ARBPRKEN_POS 27UL
586+
#define USB_DWC2_DTHRCTL_ARBPRKEN BIT(USB_DWC2_DTHRCTL_ARBPRKEN_POS)
587+
#define USB_DWC2_DTHRCTL_RXTHRLEN_POS 17UL
588+
#define USB_DWC2_DTHRCTL_RXTHRLEN_MASK (0x1FFUL << USB_DWC2_DTHRCTL_RXTHRLEN_POS)
589+
#define USB_DWC2_DTHRCTL_RXTHREN_POS 16UL
590+
#define USB_DWC2_DTHRCTL_RXTHREN BIT(USB_DWC2_DTHRCTL_RXTHREN_POS)
591+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_POS 11UL
592+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_MASK (0x3UL << USB_DWC2_DTHRCTL_AHBTHRRATIO_POS)
593+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESZERO 0
594+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESONE 1
595+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESTWO 2
596+
#define USB_DWC2_DTHRCTL_AHBTHRRATIO_THRESTHREE 3
597+
#define USB_DWC2_DTHRCTL_TXTHRLEN_POS 2UL
598+
#define USB_DWC2_DTHRCTL_TXTHRLEN_MASK (0x1FFUL << USB_DWC2_DTHRCTL_TXTHRLEN_POS)
599+
#define USB_DWC2_DTHRCTL_ISOTHREN_POS 1UL
600+
#define USB_DWC2_DTHRCTL_ISOTHREN BIT(USB_DWC2_DTHRCTL_ISOTHREN_POS)
601+
#define USB_DWC2_DTHRCTL_NONISOTHREN_POS 0UL
602+
#define USB_DWC2_DTHRCTL_NONISOTHREN BIT(USB_DWC2_DTHRCTL_NONISOTHREN_POS)
603+
604+
USB_DWC2_GET_FIELD_DEFINE(dthrctl_rxthrlen, DTHRCTL_RXTHRLEN)
605+
USB_DWC2_GET_FIELD_DEFINE(dthrctl_ahbthrratio, DTHRCTL_AHBTHRRATIO)
606+
USB_DWC2_GET_FIELD_DEFINE(dthrctl_txthrlen, DTHRCTL_TXTHRLEN)
607+
USB_DWC2_SET_FIELD_DEFINE(dthrctl_rxthrlen, DTHRCTL_RXTHRLEN)
608+
USB_DWC2_SET_FIELD_DEFINE(dthrctl_ahbthrratio, DTHRCTL_AHBTHRRATIO)
609+
USB_DWC2_SET_FIELD_DEFINE(dthrctl_txthrlen, DTHRCTL_TXTHRLEN)
610+
497611
/*
498612
* Device IN/OUT endpoint control register
499613
* IN endpoint offsets 0x0900 + (0x20 * n), n = 0 .. x,
@@ -648,6 +762,8 @@ USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_xfersize, DEPTSIZ0_XFERSIZE)
648762

649763
USB_DWC2_GET_FIELD_DEFINE(deptsizn_pktcnt, DEPTSIZN_PKTCNT)
650764
USB_DWC2_GET_FIELD_DEFINE(deptsizn_xfersize, DEPTSIZN_XFERSIZE)
765+
USB_DWC2_SET_FIELD_DEFINE(deptsizn_pktcnt, DEPTSIZN_PKTCNT)
766+
USB_DWC2_SET_FIELD_DEFINE(deptsizn_xfersize, DEPTSIZN_XFERSIZE)
651767

652768
/*
653769
* Device IN/OUT endpoint transfer size register

0 commit comments

Comments
 (0)