usb: give USB transfer completion events two data pointers

Change-Id: I036cc7f02c2f86a364d2dba59493a6aa893f2c16
This commit is contained in:
Aidan MacDonald 2021-09-20 00:58:33 +01:00
parent ec164c389c
commit b69d43c247
2 changed files with 7 additions and 5 deletions

View File

@ -178,7 +178,7 @@ struct usb_transfer_completion_event_data
int dir;
int status;
int length;
void* data;
void* data[2];
};
#endif /* HAVE_USBSTACK */

View File

@ -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);