5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_STREAMS_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_STREAMS_H_
10 #include "sw/device/lib/testing/usb_testutils.h"
13 #ifndef USBUTILS_STREAMS_MAX
14 #ifdef USBDEV_NUM_ENDPOINTS
16 #define USBUTILS_STREAMS_MAX (USBDEV_NUM_ENDPOINTS - 1U)
18 #define USBUTILS_STREAMS_MAX 11U
24 #ifndef USBUTILS_STREAMS_TXBUF_MAX
25 #define USBUTILS_STREAMS_TXBUF_MAX 24U
29 #define USBDEV_STREAM_SIGNATURE_HEAD 0x579EA01AU
30 #define USBDEV_STREAM_SIGNATURE_TAIL 0x160AE975U
34 #define USBTST_LFSR_SEED(s) (uint8_t)(0x10U + (s)*7U)
35 #define USBDPI_LFSR_SEED(s) (uint8_t)(0x9BU - (s)*7U)
38 #define BUFSZ_LFSR_SEED(s) (uint8_t)(0x17U + (s)*7U)
42 #define LFSR_ADVANCE(lfsr) \
44 (uint8_t)((lfsr) << 1) ^ \
45 ((((lfsr) >> 1) ^ ((lfsr) >> 2) ^ ((lfsr) >> 3) ^ ((lfsr) >> 7)) & 1U))
52 kUsbdevStreamFlagRetrieve = 0x10U,
56 kUsbdevStreamFlagCheck = 0x20U,
60 kUsbdevStreamFlagRetry = 0x40U,
64 kUsbdevStreamFlagSend = 0x80U,
68 kUsbdevStreamFlagMaxPackets = 0x100U,
69 } usbdev_stream_flags_t;
78 typedef struct __attribute__((packed)) usbdev_stream_sig {
112 } usbdev_stream_sig_t;
115 static_assert(
sizeof(usbdev_stream_sig_t) == 0x10U,
116 "Host-side code relies upon signature structure");
298 status_t usb_testutils_streams_init(
300 const usb_testutils_transfer_type_t xfr_types[], uint32_t num_bytes,
301 usbdev_stream_flags_t flags,
bool verbose);
340 usb_testutils_transfer_type_t xfr_type,
341 uint8_t ep_in, uint8_t ep_out,
343 usbdev_stream_flags_t flags,
bool verbose);
363 status_t usb_testutils_streams_typed_init(
365 unsigned nstreams,
const usb_testutils_transfer_type_t xfr_types[],
366 uint32_t num_bytes, usbdev_stream_flags_t flags,
bool verbose,
409 uint8_t *buf,
unsigned size,
424 const uint8_t *data,
unsigned len);
438 uint8_t
id, uint32_t *num_bytes,
439 uint32_t *tx_bytes, uint32_t *rx_bytes);