root/drivers/media/platform/chips-media/coda/trace.h
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM coda

#if !defined(__CODA_TRACE_H__) || defined(TRACE_HEADER_MULTI_READ)
#define __CODA_TRACE_H__

#include <linux/tracepoint.h>
#include <media/videobuf2-v4l2.h>

#include "coda.h"

TRACE_EVENT(coda_bit_run,
        TP_PROTO(struct coda_ctx *ctx, int cmd),

        TP_ARGS(ctx, cmd),

        TP_STRUCT__entry(
                __field(int, minor)
                __field(int, ctx)
                __field(int, cmd)
        ),

        TP_fast_assign(
                __entry->minor = ctx->fh.vdev->minor;
                __entry->ctx = ctx->idx;
                __entry->cmd = cmd;
        ),

        TP_printk("minor = %d, ctx = %d, cmd = %d",
                  __entry->minor, __entry->ctx, __entry->cmd)
);

TRACE_EVENT(coda_bit_done,
        TP_PROTO(struct coda_ctx *ctx),

        TP_ARGS(ctx),

        TP_STRUCT__entry(
                __field(int, minor)
                __field(int, ctx)
        ),

        TP_fast_assign(
                __entry->minor = ctx->fh.vdev->minor;
                __entry->ctx = ctx->idx;
        ),

        TP_printk("minor = %d, ctx = %d", __entry->minor, __entry->ctx)
);

DECLARE_EVENT_CLASS(coda_buf_class,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf),

        TP_ARGS(ctx, buf),

        TP_STRUCT__entry(
                __field(int, minor)
                __field(int, index)
                __field(int, ctx)
        ),

        TP_fast_assign(
                __entry->minor = ctx->fh.vdev->minor;
                __entry->index = buf->vb2_buf.index;
                __entry->ctx = ctx->idx;
        ),

        TP_printk("minor = %d, index = %d, ctx = %d",
                  __entry->minor, __entry->index, __entry->ctx)
);

DEFINE_EVENT(coda_buf_class, coda_enc_pic_run,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf),
        TP_ARGS(ctx, buf)
);

DEFINE_EVENT(coda_buf_class, coda_enc_pic_done,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf),
        TP_ARGS(ctx, buf)
);

DECLARE_EVENT_CLASS(coda_buf_meta_class,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf,
                 struct coda_buffer_meta *meta),

        TP_ARGS(ctx, buf, meta),

        TP_STRUCT__entry(
                __field(int, minor)
                __field(int, index)
                __field(int, start)
                __field(int, end)
                __field(int, ctx)
        ),

        TP_fast_assign(
                __entry->minor = ctx->fh.vdev->minor;
                __entry->index = buf->vb2_buf.index;
                __entry->start = meta->start & ctx->bitstream_fifo.kfifo.mask;
                __entry->end = meta->end & ctx->bitstream_fifo.kfifo.mask;
                __entry->ctx = ctx->idx;
        ),

        TP_printk("minor = %d, index = %d, start = 0x%x, end = 0x%x, ctx = %d",
                  __entry->minor, __entry->index, __entry->start, __entry->end,
                  __entry->ctx)
);

DEFINE_EVENT(coda_buf_meta_class, coda_bit_queue,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf,
                 struct coda_buffer_meta *meta),
        TP_ARGS(ctx, buf, meta)
);

DECLARE_EVENT_CLASS(coda_meta_class,
        TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta),

        TP_ARGS(ctx, meta),

        TP_STRUCT__entry(
                __field(int, minor)
                __field(int, start)
                __field(int, end)
                __field(int, ctx)
        ),

        TP_fast_assign(
                __entry->minor = ctx->fh.vdev->minor;
                __entry->start = meta ? (meta->start &
                                         ctx->bitstream_fifo.kfifo.mask) : 0;
                __entry->end = meta ? (meta->end &
                                       ctx->bitstream_fifo.kfifo.mask) : 0;
                __entry->ctx = ctx->idx;
        ),

        TP_printk("minor = %d, start = 0x%x, end = 0x%x, ctx = %d",
                  __entry->minor, __entry->start, __entry->end, __entry->ctx)
);

DEFINE_EVENT(coda_meta_class, coda_dec_pic_run,
        TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta),
        TP_ARGS(ctx, meta)
);

DEFINE_EVENT(coda_meta_class, coda_dec_pic_done,
        TP_PROTO(struct coda_ctx *ctx, struct coda_buffer_meta *meta),
        TP_ARGS(ctx, meta)
);

DEFINE_EVENT(coda_buf_meta_class, coda_dec_rot_done,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf,
                 struct coda_buffer_meta *meta),
        TP_ARGS(ctx, buf, meta)
);

DEFINE_EVENT(coda_buf_class, coda_jpeg_run,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf),
        TP_ARGS(ctx, buf)
);

DEFINE_EVENT(coda_buf_class, coda_jpeg_done,
        TP_PROTO(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf),
        TP_ARGS(ctx, buf)
);

#endif /* __CODA_TRACE_H__ */

#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH ../../drivers/media/platform/chips-media/coda
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace

/* This part must be outside protection */
#include <trace/define_trace.h>