162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci/* Copyright (C) 2015-2018 Broadcom */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#if !defined(_V3D_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
562306a36Sopenharmony_ci#define _V3D_TRACE_H_
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/stringify.h>
862306a36Sopenharmony_ci#include <linux/types.h>
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#undef TRACE_SYSTEM
1262306a36Sopenharmony_ci#define TRACE_SYSTEM v3d
1362306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE v3d_trace
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_cl_ioctl,
1662306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev, u32 ct1qba, u32 ct1qea),
1762306a36Sopenharmony_ci	    TP_ARGS(dev, ct1qba, ct1qea),
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	    TP_STRUCT__entry(
2062306a36Sopenharmony_ci			     __field(u32, dev)
2162306a36Sopenharmony_ci			     __field(u32, ct1qba)
2262306a36Sopenharmony_ci			     __field(u32, ct1qea)
2362306a36Sopenharmony_ci			     ),
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	    TP_fast_assign(
2662306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
2762306a36Sopenharmony_ci			   __entry->ct1qba = ct1qba;
2862306a36Sopenharmony_ci			   __entry->ct1qea = ct1qea;
2962306a36Sopenharmony_ci			   ),
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	    TP_printk("dev=%u, RCL 0x%08x..0x%08x",
3262306a36Sopenharmony_ci		      __entry->dev,
3362306a36Sopenharmony_ci		      __entry->ct1qba,
3462306a36Sopenharmony_ci		      __entry->ct1qea)
3562306a36Sopenharmony_ci);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_cl,
3862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev, bool is_render,
3962306a36Sopenharmony_ci		     uint64_t seqno,
4062306a36Sopenharmony_ci		     u32 ctnqba, u32 ctnqea),
4162306a36Sopenharmony_ci	    TP_ARGS(dev, is_render, seqno, ctnqba, ctnqea),
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	    TP_STRUCT__entry(
4462306a36Sopenharmony_ci			     __field(u32, dev)
4562306a36Sopenharmony_ci			     __field(bool, is_render)
4662306a36Sopenharmony_ci			     __field(u64, seqno)
4762306a36Sopenharmony_ci			     __field(u32, ctnqba)
4862306a36Sopenharmony_ci			     __field(u32, ctnqea)
4962306a36Sopenharmony_ci			     ),
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	    TP_fast_assign(
5262306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
5362306a36Sopenharmony_ci			   __entry->is_render = is_render;
5462306a36Sopenharmony_ci			   __entry->seqno = seqno;
5562306a36Sopenharmony_ci			   __entry->ctnqba = ctnqba;
5662306a36Sopenharmony_ci			   __entry->ctnqea = ctnqea;
5762306a36Sopenharmony_ci			   ),
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	    TP_printk("dev=%u, %s, seqno=%llu, 0x%08x..0x%08x",
6062306a36Sopenharmony_ci		      __entry->dev,
6162306a36Sopenharmony_ci		      __entry->is_render ? "RCL" : "BCL",
6262306a36Sopenharmony_ci		      __entry->seqno,
6362306a36Sopenharmony_ci		      __entry->ctnqba,
6462306a36Sopenharmony_ci		      __entry->ctnqea)
6562306a36Sopenharmony_ci);
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciTRACE_EVENT(v3d_bcl_irq,
6862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
6962306a36Sopenharmony_ci		     uint64_t seqno),
7062306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	    TP_STRUCT__entry(
7362306a36Sopenharmony_ci			     __field(u32, dev)
7462306a36Sopenharmony_ci			     __field(u64, seqno)
7562306a36Sopenharmony_ci			     ),
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	    TP_fast_assign(
7862306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
7962306a36Sopenharmony_ci			   __entry->seqno = seqno;
8062306a36Sopenharmony_ci			   ),
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
8362306a36Sopenharmony_ci		      __entry->dev,
8462306a36Sopenharmony_ci		      __entry->seqno)
8562306a36Sopenharmony_ci);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciTRACE_EVENT(v3d_rcl_irq,
8862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
8962306a36Sopenharmony_ci		     uint64_t seqno),
9062306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci	    TP_STRUCT__entry(
9362306a36Sopenharmony_ci			     __field(u32, dev)
9462306a36Sopenharmony_ci			     __field(u64, seqno)
9562306a36Sopenharmony_ci			     ),
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci	    TP_fast_assign(
9862306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
9962306a36Sopenharmony_ci			   __entry->seqno = seqno;
10062306a36Sopenharmony_ci			   ),
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
10362306a36Sopenharmony_ci		      __entry->dev,
10462306a36Sopenharmony_ci		      __entry->seqno)
10562306a36Sopenharmony_ci);
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciTRACE_EVENT(v3d_tfu_irq,
10862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
10962306a36Sopenharmony_ci		     uint64_t seqno),
11062306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci	    TP_STRUCT__entry(
11362306a36Sopenharmony_ci			     __field(u32, dev)
11462306a36Sopenharmony_ci			     __field(u64, seqno)
11562306a36Sopenharmony_ci			     ),
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci	    TP_fast_assign(
11862306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
11962306a36Sopenharmony_ci			   __entry->seqno = seqno;
12062306a36Sopenharmony_ci			   ),
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
12362306a36Sopenharmony_ci		      __entry->dev,
12462306a36Sopenharmony_ci		      __entry->seqno)
12562306a36Sopenharmony_ci);
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciTRACE_EVENT(v3d_csd_irq,
12862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
12962306a36Sopenharmony_ci		     uint64_t seqno),
13062306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	    TP_STRUCT__entry(
13362306a36Sopenharmony_ci			     __field(u32, dev)
13462306a36Sopenharmony_ci			     __field(u64, seqno)
13562306a36Sopenharmony_ci			     ),
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci	    TP_fast_assign(
13862306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
13962306a36Sopenharmony_ci			   __entry->seqno = seqno;
14062306a36Sopenharmony_ci			   ),
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
14362306a36Sopenharmony_ci		      __entry->dev,
14462306a36Sopenharmony_ci		      __entry->seqno)
14562306a36Sopenharmony_ci);
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_tfu_ioctl,
14862306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev, u32 iia),
14962306a36Sopenharmony_ci	    TP_ARGS(dev, iia),
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci	    TP_STRUCT__entry(
15262306a36Sopenharmony_ci			     __field(u32, dev)
15362306a36Sopenharmony_ci			     __field(u32, iia)
15462306a36Sopenharmony_ci			     ),
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci	    TP_fast_assign(
15762306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
15862306a36Sopenharmony_ci			   __entry->iia = iia;
15962306a36Sopenharmony_ci			   ),
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci	    TP_printk("dev=%u, IIA 0x%08x",
16262306a36Sopenharmony_ci		      __entry->dev,
16362306a36Sopenharmony_ci		      __entry->iia)
16462306a36Sopenharmony_ci);
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_tfu,
16762306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
16862306a36Sopenharmony_ci		     uint64_t seqno),
16962306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci	    TP_STRUCT__entry(
17262306a36Sopenharmony_ci			     __field(u32, dev)
17362306a36Sopenharmony_ci			     __field(u64, seqno)
17462306a36Sopenharmony_ci			     ),
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	    TP_fast_assign(
17762306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
17862306a36Sopenharmony_ci			   __entry->seqno = seqno;
17962306a36Sopenharmony_ci			   ),
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
18262306a36Sopenharmony_ci		      __entry->dev,
18362306a36Sopenharmony_ci		      __entry->seqno)
18462306a36Sopenharmony_ci);
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_csd_ioctl,
18762306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev, u32 cfg5, u32 cfg6),
18862306a36Sopenharmony_ci	    TP_ARGS(dev, cfg5, cfg6),
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci	    TP_STRUCT__entry(
19162306a36Sopenharmony_ci			     __field(u32, dev)
19262306a36Sopenharmony_ci			     __field(u32, cfg5)
19362306a36Sopenharmony_ci			     __field(u32, cfg6)
19462306a36Sopenharmony_ci			     ),
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci	    TP_fast_assign(
19762306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
19862306a36Sopenharmony_ci			   __entry->cfg5 = cfg5;
19962306a36Sopenharmony_ci			   __entry->cfg6 = cfg6;
20062306a36Sopenharmony_ci			   ),
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci	    TP_printk("dev=%u, CFG5 0x%08x, CFG6 0x%08x",
20362306a36Sopenharmony_ci		      __entry->dev,
20462306a36Sopenharmony_ci		      __entry->cfg5,
20562306a36Sopenharmony_ci		      __entry->cfg6)
20662306a36Sopenharmony_ci);
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ciTRACE_EVENT(v3d_submit_csd,
20962306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev,
21062306a36Sopenharmony_ci		     uint64_t seqno),
21162306a36Sopenharmony_ci	    TP_ARGS(dev, seqno),
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci	    TP_STRUCT__entry(
21462306a36Sopenharmony_ci			     __field(u32, dev)
21562306a36Sopenharmony_ci			     __field(u64, seqno)
21662306a36Sopenharmony_ci			     ),
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci	    TP_fast_assign(
21962306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
22062306a36Sopenharmony_ci			   __entry->seqno = seqno;
22162306a36Sopenharmony_ci			   ),
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci	    TP_printk("dev=%u, seqno=%llu",
22462306a36Sopenharmony_ci		      __entry->dev,
22562306a36Sopenharmony_ci		      __entry->seqno)
22662306a36Sopenharmony_ci);
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ciTRACE_EVENT(v3d_cache_clean_begin,
22962306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev),
23062306a36Sopenharmony_ci	    TP_ARGS(dev),
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci	    TP_STRUCT__entry(
23362306a36Sopenharmony_ci			     __field(u32, dev)
23462306a36Sopenharmony_ci			     ),
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci	    TP_fast_assign(
23762306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
23862306a36Sopenharmony_ci			   ),
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci	    TP_printk("dev=%u",
24162306a36Sopenharmony_ci		      __entry->dev)
24262306a36Sopenharmony_ci);
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ciTRACE_EVENT(v3d_cache_clean_end,
24562306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev),
24662306a36Sopenharmony_ci	    TP_ARGS(dev),
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	    TP_STRUCT__entry(
24962306a36Sopenharmony_ci			     __field(u32, dev)
25062306a36Sopenharmony_ci			     ),
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci	    TP_fast_assign(
25362306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
25462306a36Sopenharmony_ci			   ),
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci	    TP_printk("dev=%u",
25762306a36Sopenharmony_ci		      __entry->dev)
25862306a36Sopenharmony_ci);
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciTRACE_EVENT(v3d_reset_begin,
26162306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev),
26262306a36Sopenharmony_ci	    TP_ARGS(dev),
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci	    TP_STRUCT__entry(
26562306a36Sopenharmony_ci			     __field(u32, dev)
26662306a36Sopenharmony_ci			     ),
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	    TP_fast_assign(
26962306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
27062306a36Sopenharmony_ci			   ),
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci	    TP_printk("dev=%u",
27362306a36Sopenharmony_ci		      __entry->dev)
27462306a36Sopenharmony_ci);
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ciTRACE_EVENT(v3d_reset_end,
27762306a36Sopenharmony_ci	    TP_PROTO(struct drm_device *dev),
27862306a36Sopenharmony_ci	    TP_ARGS(dev),
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci	    TP_STRUCT__entry(
28162306a36Sopenharmony_ci			     __field(u32, dev)
28262306a36Sopenharmony_ci			     ),
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci	    TP_fast_assign(
28562306a36Sopenharmony_ci			   __entry->dev = dev->primary->index;
28662306a36Sopenharmony_ci			   ),
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci	    TP_printk("dev=%u",
28962306a36Sopenharmony_ci		      __entry->dev)
29062306a36Sopenharmony_ci);
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci#endif /* _V3D_TRACE_H_ */
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ci/* This part must be outside protection */
29562306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
29662306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
29762306a36Sopenharmony_ci#include <trace/define_trace.h>
298