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 32b40d02bfSThierry Reding struct host1x_bo; 33b40d02bfSThierry Reding 3475471687STerje Bergstrom DECLARE_EVENT_CLASS(host1x, 3575471687STerje Bergstrom TP_PROTO(const char *name), 3675471687STerje Bergstrom TP_ARGS(name), 3775471687STerje Bergstrom TP_STRUCT__entry(__field(const char *, name)), 3875471687STerje Bergstrom TP_fast_assign(__entry->name = name;), 3975471687STerje Bergstrom TP_printk("name=%s", __entry->name) 4075471687STerje Bergstrom ); 4175471687STerje Bergstrom 426579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_channel_open, 436579324aSTerje Bergstrom TP_PROTO(const char *name), 446579324aSTerje Bergstrom TP_ARGS(name) 456579324aSTerje Bergstrom ); 466579324aSTerje Bergstrom 476579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_channel_release, 486579324aSTerje Bergstrom TP_PROTO(const char *name), 496579324aSTerje Bergstrom TP_ARGS(name) 506579324aSTerje Bergstrom ); 516579324aSTerje Bergstrom 526579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_cdma_begin, 536579324aSTerje Bergstrom TP_PROTO(const char *name), 546579324aSTerje Bergstrom TP_ARGS(name) 556579324aSTerje Bergstrom ); 566579324aSTerje Bergstrom 576579324aSTerje Bergstrom DEFINE_EVENT(host1x, host1x_cdma_end, 586579324aSTerje Bergstrom TP_PROTO(const char *name), 596579324aSTerje Bergstrom TP_ARGS(name) 606579324aSTerje Bergstrom ); 616579324aSTerje Bergstrom 626579324aSTerje Bergstrom TRACE_EVENT(host1x_cdma_push, 636579324aSTerje Bergstrom TP_PROTO(const char *name, u32 op1, u32 op2), 646579324aSTerje Bergstrom 656579324aSTerje Bergstrom TP_ARGS(name, op1, op2), 666579324aSTerje Bergstrom 676579324aSTerje Bergstrom TP_STRUCT__entry( 686579324aSTerje Bergstrom __field(const char *, name) 696579324aSTerje Bergstrom __field(u32, op1) 706579324aSTerje Bergstrom __field(u32, op2) 716579324aSTerje Bergstrom ), 726579324aSTerje Bergstrom 736579324aSTerje Bergstrom TP_fast_assign( 746579324aSTerje Bergstrom __entry->name = name; 756579324aSTerje Bergstrom __entry->op1 = op1; 766579324aSTerje Bergstrom __entry->op2 = op2; 776579324aSTerje Bergstrom ), 786579324aSTerje Bergstrom 796579324aSTerje Bergstrom TP_printk("name=%s, op1=%08x, op2=%08x", 806579324aSTerje Bergstrom __entry->name, __entry->op1, __entry->op2) 816579324aSTerje Bergstrom ); 826579324aSTerje Bergstrom 836579324aSTerje Bergstrom TRACE_EVENT(host1x_cdma_push_gather, 84b40d02bfSThierry Reding TP_PROTO(const char *name, struct host1x_bo *bo, 856579324aSTerje Bergstrom u32 words, u32 offset, void *cmdbuf), 866579324aSTerje Bergstrom 87b40d02bfSThierry Reding TP_ARGS(name, bo, words, offset, cmdbuf), 886579324aSTerje Bergstrom 896579324aSTerje Bergstrom TP_STRUCT__entry( 906579324aSTerje Bergstrom __field(const char *, name) 91b40d02bfSThierry Reding __field(struct host1x_bo *, bo) 926579324aSTerje Bergstrom __field(u32, words) 936579324aSTerje Bergstrom __field(u32, offset) 946579324aSTerje Bergstrom __field(bool, cmdbuf) 956579324aSTerje Bergstrom __dynamic_array(u32, cmdbuf, words) 966579324aSTerje Bergstrom ), 976579324aSTerje Bergstrom 986579324aSTerje Bergstrom TP_fast_assign( 996579324aSTerje Bergstrom if (cmdbuf) { 1006579324aSTerje Bergstrom memcpy(__get_dynamic_array(cmdbuf), cmdbuf+offset, 1016579324aSTerje Bergstrom words * sizeof(u32)); 1026579324aSTerje Bergstrom } 1036579324aSTerje Bergstrom __entry->cmdbuf = cmdbuf; 1046579324aSTerje Bergstrom __entry->name = name; 105b40d02bfSThierry Reding __entry->bo = bo; 1066579324aSTerje Bergstrom __entry->words = words; 1076579324aSTerje Bergstrom __entry->offset = offset; 1086579324aSTerje Bergstrom ), 1096579324aSTerje Bergstrom 110b40d02bfSThierry Reding TP_printk("name=%s, bo=%p, words=%u, offset=%d, contents=[%s]", 111b40d02bfSThierry Reding __entry->name, __entry->bo, 1126579324aSTerje Bergstrom __entry->words, __entry->offset, 1136579324aSTerje Bergstrom __print_hex(__get_dynamic_array(cmdbuf), 1146579324aSTerje Bergstrom __entry->cmdbuf ? __entry->words * 4 : 0)) 1156579324aSTerje Bergstrom ); 1166579324aSTerje Bergstrom 1176579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submit, 118*24c94e16SThierry Reding TP_PROTO(const char *name, u32 cmdbufs, u32 relocs, u32 syncpt_id, 119*24c94e16SThierry Reding u32 syncpt_incrs), 1206579324aSTerje Bergstrom 121*24c94e16SThierry Reding TP_ARGS(name, cmdbufs, relocs, syncpt_id, syncpt_incrs), 1226579324aSTerje Bergstrom 1236579324aSTerje Bergstrom TP_STRUCT__entry( 1246579324aSTerje Bergstrom __field(const char *, name) 1256579324aSTerje Bergstrom __field(u32, cmdbufs) 1266579324aSTerje Bergstrom __field(u32, relocs) 1276579324aSTerje Bergstrom __field(u32, syncpt_id) 1286579324aSTerje Bergstrom __field(u32, syncpt_incrs) 1296579324aSTerje Bergstrom ), 1306579324aSTerje Bergstrom 1316579324aSTerje Bergstrom TP_fast_assign( 1326579324aSTerje Bergstrom __entry->name = name; 1336579324aSTerje Bergstrom __entry->cmdbufs = cmdbufs; 1346579324aSTerje Bergstrom __entry->relocs = relocs; 1356579324aSTerje Bergstrom __entry->syncpt_id = syncpt_id; 1366579324aSTerje Bergstrom __entry->syncpt_incrs = syncpt_incrs; 1376579324aSTerje Bergstrom ), 1386579324aSTerje Bergstrom 139*24c94e16SThierry Reding TP_printk("name=%s, cmdbufs=%u, relocs=%u, syncpt_id=%u, " 140*24c94e16SThierry Reding "syncpt_incrs=%u", 141*24c94e16SThierry Reding __entry->name, __entry->cmdbufs, __entry->relocs, 1426579324aSTerje Bergstrom __entry->syncpt_id, __entry->syncpt_incrs) 1436579324aSTerje Bergstrom ); 1446579324aSTerje Bergstrom 1456579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submitted, 1466579324aSTerje Bergstrom TP_PROTO(const char *name, u32 syncpt_base, u32 syncpt_max), 1476579324aSTerje Bergstrom 1486579324aSTerje Bergstrom TP_ARGS(name, syncpt_base, syncpt_max), 1496579324aSTerje Bergstrom 1506579324aSTerje Bergstrom TP_STRUCT__entry( 1516579324aSTerje Bergstrom __field(const char *, name) 1526579324aSTerje Bergstrom __field(u32, syncpt_base) 1536579324aSTerje Bergstrom __field(u32, syncpt_max) 1546579324aSTerje Bergstrom ), 1556579324aSTerje Bergstrom 1566579324aSTerje Bergstrom TP_fast_assign( 1576579324aSTerje Bergstrom __entry->name = name; 1586579324aSTerje Bergstrom __entry->syncpt_base = syncpt_base; 1596579324aSTerje Bergstrom __entry->syncpt_max = syncpt_max; 1606579324aSTerje Bergstrom ), 1616579324aSTerje Bergstrom 1626579324aSTerje Bergstrom TP_printk("name=%s, syncpt_base=%d, syncpt_max=%d", 1636579324aSTerje Bergstrom __entry->name, __entry->syncpt_base, __entry->syncpt_max) 1646579324aSTerje Bergstrom ); 1656579324aSTerje Bergstrom 1666579324aSTerje Bergstrom TRACE_EVENT(host1x_channel_submit_complete, 1676579324aSTerje Bergstrom TP_PROTO(const char *name, int count, u32 thresh), 1686579324aSTerje Bergstrom 1696579324aSTerje Bergstrom TP_ARGS(name, count, thresh), 1706579324aSTerje Bergstrom 1716579324aSTerje Bergstrom TP_STRUCT__entry( 1726579324aSTerje Bergstrom __field(const char *, name) 1736579324aSTerje Bergstrom __field(int, count) 1746579324aSTerje Bergstrom __field(u32, thresh) 1756579324aSTerje Bergstrom ), 1766579324aSTerje Bergstrom 1776579324aSTerje Bergstrom TP_fast_assign( 1786579324aSTerje Bergstrom __entry->name = name; 1796579324aSTerje Bergstrom __entry->count = count; 1806579324aSTerje Bergstrom __entry->thresh = thresh; 1816579324aSTerje Bergstrom ), 1826579324aSTerje Bergstrom 1836579324aSTerje Bergstrom TP_printk("name=%s, count=%d, thresh=%d", 1846579324aSTerje Bergstrom __entry->name, __entry->count, __entry->thresh) 1856579324aSTerje Bergstrom ); 1866579324aSTerje Bergstrom 1876579324aSTerje Bergstrom TRACE_EVENT(host1x_wait_cdma, 1886579324aSTerje Bergstrom TP_PROTO(const char *name, u32 eventid), 1896579324aSTerje Bergstrom 1906579324aSTerje Bergstrom TP_ARGS(name, eventid), 1916579324aSTerje Bergstrom 1926579324aSTerje Bergstrom TP_STRUCT__entry( 1936579324aSTerje Bergstrom __field(const char *, name) 1946579324aSTerje Bergstrom __field(u32, eventid) 1956579324aSTerje Bergstrom ), 1966579324aSTerje Bergstrom 1976579324aSTerje Bergstrom TP_fast_assign( 1986579324aSTerje Bergstrom __entry->name = name; 1996579324aSTerje Bergstrom __entry->eventid = eventid; 2006579324aSTerje Bergstrom ), 2016579324aSTerje Bergstrom 2026579324aSTerje Bergstrom TP_printk("name=%s, event=%d", __entry->name, __entry->eventid) 2036579324aSTerje Bergstrom ); 2046579324aSTerje 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 2236579324aSTerje Bergstrom TRACE_EVENT(host1x_syncpt_wait_check, 224b40d02bfSThierry Reding TP_PROTO(struct host1x_bo *bo, u32 offset, u32 syncpt_id, u32 thresh, 225b40d02bfSThierry Reding u32 min), 2266579324aSTerje Bergstrom 227b40d02bfSThierry Reding TP_ARGS(bo, offset, syncpt_id, thresh, min), 2286579324aSTerje Bergstrom 2296579324aSTerje Bergstrom TP_STRUCT__entry( 230b40d02bfSThierry Reding __field(struct host1x_bo *, bo) 2316579324aSTerje Bergstrom __field(u32, offset) 2326579324aSTerje Bergstrom __field(u32, syncpt_id) 2336579324aSTerje Bergstrom __field(u32, thresh) 2346579324aSTerje Bergstrom __field(u32, min) 2356579324aSTerje Bergstrom ), 2366579324aSTerje Bergstrom 2376579324aSTerje Bergstrom TP_fast_assign( 238b40d02bfSThierry Reding __entry->bo = bo; 2396579324aSTerje Bergstrom __entry->offset = offset; 2406579324aSTerje Bergstrom __entry->syncpt_id = syncpt_id; 2416579324aSTerje Bergstrom __entry->thresh = thresh; 2426579324aSTerje Bergstrom __entry->min = min; 2436579324aSTerje Bergstrom ), 2446579324aSTerje Bergstrom 245b40d02bfSThierry Reding TP_printk("bo=%p, offset=%05x, id=%d, thresh=%d, current=%d", 246b40d02bfSThierry Reding __entry->bo, __entry->offset, 2476579324aSTerje Bergstrom __entry->syncpt_id, __entry->thresh, 2486579324aSTerje Bergstrom __entry->min) 2496579324aSTerje Bergstrom ); 2506579324aSTerje Bergstrom 25175471687STerje Bergstrom #endif /* _TRACE_HOST1X_H */ 25275471687STerje Bergstrom 25375471687STerje Bergstrom /* This part must be outside protection */ 25475471687STerje Bergstrom #include <trace/define_trace.h> 255