drivers/media/platform/raspberrypi/rp1-cfe/cfe-trace.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/raspberrypi/rp1-cfe/cfe-trace.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/raspberrypi/rp1-cfe/cfe-trace.h
Extension
.h
Size
5493 bytes
Lines
203
Domain
Driver Families
Bucket
drivers/media
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#undef TRACE_SYSTEM
#define TRACE_SYSTEM cfe

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

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

TRACE_EVENT(cfe_return_buffer,
	TP_PROTO(u32 node_id, u32 buf_idx, u32 queue_id),
	TP_ARGS(node_id, buf_idx, queue_id),
	TP_STRUCT__entry(
		__field(u32, node_id)
		__field(u32, buf_idx)
		__field(u32, queue_id)
	),
	TP_fast_assign(
		__entry->node_id = node_id;
		__entry->buf_idx = buf_idx;
		__entry->queue_id = queue_id;
	),
	TP_printk("node=%u buf=%u, queue=%u", __entry->node_id,
		  __entry->buf_idx, __entry->queue_id)
);

DECLARE_EVENT_CLASS(cfe_buffer_template,
	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
	TP_ARGS(node_id, buf),
	TP_STRUCT__entry(
		__field(u32, node_id)
		__field(u32, buf_idx)
	),
	TP_fast_assign(
		__entry->node_id = node_id;
		__entry->buf_idx = buf->index;
	),
	TP_printk("node=%u buf=%u", __entry->node_id, __entry->buf_idx)
);

DEFINE_EVENT(cfe_buffer_template, cfe_buffer_prepare,
	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
	TP_ARGS(node_id, buf));

TRACE_EVENT(cfe_buffer_queue,
	TP_PROTO(u32 node_id, struct vb2_buffer *buf, bool schedule_now),
	TP_ARGS(node_id, buf, schedule_now),
	TP_STRUCT__entry(
		__field(u32, node_id)
		__field(u32, buf_idx)
		__field(bool, schedule_now)
	),
	TP_fast_assign(
		__entry->node_id = node_id;
		__entry->buf_idx = buf->index;
		__entry->schedule_now = schedule_now;
	),
	TP_printk("node=%u buf=%u%s", __entry->node_id, __entry->buf_idx,
		  __entry->schedule_now ? " schedule immediately" : "")
);

DEFINE_EVENT(cfe_buffer_template, cfe_csi2_schedule,
	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
	TP_ARGS(node_id, buf));

DEFINE_EVENT(cfe_buffer_template, cfe_fe_schedule,
	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
	TP_ARGS(node_id, buf));

TRACE_EVENT(cfe_buffer_complete,
	TP_PROTO(u32 node_id, struct vb2_v4l2_buffer *buf),
	TP_ARGS(node_id, buf),
	TP_STRUCT__entry(
		__field(u32, node_id)
		__field(u32, buf_idx)
		__field(u32, seq)
		__field(u64, ts)
	),
	TP_fast_assign(
		__entry->node_id = node_id;
		__entry->buf_idx = buf->vb2_buf.index;
		__entry->seq = buf->sequence;
		__entry->ts = buf->vb2_buf.timestamp;
	),
	TP_printk("node=%u buf=%u seq=%u ts=%llu", __entry->node_id,
		  __entry->buf_idx, __entry->seq, __entry->ts)
);

TRACE_EVENT(cfe_frame_start,
	TP_PROTO(u32 node_id, u32 fs_count),

Annotation

Implementation Notes