aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/dwc
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2020-11-20 11:29:00 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2020-11-20 11:29:00 +0000
commitafd0c3c26801cd038203da1df61be9728e3369a4 (patch)
treebe8181ccf9abf6b873bef7de47993c76a35cea93 /sys/dev/dwc
parenta19071cea2391d0f1188f5d51366e1db8f2f1e29 (diff)
Notes
Diffstat (limited to 'sys/dev/dwc')
-rw-r--r--sys/dev/dwc/if_dwc.c41
1 files changed, 25 insertions, 16 deletions
diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c
index aa8fbc9a12b3..d4bc4caffa32 100644
--- a/sys/dev/dwc/if_dwc.c
+++ b/sys/dev/dwc/if_dwc.c
@@ -214,6 +214,7 @@ static void dwc_setup_rxfilter(struct dwc_softc *sc);
static void dwc_setup_core(struct dwc_softc *sc);
static void dwc_enable_mac(struct dwc_softc *sc, bool enable);
static void dwc_init_dma(struct dwc_softc *sc);
+static void dwc_stop_dma(struct dwc_softc *sc);
static inline uint32_t
next_rxidx(struct dwc_softc *sc, uint32_t curidx)
@@ -359,7 +360,6 @@ static void
dwc_stop_locked(struct dwc_softc *sc)
{
struct ifnet *ifp;
- uint32_t reg;
DWC_ASSERT_LOCKED(sc);
@@ -370,22 +370,8 @@ dwc_stop_locked(struct dwc_softc *sc)
callout_stop(&sc->dwc_callout);
- /* Stop DMA TX */
- reg = READ4(sc, OPERATION_MODE);
- reg &= ~(MODE_ST);
- WRITE4(sc, OPERATION_MODE, reg);
-
- /* Flush TX */
- reg = READ4(sc, OPERATION_MODE);
- reg |= (MODE_FTF);
- WRITE4(sc, OPERATION_MODE, reg);
-
+ dwc_stop_dma(sc);
dwc_enable_mac(sc, false);
-
- /* Stop DMA RX */
- reg = READ4(sc, OPERATION_MODE);
- reg &= ~(MODE_SR);
- WRITE4(sc, OPERATION_MODE, reg);
}
static void dwc_clear_stats(struct dwc_softc *sc)
@@ -819,6 +805,29 @@ dwc_init_dma(struct dwc_softc *sc)
WRITE4(sc, OPERATION_MODE, reg);
}
+static void
+dwc_stop_dma(struct dwc_softc *sc)
+{
+ uint32_t reg;
+
+ DWC_ASSERT_LOCKED(sc);
+
+ /* Stop DMA TX */
+ reg = READ4(sc, OPERATION_MODE);
+ reg &= ~(MODE_ST);
+ WRITE4(sc, OPERATION_MODE, reg);
+
+ /* Flush TX */
+ reg = READ4(sc, OPERATION_MODE);
+ reg |= (MODE_FTF);
+ WRITE4(sc, OPERATION_MODE, reg);
+
+ /* Stop DMA RX */
+ reg = READ4(sc, OPERATION_MODE);
+ reg &= ~(MODE_SR);
+ WRITE4(sc, OPERATION_MODE, reg);
+}
+
static int
dwc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
{