Author: adrian
Date: Wed Feb 19 04:23:01 2014
New Revision: 262200
URL: http://svnweb.freebsd.org/changeset/base/262200

Log:
  Add in a flag to control whether the low or high data word of a register 
access
  is latched in first.
  
  The AR8327 apparently requires the low data word be latched in first.
  
  Obtained from:        Linux OpenWRT

Modified:
  head/sys/dev/etherswitch/arswitch/arswitch_reg.c
  head/sys/dev/etherswitch/arswitch/arswitchvar.h

Modified: head/sys/dev/etherswitch/arswitch/arswitch_reg.c
==============================================================================
--- head/sys/dev/etherswitch/arswitch/arswitch_reg.c    Wed Feb 19 00:35:27 
2014        (r262199)
+++ head/sys/dev/etherswitch/arswitch/arswitch_reg.c    Wed Feb 19 04:23:01 
2014        (r262200)
@@ -172,10 +172,21 @@ arswitch_readreg(device_t dev, int addr)
 int
 arswitch_writereg(device_t dev, int addr, int value)
 {
+       struct arswitch_softc *sc;
+       int r;
+
+       sc = device_get_softc(dev);
 
        /* XXX Check the first write too? */
-       arswitch_writereg_msb(dev, addr, value);
-       return (arswitch_writereg_lsb(dev, addr, value));
+       if (sc->mii_lo_first) {
+               r = arswitch_writereg_lsb(dev, addr, value);
+               r |= arswitch_writereg_msb(dev, addr, value);
+       } else {
+               r = arswitch_writereg_msb(dev, addr, value);
+               r |= arswitch_writereg_lsb(dev, addr, value);
+       }
+
+       return r;
 }
 
 int

Modified: head/sys/dev/etherswitch/arswitch/arswitchvar.h
==============================================================================
--- head/sys/dev/etherswitch/arswitch/arswitchvar.h     Wed Feb 19 00:35:27 
2014        (r262199)
+++ head/sys/dev/etherswitch/arswitch/arswitchvar.h     Wed Feb 19 04:23:01 
2014        (r262200)
@@ -53,6 +53,7 @@ struct arswitch_softc {
        int             is_mii;         /* PHY mode is MII (XXX which PHY?) */
        int             page;
        int             is_internal_switch;
+       int             mii_lo_first;
        ar8x16_switch_type      sc_switchtype;
        char            *ifname[AR8X16_NUM_PHYS];
        device_t        miibus[AR8X16_NUM_PHYS];
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to