aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/etherswitch/ukswitch
diff options
context:
space:
mode:
authorMichael Zhilin <mizhka@FreeBSD.org>2016-11-21 19:26:22 +0000
committerMichael Zhilin <mizhka@FreeBSD.org>2016-11-21 19:26:22 +0000
commitb15317c43192e806f2db7d725dcec84aff9c30d8 (patch)
tree1fe039209191934ca9c0a15e79364bdd3288338f /sys/dev/etherswitch/ukswitch
parente45c936f460ed5f635ba0fca87114220017e693b (diff)
Notes
Diffstat (limited to 'sys/dev/etherswitch/ukswitch')
-rw-r--r--sys/dev/etherswitch/ukswitch/ukswitch.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/etherswitch/ukswitch/ukswitch.c b/sys/dev/etherswitch/ukswitch/ukswitch.c
index 876aa9da2267..5d8c95eabb8d 100644
--- a/sys/dev/etherswitch/ukswitch/ukswitch.c
+++ b/sys/dev/etherswitch/ukswitch/ukswitch.c
@@ -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_softc *sc)
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);