aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/dwc
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2020-11-20 11:27:43 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2020-11-20 11:27:43 +0000
commitf368f4b10924cb530e5ab2ada38bb2b08e193ea8 (patch)
tree4173df2455c862674be2832d38879e46cce824b8 /sys/dev/dwc
parent16790d8f79e537b20399c98c9f17a36974cfeda9 (diff)
downloadsrc-f368f4b10924cb530e5ab2ada38bb2b08e193ea8.tar.gz
src-f368f4b10924cb530e5ab2ada38bb2b08e193ea8.zip
if_dwc: Add a function to enable/disable the mac tx/rx
No functional changes intended
Notes
Notes: svn path=/head/; revision=367878
Diffstat (limited to 'sys/dev/dwc')
-rw-r--r--sys/dev/dwc/if_dwc.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c
index e4270f7dd3de..74e5922ff828 100644
--- a/sys/dev/dwc/if_dwc.c
+++ b/sys/dev/dwc/if_dwc.c
@@ -212,6 +212,7 @@ static void dwc_rxfinish_locked(struct dwc_softc *sc);
static void dwc_stop_locked(struct dwc_softc *sc);
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 inline uint32_t
@@ -483,6 +484,7 @@ dwc_init_locked(struct dwc_softc *sc)
dwc_setup_rxfilter(sc);
dwc_setup_core(sc);
+ dwc_enable_mac(sc, true);
dwc_init_dma(sc);
if_setdrvflagbits(ifp, IFF_DRV_RUNNING, IFF_DRV_OACTIVE);
@@ -778,10 +780,23 @@ dwc_setup_core(struct dwc_softc *sc)
DWC_ASSERT_LOCKED(sc);
- /* Enable transmitters */
+ /* Enable core */
reg = READ4(sc, MAC_CONFIGURATION);
reg |= (CONF_JD | CONF_ACS | CONF_BE);
- reg |= (CONF_TE | CONF_RE);
+ WRITE4(sc, MAC_CONFIGURATION, reg);
+}
+
+static void
+dwc_enable_mac(struct dwc_softc *sc, bool enable)
+{
+ uint32_t reg;
+
+ DWC_ASSERT_LOCKED(sc);
+ reg = READ4(sc, MAC_CONFIGURATION);
+ if (enable)
+ reg |= CONF_TE | CONF_RE;
+ else
+ reg &= ~(CONF_TE | CONF_RE);
WRITE4(sc, MAC_CONFIGURATION, reg);
}