File Index
Files and directories
Sign in
FILE

cfe-trace.h

File preview with syntax highlighting.

linux-6.19.14/drivers/media/platform/raspberrypi/rp1-cfe/cfe-trace.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Copyright (c) 2024 Raspberry Pi Ltd.
  4 * Copyright (c) 2024 Ideas on Board Oy
  5 */
  6
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM cfe
  9
 10#if !defined(_CFE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
 11#define _CFE_TRACE_H
 12
 13#include <linux/tracepoint.h>
 14#include <media/videobuf2-v4l2.h>
 15
 16TRACE_EVENT(cfe_return_buffer,
 17	TP_PROTO(u32 node_id, u32 buf_idx, u32 queue_id),
 18	TP_ARGS(node_id, buf_idx, queue_id),
 19	TP_STRUCT__entry(
 20		__field(u32, node_id)
 21		__field(u32, buf_idx)
 22		__field(u32, queue_id)
 23	),
 24	TP_fast_assign(
 25		__entry->node_id = node_id;
 26		__entry->buf_idx = buf_idx;
 27		__entry->queue_id = queue_id;
 28	),
 29	TP_printk("node=%u buf=%u, queue=%u", __entry->node_id,
 30		  __entry->buf_idx, __entry->queue_id)
 31);
 32
 33DECLARE_EVENT_CLASS(cfe_buffer_template,
 34	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
 35	TP_ARGS(node_id, buf),
 36	TP_STRUCT__entry(
 37		__field(u32, node_id)
 38		__field(u32, buf_idx)
 39	),
 40	TP_fast_assign(
 41		__entry->node_id = node_id;
 42		__entry->buf_idx = buf->index;
 43	),
 44	TP_printk("node=%u buf=%u", __entry->node_id, __entry->buf_idx)
 45);
 46
 47DEFINE_EVENT(cfe_buffer_template, cfe_buffer_prepare,
 48	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
 49	TP_ARGS(node_id, buf));
 50
 51TRACE_EVENT(cfe_buffer_queue,
 52	TP_PROTO(u32 node_id, struct vb2_buffer *buf, bool schedule_now),
 53	TP_ARGS(node_id, buf, schedule_now),
 54	TP_STRUCT__entry(
 55		__field(u32, node_id)
 56		__field(u32, buf_idx)
 57		__field(bool, schedule_now)
 58	),
 59	TP_fast_assign(
 60		__entry->node_id = node_id;
 61		__entry->buf_idx = buf->index;
 62		__entry->schedule_now = schedule_now;
 63	),
 64	TP_printk("node=%u buf=%u%s", __entry->node_id, __entry->buf_idx,
 65		  __entry->schedule_now ? " schedule immediately" : "")
 66);
 67
 68DEFINE_EVENT(cfe_buffer_template, cfe_csi2_schedule,
 69	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
 70	TP_ARGS(node_id, buf));
 71
 72DEFINE_EVENT(cfe_buffer_template, cfe_fe_schedule,
 73	TP_PROTO(u32 node_id, struct vb2_buffer *buf),
 74	TP_ARGS(node_id, buf));
 75
 76TRACE_EVENT(cfe_buffer_complete,
 77	TP_PROTO(u32 node_id, struct vb2_v4l2_buffer *buf),
 78	TP_ARGS(node_id, buf),
 79	TP_STRUCT__entry(
 80		__field(u32, node_id)
 81		__field(u32, buf_idx)
 82		__field(u32, seq)
 83		__field(u64, ts)
 84	),
 85	TP_fast_assign(
 86		__entry->node_id = node_id;
 87		__entry->buf_idx = buf->vb2_buf.index;
 88		__entry->seq = buf->sequence;
 89		__entry->ts = buf->vb2_buf.timestamp;
 90	),
 91	TP_printk("node=%u buf=%u seq=%u ts=%llu", __entry->node_id,
 92		  __entry->buf_idx, __entry->seq, __entry->ts)
 93);
 94
 95TRACE_EVENT(cfe_frame_start,
 96	TP_PROTO(u32 node_id, u32 fs_count),
 97	TP_ARGS(node_id, fs_count),
 98	TP_STRUCT__entry(
 99		__field(u32, node_id)
100		__field(u32, fs_count)
101	),
102	TP_fast_assign(
103		__entry->node_id = node_id;
104		__entry->fs_count = fs_count;
105	),
106	TP_printk("node=%u fs_count=%u", __entry->node_id, __entry->fs_count)
107);
108
109TRACE_EVENT(cfe_frame_end,
110	TP_PROTO(u32 node_id, u32 fs_count),
111	TP_ARGS(node_id, fs_count),
112	TP_STRUCT__entry(
113		__field(u32, node_id)
114		__field(u32, fs_count)
115	),
116	TP_fast_assign(
117		__entry->node_id = node_id;
118		__entry->fs_count = fs_count;
119	),
120	TP_printk("node=%u fs_count=%u", __entry->node_id, __entry->fs_count)
121);
122
123TRACE_EVENT(cfe_prepare_next_job,
124	TP_PROTO(bool fe_enabled),
125	TP_ARGS(fe_enabled),
126	TP_STRUCT__entry(
127		__field(bool, fe_enabled)
128	),
129	TP_fast_assign(
130		__entry->fe_enabled = fe_enabled;
131	),
132	TP_printk("fe_enabled=%u", __entry->fe_enabled)
133);
134
135/* These are copied from csi2.c */
136#define CSI2_STATUS_IRQ_FS(x)			(BIT(0) << (x))
137#define CSI2_STATUS_IRQ_FE(x)			(BIT(4) << (x))
138#define CSI2_STATUS_IRQ_FE_ACK(x)		(BIT(8) << (x))
139#define CSI2_STATUS_IRQ_LE(x)			(BIT(12) << (x))
140#define CSI2_STATUS_IRQ_LE_ACK(x)		(BIT(16) << (x))
141
142TRACE_EVENT(csi2_irq,
143	TP_PROTO(u32 channel, u32 status, u32 dbg),
144	TP_ARGS(channel, status, dbg),
145	TP_STRUCT__entry(
146		__field(u32, channel)
147		__field(u32, status)
148		__field(u32, dbg)
149	),
150	TP_fast_assign(
151		__entry->channel = channel;
152		__entry->status = status;
153		__entry->dbg = dbg;
154	),
155	TP_printk("ch=%u flags=[ %s%s%s%s%s] frame=%u line=%u\n",
156		  __entry->channel,
157		  (__entry->status & CSI2_STATUS_IRQ_FS(__entry->channel)) ?
158			"FS " : "",
159		  (__entry->status & CSI2_STATUS_IRQ_FE(__entry->channel)) ?
160			"FE " : "",
161		  (__entry->status & CSI2_STATUS_IRQ_FE_ACK(__entry->channel)) ?
162			"FE_ACK " : "",
163		  (__entry->status & CSI2_STATUS_IRQ_LE(__entry->channel)) ?
164			"LE " : "",
165		  (__entry->status & CSI2_STATUS_IRQ_LE_ACK(__entry->channel)) ?
166			"LE_ACK " : "",
167		  __entry->dbg >> 16, __entry->dbg & 0xffff)
168);
169
170TRACE_EVENT(fe_irq,
171	TP_PROTO(u32 status, u32 output_status, u32 frame_status,
172		 u32 error_status, u32 int_status),
173	TP_ARGS(status, output_status, frame_status, error_status, int_status),
174	TP_STRUCT__entry(
175		__field(u32, status)
176		__field(u32, output_status)
177		__field(u32, frame_status)
178		__field(u32, error_status)
179		__field(u32, int_status)
180	),
181	TP_fast_assign(
182		__entry->status = status;
183		__entry->output_status = output_status;
184		__entry->frame_status = frame_status;
185		__entry->error_status = error_status;
186		__entry->int_status = int_status;
187	),
188	TP_printk("status 0x%x out_status 0x%x frame_status 0x%x error_status 0x%x int_status 0x%x",
189		  __entry->status,
190		  __entry->output_status,
191		  __entry->frame_status,
192		  __entry->error_status,
193		  __entry->int_status)
194);
195
196#endif /* _CFE_TRACE_H */
197
198/* This part must be outside protection */
199#undef TRACE_INCLUDE_PATH
200#define TRACE_INCLUDE_PATH .
201#define TRACE_INCLUDE_FILE ../../drivers/media/platform/raspberrypi/rp1-cfe/cfe-trace
202#include <trace/define_trace.h>
~/ Read-only file preview.