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