summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2021-09-20 00:58:33 +0100
committerAidan MacDonald <amachronic@protonmail.com>2021-10-16 21:14:42 +0100
commitb69d43c247994c846da75c4b35d4351fbf96984d (patch)
treee15b746283bb42843243519b0f1aab5e92ff72e3
parentec164c389c99d8129f9d6cacda2731bde9b08257 (diff)
downloadrockbox-b69d43c247994c846da75c4b35d4351fbf96984d.tar.gz
rockbox-b69d43c247994c846da75c4b35d4351fbf96984d.zip
usb: give USB transfer completion events two data pointers
Change-Id: I036cc7f02c2f86a364d2dba59493a6aa893f2c16
-rw-r--r--firmware/export/usb.h2
-rw-r--r--firmware/usbstack/usb_core.c10
2 files changed, 7 insertions, 5 deletions
diff --git a/firmware/export/usb.h b/firmware/export/usb.h
index 2bcd95ef81..fe9f3bcfa1 100644
--- a/firmware/export/usb.h
+++ b/firmware/export/usb.h
@@ -178,7 +178,7 @@ struct usb_transfer_completion_event_data
int dir;
int status;
int length;
- void* data;
+ void* data[2];
};
#endif /* HAVE_USBSTACK */
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c
index 1f17872ba8..4bc0443477 100644
--- a/firmware/usbstack/usb_core.c
+++ b/firmware/usbstack/usb_core.c
@@ -446,10 +446,10 @@ void usb_core_handle_transfer_completion(
case EP_CONTROL:
logf("ctrl handled %ld req=0x%x",
current_tick,
- ((struct usb_ctrlrequest*)event->data)->bRequest);
+ ((struct usb_ctrlrequest*)event->data[0])->bRequest);
usb_core_control_request_handler(
- (struct usb_ctrlrequest*)event->data);
+ (struct usb_ctrlrequest*)event->data[0]);
break;
default:
handler = ep_data[ep].completion_handler[EP_DIR(event->dir)];
@@ -952,7 +952,8 @@ void usb_core_transfer_complete(int endpoint, int dir, int status, int length)
completion_event->endpoint = endpoint;
completion_event->dir = dir;
- completion_event->data = 0;
+ completion_event->data[0] = NULL;
+ completion_event->data[1] = NULL;
completion_event->status = status;
completion_event->length = length;
/* All other endpoints. Let the thread deal with it */
@@ -984,7 +985,8 @@ void usb_core_legacy_control_request(struct usb_ctrlrequest* req)
completion_event->endpoint = EP_CONTROL;
completion_event->dir = 0;
- completion_event->data = (void*)req;
+ completion_event->data[0] = (void*)req;
+ completion_event->data[1] = NULL;
completion_event->status = 0;
completion_event->length = 0;
logf("ctrl received %ld, req=0x%x", current_tick, req->bRequest);