1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #undef TRACE_SYSTEM 3*4882a593Smuzhiyun #define TRACE_SYSTEM coda 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #if !defined(__CODA_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ) 6*4882a593Smuzhiyun #define __CODA_TRACE_H__ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <linux/tracepoint.h> 9*4882a593Smuzhiyun #include <media/videobuf2-v4l2.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "coda.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun TRACE_EVENT(coda_bit_run, 14*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, int cmd), 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun TP_ARGS(ctx, cmd), 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun TP_STRUCT__entry( 19*4882a593Smuzhiyun __field(int, minor) 20*4882a593Smuzhiyun __field(int, ctx) 21*4882a593Smuzhiyun __field(int, cmd) 22*4882a593Smuzhiyun ), 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun TP_fast_assign( 25*4882a593Smuzhiyun __entry->minor = ctx->fh.vdev->minor; 26*4882a593Smuzhiyun __entry->ctx = ctx->idx; 27*4882a593Smuzhiyun __entry->cmd = cmd; 28*4882a593Smuzhiyun ), 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun TP_printk("minor = %d, ctx = %d, cmd = %d", 31*4882a593Smuzhiyun __entry->minor, __entry->ctx, __entry->cmd) 32*4882a593Smuzhiyun ); 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun TRACE_EVENT(coda_bit_done, 35*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx), 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun TP_ARGS(ctx), 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun TP_STRUCT__entry( 40*4882a593Smuzhiyun __field(int, minor) 41*4882a593Smuzhiyun __field(int, ctx) 42*4882a593Smuzhiyun ), 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun TP_fast_assign( 45*4882a593Smuzhiyun __entry->minor = ctx->fh.vdev->minor; 46*4882a593Smuzhiyun __entry->ctx = ctx->idx; 47*4882a593Smuzhiyun ), 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun TP_printk("minor = %d, ctx = %d", __entry->minor, __entry->ctx) 50*4882a593Smuzhiyun ); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun DECLARE_EVENT_CLASS(coda_buf_class, 53*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf), 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun TP_ARGS(ctx, buf), 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun TP_STRUCT__entry( 58*4882a593Smuzhiyun __field(int, minor) 59*4882a593Smuzhiyun __field(int, index) 60*4882a593Smuzhiyun __field(int, ctx) 61*4882a593Smuzhiyun ), 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun TP_fast_assign( 64*4882a593Smuzhiyun __entry->minor = ctx->fh.vdev->minor; 65*4882a593Smuzhiyun __entry->index = buf->vb2_buf.index; 66*4882a593Smuzhiyun __entry->ctx = ctx->idx; 67*4882a593Smuzhiyun ), 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun TP_printk("minor = %d, index = %d, ctx = %d", 70*4882a593Smuzhiyun __entry->minor, __entry->index, __entry->ctx) 71*4882a593Smuzhiyun ); 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_class, coda_enc_pic_run, 74*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf), 75*4882a593Smuzhiyun TP_ARGS(ctx, buf) 76*4882a593Smuzhiyun ); 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_class, coda_enc_pic_done, 79*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf), 80*4882a593Smuzhiyun TP_ARGS(ctx, buf) 81*4882a593Smuzhiyun ); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun DECLARE_EVENT_CLASS(coda_buf_meta_class, 84*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf, 85*4882a593Smuzhiyun struct coda_buffer_meta *meta), 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun TP_ARGS(ctx, buf, meta), 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun TP_STRUCT__entry( 90*4882a593Smuzhiyun __field(int, minor) 91*4882a593Smuzhiyun __field(int, index) 92*4882a593Smuzhiyun __field(int, start) 93*4882a593Smuzhiyun __field(int, end) 94*4882a593Smuzhiyun __field(int, ctx) 95*4882a593Smuzhiyun ), 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun TP_fast_assign( 98*4882a593Smuzhiyun __entry->minor = ctx->fh.vdev->minor; 99*4882a593Smuzhiyun __entry->index = buf->vb2_buf.index; 100*4882a593Smuzhiyun __entry->start = meta->start & ctx->bitstream_fifo.kfifo.mask; 101*4882a593Smuzhiyun __entry->end = meta->end & ctx->bitstream_fifo.kfifo.mask; 102*4882a593Smuzhiyun __entry->ctx = ctx->idx; 103*4882a593Smuzhiyun ), 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun TP_printk("minor = %d, index = %d, start = 0x%x, end = 0x%x, ctx = %d", 106*4882a593Smuzhiyun __entry->minor, __entry->index, __entry->start, __entry->end, 107*4882a593Smuzhiyun __entry->ctx) 108*4882a593Smuzhiyun ); 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_meta_class, coda_bit_queue, 111*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf, 112*4882a593Smuzhiyun struct coda_buffer_meta *meta), 113*4882a593Smuzhiyun TP_ARGS(ctx, buf, meta) 114*4882a593Smuzhiyun ); 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun DECLARE_EVENT_CLASS(coda_meta_class, 117*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta), 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun TP_ARGS(ctx, meta), 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun TP_STRUCT__entry( 122*4882a593Smuzhiyun __field(int, minor) 123*4882a593Smuzhiyun __field(int, start) 124*4882a593Smuzhiyun __field(int, end) 125*4882a593Smuzhiyun __field(int, ctx) 126*4882a593Smuzhiyun ), 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun TP_fast_assign( 129*4882a593Smuzhiyun __entry->minor = ctx->fh.vdev->minor; 130*4882a593Smuzhiyun __entry->start = meta ? (meta->start & 131*4882a593Smuzhiyun ctx->bitstream_fifo.kfifo.mask) : 0; 132*4882a593Smuzhiyun __entry->end = meta ? (meta->end & 133*4882a593Smuzhiyun ctx->bitstream_fifo.kfifo.mask) : 0; 134*4882a593Smuzhiyun __entry->ctx = ctx->idx; 135*4882a593Smuzhiyun ), 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun TP_printk("minor = %d, start = 0x%x, end = 0x%x, ctx = %d", 138*4882a593Smuzhiyun __entry->minor, __entry->start, __entry->end, __entry->ctx) 139*4882a593Smuzhiyun ); 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun DEFINE_EVENT(coda_meta_class, coda_dec_pic_run, 142*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta), 143*4882a593Smuzhiyun TP_ARGS(ctx, meta) 144*4882a593Smuzhiyun ); 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun DEFINE_EVENT(coda_meta_class, coda_dec_pic_done, 147*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta), 148*4882a593Smuzhiyun TP_ARGS(ctx, meta) 149*4882a593Smuzhiyun ); 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_meta_class, coda_dec_rot_done, 152*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf, 153*4882a593Smuzhiyun struct coda_buffer_meta *meta), 154*4882a593Smuzhiyun TP_ARGS(ctx, buf, meta) 155*4882a593Smuzhiyun ); 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_class, coda_jpeg_run, 158*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf), 159*4882a593Smuzhiyun TP_ARGS(ctx, buf) 160*4882a593Smuzhiyun ); 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun DEFINE_EVENT(coda_buf_class, coda_jpeg_done, 163*4882a593Smuzhiyun TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf), 164*4882a593Smuzhiyun TP_ARGS(ctx, buf) 165*4882a593Smuzhiyun ); 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun #endif /* __CODA_TRACE_H__ */ 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 170*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH ../../drivers/media/platform/coda 171*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 172*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun /* This part must be outside protection */ 175*4882a593Smuzhiyun #include <trace/define_trace.h> 176