trace.h (2499B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Trace support header file for device mode 4 * 5 * Copyright (C) 2020 NXP 6 * 7 * Author: Peter Chen <peter.chen@nxp.com> 8 */ 9 10#undef TRACE_SYSTEM 11#define TRACE_SYSTEM chipidea 12 13#if !defined(__LINUX_CHIPIDEA_TRACE) || defined(TRACE_HEADER_MULTI_READ) 14#define __LINUX_CHIPIDEA_TRACE 15 16#include <linux/types.h> 17#include <linux/tracepoint.h> 18#include <linux/usb/chipidea.h> 19#include "ci.h" 20#include "udc.h" 21 22#define CHIPIDEA_MSG_MAX 500 23 24void ci_log(struct ci_hdrc *ci, const char *fmt, ...); 25 26TRACE_EVENT(ci_log, 27 TP_PROTO(struct ci_hdrc *ci, struct va_format *vaf), 28 TP_ARGS(ci, vaf), 29 TP_STRUCT__entry( 30 __string(name, dev_name(ci->dev)) 31 __dynamic_array(char, msg, CHIPIDEA_MSG_MAX) 32 ), 33 TP_fast_assign( 34 __assign_str(name, dev_name(ci->dev)); 35 vsnprintf(__get_str(msg), CHIPIDEA_MSG_MAX, vaf->fmt, *vaf->va); 36 ), 37 TP_printk("%s: %s", __get_str(name), __get_str(msg)) 38); 39 40DECLARE_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), 43 TP_STRUCT__entry( 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) 49 __field(u32, next) 50 __field(u32, token) 51 __field(u32, type) 52 ), 53 TP_fast_assign( 54 __assign_str(name, hwep->name); 55 __entry->req = &hwreq->req; 56 __entry->td = td; 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); 62 ), 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 69 ) 70); 71 72DEFINE_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) 75); 76 77DEFINE_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) 80); 81 82#endif /* __LINUX_CHIPIDEA_TRACE */ 83 84/* this part must be outside header guard */ 85 86#undef TRACE_INCLUDE_PATH 87#define TRACE_INCLUDE_PATH . 88 89#undef TRACE_INCLUDE_FILE 90#define TRACE_INCLUDE_FILE trace 91 92#include <trace/define_trace.h>