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