1f89252adSBin Liu /* 2f89252adSBin Liu * musb_trace.h - MUSB Controller Trace Support 3f89252adSBin Liu * 4f89252adSBin Liu * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com 5f89252adSBin Liu * 6f89252adSBin Liu * Author: Bin Liu <b-liu@ti.com> 7f89252adSBin Liu * 8f89252adSBin Liu * This program is free software: you can redistribute it and/or modify 9f89252adSBin Liu * it under the terms of the GNU General Public License version 2 of 10f89252adSBin Liu * the License as published by the Free Software Foundation. 11f89252adSBin Liu * 12f89252adSBin Liu * This program is distributed in the hope that it will be useful, 13f89252adSBin Liu * but WITHOUT ANY WARRANTY; without even the implied warranty of 14f89252adSBin Liu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15f89252adSBin Liu * GNU General Public License for more details. 16f89252adSBin Liu */ 17f89252adSBin Liu 18f89252adSBin Liu #undef TRACE_SYSTEM 19f89252adSBin Liu #define TRACE_SYSTEM musb 20f89252adSBin Liu 21f89252adSBin Liu #if !defined(__MUSB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 22f89252adSBin Liu #define __MUSB_TRACE_H 23f89252adSBin Liu 24f89252adSBin Liu #include <linux/types.h> 25f89252adSBin Liu #include <linux/tracepoint.h> 26f89252adSBin Liu #include "musb_core.h" 27f89252adSBin Liu 28f89252adSBin Liu #define MUSB_MSG_MAX 500 29f89252adSBin Liu 30f89252adSBin Liu TRACE_EVENT(musb_log, 31f89252adSBin Liu TP_PROTO(struct musb *musb, struct va_format *vaf), 32f89252adSBin Liu TP_ARGS(musb, vaf), 33f89252adSBin Liu TP_STRUCT__entry( 34f89252adSBin Liu __string(name, dev_name(musb->controller)) 35f89252adSBin Liu __dynamic_array(char, msg, MUSB_MSG_MAX) 36f89252adSBin Liu ), 37f89252adSBin Liu TP_fast_assign( 38f89252adSBin Liu __assign_str(name, dev_name(musb->controller)); 39f89252adSBin Liu vsnprintf(__get_str(msg), MUSB_MSG_MAX, vaf->fmt, *vaf->va); 40f89252adSBin Liu ), 41f89252adSBin Liu TP_printk("%s: %s", __get_str(name), __get_str(msg)) 42f89252adSBin Liu ); 43f89252adSBin Liu 44*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regb, 45*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data), 46*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data), 47*c74173fdSBin Liu TP_STRUCT__entry( 48*c74173fdSBin Liu __field(void *, caller) 49*c74173fdSBin Liu __field(const void *, addr) 50*c74173fdSBin Liu __field(unsigned int, offset) 51*c74173fdSBin Liu __field(u8, data) 52*c74173fdSBin Liu ), 53*c74173fdSBin Liu TP_fast_assign( 54*c74173fdSBin Liu __entry->caller = caller; 55*c74173fdSBin Liu __entry->addr = addr; 56*c74173fdSBin Liu __entry->offset = offset; 57*c74173fdSBin Liu __entry->data = data; 58*c74173fdSBin Liu ), 59*c74173fdSBin Liu TP_printk("%pS: %p + %04x: %02x", 60*c74173fdSBin Liu __entry->caller, __entry->addr, __entry->offset, __entry->data) 61*c74173fdSBin Liu ); 62*c74173fdSBin Liu 63*c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_readb, 64*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data), 65*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 66*c74173fdSBin Liu ); 67*c74173fdSBin Liu 68*c74173fdSBin Liu DEFINE_EVENT(musb_regb, musb_writeb, 69*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u8 data), 70*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 71*c74173fdSBin Liu ); 72*c74173fdSBin Liu 73*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regw, 74*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data), 75*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data), 76*c74173fdSBin Liu TP_STRUCT__entry( 77*c74173fdSBin Liu __field(void *, caller) 78*c74173fdSBin Liu __field(const void *, addr) 79*c74173fdSBin Liu __field(unsigned int, offset) 80*c74173fdSBin Liu __field(u16, data) 81*c74173fdSBin Liu ), 82*c74173fdSBin Liu TP_fast_assign( 83*c74173fdSBin Liu __entry->caller = caller; 84*c74173fdSBin Liu __entry->addr = addr; 85*c74173fdSBin Liu __entry->offset = offset; 86*c74173fdSBin Liu __entry->data = data; 87*c74173fdSBin Liu ), 88*c74173fdSBin Liu TP_printk("%pS: %p + %04x: %04x", 89*c74173fdSBin Liu __entry->caller, __entry->addr, __entry->offset, __entry->data) 90*c74173fdSBin Liu ); 91*c74173fdSBin Liu 92*c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_readw, 93*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data), 94*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 95*c74173fdSBin Liu ); 96*c74173fdSBin Liu 97*c74173fdSBin Liu DEFINE_EVENT(musb_regw, musb_writew, 98*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u16 data), 99*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 100*c74173fdSBin Liu ); 101*c74173fdSBin Liu 102*c74173fdSBin Liu DECLARE_EVENT_CLASS(musb_regl, 103*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data), 104*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data), 105*c74173fdSBin Liu TP_STRUCT__entry( 106*c74173fdSBin Liu __field(void *, caller) 107*c74173fdSBin Liu __field(const void *, addr) 108*c74173fdSBin Liu __field(unsigned int, offset) 109*c74173fdSBin Liu __field(u32, data) 110*c74173fdSBin Liu ), 111*c74173fdSBin Liu TP_fast_assign( 112*c74173fdSBin Liu __entry->caller = caller; 113*c74173fdSBin Liu __entry->addr = addr; 114*c74173fdSBin Liu __entry->offset = offset; 115*c74173fdSBin Liu __entry->data = data; 116*c74173fdSBin Liu ), 117*c74173fdSBin Liu TP_printk("%pS: %p + %04x: %08x", 118*c74173fdSBin Liu __entry->caller, __entry->addr, __entry->offset, __entry->data) 119*c74173fdSBin Liu ); 120*c74173fdSBin Liu 121*c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_readl, 122*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data), 123*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 124*c74173fdSBin Liu ); 125*c74173fdSBin Liu 126*c74173fdSBin Liu DEFINE_EVENT(musb_regl, musb_writel, 127*c74173fdSBin Liu TP_PROTO(void *caller, const void *addr, unsigned int offset, u32 data), 128*c74173fdSBin Liu TP_ARGS(caller, addr, offset, data) 129*c74173fdSBin Liu ); 130*c74173fdSBin Liu 131f89252adSBin Liu #endif /* __MUSB_TRACE_H */ 132f89252adSBin Liu 133f89252adSBin Liu /* this part has to be here */ 134f89252adSBin Liu 135f89252adSBin Liu #undef TRACE_INCLUDE_PATH 136f89252adSBin Liu #define TRACE_INCLUDE_PATH . 137f89252adSBin Liu 138f89252adSBin Liu #undef TRACE_INCLUDE_FILE 139f89252adSBin Liu #define TRACE_INCLUDE_FILE musb_trace 140f89252adSBin Liu 141f89252adSBin Liu #include <trace/define_trace.h> 142