| /* | |
| * Copyright (c) 2024 The Fuchsia Authors | |
| * | |
| * SPDX-License-Identifier: BSD-3-Clause | |
| */ | |
| #include <linux/usb/gadget.h> | |
| #include <linux/usb/composite.h> | |
| #define EP_BUFFER_SIZE 4096 | |
| typedef void (*usb_req_cb)(struct usb_ep *ep, struct usb_request *req); | |
| struct f_fastboot { | |
| struct usb_function usb_function; | |
| /* IN/OUT EP's and corresponding requests */ | |
| struct usb_ep *in_ep, *out_ep; | |
| struct usb_request *in_req, *out_req; | |
| }; | |
| // `fastboot_func` contains USB IN/OUT EP's and the corresponding USB requests. | |
| extern struct f_fastboot *fastboot_func; | |
| // Sets custom Fastboot USB completion callback. | |
| int set_fastboot_usb_completion_cb(usb_req_cb out_req, usb_req_cb in_req); | |
| // Resets to default Fastboot USB completion callback. | |
| void reset_fastboot_usb_completion_cb(void); |