diff options
author | Emmanuel Vadot <manu@FreeBSD.org> | 2023-09-23 16:52:29 +0000 |
---|---|---|
committer | Emmanuel Vadot <manu@FreeBSD.org> | 2023-10-05 15:34:38 +0000 |
commit | f4bb6ea5212b05445e1e7f01d9023714c83344cb (patch) | |
tree | 77fb87230dc0e1a7f66d6f43d9b64a05d162d51e | |
parent | 27f03f1608f35c59d4f05e759729fa58685db8aa (diff) | |
download | src-f4bb6ea5212b05445e1e7f01d9023714c83344cb.tar.gz src-f4bb6ea5212b05445e1e7f01d9023714c83344cb.zip |
dwc: Add support for mixed-burst
snps,mixed-burst is used to indicate that the DMA engine should
use mixed-burst mode.
-rw-r--r-- | sys/dev/dwc/if_dwc.c | 5 | ||||
-rw-r--r-- | sys/dev/dwc/if_dwc.h | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c index 6ef9fb8513af..7acb70457a24 100644 --- a/sys/dev/dwc/if_dwc.c +++ b/sys/dev/dwc/if_dwc.c @@ -1609,6 +1609,7 @@ dwc_attach(device_t dev) uint32_t txpbl, rxpbl, pbl; bool nopblx8 = false; bool fixed_burst = false; + bool mixed_burst = false; sc = device_get_softc(dev); sc->dev = dev; @@ -1647,6 +1648,8 @@ dwc_attach(device_t dev) nopblx8 = true; if (OF_hasprop(sc->node, "snps,fixed-burst") == 1) fixed_burst = true; + if (OF_hasprop(sc->node, "snps,mixed-burst") == 1) + mixed_burst = true; if (IF_DWC_INIT(dev) != 0) return (ENXIO); @@ -1692,6 +1695,8 @@ dwc_attach(device_t dev) reg |= (rxpbl << BUS_MODE_RPBL_SHIFT); if (fixed_burst) reg |= BUS_MODE_FIXEDBURST; + if (mixed_burst) + reg |= BUS_MODE_MIXEDBURST; WRITE4(sc, BUS_MODE, reg); diff --git a/sys/dev/dwc/if_dwc.h b/sys/dev/dwc/if_dwc.h index 5397b5801596..113477818e4b 100644 --- a/sys/dev/dwc/if_dwc.h +++ b/sys/dev/dwc/if_dwc.h @@ -219,6 +219,7 @@ /* DMA */ #define BUS_MODE 0x1000 +#define BUS_MODE_MIXEDBURST (1 << 26) #define BUS_MODE_EIGHTXPBL (1 << 24) /* Multiplies PBL by 8 */ #define BUS_MODE_USP (1 << 23) #define BUS_MODE_RPBL_SHIFT 17 /* Single block transfer size */ |