diff options
Diffstat (limited to 'sys/dev/pwm')
-rw-r--r-- | sys/dev/pwm/controller/allwinner/aw_pwm.c | 8 | ||||
-rw-r--r-- | sys/dev/pwm/controller/rockchip/rk_pwm.c | 5 | ||||
-rw-r--r-- | sys/dev/pwm/ofw_pwmbus.c | 11 | ||||
-rw-r--r-- | sys/dev/pwm/pwmbus.c | 18 |
4 files changed, 17 insertions, 25 deletions
diff --git a/sys/dev/pwm/controller/allwinner/aw_pwm.c b/sys/dev/pwm/controller/allwinner/aw_pwm.c index 8d7e38834fdd..117f3ae17e1b 100644 --- a/sys/dev/pwm/controller/allwinner/aw_pwm.c +++ b/sys/dev/pwm/controller/allwinner/aw_pwm.c @@ -188,9 +188,10 @@ skipcfg: node = ofw_bus_get_node(dev); OF_device_register_xref(OF_xref_from_node(node), dev); - sc->busdev = device_add_child(dev, "pwmbus", -1); + sc->busdev = device_add_child(dev, "pwmbus", DEVICE_UNIT_ANY); - return (bus_generic_attach(dev)); + bus_attach_children(dev); + return (0); fail: aw_pwm_detach(dev); @@ -210,9 +211,6 @@ aw_pwm_detach(device_t dev) return (error); } - if (sc->busdev != NULL) - device_delete_child(dev, sc->busdev); - if (sc->res != NULL) bus_release_resources(dev, aw_pwm_spec, &sc->res); diff --git a/sys/dev/pwm/controller/rockchip/rk_pwm.c b/sys/dev/pwm/controller/rockchip/rk_pwm.c index f1f3946e4d59..d05a51e9afb9 100644 --- a/sys/dev/pwm/controller/rockchip/rk_pwm.c +++ b/sys/dev/pwm/controller/rockchip/rk_pwm.c @@ -212,9 +212,10 @@ rk_pwm_attach(device_t dev) node = ofw_bus_get_node(dev); OF_device_register_xref(OF_xref_from_node(node), dev); - sc->busdev = device_add_child(dev, "pwmbus", -1); + sc->busdev = device_add_child(dev, "pwmbus", DEVICE_UNIT_ANY); - return (bus_generic_attach(dev)); + bus_attach_children(dev); + return (0); fail: rk_pwm_detach(dev); diff --git a/sys/dev/pwm/ofw_pwmbus.c b/sys/dev/pwm/ofw_pwmbus.c index 2d2c47291bca..913792374fd9 100644 --- a/sys/dev/pwm/ofw_pwmbus.c +++ b/sys/dev/pwm/ofw_pwmbus.c @@ -150,7 +150,8 @@ ofw_pwmbus_attach(device_t dev) if (chan >= sc->base.nchannels) continue; - if ((child = ofw_pwmbus_add_child(dev, 0, NULL, -1)) == NULL) + if ((child = ofw_pwmbus_add_child(dev, 0, NULL, + DEVICE_UNIT_ANY)) == NULL) continue; ivars = device_get_ivars(child); @@ -173,7 +174,8 @@ ofw_pwmbus_attach(device_t dev) */ if (!any_children) { for (chan = 0; chan < sc->base.nchannels; ++chan) { - child = ofw_pwmbus_add_child(dev, 0, "pwmc", -1); + child = ofw_pwmbus_add_child(dev, 0, "pwmc", + DEVICE_UNIT_ANY); if (child == NULL) { device_printf(dev, "failed to add pwmc child " " device for channel %u\n", chan); @@ -184,9 +186,10 @@ ofw_pwmbus_attach(device_t dev) } } bus_enumerate_hinted_children(dev); - bus_generic_probe(dev); + bus_identify_children(dev); + bus_attach_children(dev); - return (bus_generic_attach(dev)); + return (0); } static device_method_t ofw_pwmbus_methods[] = { diff --git a/sys/dev/pwm/pwmbus.c b/sys/dev/pwm/pwmbus.c index e4feaa95e590..c0c07a36c277 100644 --- a/sys/dev/pwm/pwmbus.c +++ b/sys/dev/pwm/pwmbus.c @@ -182,20 +182,10 @@ pwmbus_attach(device_t dev) } bus_enumerate_hinted_children(dev); - bus_generic_probe(dev); + bus_identify_children(dev); + bus_attach_children(dev); - return (bus_generic_attach(dev)); -} - -static int -pwmbus_detach(device_t dev) -{ - int rv; - - if ((rv = bus_generic_detach(dev)) == 0) - rv = device_delete_children(dev); - - return (rv); + return (0); } /* @@ -248,7 +238,7 @@ static device_method_t pwmbus_methods[] = { /* device_if */ DEVMETHOD(device_probe, pwmbus_probe), DEVMETHOD(device_attach, pwmbus_attach), - DEVMETHOD(device_detach, pwmbus_detach), + DEVMETHOD(device_detach, bus_generic_detach), /* bus_if */ DEVMETHOD(bus_add_child, pwmbus_add_child), |