1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Trace support header file for device mode
5 * Copyright (C) 2020 NXP
7 * Author: Peter Chen <peter.chen@nxp.com>
11 #define TRACE_SYSTEM chipidea
13 #if !defined(__LINUX_CHIPIDEA_TRACE) || defined(TRACE_HEADER_MULTI_READ)
14 #define __LINUX_CHIPIDEA_TRACE
16 #include <linux/types.h>
17 #include <linux/tracepoint.h>
18 #include <linux/usb/chipidea.h>
22 #define CHIPIDEA_MSG_MAX 500
24 void ci_log(struct ci_hdrc
*ci
, const char *fmt
, ...);
27 TP_PROTO(struct ci_hdrc
*ci
, struct va_format
*vaf
),
30 __string(name
, dev_name(ci
->dev
))
31 __dynamic_array(char, msg
, CHIPIDEA_MSG_MAX
)
34 __assign_str(name
, dev_name(ci
->dev
));
35 vsnprintf(__get_str(msg
), CHIPIDEA_MSG_MAX
, vaf
->fmt
, *vaf
->va
);
37 TP_printk("%s: %s", __get_str(name
), __get_str(msg
))
40 DECLARE_EVENT_CLASS(ci_log_trb
,
41 TP_PROTO(struct ci_hw_ep
*hwep
, struct ci_hw_req
*hwreq
, struct td_node
*td
),
42 TP_ARGS(hwep
, hwreq
, td
),
44 __string(name
, hwep
->name
)
45 __field(struct td_node
*, td
)
46 __field(struct usb_request
*, req
)
47 __field(dma_addr_t
, dma
)
48 __field(s32
, td_remaining_size
)
54 __assign_str(name
, hwep
->name
);
55 __entry
->req
= &hwreq
->req
;
57 __entry
->dma
= td
->dma
;
58 __entry
->td_remaining_size
= td
->td_remaining_size
;
59 __entry
->next
= le32_to_cpu(td
->ptr
->next
);
60 __entry
->token
= le32_to_cpu(td
->ptr
->token
);
61 __entry
->type
= usb_endpoint_type(hwep
->ep
.desc
);
63 TP_printk("%s: req: %p, td: %p, td_dma_address: %pad, remaining_size: %d, "
64 "next: %x, total bytes: %d, status: %lx",
65 __get_str(name
), __entry
->req
, __entry
->td
, &__entry
->dma
,
66 __entry
->td_remaining_size
, __entry
->next
,
67 (int)((__entry
->token
& TD_TOTAL_BYTES
) >> __ffs(TD_TOTAL_BYTES
)),
68 __entry
->token
& TD_STATUS
72 DEFINE_EVENT(ci_log_trb
, ci_prepare_td
,
73 TP_PROTO(struct ci_hw_ep
*hwep
, struct ci_hw_req
*hwreq
, struct td_node
*td
),
74 TP_ARGS(hwep
, hwreq
, td
)
77 DEFINE_EVENT(ci_log_trb
, ci_complete_td
,
78 TP_PROTO(struct ci_hw_ep
*hwep
, struct ci_hw_req
*hwreq
, struct td_node
*td
),
79 TP_ARGS(hwep
, hwreq
, td
)
82 #endif /* __LINUX_CHIPIDEA_TRACE */
84 /* this part must be outside header guard */
86 #undef TRACE_INCLUDE_PATH
87 #define TRACE_INCLUDE_PATH .
89 #undef TRACE_INCLUDE_FILE
90 #define TRACE_INCLUDE_FILE trace
92 #include <trace/define_trace.h>