svn commit: r279492 - head/sys/dev/etherswitch/arswitch
Adrian Chadd
adrian at FreeBSD.org
Sun Mar 1 20:32:36 UTC 2015
Author: adrian
Date: Sun Mar 1 20:32:35 2015
New Revision: 279492
URL: https://svnweb.freebsd.org/changeset/base/279492
Log:
AR8327: Disable energy-efficient ethernet support in the PHYs.
I noticed that openwrt/linux does this, citing "instability", so
until they figure out why I'm going to disable it here as well.
Tested:
* QCA AP135 - QCA955x SoC + AR8327 switch.
Modified:
head/sys/dev/etherswitch/arswitch/arswitch_8327.c
Modified: head/sys/dev/etherswitch/arswitch/arswitch_8327.c
==============================================================================
--- head/sys/dev/etherswitch/arswitch/arswitch_8327.c Sun Mar 1 20:26:03 2015 (r279491)
+++ head/sys/dev/etherswitch/arswitch/arswitch_8327.c Sun Mar 1 20:32:35 2015 (r279492)
@@ -66,7 +66,11 @@
static void
ar8327_phy_fixup(struct arswitch_softc *sc, int phy)
{
-
+ if (bootverbose)
+ device_printf(sc->sc_dev,
+ "%s: called; phy=%d; chiprev=%d\n", __func__,
+ phy,
+ sc->chip_rev);
switch (sc->chip_rev) {
case 1:
/* For 100M waveform */
@@ -385,23 +389,23 @@ ar8327_fetch_pdata_pad(struct arswitch_s
sbuf, &val) == 0)
pc->pipe_rxclk_sel = val;
-#if 0
- device_printf(sc->sc_dev,
- "%s: pad %d: mode=%d, rxclk_sel=%d, txclk_sel=%d, "
- "txclk_delay_sel=%d, rxclk_delay_sel=%d, txclk_delay_en=%d, "
- "rxclk_enable_en=%d, sgmii_delay_en=%d, pipe_rxclk_sel=%d\n",
- __func__,
- pad,
- pc->mode,
- pc->rxclk_sel,
- pc->txclk_sel,
- pc->txclk_delay_sel,
- pc->rxclk_delay_sel,
- pc->txclk_delay_en,
- pc->rxclk_delay_en,
- pc->sgmii_delay_en,
- pc->pipe_rxclk_sel);
-#endif
+ if (bootverbose) {
+ device_printf(sc->sc_dev,
+ "%s: pad %d: mode=%d, rxclk_sel=%d, txclk_sel=%d, "
+ "txclk_delay_sel=%d, rxclk_delay_sel=%d, txclk_delay_en=%d, "
+ "rxclk_enable_en=%d, sgmii_delay_en=%d, pipe_rxclk_sel=%d\n",
+ __func__,
+ pad,
+ pc->mode,
+ pc->rxclk_sel,
+ pc->txclk_sel,
+ pc->txclk_delay_sel,
+ pc->rxclk_delay_sel,
+ pc->txclk_delay_en,
+ pc->rxclk_delay_en,
+ pc->sgmii_delay_en,
+ pc->pipe_rxclk_sel);
+ }
return (1);
}
@@ -637,6 +641,15 @@ ar8327_hw_global_setup(struct arswitch_s
arswitch_modifyreg(sc->sc_dev, AR8327_REG_MODULE_EN,
AR8327_MODULE_EN_MIB, AR8327_MODULE_EN_MIB);
+ /* Disable EEE on all ports due to stability issues */
+ t = arswitch_readreg(sc->sc_dev, AR8327_REG_EEE_CTRL);
+ t |= AR8327_EEE_CTRL_DISABLE_PHY(0) |
+ AR8327_EEE_CTRL_DISABLE_PHY(1) |
+ AR8327_EEE_CTRL_DISABLE_PHY(2) |
+ AR8327_EEE_CTRL_DISABLE_PHY(3) |
+ AR8327_EEE_CTRL_DISABLE_PHY(4);
+ arswitch_writereg(sc->sc_dev, AR8327_REG_EEE_CTRL, t);
+
/* Set the right number of ports */
sc->info.es_nports = 6;
More information about the svn-src-all
mailing list