summaryrefslogtreecommitdiff
path: root/sys/dev/usb
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/ehci.c9
-rw-r--r--sys/dev/usb/ehcivar.h4
-rw-r--r--sys/dev/usb/ucom.c12
-rw-r--r--sys/dev/usb/usb_port.h4
4 files changed, 15 insertions, 14 deletions
diff --git a/sys/dev/usb/ehci.c b/sys/dev/usb/ehci.c
index 8f63d6d9a7a..8feb626a385 100644
--- a/sys/dev/usb/ehci.c
+++ b/sys/dev/usb/ehci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ehci.c,v 1.67 2006/08/22 01:53:42 pascoe Exp $ */
+/* $OpenBSD: ehci.c,v 1.68 2007/05/20 00:52:25 jsg Exp $ */
/* $NetBSD: ehci.c,v 1.66 2004/06/30 03:11:56 mycroft Exp $ */
/*
@@ -62,6 +62,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
+#include <sys/rwlock.h>
#include <sys/malloc.h>
#include <sys/device.h>
#include <sys/selinfo.h>
@@ -475,7 +476,7 @@ ehci_init(ehci_softc_t *sc)
usb_callout_init(sc->sc_tmo_pcd);
usb_callout_init(sc->sc_tmo_intrlist);
- lockinit(&sc->sc_doorbell_lock, PZERO, "ehcidb", 0, 0);
+ rw_init(&sc->sc_doorbell_lock, "ehcidb");
/* Turn on controller */
EOWRITE4(sc, EHCI_USBCMD,
@@ -1520,7 +1521,7 @@ ehci_sync_hc(ehci_softc_t *sc)
}
DPRINTFN(2,("ehci_sync_hc: enter\n"));
/* get doorbell */
- usb_lockmgr(&sc->sc_doorbell_lock, LK_EXCLUSIVE, NULL, curproc);
+ rw_enter_write(&sc->sc_doorbell_lock);
s = splhardusb();
do {
/* ask for doorbell */
@@ -1535,7 +1536,7 @@ ehci_sync_hc(ehci_softc_t *sc)
} while (error && ++tries < 10);
splx(s);
/* release doorbell */
- usb_lockmgr(&sc->sc_doorbell_lock, LK_RELEASE, NULL, curproc);
+ rw_exit_write(&sc->sc_doorbell_lock);
#ifdef DIAGNOSTIC
if (error)
printf("ehci_sync_hc: tsleep() = %d\n", error);
diff --git a/sys/dev/usb/ehcivar.h b/sys/dev/usb/ehcivar.h
index cdc8df4fff6..df68eaa40a9 100644
--- a/sys/dev/usb/ehcivar.h
+++ b/sys/dev/usb/ehcivar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ehcivar.h,v 1.10 2006/08/14 00:41:11 pascoe Exp $ */
+/* $OpenBSD: ehcivar.h,v 1.11 2007/05/20 00:52:26 jsg Exp $ */
/* $NetBSD: ehcivar.h,v 1.19 2005/04/29 15:04:29 augustss Exp $ */
/*
@@ -131,7 +131,7 @@ typedef struct ehci_softc {
SIMPLEQ_HEAD(, usbd_xfer) sc_free_xfers; /* free xfers */
- struct lock sc_doorbell_lock;
+ struct rwlock sc_doorbell_lock;
usb_callout_t sc_tmo_pcd;
usb_callout_t sc_tmo_intrlist;
diff --git a/sys/dev/usb/ucom.c b/sys/dev/usb/ucom.c
index 85c5a454856..6fee0fe07de 100644
--- a/sys/dev/usb/ucom.c
+++ b/sys/dev/usb/ucom.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ucom.c,v 1.32 2006/08/29 08:15:10 mbalmer Exp $ */
+/* $OpenBSD: ucom.c,v 1.33 2007/05/20 00:52:26 jsg Exp $ */
/* $NetBSD: ucom.c,v 1.49 2003/01/01 00:10:25 thorpej Exp $ */
/*
@@ -44,6 +44,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
+#include <sys/rwlock.h>
#include <sys/ioctl.h>
#include <sys/conf.h>
#include <sys/tty.h>
@@ -123,7 +124,7 @@ struct ucom_softc {
u_char sc_cua;
- struct lock sc_lock; /* lock during open */
+ struct rwlock sc_lock; /* lock during open */
int sc_open;
int sc_refcnt;
u_char sc_dying; /* disconnecting */
@@ -153,13 +154,13 @@ Static void
ucom_lock(struct ucom_softc *sc)
{
sc->sc_refcnt++;
- usb_lockmgr(&sc->sc_lock, LK_EXCLUSIVE, NULL, curproc);
+ rw_enter_write(&sc->sc_lock);
}
Static void
ucom_unlock(struct ucom_softc *sc)
{
- usb_lockmgr(&sc->sc_lock, LK_RELEASE, NULL, curproc);
+ rw_exit_write(&sc->sc_lock);
if (--sc->sc_refcnt < 0)
usb_detach_wakeup(USBDEV(sc->sc_dev));
}
@@ -198,7 +199,8 @@ USB_ATTACH(ucom)
sc->sc_tty = tp;
sc->sc_cua = 0;
- lockinit(&sc->sc_lock, PZERO, "ucomlk", 0, LK_CANRECURSE);
+ rw_init(&sc->sc_lock, "ucomlk");
+
sc->sc_open = 0;
USB_ATTACH_SUCCESS_RETURN;
diff --git a/sys/dev/usb/usb_port.h b/sys/dev/usb/usb_port.h
index 13e4dec00fe..cc4f06aa508 100644
--- a/sys/dev/usb/usb_port.h
+++ b/sys/dev/usb/usb_port.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: usb_port.h,v 1.62 2006/09/18 10:55:51 dlg Exp $ */
+/* $OpenBSD: usb_port.h,v 1.63 2007/05/20 00:52:26 jsg Exp $ */
/* $NetBSD: usb_port.h,v 1.62 2003/02/15 18:33:30 augustss Exp $ */
/* $FreeBSD: src/sys/dev/usb/usb_port.h,v 1.21 1999/11/17 22:33:47 n_hibma Exp $ */
@@ -162,8 +162,6 @@ typedef struct timeout usb_callout_t;
#define usb_callout_pending(h) timeout_pending(&(h))
#define usb_uncallout(h, f, d) timeout_del(&(h))
-#define usb_lockmgr(l, f, sl, p) lockmgr((l), (f), (sl))
-
#define USB_DECLARE_DRIVER_CLASS(dname, devclass) \
int __CONCAT(dname,_match)(struct device *, void *, void *); \
void __CONCAT(dname,_attach)(struct device *, struct device *, void *); \