summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb2/core/usb2_request.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb2/core/usb2_request.c')
-rw-r--r--sys/dev/usb2/core/usb2_request.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/sys/dev/usb2/core/usb2_request.c b/sys/dev/usb2/core/usb2_request.c
index 72d9f17..e91d27d 100644
--- a/sys/dev/usb2/core/usb2_request.c
+++ b/sys/dev/usb2/core/usb2_request.c
@@ -45,6 +45,8 @@
#include <dev/usb2/core/usb2_util.h>
#include <dev/usb2/core/usb2_dynamic.h>
+#include <dev/usb2/controller/usb2_controller.h>
+#include <dev/usb2/controller/usb2_bus.h>
#include <sys/ctype.h>
#if USB_DEBUG
@@ -98,7 +100,7 @@ usb2_do_clear_stall_callback(struct usb2_xfer *xfer)
struct usb2_pipe *pipe_first;
uint8_t to = USB_EP_MAX;
- mtx_lock(xfer->usb2_mtx);
+ USB_BUS_LOCK(xfer->udev->bus);
/* round robin pipe clear stall */
@@ -144,11 +146,11 @@ tr_setup:
/* set length */
xfer->frlengths[0] = sizeof(req);
xfer->nframes = 1;
- mtx_unlock(xfer->usb2_mtx);
+ USB_BUS_UNLOCK(xfer->udev->bus);
usb2_start_hardware(xfer);
- mtx_lock(xfer->usb2_mtx);
+ USB_BUS_LOCK(xfer->udev->bus);
break;
}
pipe++;
@@ -165,7 +167,7 @@ tr_setup:
/* store current pipe */
xfer->udev->pipe_curr = pipe;
- mtx_unlock(xfer->usb2_mtx);
+ USB_BUS_UNLOCK(xfer->udev->bus);
return;
}
@@ -313,7 +315,7 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
err = USB_ERR_NOMEM;
goto done;
}
- mtx_lock(xfer->priv_mtx);
+ USB_XFER_LOCK(xfer);
if (flags & USB_DELAY_STATUS_STAGE) {
xfer->flags.manual_status = 1;
@@ -342,10 +344,10 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
if (temp > 0) {
if (!(req->bmRequestType & UT_READ)) {
if (flags & USB_USER_DATA_PTR) {
- mtx_unlock(xfer->priv_mtx);
+ USB_XFER_UNLOCK(xfer);
err = usb2_copy_in_user(xfer->frbuffers + 1,
0, data, temp);
- mtx_lock(xfer->priv_mtx);
+ USB_XFER_LOCK(xfer);
if (err) {
err = USB_ERR_INVAL;
break;
@@ -367,7 +369,7 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
}
if (temp > 0) {
usb2_pause_mtx(
- xfer->priv_mtx, temp);
+ xfer->xfer_mtx, temp);
}
#endif
xfer->flags.manual_status = 0;
@@ -384,7 +386,8 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
if ((flags & USB_USE_POLLING) || cold) {
usb2_do_poll(udev->default_xfer, USB_DEFAULT_XFER_MAX);
} else {
- usb2_cv_wait(xfer->udev->default_cv, xfer->priv_mtx);
+ usb2_cv_wait(xfer->udev->default_cv,
+ xfer->xfer_mtx);
}
}
@@ -413,10 +416,10 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
if (temp > 0) {
if (req->bmRequestType & UT_READ) {
if (flags & USB_USER_DATA_PTR) {
- mtx_unlock(xfer->priv_mtx);
+ USB_XFER_UNLOCK(xfer);
err = usb2_copy_out_user(xfer->frbuffers + 1,
0, data, temp);
- mtx_lock(xfer->priv_mtx);
+ USB_XFER_LOCK(xfer);
if (err) {
err = USB_ERR_INVAL;
break;
@@ -460,7 +463,7 @@ usb2_do_request_flags(struct usb2_device *udev, struct mtx *mtx,
*/
usb2_transfer_stop(xfer);
}
- mtx_unlock(xfer->priv_mtx);
+ USB_XFER_UNLOCK(xfer);
done:
sx_xunlock(udev->default_sx);
OpenPOWER on IntegriCloud