svn commit: r262200 - head/sys/dev/etherswitch/arswitch

Adrian Chadd adrian at FreeBSD.org
Wed Feb 19 04:23:02 UTC 2014


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];


More information about the svn-src-head mailing list