aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pwm
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/pwm')
-rw-r--r--sys/dev/pwm/controller/allwinner/aw_pwm.c8
-rw-r--r--sys/dev/pwm/controller/rockchip/rk_pwm.c5
-rw-r--r--sys/dev/pwm/ofw_pwmbus.c11
-rw-r--r--sys/dev/pwm/pwmbus.c18
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),