diff options
Diffstat (limited to 'sys/dev/usb2/core/usb2_request.c')
-rw-r--r-- | sys/dev/usb2/core/usb2_request.c | 27 |
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); |