summaryrefslogtreecommitdiffstats
path: root/sys/dev/iicbus/iicbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/iicbus/iicbus.c')
-rw-r--r--sys/dev/iicbus/iicbus.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c
index 8594b8d..de64874 100644
--- a/sys/dev/iicbus/iicbus.c
+++ b/sys/dev/iicbus/iicbus.c
@@ -34,8 +34,10 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
+#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/module.h>
+#include <sys/mutex.h>
#include <sys/bus.h>
#include <dev/iicbus/iiconf.h>
@@ -90,6 +92,7 @@ iicbus_attach(device_t dev)
struct iicbus_softc *sc = IICBUS_SOFTC(dev);
sc->dev = dev;
+ mtx_init(&sc->lock, "iicbus", NULL, MTX_DEF);
iicbus_reset(dev, IIC_FASTEST, 0, NULL);
/* device probing is meaningless since the bus is supposed to be
@@ -108,13 +111,8 @@ iicbus_attach(device_t dev)
}
printf("\n");
#endif
- /* Always attach the iicsmb children */
- BUS_ADD_CHILD(dev, 0, "iicsmb", -1);
- /* attach any known device */
- BUS_ADD_CHILD(dev, 0, "iic", -1);
- /* Attach the wired devices via hints */
+ bus_generic_probe(dev);
bus_enumerate_hinted_children(dev);
- /* Now probe and attach them */
bus_generic_attach(dev);
return (0);
}
@@ -122,9 +120,11 @@ iicbus_attach(device_t dev)
static int
iicbus_detach(device_t dev)
{
+ struct iicbus_softc *sc = IICBUS_SOFTC(dev);
iicbus_reset(dev, IIC_FASTEST, 0, NULL);
bus_generic_detach(dev);
+ mtx_destroy(&sc->lock);
return (0);
}
@@ -265,6 +265,4 @@ driver_t iicbus_driver = {
devclass_t iicbus_devclass;
-DRIVER_MODULE(iicbus, envctrl, iicbus_driver, iicbus_devclass, 0, 0);
-DRIVER_MODULE(iicbus, iicbb, iicbus_driver, iicbus_devclass, 0, 0);
MODULE_VERSION(iicbus, IICBUS_MODVER);
OpenPOWER on IntegriCloud