18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/** 38c2ecf20Sopenharmony_ci * trace.h - DesignWare USB3 DRD Controller Trace Support 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Author: Felipe Balbi <balbi@ti.com> 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM 118c2ecf20Sopenharmony_ci#define TRACE_SYSTEM dwc3 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#if !defined(__DWC3_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 148c2ecf20Sopenharmony_ci#define __DWC3_TRACE_H 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#include <linux/types.h> 178c2ecf20Sopenharmony_ci#include <linux/tracepoint.h> 188c2ecf20Sopenharmony_ci#include <asm/byteorder.h> 198c2ecf20Sopenharmony_ci#include "core.h" 208c2ecf20Sopenharmony_ci#include "debug.h" 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_io, 238c2ecf20Sopenharmony_ci TP_PROTO(void *base, u32 offset, u32 value), 248c2ecf20Sopenharmony_ci TP_ARGS(base, offset, value), 258c2ecf20Sopenharmony_ci TP_STRUCT__entry( 268c2ecf20Sopenharmony_ci __field(void *, base) 278c2ecf20Sopenharmony_ci __field(u32, offset) 288c2ecf20Sopenharmony_ci __field(u32, value) 298c2ecf20Sopenharmony_ci ), 308c2ecf20Sopenharmony_ci TP_fast_assign( 318c2ecf20Sopenharmony_ci __entry->base = base; 328c2ecf20Sopenharmony_ci __entry->offset = offset; 338c2ecf20Sopenharmony_ci __entry->value = value; 348c2ecf20Sopenharmony_ci ), 358c2ecf20Sopenharmony_ci TP_printk("addr %p value %08x", __entry->base + __entry->offset, 368c2ecf20Sopenharmony_ci __entry->value) 378c2ecf20Sopenharmony_ci); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_io, dwc3_readl, 408c2ecf20Sopenharmony_ci TP_PROTO(void __iomem *base, u32 offset, u32 value), 418c2ecf20Sopenharmony_ci TP_ARGS(base, offset, value) 428c2ecf20Sopenharmony_ci); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_io, dwc3_writel, 458c2ecf20Sopenharmony_ci TP_PROTO(void __iomem *base, u32 offset, u32 value), 468c2ecf20Sopenharmony_ci TP_ARGS(base, offset, value) 478c2ecf20Sopenharmony_ci); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_event, 508c2ecf20Sopenharmony_ci TP_PROTO(u32 event, struct dwc3 *dwc), 518c2ecf20Sopenharmony_ci TP_ARGS(event, dwc), 528c2ecf20Sopenharmony_ci TP_STRUCT__entry( 538c2ecf20Sopenharmony_ci __field(u32, event) 548c2ecf20Sopenharmony_ci __field(u32, ep0state) 558c2ecf20Sopenharmony_ci __dynamic_array(char, str, DWC3_MSG_MAX) 568c2ecf20Sopenharmony_ci ), 578c2ecf20Sopenharmony_ci TP_fast_assign( 588c2ecf20Sopenharmony_ci __entry->event = event; 598c2ecf20Sopenharmony_ci __entry->ep0state = dwc->ep0state; 608c2ecf20Sopenharmony_ci ), 618c2ecf20Sopenharmony_ci TP_printk("event (%08x): %s", __entry->event, 628c2ecf20Sopenharmony_ci dwc3_decode_event(__get_str(str), DWC3_MSG_MAX, 638c2ecf20Sopenharmony_ci __entry->event, __entry->ep0state)) 648c2ecf20Sopenharmony_ci); 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_event, dwc3_event, 678c2ecf20Sopenharmony_ci TP_PROTO(u32 event, struct dwc3 *dwc), 688c2ecf20Sopenharmony_ci TP_ARGS(event, dwc) 698c2ecf20Sopenharmony_ci); 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_ctrl, 728c2ecf20Sopenharmony_ci TP_PROTO(struct usb_ctrlrequest *ctrl), 738c2ecf20Sopenharmony_ci TP_ARGS(ctrl), 748c2ecf20Sopenharmony_ci TP_STRUCT__entry( 758c2ecf20Sopenharmony_ci __field(__u8, bRequestType) 768c2ecf20Sopenharmony_ci __field(__u8, bRequest) 778c2ecf20Sopenharmony_ci __field(__u16, wValue) 788c2ecf20Sopenharmony_ci __field(__u16, wIndex) 798c2ecf20Sopenharmony_ci __field(__u16, wLength) 808c2ecf20Sopenharmony_ci __dynamic_array(char, str, DWC3_MSG_MAX) 818c2ecf20Sopenharmony_ci ), 828c2ecf20Sopenharmony_ci TP_fast_assign( 838c2ecf20Sopenharmony_ci __entry->bRequestType = ctrl->bRequestType; 848c2ecf20Sopenharmony_ci __entry->bRequest = ctrl->bRequest; 858c2ecf20Sopenharmony_ci __entry->wValue = le16_to_cpu(ctrl->wValue); 868c2ecf20Sopenharmony_ci __entry->wIndex = le16_to_cpu(ctrl->wIndex); 878c2ecf20Sopenharmony_ci __entry->wLength = le16_to_cpu(ctrl->wLength); 888c2ecf20Sopenharmony_ci ), 898c2ecf20Sopenharmony_ci TP_printk("%s", usb_decode_ctrl(__get_str(str), DWC3_MSG_MAX, 908c2ecf20Sopenharmony_ci __entry->bRequestType, 918c2ecf20Sopenharmony_ci __entry->bRequest, __entry->wValue, 928c2ecf20Sopenharmony_ci __entry->wIndex, __entry->wLength) 938c2ecf20Sopenharmony_ci ) 948c2ecf20Sopenharmony_ci); 958c2ecf20Sopenharmony_ci 968c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_ctrl, dwc3_ctrl_req, 978c2ecf20Sopenharmony_ci TP_PROTO(struct usb_ctrlrequest *ctrl), 988c2ecf20Sopenharmony_ci TP_ARGS(ctrl) 998c2ecf20Sopenharmony_ci); 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_request, 1028c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1038c2ecf20Sopenharmony_ci TP_ARGS(req), 1048c2ecf20Sopenharmony_ci TP_STRUCT__entry( 1058c2ecf20Sopenharmony_ci __string(name, req->dep->name) 1068c2ecf20Sopenharmony_ci __field(struct dwc3_request *, req) 1078c2ecf20Sopenharmony_ci __field(unsigned int, actual) 1088c2ecf20Sopenharmony_ci __field(unsigned int, length) 1098c2ecf20Sopenharmony_ci __field(int, status) 1108c2ecf20Sopenharmony_ci __field(int, zero) 1118c2ecf20Sopenharmony_ci __field(int, short_not_ok) 1128c2ecf20Sopenharmony_ci __field(int, no_interrupt) 1138c2ecf20Sopenharmony_ci ), 1148c2ecf20Sopenharmony_ci TP_fast_assign( 1158c2ecf20Sopenharmony_ci __assign_str(name, req->dep->name); 1168c2ecf20Sopenharmony_ci __entry->req = req; 1178c2ecf20Sopenharmony_ci __entry->actual = req->request.actual; 1188c2ecf20Sopenharmony_ci __entry->length = req->request.length; 1198c2ecf20Sopenharmony_ci __entry->status = req->request.status; 1208c2ecf20Sopenharmony_ci __entry->zero = req->request.zero; 1218c2ecf20Sopenharmony_ci __entry->short_not_ok = req->request.short_not_ok; 1228c2ecf20Sopenharmony_ci __entry->no_interrupt = req->request.no_interrupt; 1238c2ecf20Sopenharmony_ci ), 1248c2ecf20Sopenharmony_ci TP_printk("%s: req %p length %u/%u %s%s%s ==> %d", 1258c2ecf20Sopenharmony_ci __get_str(name), __entry->req, __entry->actual, __entry->length, 1268c2ecf20Sopenharmony_ci __entry->zero ? "Z" : "z", 1278c2ecf20Sopenharmony_ci __entry->short_not_ok ? "S" : "s", 1288c2ecf20Sopenharmony_ci __entry->no_interrupt ? "i" : "I", 1298c2ecf20Sopenharmony_ci __entry->status 1308c2ecf20Sopenharmony_ci ) 1318c2ecf20Sopenharmony_ci); 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_request, dwc3_alloc_request, 1348c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1358c2ecf20Sopenharmony_ci TP_ARGS(req) 1368c2ecf20Sopenharmony_ci); 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_request, dwc3_free_request, 1398c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1408c2ecf20Sopenharmony_ci TP_ARGS(req) 1418c2ecf20Sopenharmony_ci); 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_request, dwc3_ep_queue, 1448c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1458c2ecf20Sopenharmony_ci TP_ARGS(req) 1468c2ecf20Sopenharmony_ci); 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_request, dwc3_ep_dequeue, 1498c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1508c2ecf20Sopenharmony_ci TP_ARGS(req) 1518c2ecf20Sopenharmony_ci); 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_request, dwc3_gadget_giveback, 1548c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_request *req), 1558c2ecf20Sopenharmony_ci TP_ARGS(req) 1568c2ecf20Sopenharmony_ci); 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_generic_cmd, 1598c2ecf20Sopenharmony_ci TP_PROTO(unsigned int cmd, u32 param, int status), 1608c2ecf20Sopenharmony_ci TP_ARGS(cmd, param, status), 1618c2ecf20Sopenharmony_ci TP_STRUCT__entry( 1628c2ecf20Sopenharmony_ci __field(unsigned int, cmd) 1638c2ecf20Sopenharmony_ci __field(u32, param) 1648c2ecf20Sopenharmony_ci __field(int, status) 1658c2ecf20Sopenharmony_ci ), 1668c2ecf20Sopenharmony_ci TP_fast_assign( 1678c2ecf20Sopenharmony_ci __entry->cmd = cmd; 1688c2ecf20Sopenharmony_ci __entry->param = param; 1698c2ecf20Sopenharmony_ci __entry->status = status; 1708c2ecf20Sopenharmony_ci ), 1718c2ecf20Sopenharmony_ci TP_printk("cmd '%s' [%x] param %08x --> status: %s", 1728c2ecf20Sopenharmony_ci dwc3_gadget_generic_cmd_string(__entry->cmd), 1738c2ecf20Sopenharmony_ci __entry->cmd, __entry->param, 1748c2ecf20Sopenharmony_ci dwc3_gadget_generic_cmd_status_string(__entry->status) 1758c2ecf20Sopenharmony_ci ) 1768c2ecf20Sopenharmony_ci); 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_generic_cmd, dwc3_gadget_generic_cmd, 1798c2ecf20Sopenharmony_ci TP_PROTO(unsigned int cmd, u32 param, int status), 1808c2ecf20Sopenharmony_ci TP_ARGS(cmd, param, status) 1818c2ecf20Sopenharmony_ci); 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_gadget_ep_cmd, 1848c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep, unsigned int cmd, 1858c2ecf20Sopenharmony_ci struct dwc3_gadget_ep_cmd_params *params, int cmd_status), 1868c2ecf20Sopenharmony_ci TP_ARGS(dep, cmd, params, cmd_status), 1878c2ecf20Sopenharmony_ci TP_STRUCT__entry( 1888c2ecf20Sopenharmony_ci __string(name, dep->name) 1898c2ecf20Sopenharmony_ci __field(unsigned int, cmd) 1908c2ecf20Sopenharmony_ci __field(u32, param0) 1918c2ecf20Sopenharmony_ci __field(u32, param1) 1928c2ecf20Sopenharmony_ci __field(u32, param2) 1938c2ecf20Sopenharmony_ci __field(int, cmd_status) 1948c2ecf20Sopenharmony_ci ), 1958c2ecf20Sopenharmony_ci TP_fast_assign( 1968c2ecf20Sopenharmony_ci __assign_str(name, dep->name); 1978c2ecf20Sopenharmony_ci __entry->cmd = cmd; 1988c2ecf20Sopenharmony_ci __entry->param0 = params->param0; 1998c2ecf20Sopenharmony_ci __entry->param1 = params->param1; 2008c2ecf20Sopenharmony_ci __entry->param2 = params->param2; 2018c2ecf20Sopenharmony_ci __entry->cmd_status = cmd_status; 2028c2ecf20Sopenharmony_ci ), 2038c2ecf20Sopenharmony_ci TP_printk("%s: cmd '%s' [%x] params %08x %08x %08x --> status: %s", 2048c2ecf20Sopenharmony_ci __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd), 2058c2ecf20Sopenharmony_ci __entry->cmd, __entry->param0, 2068c2ecf20Sopenharmony_ci __entry->param1, __entry->param2, 2078c2ecf20Sopenharmony_ci dwc3_ep_cmd_status_string(__entry->cmd_status) 2088c2ecf20Sopenharmony_ci ) 2098c2ecf20Sopenharmony_ci); 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_gadget_ep_cmd, dwc3_gadget_ep_cmd, 2128c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep, unsigned int cmd, 2138c2ecf20Sopenharmony_ci struct dwc3_gadget_ep_cmd_params *params, int cmd_status), 2148c2ecf20Sopenharmony_ci TP_ARGS(dep, cmd, params, cmd_status) 2158c2ecf20Sopenharmony_ci); 2168c2ecf20Sopenharmony_ci 2178c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_trb, 2188c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb), 2198c2ecf20Sopenharmony_ci TP_ARGS(dep, trb), 2208c2ecf20Sopenharmony_ci TP_STRUCT__entry( 2218c2ecf20Sopenharmony_ci __string(name, dep->name) 2228c2ecf20Sopenharmony_ci __field(struct dwc3_trb *, trb) 2238c2ecf20Sopenharmony_ci __field(u32, allocated) 2248c2ecf20Sopenharmony_ci __field(u32, queued) 2258c2ecf20Sopenharmony_ci __field(u32, bpl) 2268c2ecf20Sopenharmony_ci __field(u32, bph) 2278c2ecf20Sopenharmony_ci __field(u32, size) 2288c2ecf20Sopenharmony_ci __field(u32, ctrl) 2298c2ecf20Sopenharmony_ci __field(u32, type) 2308c2ecf20Sopenharmony_ci __field(u32, enqueue) 2318c2ecf20Sopenharmony_ci __field(u32, dequeue) 2328c2ecf20Sopenharmony_ci ), 2338c2ecf20Sopenharmony_ci TP_fast_assign( 2348c2ecf20Sopenharmony_ci __assign_str(name, dep->name); 2358c2ecf20Sopenharmony_ci __entry->trb = trb; 2368c2ecf20Sopenharmony_ci __entry->bpl = trb->bpl; 2378c2ecf20Sopenharmony_ci __entry->bph = trb->bph; 2388c2ecf20Sopenharmony_ci __entry->size = trb->size; 2398c2ecf20Sopenharmony_ci __entry->ctrl = trb->ctrl; 2408c2ecf20Sopenharmony_ci __entry->type = usb_endpoint_type(dep->endpoint.desc); 2418c2ecf20Sopenharmony_ci __entry->enqueue = dep->trb_enqueue; 2428c2ecf20Sopenharmony_ci __entry->dequeue = dep->trb_dequeue; 2438c2ecf20Sopenharmony_ci ), 2448c2ecf20Sopenharmony_ci TP_printk("%s: trb %p (E%d:D%d) buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)", 2458c2ecf20Sopenharmony_ci __get_str(name), __entry->trb, __entry->enqueue, 2468c2ecf20Sopenharmony_ci __entry->dequeue, __entry->bph, __entry->bpl, 2478c2ecf20Sopenharmony_ci ({char *s; 2488c2ecf20Sopenharmony_ci int pcm = ((__entry->size >> 24) & 3) + 1; 2498c2ecf20Sopenharmony_ci 2508c2ecf20Sopenharmony_ci switch (__entry->type) { 2518c2ecf20Sopenharmony_ci case USB_ENDPOINT_XFER_INT: 2528c2ecf20Sopenharmony_ci case USB_ENDPOINT_XFER_ISOC: 2538c2ecf20Sopenharmony_ci switch (pcm) { 2548c2ecf20Sopenharmony_ci case 1: 2558c2ecf20Sopenharmony_ci s = "1x "; 2568c2ecf20Sopenharmony_ci break; 2578c2ecf20Sopenharmony_ci case 2: 2588c2ecf20Sopenharmony_ci s = "2x "; 2598c2ecf20Sopenharmony_ci break; 2608c2ecf20Sopenharmony_ci case 3: 2618c2ecf20Sopenharmony_ci default: 2628c2ecf20Sopenharmony_ci s = "3x "; 2638c2ecf20Sopenharmony_ci break; 2648c2ecf20Sopenharmony_ci } 2658c2ecf20Sopenharmony_ci break; 2668c2ecf20Sopenharmony_ci default: 2678c2ecf20Sopenharmony_ci s = ""; 2688c2ecf20Sopenharmony_ci } s; }), 2698c2ecf20Sopenharmony_ci DWC3_TRB_SIZE_LENGTH(__entry->size), __entry->ctrl, 2708c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_HWO ? 'H' : 'h', 2718c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_LST ? 'L' : 'l', 2728c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_CHN ? 'C' : 'c', 2738c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_CSP ? 'S' : 's', 2748c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_ISP_IMI ? 'S' : 's', 2758c2ecf20Sopenharmony_ci __entry->ctrl & DWC3_TRB_CTRL_IOC ? 'C' : 'c', 2768c2ecf20Sopenharmony_ci dwc3_trb_type_string(DWC3_TRBCTL_TYPE(__entry->ctrl)) 2778c2ecf20Sopenharmony_ci ) 2788c2ecf20Sopenharmony_ci); 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_trb, dwc3_prepare_trb, 2818c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb), 2828c2ecf20Sopenharmony_ci TP_ARGS(dep, trb) 2838c2ecf20Sopenharmony_ci); 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_trb, dwc3_complete_trb, 2868c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb), 2878c2ecf20Sopenharmony_ci TP_ARGS(dep, trb) 2888c2ecf20Sopenharmony_ci); 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(dwc3_log_ep, 2918c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep), 2928c2ecf20Sopenharmony_ci TP_ARGS(dep), 2938c2ecf20Sopenharmony_ci TP_STRUCT__entry( 2948c2ecf20Sopenharmony_ci __string(name, dep->name) 2958c2ecf20Sopenharmony_ci __field(unsigned int, maxpacket) 2968c2ecf20Sopenharmony_ci __field(unsigned int, maxpacket_limit) 2978c2ecf20Sopenharmony_ci __field(unsigned int, max_streams) 2988c2ecf20Sopenharmony_ci __field(unsigned int, maxburst) 2998c2ecf20Sopenharmony_ci __field(unsigned int, flags) 3008c2ecf20Sopenharmony_ci __field(unsigned int, direction) 3018c2ecf20Sopenharmony_ci __field(u8, trb_enqueue) 3028c2ecf20Sopenharmony_ci __field(u8, trb_dequeue) 3038c2ecf20Sopenharmony_ci ), 3048c2ecf20Sopenharmony_ci TP_fast_assign( 3058c2ecf20Sopenharmony_ci __assign_str(name, dep->name); 3068c2ecf20Sopenharmony_ci __entry->maxpacket = dep->endpoint.maxpacket; 3078c2ecf20Sopenharmony_ci __entry->maxpacket_limit = dep->endpoint.maxpacket_limit; 3088c2ecf20Sopenharmony_ci __entry->max_streams = dep->endpoint.max_streams; 3098c2ecf20Sopenharmony_ci __entry->maxburst = dep->endpoint.maxburst; 3108c2ecf20Sopenharmony_ci __entry->flags = dep->flags; 3118c2ecf20Sopenharmony_ci __entry->direction = dep->direction; 3128c2ecf20Sopenharmony_ci __entry->trb_enqueue = dep->trb_enqueue; 3138c2ecf20Sopenharmony_ci __entry->trb_dequeue = dep->trb_dequeue; 3148c2ecf20Sopenharmony_ci ), 3158c2ecf20Sopenharmony_ci TP_printk("%s: mps %d/%d streams %d burst %d ring %d/%d flags %c:%c%c%c%c:%c", 3168c2ecf20Sopenharmony_ci __get_str(name), __entry->maxpacket, 3178c2ecf20Sopenharmony_ci __entry->maxpacket_limit, __entry->max_streams, 3188c2ecf20Sopenharmony_ci __entry->maxburst, __entry->trb_enqueue, 3198c2ecf20Sopenharmony_ci __entry->trb_dequeue, 3208c2ecf20Sopenharmony_ci __entry->flags & DWC3_EP_ENABLED ? 'E' : 'e', 3218c2ecf20Sopenharmony_ci __entry->flags & DWC3_EP_STALL ? 'S' : 's', 3228c2ecf20Sopenharmony_ci __entry->flags & DWC3_EP_WEDGE ? 'W' : 'w', 3238c2ecf20Sopenharmony_ci __entry->flags & DWC3_EP_TRANSFER_STARTED ? 'B' : 'b', 3248c2ecf20Sopenharmony_ci __entry->flags & DWC3_EP_PENDING_REQUEST ? 'P' : 'p', 3258c2ecf20Sopenharmony_ci __entry->direction ? '<' : '>' 3268c2ecf20Sopenharmony_ci ) 3278c2ecf20Sopenharmony_ci); 3288c2ecf20Sopenharmony_ci 3298c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_ep, dwc3_gadget_ep_enable, 3308c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep), 3318c2ecf20Sopenharmony_ci TP_ARGS(dep) 3328c2ecf20Sopenharmony_ci); 3338c2ecf20Sopenharmony_ci 3348c2ecf20Sopenharmony_ciDEFINE_EVENT(dwc3_log_ep, dwc3_gadget_ep_disable, 3358c2ecf20Sopenharmony_ci TP_PROTO(struct dwc3_ep *dep), 3368c2ecf20Sopenharmony_ci TP_ARGS(dep) 3378c2ecf20Sopenharmony_ci); 3388c2ecf20Sopenharmony_ci 3398c2ecf20Sopenharmony_ci#endif /* __DWC3_TRACE_H */ 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci/* this part has to be here */ 3428c2ecf20Sopenharmony_ci 3438c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH 3448c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH . 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE 3478c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace 3488c2ecf20Sopenharmony_ci 3498c2ecf20Sopenharmony_ci#include <trace/define_trace.h> 350