summaryrefslogtreecommitdiffstats
path: root/sys/dev/ichiic/ig4_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/ichiic/ig4_pci.c')
-rw-r--r--sys/dev/ichiic/ig4_pci.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/dev/ichiic/ig4_pci.c b/sys/dev/ichiic/ig4_pci.c
index 42c3664..7038cae 100644
--- a/sys/dev/ichiic/ig4_pci.c
+++ b/sys/dev/ichiic/ig4_pci.c
@@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
#include <sys/errno.h>
#include <sys/lock.h>
#include <sys/mutex.h>
+#include <sys/sx.h>
#include <sys/syslog.h>
#include <sys/bus.h>
@@ -94,7 +95,8 @@ ig4iic_pci_attach(device_t dev)
bzero(sc, sizeof(*sc));
- mtx_init(&sc->mutex, device_get_nameunit(dev), "ig4iic", MTX_DEF);
+ mtx_init(&sc->io_lock, "IG4 I/O lock", NULL, MTX_DEF);
+ sx_init(&sc->call_lock, "IG4 call lock");
sc->dev = dev;
sc->regs_rid = PCIR_BAR(0);
@@ -150,7 +152,10 @@ ig4iic_pci_detach(device_t dev)
sc->regs_rid, sc->regs_res);
sc->regs_res = NULL;
}
- mtx_destroy(&sc->mutex);
+ if (mtx_initialized(&sc->io_lock)) {
+ mtx_destroy(&sc->io_lock);
+ sx_destroy(&sc->call_lock);
+ }
return (0);
}
@@ -179,9 +184,9 @@ static device_method_t ig4iic_pci_methods[] = {
};
static driver_t ig4iic_pci_driver = {
- "ig4iic",
- ig4iic_pci_methods,
- sizeof(struct ig4iic_softc)
+ "ig4iic",
+ ig4iic_pci_methods,
+ sizeof(struct ig4iic_softc)
};
static devclass_t ig4iic_pci_devclass;
OpenPOWER on IntegriCloud