162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#undef TRACE_SYSTEM
462306a36Sopenharmony_ci#define TRACE_SYSTEM tegra_vde
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#if !defined(TEGRA_VDE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
762306a36Sopenharmony_ci#define TEGRA_VDE_TRACE_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include "vde.h"
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(register_access,
1462306a36Sopenharmony_ci	TP_PROTO(struct tegra_vde *vde, void __iomem *base,
1562306a36Sopenharmony_ci		 u32 offset, u32 value),
1662306a36Sopenharmony_ci	TP_ARGS(vde, base, offset, value),
1762306a36Sopenharmony_ci	TP_STRUCT__entry(
1862306a36Sopenharmony_ci		__string(hw_name, tegra_vde_reg_base_name(vde, base))
1962306a36Sopenharmony_ci		__field(u32, offset)
2062306a36Sopenharmony_ci		__field(u32, value)
2162306a36Sopenharmony_ci	),
2262306a36Sopenharmony_ci	TP_fast_assign(
2362306a36Sopenharmony_ci		__assign_str(hw_name, tegra_vde_reg_base_name(vde, base));
2462306a36Sopenharmony_ci		__entry->offset = offset;
2562306a36Sopenharmony_ci		__entry->value = value;
2662306a36Sopenharmony_ci	),
2762306a36Sopenharmony_ci	TP_printk("%s:0x%03x 0x%08x", __get_str(hw_name), __entry->offset,
2862306a36Sopenharmony_ci		  __entry->value)
2962306a36Sopenharmony_ci);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciDEFINE_EVENT(register_access, vde_writel,
3262306a36Sopenharmony_ci	TP_PROTO(struct tegra_vde *vde, void __iomem *base,
3362306a36Sopenharmony_ci		 u32 offset, u32 value),
3462306a36Sopenharmony_ci	TP_ARGS(vde, base, offset, value));
3562306a36Sopenharmony_ciDEFINE_EVENT(register_access, vde_readl,
3662306a36Sopenharmony_ci	TP_PROTO(struct tegra_vde *vde, void __iomem *base,
3762306a36Sopenharmony_ci		 u32 offset, u32 value),
3862306a36Sopenharmony_ci	TP_ARGS(vde, base, offset, value));
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciTRACE_EVENT(vde_setup_iram_entry,
4162306a36Sopenharmony_ci	TP_PROTO(unsigned int table, unsigned int row, u32 value, u32 aux_addr),
4262306a36Sopenharmony_ci	TP_ARGS(table, row, value, aux_addr),
4362306a36Sopenharmony_ci	TP_STRUCT__entry(
4462306a36Sopenharmony_ci		__field(unsigned int, table)
4562306a36Sopenharmony_ci		__field(unsigned int, row)
4662306a36Sopenharmony_ci		__field(u32, value)
4762306a36Sopenharmony_ci		__field(u32, aux_addr)
4862306a36Sopenharmony_ci	),
4962306a36Sopenharmony_ci	TP_fast_assign(
5062306a36Sopenharmony_ci		__entry->table = table;
5162306a36Sopenharmony_ci		__entry->row = row;
5262306a36Sopenharmony_ci		__entry->value = value;
5362306a36Sopenharmony_ci		__entry->aux_addr = aux_addr;
5462306a36Sopenharmony_ci	),
5562306a36Sopenharmony_ci	TP_printk("[%u][%u] = { 0x%08x (flags = \"%s\", frame_num = %u); 0x%08x }",
5662306a36Sopenharmony_ci		  __entry->table, __entry->row, __entry->value,
5762306a36Sopenharmony_ci		  __print_flags(__entry->value, " ", { (1 << 25), "B" }),
5862306a36Sopenharmony_ci		  __entry->value & 0x7FFFFF, __entry->aux_addr)
5962306a36Sopenharmony_ci);
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciTRACE_EVENT(vde_ref_l0,
6262306a36Sopenharmony_ci	TP_PROTO(unsigned int frame_num),
6362306a36Sopenharmony_ci	TP_ARGS(frame_num),
6462306a36Sopenharmony_ci	TP_STRUCT__entry(
6562306a36Sopenharmony_ci		__field(unsigned int, frame_num)
6662306a36Sopenharmony_ci	),
6762306a36Sopenharmony_ci	TP_fast_assign(
6862306a36Sopenharmony_ci		__entry->frame_num = frame_num;
6962306a36Sopenharmony_ci	),
7062306a36Sopenharmony_ci	TP_printk("REF L0: DPB: Frame 0: frame_num = %u", __entry->frame_num)
7162306a36Sopenharmony_ci);
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciTRACE_EVENT(vde_ref_l1,
7462306a36Sopenharmony_ci	TP_PROTO(unsigned int with_later_poc_nb,
7562306a36Sopenharmony_ci		 unsigned int with_earlier_poc_nb),
7662306a36Sopenharmony_ci	TP_ARGS(with_later_poc_nb, with_earlier_poc_nb),
7762306a36Sopenharmony_ci	TP_STRUCT__entry(
7862306a36Sopenharmony_ci		__field(unsigned int, with_later_poc_nb)
7962306a36Sopenharmony_ci		__field(unsigned int, with_earlier_poc_nb)
8062306a36Sopenharmony_ci	),
8162306a36Sopenharmony_ci	TP_fast_assign(
8262306a36Sopenharmony_ci		__entry->with_later_poc_nb = with_later_poc_nb;
8362306a36Sopenharmony_ci		__entry->with_earlier_poc_nb = with_earlier_poc_nb;
8462306a36Sopenharmony_ci	),
8562306a36Sopenharmony_ci	TP_printk("REF L1: with_later_poc_nb %u, with_earlier_poc_nb %u",
8662306a36Sopenharmony_ci		  __entry->with_later_poc_nb, __entry->with_earlier_poc_nb)
8762306a36Sopenharmony_ci);
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci#endif /* TEGRA_VDE_TRACE_H */
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci/* This part must be outside protection */
9262306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
9362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH ../../drivers/media/platform/nvidia/tegra-vde
9462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
9562306a36Sopenharmony_ci#include <trace/define_trace.h>
96