git: 5d88a52be44a - main - dwc: Move dma engine configuration to dwc1000_dma.c

From: Emmanuel Vadot <manu_at_FreeBSD.org>
Date: Thu, 05 Oct 2023 15:35:11 UTC
The branch main has been updated by manu:

URL: https://cgit.FreeBSD.org/src/commit/?id=5d88a52be44a98e2b49db7ead317b2d0b2ef9eaa

commit 5d88a52be44a98e2b49db7ead317b2d0b2ef9eaa
Author:     Emmanuel Vadot <manu@FreeBSD.org>
AuthorDate: 2023-10-04 16:19:26 +0000
Commit:     Emmanuel Vadot <manu@FreeBSD.org>
CommitDate: 2023-10-05 15:34:40 +0000

    dwc: Move dma engine configuration to dwc1000_dma.c
    
    No functional changes intended.
---
 sys/dev/dwc/dwc1000_dma.c | 14 ++++++++++++++
 sys/dev/dwc/if_dwc.c      | 37 +++++++++----------------------------
 sys/dev/dwc/if_dwcvar.h   |  8 ++++++++
 3 files changed, 31 insertions(+), 28 deletions(-)

diff --git a/sys/dev/dwc/dwc1000_dma.c b/sys/dev/dwc/dwc1000_dma.c
index 25916404bb63..16b2b2a3241d 100644
--- a/sys/dev/dwc/dwc1000_dma.c
+++ b/sys/dev/dwc/dwc1000_dma.c
@@ -632,6 +632,20 @@ dma1000_init(struct dwc_softc *sc)
 	int nidx;
 	int idx;
 
+	reg = BUS_MODE_USP;
+	if (!sc->nopblx8)
+		reg |= BUS_MODE_EIGHTXPBL;
+	reg |= (sc->txpbl << BUS_MODE_PBL_SHIFT);
+	reg |= (sc->rxpbl << BUS_MODE_RPBL_SHIFT);
+	if (sc->fixed_burst)
+		reg |= BUS_MODE_FIXEDBURST;
+	if (sc->mixed_burst)
+		reg |= BUS_MODE_MIXEDBURST;
+	if (sc->aal)
+		reg |= BUS_MODE_AAL;
+
+	WRITE4(sc, BUS_MODE, reg);
+
 	/*
 	 * DMA must be stop while changing descriptor list addresses.
 	 */
diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c
index a3ce32c95cb9..0e18d57a4c23 100644
--- a/sys/dev/dwc/if_dwc.c
+++ b/sys/dev/dwc/if_dwc.c
@@ -498,12 +498,7 @@ dwc_attach(device_t dev)
 	struct dwc_softc *sc;
 	if_t ifp;
 	int error;
-	uint32_t reg;
-	uint32_t txpbl, rxpbl, pbl;
-	bool nopblx8 = false;
-	bool fixed_burst = false;
-	bool mixed_burst = false;
-	bool aal = false;
+	uint32_t pbl;
 
 	sc = device_get_softc(dev);
 	sc->dev = dev;
@@ -534,18 +529,18 @@ dwc_attach(device_t dev)
 
 	if (OF_getencprop(sc->node, "snps,pbl", &pbl, sizeof(uint32_t)) <= 0)
 		pbl = BUS_MODE_DEFAULT_PBL;
-	if (OF_getencprop(sc->node, "snps,txpbl", &txpbl, sizeof(uint32_t)) <= 0)
-		txpbl = pbl;
-	if (OF_getencprop(sc->node, "snps,rxpbl", &rxpbl, sizeof(uint32_t)) <= 0)
-		rxpbl = pbl;
+	if (OF_getencprop(sc->node, "snps,txpbl", &sc->txpbl, sizeof(uint32_t)) <= 0)
+		sc->txpbl = pbl;
+	if (OF_getencprop(sc->node, "snps,rxpbl", &sc->rxpbl, sizeof(uint32_t)) <= 0)
+		sc->rxpbl = pbl;
 	if (OF_hasprop(sc->node, "snps,no-pbl-x8") == 1)
-		nopblx8 = true;
+		sc->nopblx8 = true;
 	if (OF_hasprop(sc->node, "snps,fixed-burst") == 1)
-		fixed_burst = true;
+		sc->fixed_burst = true;
 	if (OF_hasprop(sc->node, "snps,mixed-burst") == 1)
-		mixed_burst = true;
+		sc->mixed_burst = true;
 	if (OF_hasprop(sc->node, "snps,aal") == 1)
-		aal = true;
+		sc->aal = true;
 
 	error = clk_set_assigned(dev, ofw_bus_get_node(dev));
 	if (error != 0) {
@@ -585,20 +580,6 @@ dwc_attach(device_t dev)
 		return (error);
 	}
 
-	reg = BUS_MODE_USP;
-	if (!nopblx8)
-		reg |= BUS_MODE_EIGHTXPBL;
-	reg |= (txpbl << BUS_MODE_PBL_SHIFT);
-	reg |= (rxpbl << BUS_MODE_RPBL_SHIFT);
-	if (fixed_burst)
-		reg |= BUS_MODE_FIXEDBURST;
-	if (mixed_burst)
-		reg |= BUS_MODE_MIXEDBURST;
-	if (aal)
-		reg |= BUS_MODE_AAL;
-
-	WRITE4(sc, BUS_MODE, reg);
-
 	if (dma1000_init(sc)) {
 		bus_release_resources(dev, dwc_spec, sc->res);
 		return (ENXIO);
diff --git a/sys/dev/dwc/if_dwcvar.h b/sys/dev/dwc/if_dwcvar.h
index 8a4b941297d0..2481b5c220bf 100644
--- a/sys/dev/dwc/if_dwcvar.h
+++ b/sys/dev/dwc/if_dwcvar.h
@@ -81,6 +81,14 @@ struct dwc_softc {
 	hwreset_t		rst_stmmaceth;
 	hwreset_t		rst_ahb;
 
+	/* DMA config */
+	uint32_t		txpbl;	/* TX Burst lenght */
+	uint32_t		rxpbl;	/* RX Burst lenght */
+	bool			nopblx8;
+	bool			fixed_burst;
+	bool			mixed_burst;
+	bool			aal;
+
 	/* RX */
 	bus_dma_tag_t		rxdesc_tag;
 	bus_dmamap_t		rxdesc_map;