175471687STerje Bergstrom /* 275471687STerje Bergstrom * include/trace/events/host1x.h 375471687STerje Bergstrom * 475471687STerje Bergstrom * host1x event logging to ftrace. 575471687STerje Bergstrom * 675471687STerje Bergstrom * Copyright (c) 2010-2013, NVIDIA Corporation. 775471687STerje Bergstrom * 875471687STerje Bergstrom * This program is free software; you can redistribute it and/or modify 975471687STerje Bergstrom * it under the terms of the GNU General Public License as published by 1075471687STerje Bergstrom * the Free Software Foundation; either version 2 of the License, or 1175471687STerje Bergstrom * (at your option) any later version. 1275471687STerje Bergstrom * 1375471687STerje Bergstrom * This program is distributed in the hope that it will be useful, but WITHOUT 1475471687STerje Bergstrom * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 1575471687STerje Bergstrom * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 1675471687STerje Bergstrom * more details. 1775471687STerje Bergstrom * 1875471687STerje Bergstrom * You should have received a copy of the GNU General Public License along 1975471687STerje Bergstrom * with this program; if not, write to the Free Software Foundation, Inc., 2075471687STerje Bergstrom * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 2175471687STerje Bergstrom */ 2275471687STerje Bergstrom 2375471687STerje Bergstrom #undef TRACE_SYSTEM 2475471687STerje Bergstrom #define TRACE_SYSTEM host1x 2575471687STerje Bergstrom 2675471687STerje Bergstrom #if !defined(_TRACE_HOST1X_H) || defined(TRACE_HEADER_MULTI_READ) 2775471687STerje Bergstrom #define _TRACE_HOST1X_H 2875471687STerje Bergstrom 2975471687STerje Bergstrom #include <linux/ktime.h> 3075471687STerje Bergstrom #include <linux/tracepoint.h> 3175471687STerje Bergstrom 3275471687STerje Bergstrom DECLARE_EVENT_CLASS(host1x, 3375471687STerje Bergstrom TP_PROTO(const char *name), 3475471687STerje Bergstrom TP_ARGS(name), 3575471687STerje Bergstrom TP_STRUCT__entry(__field(const char *, name)), 3675471687STerje Bergstrom TP_fast_assign(__entry->name = name;), 3775471687STerje Bergstrom TP_printk("name=%s", __entry->name) 3875471687STerje Bergstrom ); 3975471687STerje Bergstrom 40*6579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_channel_open, 41*6579324aSTerje Bergstrom TP_PROTO(const char *name), 42*6579324aSTerje Bergstrom TP_ARGS(name) 43*6579324aSTerje Bergstrom ); 44*6579324aSTerje Bergstrom 45*6579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_channel_release, 46*6579324aSTerje Bergstrom TP_PROTO(const char *name), 47*6579324aSTerje Bergstrom TP_ARGS(name) 48*6579324aSTerje Bergstrom ); 49*6579324aSTerje Bergstrom 50*6579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_cdma_begin, 51*6579324aSTerje Bergstrom TP_PROTO(const char *name), 52*6579324aSTerje Bergstrom TP_ARGS(name) 53*6579324aSTerje Bergstrom ); 54*6579324aSTerje Bergstrom 55*6579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_cdma_end, 56*6579324aSTerje Bergstrom TP_PROTO(const char *name), 57*6579324aSTerje Bergstrom TP_ARGS(name) 58*6579324aSTerje Bergstrom ); 59*6579324aSTerje Bergstrom 60*6579324aSTerje Bergstrom TRACE_EVENT(host1x_cdma_push, 61*6579324aSTerje Bergstrom TP_PROTO(const char *name, u32 op1, u32 op2), 62*6579324aSTerje Bergstrom 63*6579324aSTerje Bergstrom TP_ARGS(name, op1, op2), 64*6579324aSTerje Bergstrom 65*6579324aSTerje Bergstrom TP_STRUCT__entry( 66*6579324aSTerje Bergstrom __field(const char *, name) 67*6579324aSTerje Bergstrom __field(u32, op1) 68*6579324aSTerje Bergstrom __field(u32, op2) 69*6579324aSTerje Bergstrom ), 70*6579324aSTerje Bergstrom 71*6579324aSTerje Bergstrom TP_fast_assign( 72*6579324aSTerje Bergstrom __entry->name = name; 73*6579324aSTerje Bergstrom __entry->op1 = op1; 74*6579324aSTerje Bergstrom __entry->op2 = op2; 75*6579324aSTerje Bergstrom ), 76*6579324aSTerje Bergstrom 77*6579324aSTerje Bergstrom TP_printk("name=%s, op1=%08x, op2=%08x", 78*6579324aSTerje Bergstrom __entry->name, __entry->op1, __entry->op2) 79*6579324aSTerje Bergstrom ); 80*6579324aSTerje Bergstrom 81*6579324aSTerje Bergstrom TRACE_EVENT(host1x_cdma_push_gather, 82*6579324aSTerje Bergstrom TP_PROTO(const char *name, u32 mem_id, 83*6579324aSTerje Bergstrom u32 words, u32 offset, void *cmdbuf), 84*6579324aSTerje Bergstrom 85*6579324aSTerje Bergstrom TP_ARGS(name, mem_id, words, offset, cmdbuf), 86*6579324aSTerje Bergstrom 87*6579324aSTerje Bergstrom TP_STRUCT__entry( 88*6579324aSTerje Bergstrom __field(const char *, name) 89*6579324aSTerje Bergstrom __field(u32, mem_id) 90*6579324aSTerje Bergstrom __field(u32, words) 91*6579324aSTerje Bergstrom __field(u32, offset) 92*6579324aSTerje Bergstrom __field(bool, cmdbuf) 93*6579324aSTerje Bergstrom __dynamic_array(u32, cmdbuf, words) 94*6579324aSTerje Bergstrom ), 95*6579324aSTerje Bergstrom 96*6579324aSTerje Bergstrom TP_fast_assign( 97*6579324aSTerje Bergstrom if (cmdbuf) { 98*6579324aSTerje Bergstrom memcpy(__get_dynamic_array(cmdbuf), cmdbuf+offset, 99*6579324aSTerje Bergstrom words * sizeof(u32)); 100*6579324aSTerje Bergstrom } 101*6579324aSTerje Bergstrom __entry->cmdbuf = cmdbuf; 102*6579324aSTerje Bergstrom __entry->name = name; 103*6579324aSTerje Bergstrom __entry->mem_id = mem_id; 104*6579324aSTerje Bergstrom __entry->words = words; 105*6579324aSTerje Bergstrom __entry->offset = offset; 106*6579324aSTerje Bergstrom ), 107*6579324aSTerje Bergstrom 108*6579324aSTerje Bergstrom TP_printk("name=%s, mem_id=%08x, words=%u, offset=%d, contents=[%s]", 109*6579324aSTerje Bergstrom __entry->name, __entry->mem_id, 110*6579324aSTerje Bergstrom __entry->words, __entry->offset, 111*6579324aSTerje Bergstrom __print_hex(__get_dynamic_array(cmdbuf), 112*6579324aSTerje Bergstrom __entry->cmdbuf ? __entry->words * 4 : 0)) 113*6579324aSTerje Bergstrom ); 114*6579324aSTerje Bergstrom 115*6579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submit, 116*6579324aSTerje Bergstrom TP_PROTO(const char *name, u32 cmdbufs, u32 relocs, u32 waitchks, 117*6579324aSTerje Bergstrom u32 syncpt_id, u32 syncpt_incrs), 118*6579324aSTerje Bergstrom 119*6579324aSTerje Bergstrom TP_ARGS(name, cmdbufs, relocs, waitchks, syncpt_id, syncpt_incrs), 120*6579324aSTerje Bergstrom 121*6579324aSTerje Bergstrom TP_STRUCT__entry( 122*6579324aSTerje Bergstrom __field(const char *, name) 123*6579324aSTerje Bergstrom __field(u32, cmdbufs) 124*6579324aSTerje Bergstrom __field(u32, relocs) 125*6579324aSTerje Bergstrom __field(u32, waitchks) 126*6579324aSTerje Bergstrom __field(u32, syncpt_id) 127*6579324aSTerje Bergstrom __field(u32, syncpt_incrs) 128*6579324aSTerje Bergstrom ), 129*6579324aSTerje Bergstrom 130*6579324aSTerje Bergstrom TP_fast_assign( 131*6579324aSTerje Bergstrom __entry->name = name; 132*6579324aSTerje Bergstrom __entry->cmdbufs = cmdbufs; 133*6579324aSTerje Bergstrom __entry->relocs = relocs; 134*6579324aSTerje Bergstrom __entry->waitchks = waitchks; 135*6579324aSTerje Bergstrom __entry->syncpt_id = syncpt_id; 136*6579324aSTerje Bergstrom __entry->syncpt_incrs = syncpt_incrs; 137*6579324aSTerje Bergstrom ), 138*6579324aSTerje Bergstrom 139*6579324aSTerje Bergstrom TP_printk("name=%s, cmdbufs=%u, relocs=%u, waitchks=%d," 140*6579324aSTerje Bergstrom "syncpt_id=%u, syncpt_incrs=%u", 141*6579324aSTerje Bergstrom __entry->name, __entry->cmdbufs, __entry->relocs, __entry->waitchks, 142*6579324aSTerje Bergstrom __entry->syncpt_id, __entry->syncpt_incrs) 143*6579324aSTerje Bergstrom ); 144*6579324aSTerje Bergstrom 145*6579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submitted, 146*6579324aSTerje Bergstrom TP_PROTO(const char *name, u32 syncpt_base, u32 syncpt_max), 147*6579324aSTerje Bergstrom 148*6579324aSTerje Bergstrom TP_ARGS(name, syncpt_base, syncpt_max), 149*6579324aSTerje Bergstrom 150*6579324aSTerje Bergstrom TP_STRUCT__entry( 151*6579324aSTerje Bergstrom __field(const char *, name) 152*6579324aSTerje Bergstrom __field(u32, syncpt_base) 153*6579324aSTerje Bergstrom __field(u32, syncpt_max) 154*6579324aSTerje Bergstrom ), 155*6579324aSTerje Bergstrom 156*6579324aSTerje Bergstrom TP_fast_assign( 157*6579324aSTerje Bergstrom __entry->name = name; 158*6579324aSTerje Bergstrom __entry->syncpt_base = syncpt_base; 159*6579324aSTerje Bergstrom __entry->syncpt_max = syncpt_max; 160*6579324aSTerje Bergstrom ), 161*6579324aSTerje Bergstrom 162*6579324aSTerje Bergstrom TP_printk("name=%s, syncpt_base=%d, syncpt_max=%d", 163*6579324aSTerje Bergstrom __entry->name, __entry->syncpt_base, __entry->syncpt_max) 164*6579324aSTerje Bergstrom ); 165*6579324aSTerje Bergstrom 166*6579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submit_complete, 167*6579324aSTerje Bergstrom TP_PROTO(const char *name, int count, u32 thresh), 168*6579324aSTerje Bergstrom 169*6579324aSTerje Bergstrom TP_ARGS(name, count, thresh), 170*6579324aSTerje Bergstrom 171*6579324aSTerje Bergstrom TP_STRUCT__entry( 172*6579324aSTerje Bergstrom __field(const char *, name) 173*6579324aSTerje Bergstrom __field(int, count) 174*6579324aSTerje Bergstrom __field(u32, thresh) 175*6579324aSTerje Bergstrom ), 176*6579324aSTerje Bergstrom 177*6579324aSTerje Bergstrom TP_fast_assign( 178*6579324aSTerje Bergstrom __entry->name = name; 179*6579324aSTerje Bergstrom __entry->count = count; 180*6579324aSTerje Bergstrom __entry->thresh = thresh; 181*6579324aSTerje Bergstrom ), 182*6579324aSTerje Bergstrom 183*6579324aSTerje Bergstrom TP_printk("name=%s, count=%d, thresh=%d", 184*6579324aSTerje Bergstrom __entry->name, __entry->count, __entry->thresh) 185*6579324aSTerje Bergstrom ); 186*6579324aSTerje Bergstrom 187*6579324aSTerje Bergstrom TRACE_EVENT(host1x_wait_cdma, 188*6579324aSTerje Bergstrom TP_PROTO(const char *name, u32 eventid), 189*6579324aSTerje Bergstrom 190*6579324aSTerje Bergstrom TP_ARGS(name, eventid), 191*6579324aSTerje Bergstrom 192*6579324aSTerje Bergstrom TP_STRUCT__entry( 193*6579324aSTerje Bergstrom __field(const char *, name) 194*6579324aSTerje Bergstrom __field(u32, eventid) 195*6579324aSTerje Bergstrom ), 196*6579324aSTerje Bergstrom 197*6579324aSTerje Bergstrom TP_fast_assign( 198*6579324aSTerje Bergstrom __entry->name = name; 199*6579324aSTerje Bergstrom __entry->eventid = eventid; 200*6579324aSTerje Bergstrom ), 201*6579324aSTerje Bergstrom 202*6579324aSTerje Bergstrom TP_printk("name=%s, event=%d", __entry->name, __entry->eventid) 203*6579324aSTerje Bergstrom ); 204*6579324aSTerje Bergstrom 20575471687STerje Bergstrom TRACE_EVENT(host1x_syncpt_load_min, 20675471687STerje Bergstrom TP_PROTO(u32 id, u32 val), 20775471687STerje Bergstrom 20875471687STerje Bergstrom TP_ARGS(id, val), 20975471687STerje Bergstrom 21075471687STerje Bergstrom TP_STRUCT__entry( 21175471687STerje Bergstrom __field(u32, id) 21275471687STerje Bergstrom __field(u32, val) 21375471687STerje Bergstrom ), 21475471687STerje Bergstrom 21575471687STerje Bergstrom TP_fast_assign( 21675471687STerje Bergstrom __entry->id = id; 21775471687STerje Bergstrom __entry->val = val; 21875471687STerje Bergstrom ), 21975471687STerje Bergstrom 22075471687STerje Bergstrom TP_printk("id=%d, val=%d", __entry->id, __entry->val) 22175471687STerje Bergstrom ); 22275471687STerje Bergstrom 223*6579324aSTerje Bergstrom TRACE_EVENT(host1x_syncpt_wait_check, 224*6579324aSTerje Bergstrom TP_PROTO(void *mem_id, u32 offset, u32 syncpt_id, u32 thresh, u32 min), 225*6579324aSTerje Bergstrom 226*6579324aSTerje Bergstrom TP_ARGS(mem_id, offset, syncpt_id, thresh, min), 227*6579324aSTerje Bergstrom 228*6579324aSTerje Bergstrom TP_STRUCT__entry( 229*6579324aSTerje Bergstrom __field(void *, mem_id) 230*6579324aSTerje Bergstrom __field(u32, offset) 231*6579324aSTerje Bergstrom __field(u32, syncpt_id) 232*6579324aSTerje Bergstrom __field(u32, thresh) 233*6579324aSTerje Bergstrom __field(u32, min) 234*6579324aSTerje Bergstrom ), 235*6579324aSTerje Bergstrom 236*6579324aSTerje Bergstrom TP_fast_assign( 237*6579324aSTerje Bergstrom __entry->mem_id = mem_id; 238*6579324aSTerje Bergstrom __entry->offset = offset; 239*6579324aSTerje Bergstrom __entry->syncpt_id = syncpt_id; 240*6579324aSTerje Bergstrom __entry->thresh = thresh; 241*6579324aSTerje Bergstrom __entry->min = min; 242*6579324aSTerje Bergstrom ), 243*6579324aSTerje Bergstrom 244*6579324aSTerje Bergstrom TP_printk("mem_id=%p, offset=%05x, id=%d, thresh=%d, current=%d", 245*6579324aSTerje Bergstrom __entry->mem_id, __entry->offset, 246*6579324aSTerje Bergstrom __entry->syncpt_id, __entry->thresh, 247*6579324aSTerje Bergstrom __entry->min) 248*6579324aSTerje Bergstrom ); 249*6579324aSTerje Bergstrom 25075471687STerje Bergstrom #endif /* _TRACE_HOST1X_H */ 25175471687STerje Bergstrom 25275471687STerje Bergstrom /* This part must be outside protection */ 25375471687STerje Bergstrom #include <trace/define_trace.h> 254