svn commit: r308937 - head/sys/dev/etherswitch/ukswitch

Michael Zhilin mizhka at FreeBSD.org
Mon Nov 21 19:26:24 UTC 2016


Author: mizhka
Date: Mon Nov 21 19:26:22 2016
New Revision: 308937
URL: https://svnweb.freebsd.org/changeset/base/308937

Log:
  [etherswitch] add ukswitch hint that is phy offset at mdio register
  
  This patch allows to specify PHY register offset for ukswitch. For instance,
  switch MAICREL KS8995XA connected via MDIO to SoC, but PHY register starts
  at 1. So hint for this case is: hint.ukswitch.0.phyoffset=1
  
  No change/effect if hint is not set.
  
  Submitted by:	Hiroki Mori <yamori813 at yahoo.co.jp>
  Reviewed by:	adrian, mizhka
  Approved by:	adrian(mentor)
  Differential Revision:	https://reviews.freebsd.org/D8584

Modified:
  head/sys/dev/etherswitch/ukswitch/ukswitch.c

Modified: head/sys/dev/etherswitch/ukswitch/ukswitch.c
==============================================================================
--- head/sys/dev/etherswitch/ukswitch/ukswitch.c	Mon Nov 21 19:14:46 2016	(r308936)
+++ head/sys/dev/etherswitch/ukswitch/ukswitch.c	Mon Nov 21 19:26:22 2016	(r308937)
@@ -67,6 +67,7 @@ struct ukswitch_softc {
 	int		media;		/* cpu port media */
 	int		cpuport;	/* which PHY is connected to the CPU */
 	int		phymask;	/* PHYs we manage */
+	int		phyoffset;	/* PHYs register offset */
 	int		numports;	/* number of ports */
 	int		ifpport[MII_NPHY];
 	int		*portphy;
@@ -133,7 +134,7 @@ ukswitch_attach_phys(struct ukswitch_sof
 		    M_WAITOK | M_ZERO);
 		err = mii_attach(sc->sc_dev, sc->miibus[port], sc->ifp[port],
 		    ukswitch_ifmedia_upd, ukswitch_ifmedia_sts, \
-		    BMSR_DEFCAPMASK, phy, MII_OFFSET_ANY, 0);
+		    BMSR_DEFCAPMASK, phy + sc->phyoffset, MII_OFFSET_ANY, 0);
 		DPRINTF(sc->sc_dev, "%s attached to pseudo interface %s\n",
 		    device_get_nameunit(*sc->miibus[port]),
 		    sc->ifp[port]->if_xname);
@@ -166,6 +167,7 @@ ukswitch_attach(device_t dev)
 	/* XXX Defaults */
 	sc->numports = 6;
 	sc->phymask = 0x0f;
+	sc->phyoffset = 0;
 	sc->cpuport = -1;
 	sc->media = 100;
 
@@ -174,6 +176,8 @@ ukswitch_attach(device_t dev)
 	(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
 	    "phymask", &sc->phymask);
 	(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
+	    "phyoffset", &sc->phyoffset);
+	(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
 	    "cpuport", &sc->cpuport);
 	(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
 	    "media", &sc->media);


More information about the svn-src-all mailing list