5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_H_
12 #include "sw/device/lib/base/status.h"
14 #include "sw/device/lib/testing/test_framework/check.h"
15 #include "usb_testutils_diags.h"
18 #define USBDEV_HAVE_TOGGLE_STATE 0
20 #define USBDEV_HAVE_SEPARATED_FIFOS 0
27 kUsbTestutilsXfrResultOk = 0u,
32 kUsbTestutilsXfrResultFailed = 1u,
36 kUsbTestutilsXfrResultLinkReset = 2u,
40 kUsbTestutilsXfrResultCanceled = 3u,
41 } usb_testutils_xfr_result_t;
45 kUsbTestutilsXfrMaxPacketMask = 0x7fu,
50 kUsbTestutilsXfrMaxPacketSupplied = 0x100u,
56 kUsbTestutilsXfrDoubleBuffered = 0x200u,
61 kUsbTestutilsXfrEmployZLP = 0x400u,
62 } usb_testutils_xfr_flags_t;
65 typedef enum usb_testutils_transfer_type {
69 kUsbTransferTypeControl = 0,
73 kUsbTransferTypeIsochronous,
81 kUsbTransferTypeInterrupt
82 } usb_testutils_transfer_type_t;
85 typedef status_t (*usb_testutils_tx_done_handler_t)(
void *,
86 usb_testutils_xfr_result_t);
88 typedef status_t (*usb_testutils_rx_handler_t)(
void *,
92 typedef status_t (*usb_testutils_tx_flush_handler_t)(
void *);
94 typedef status_t (*usb_testutils_reset_handler_t)(
void *);
96 typedef status_t (*usb_testutils_link_handler_t)(
167 usb_testutils_transfer_type_t ep_type;
175 usb_testutils_tx_done_handler_t tx_done_callback;
179 usb_testutils_tx_flush_handler_t flush;
183 usb_testutils_reset_handler_t reset;
197 usb_testutils_transfer_type_t ep_type;
205 usb_testutils_rx_handler_t rx_callback;
209 usb_testutils_reset_handler_t reset;
213 typedef enum usb_testutils_out_transfer_mode {
217 kUsbdevOutDisabled = 0,
223 kUsbdevOutStream = 1,
229 kUsbdevOutMessage = 2,
230 } usb_testutils_out_transfer_mode_t;
245 status_t usb_testutils_in_endpoint_setup(
247 void *ep_ctx, usb_testutils_tx_done_handler_t tx_done,
248 usb_testutils_tx_flush_handler_t flush,
249 usb_testutils_reset_handler_t reset);
264 status_t usb_testutils_out_endpoint_setup(
266 usb_testutils_out_transfer_mode_t out_mode,
void *ep_ctx,
267 usb_testutils_rx_handler_t rx, usb_testutils_reset_handler_t reset);
285 status_t usb_testutils_endpoint_setup(
287 usb_testutils_transfer_type_t out_type,
288 usb_testutils_out_transfer_mode_t out_mode,
void *ep_ctx,
289 usb_testutils_tx_done_handler_t tx_done, usb_testutils_rx_handler_t rx,
290 usb_testutils_tx_flush_handler_t flush,
291 usb_testutils_reset_handler_t reset);
341 bool en_diff_rcvr,
bool tx_use_d_se0);
352 usb_testutils_link_handler_t link,
374 const uint8_t *data, uint32_t length,
375 usb_testutils_xfr_flags_t flags);