5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_CONTROLEP_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_CONTROLEP_H_
11 #include "sw/device/lib/base/status.h"
12 #include "sw/device/lib/testing/usb_testutils.h"
15 typedef enum usb_testutils_test_number {
16 kUsbTestNumberSmoke = 0,
17 kUsbTestNumberStreams,
20 kUsbTestNumberSuspend,
23 } usb_testutils_test_number_t;
25 typedef enum usb_testutils_ctstate {
27 kUsbTestutilsCtWaitIn,
28 kUsbTestutilsCtStatOut,
29 kUsbTestutilsCtAddrStatIn,
32 kUsbTestutilsCtCfgStatIn,
35 kUsbTestutilsCtStatIn,
37 } usb_testutils_ctstate_t;
39 typedef enum usb_testutils_device_state {
40 kUsbTestutilsDeviceAttached,
41 kUsbTestutilsDevicePowered,
42 kUsbTestutilsDeviceDefault,
43 kUsbTestutilsDeviceAddressed,
44 kUsbTestutilsDeviceConfigured,
45 kUsbTestutilsDeviceSuspended,
46 } usb_testutils_device_state_t;
51 usb_testutils_ctstate_t ctrlstate;
52 usb_testutils_device_state_t device_state;
92 const uint8_t *cfg_dscr,
94 const uint8_t *test_dscr,
95 size_t test_dscr_len);
105 status_t usb_testutils_controlep_config_wait(
112 #define USB_CFG_DSCR_LEN 9
113 #define USB_CFG_DSCR_HEAD(total_len, nint) \
131 #define USB_INTERFACE_DSCR_LEN 9
132 #define VEND_INTERFACE_DSCR(inum, nep, subclass, protocol) \
134 USB_INTERFACE_DSCR_LEN, \
148 #define USB_EP_DSCR_LEN 7
149 #define USB_EP_DSCR(in, ep, attr, maxsize, interval) \
153 (ep) | (((in) << 7) & 0x80), \
160 #define USB_BULK_EP_DSCR(in, ep, maxsize, interval) \
164 (ep) | (((in) << 7) & 0x80), \
165 kUsbTransferTypeBulk, \
175 #define USB_TESTUTILS_TEST_DSCR_LEN 0x10u
176 #define USB_TESTUTILS_TEST_DSCR(num, arg0, arg1, arg2, arg3) \
177 0x7e, 0x57, 0xc0, 0xf1u, \
178 (USB_TESTUTILS_TEST_DSCR_LEN)&0xff, \
179 (USB_TESTUTILS_TEST_DSCR_LEN) >> 8, \
182 (arg0), (arg1), (arg2), (arg3), \
183 0x1fu, 0x0cu, 0x75, 0xe7u