5 #ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_DIAGS_H_
6 #define OPENTITAN_SW_DEVICE_LIB_TESTING_USB_TESTUTILS_DIAGS_H_
20 #ifndef USBUTILS_MEM_FASTER
21 #define USBUTILS_MEM_FASTER 1
27 #define USBUTILS_FUNCTION_POINTS 0
31 #define USBUTILS_FUNCPT_USE_BUFFER 0
33 #if USBUTILS_MEM_FASTER
37 #if USBUTILS_FUNCTION_POINTS
43 #define USBUTILS_FUNCPT_FILE_DIF_USBDEV 0x01U
44 #define USBUTILS_FUNCPT_FILE_USB_TESTUTILS 0x02U
45 #define USBUTILS_FUNCPT_FILE_USB_CONTROLEP 0x03U
46 #define USBUTILS_FUNCPT_FILE_USB_SIMPLESER 0x04U
47 #define USBUTILS_FUNCPT_FILE_USBDEV_TEST 0x05U
48 #define USBUTILS_FUNCPT_FILE_USBDEV_STRM_TEST 0x06U
50 #define USBUTILS_FUNCPT_LOG_ENTRIES 0x1000U
51 #define USBUTILS_FUNCPT_LOG_SIZE (USBUTILS_FUNCPT_LOG_ENTRIES * 4U)
53 #define USBUTILS_FUNCPT_ENTRY_SIGNATURE 0xAA55FF99U
64 #if USBUTILS_FUNCPT_USE_BUFFER
66 #define USBUTILS_FUNCPT(pt, d) \
68 unsigned idx = usbutils_fpt_next; \
70 (idx >= USBUTILS_FUNCPT_LOG_SIZE - 4U) ? 0U : (idx + 4U); \
71 functpt_enttry_t *e = (functpt_enttry_t *)&usbutils_fpt_log[idx]; \
72 e->sig = USBUTILS_FUNCPT_ENTRY_SIGNATURE; \
73 e->time = (uint32_t)ibex_mcycle_read(); \
74 e->file_point = (USBUTILS_FUNCPT_FILE << 16) | pt; \
78 extern volatile unsigned usbutils_fpt_next;
79 extern uint32_t usbutils_fpt_log[];
83 #define USBUTILS_FUNCPT(pt, d) \
85 volatile uint32_t *log_hw = (uint32_t *)0x411f0084u; \
86 uint32_t time = (uint32_t)ibex_mcycle_read(); \
87 *log_hw = USBUTILS_FUNCPT_ENTRY_SIGNATURE; \
89 *log_hw = (USBUTILS_FUNCPT_FILE << 16) | (pt); \
97 void usbutils_funcpt_report(
void);
100 #define USBUTILS_FUNCPT(pt, d)
104 #if USBUTILS_MEM_FASTER
113 void usbutils_memcpy_from_mmio32(
mmio_region_t base, uint32_t offset,
114 void *dest,
size_t len);
123 void usbutils_memcpy_to_mmio32(
mmio_region_t base, uint32_t offset,
124 const void *src,
size_t len);
129 #define USBUTILS_ENABLE_TRC 0
133 #define USBUTILS_USER_PROMPT(...) \
135 if (kDeviceType != kDeviceSimDV && kDeviceType != kDeviceSimVerilator) { \
136 LOG_INFO(__VA_ARGS__); \
140 #if USBUTILS_ENABLE_TRC
144 #define TRC_S(s) LOG_INFO("%s", s)
145 #define TRC_I(i, b) LOG_INFO("0x%x", i)
146 #define TRC_C(c) LOG_INFO("%c", c)
149 #define USBDIAGS_LOG_EMIT(d) (*((volatile uint32_t *)0x411f0084u) = (d))
151 #define TRC_S(s) usbutils_log_text(s)
152 #define TRC_I(i, b) USBDIAGS_LOG_EMIT(i)
153 #define TRC_C(c) USBDIAGS_LOG_EMIT(0xcc000000u | (uint16_t)c)
156 inline void usbutils_log_text(
const char *s) {
158 USBDIAGS_LOG_EMIT(*s);