Skip to content

Commit d12279b

Browse files
MarkWangChinesenashif
authored andcommitted
drivers: usb: uhc: mcux: Fix buffer setup for IN/OUT transfers
Differentiating between IN and OUT transfers for proper buffer setup. For OUT transfers: use existing data from buf->data with buf->len. For IN transfers: use available space from net_buf_tail() with tailroom. Signed-off-by: Mark Wang <[email protected]>
1 parent 9962bc1 commit d12279b

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/usb/uhc/uhc_mcux_common.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,13 @@ int uhc_mcux_hal_init_transfer_common(const struct device *dev, usb_host_transfe
341341
mcux_xfer->callbackParam = (void *)dev;
342342
mcux_xfer->setupPacket = (usb_setup_struct_t *)&xfer->setup_pkt[0];
343343
if (xfer->buf != NULL) {
344-
mcux_xfer->transferLength = xfer->buf->size;
345-
mcux_xfer->transferBuffer = xfer->buf->__buf;
344+
if (USB_EP_DIR_IS_OUT(xfer->ep)) {
345+
mcux_xfer->transferLength = xfer->buf->len;
346+
mcux_xfer->transferBuffer = xfer->buf->data;
347+
} else {
348+
mcux_xfer->transferLength = net_buf_tailroom(xfer->buf);
349+
mcux_xfer->transferBuffer = net_buf_tail(xfer->buf);
350+
}
346351
} else {
347352
mcux_xfer->transferBuffer = NULL;
348353
mcux_xfer->transferLength = 0;

0 commit comments

Comments
 (0)