1*db199f57SEddie James /* SPDX-License-Identifier: GPL-2.0 */ 2*db199f57SEddie James 3*db199f57SEddie James #undef TRACE_SYSTEM 4*db199f57SEddie James #define TRACE_SYSTEM xdma 5*db199f57SEddie James 6*db199f57SEddie James #if !defined(_TRACE_XDMA_H) || defined(TRACE_HEADER_MULTI_READ) 7*db199f57SEddie James #define _TRACE_XDMA_H 8*db199f57SEddie James 9*db199f57SEddie James #include <linux/tracepoint.h> 10*db199f57SEddie James 11*db199f57SEddie James TRACE_EVENT(xdma_start, 12*db199f57SEddie James TP_PROTO(const struct aspeed_xdma *ctx, const struct aspeed_xdma_cmd *cmd), 13*db199f57SEddie James TP_ARGS(ctx, cmd), 14*db199f57SEddie James TP_STRUCT__entry( 15*db199f57SEddie James __field(bool, dir_upstream) 16*db199f57SEddie James __field(unsigned int, index) 17*db199f57SEddie James __field(__u64, host) 18*db199f57SEddie James __field(__u64, pitch) 19*db199f57SEddie James __field(__u64, cmd) 20*db199f57SEddie James ), 21*db199f57SEddie James TP_fast_assign( 22*db199f57SEddie James __entry->dir_upstream = ctx->upstream; 23*db199f57SEddie James __entry->index = ctx->cmd_idx; 24*db199f57SEddie James __entry->host = cmd->host_addr; 25*db199f57SEddie James __entry->pitch = cmd->pitch; 26*db199f57SEddie James __entry->cmd = cmd->cmd; 27*db199f57SEddie James ), 28*db199f57SEddie James TP_printk("%s cmd:%u [%08llx %016llx %016llx]", 29*db199f57SEddie James __entry->dir_upstream ? "upstream" : "downstream", 30*db199f57SEddie James __entry->index, 31*db199f57SEddie James __entry->host, 32*db199f57SEddie James __entry->pitch, 33*db199f57SEddie James __entry->cmd 34*db199f57SEddie James ) 35*db199f57SEddie James ); 36*db199f57SEddie James 37*db199f57SEddie James TRACE_EVENT(xdma_irq, 38*db199f57SEddie James TP_PROTO(u32 sts), 39*db199f57SEddie James TP_ARGS(sts), 40*db199f57SEddie James TP_STRUCT__entry( 41*db199f57SEddie James __field(__u32, status) 42*db199f57SEddie James ), 43*db199f57SEddie James TP_fast_assign( 44*db199f57SEddie James __entry->status = sts; 45*db199f57SEddie James ), 46*db199f57SEddie James TP_printk("sts:%08x", 47*db199f57SEddie James __entry->status 48*db199f57SEddie James ) 49*db199f57SEddie James ); 50*db199f57SEddie James 51*db199f57SEddie James TRACE_EVENT(xdma_reset, 52*db199f57SEddie James TP_PROTO(const struct aspeed_xdma *ctx), 53*db199f57SEddie James TP_ARGS(ctx), 54*db199f57SEddie James TP_STRUCT__entry( 55*db199f57SEddie James __field(bool, dir_upstream) 56*db199f57SEddie James __field(bool, in_progress) 57*db199f57SEddie James ), 58*db199f57SEddie James TP_fast_assign( 59*db199f57SEddie James __entry->dir_upstream = ctx->upstream; 60*db199f57SEddie James __entry->in_progress = 61*db199f57SEddie James ctx->current_client ? ctx->current_client->in_progress : false; 62*db199f57SEddie James ), 63*db199f57SEddie James TP_printk("%sin progress%s", 64*db199f57SEddie James __entry->in_progress ? "" : "not ", 65*db199f57SEddie James __entry->in_progress ? (__entry->dir_upstream ? " upstream" : " downstream") : "" 66*db199f57SEddie James ) 67*db199f57SEddie James ); 68*db199f57SEddie James 69*db199f57SEddie James TRACE_EVENT(xdma_perst, 70*db199f57SEddie James TP_PROTO(const struct aspeed_xdma *ctx), 71*db199f57SEddie James TP_ARGS(ctx), 72*db199f57SEddie James TP_STRUCT__entry( 73*db199f57SEddie James __field(bool, in_reset) 74*db199f57SEddie James ), 75*db199f57SEddie James TP_fast_assign( 76*db199f57SEddie James __entry->in_reset = ctx->in_reset; 77*db199f57SEddie James ), 78*db199f57SEddie James TP_printk("%s", 79*db199f57SEddie James __entry->in_reset ? "in reset" : "" 80*db199f57SEddie James ) 81*db199f57SEddie James ); 82*db199f57SEddie James 83*db199f57SEddie James TRACE_EVENT(xdma_unmap, 84*db199f57SEddie James TP_PROTO(const struct aspeed_xdma_client *client), 85*db199f57SEddie James TP_ARGS(client), 86*db199f57SEddie James TP_STRUCT__entry( 87*db199f57SEddie James __field(__u32, phys) 88*db199f57SEddie James __field(__u32, size) 89*db199f57SEddie James ), 90*db199f57SEddie James TP_fast_assign( 91*db199f57SEddie James __entry->phys = client->phys; 92*db199f57SEddie James __entry->size = client->size; 93*db199f57SEddie James ), 94*db199f57SEddie James TP_printk("p:%08x s:%08x", 95*db199f57SEddie James __entry->phys, 96*db199f57SEddie James __entry->size 97*db199f57SEddie James ) 98*db199f57SEddie James ); 99*db199f57SEddie James 100*db199f57SEddie James TRACE_EVENT(xdma_mmap_error, 101*db199f57SEddie James TP_PROTO(const struct aspeed_xdma_client *client, unsigned long vm_start), 102*db199f57SEddie James TP_ARGS(client, vm_start), 103*db199f57SEddie James TP_STRUCT__entry( 104*db199f57SEddie James __field(__u32, phys) 105*db199f57SEddie James __field(__u32, size) 106*db199f57SEddie James __field(unsigned long, vm_start) 107*db199f57SEddie James ), 108*db199f57SEddie James TP_fast_assign( 109*db199f57SEddie James __entry->phys = client->phys; 110*db199f57SEddie James __entry->size = client->size; 111*db199f57SEddie James __entry->vm_start = vm_start; 112*db199f57SEddie James ), 113*db199f57SEddie James TP_printk("p:%08x s:%08x v:%08lx", 114*db199f57SEddie James __entry->phys, 115*db199f57SEddie James __entry->size, 116*db199f57SEddie James __entry->vm_start 117*db199f57SEddie James ) 118*db199f57SEddie James ); 119*db199f57SEddie James 120*db199f57SEddie James TRACE_EVENT(xdma_mmap, 121*db199f57SEddie James TP_PROTO(const struct aspeed_xdma_client *client), 122*db199f57SEddie James TP_ARGS(client), 123*db199f57SEddie James TP_STRUCT__entry( 124*db199f57SEddie James __field(__u32, phys) 125*db199f57SEddie James __field(__u32, size) 126*db199f57SEddie James ), 127*db199f57SEddie James TP_fast_assign( 128*db199f57SEddie James __entry->phys = client->phys; 129*db199f57SEddie James __entry->size = client->size; 130*db199f57SEddie James ), 131*db199f57SEddie James TP_printk("p:%08x s:%08x", 132*db199f57SEddie James __entry->phys, 133*db199f57SEddie James __entry->size 134*db199f57SEddie James ) 135*db199f57SEddie James ); 136*db199f57SEddie James 137*db199f57SEddie James #endif /* _TRACE_XDMA_H */ 138*db199f57SEddie James 139*db199f57SEddie James #include <trace/define_trace.h> 140