diff options
author | Emmanuel Vadot <manu@FreeBSD.org> | 2020-11-20 11:27:43 +0000 |
---|---|---|
committer | Emmanuel Vadot <manu@FreeBSD.org> | 2020-11-20 11:27:43 +0000 |
commit | f368f4b10924cb530e5ab2ada38bb2b08e193ea8 (patch) | |
tree | 4173df2455c862674be2832d38879e46cce824b8 /sys/dev/dwc | |
parent | 16790d8f79e537b20399c98c9f17a36974cfeda9 (diff) | |
download | src-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.c | 19 |
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); } |