aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/etherswitch/ar40xx/ar40xx_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/etherswitch/ar40xx/ar40xx_main.c')
-rw-r--r--sys/dev/etherswitch/ar40xx/ar40xx_main.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/dev/etherswitch/ar40xx/ar40xx_main.c b/sys/dev/etherswitch/ar40xx/ar40xx_main.c
index 757dbe23071e..d5636d26120b 100644
--- a/sys/dev/etherswitch/ar40xx/ar40xx_main.c
+++ b/sys/dev/etherswitch/ar40xx/ar40xx_main.c
@@ -254,22 +254,23 @@ static int
ar40xx_detach(device_t dev)
{
struct ar40xx_softc *sc = device_get_softc(dev);
- int i;
+ int error, i;
device_printf(sc->sc_dev, "%s: called\n", __func__);
+ error = bus_generic_detach(dev);
+ if (error != 0)
+ return (error);
+
callout_drain(&sc->sc_phy_callout);
/* Free PHYs */
for (i = 0; i < AR40XX_NUM_PHYS; i++) {
- if (sc->sc_phys.miibus[i] != NULL)
- device_delete_child(dev, sc->sc_phys.miibus[i]);
if (sc->sc_phys.ifp[i] != NULL)
if_free(sc->sc_phys.ifp[i]);
free(sc->sc_phys.ifname[i], M_DEVBUF);
}
- bus_generic_detach(dev);
mtx_destroy(&sc->sc_mtx);
return (0);
@@ -482,9 +483,9 @@ ar40xx_attach(device_t dev)
/* Attach PHYs */
ret = ar40xx_attach_phys(sc);
- ret = bus_generic_probe(dev);
+ bus_identify_children(dev);
bus_enumerate_hinted_children(dev);
- ret = bus_generic_attach(dev);
+ bus_attach_children(dev);
/* Start timer */
callout_init_mtx(&sc->sc_phy_callout, &sc->sc_mtx, 0);