xref: /linux/drivers/dma/fsl-edma-trace.h (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2023 NXP.
4  */
5 
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM fsl_edma
8 
9 #if !defined(__LINUX_FSL_EDMA_TRACE) || defined(TRACE_HEADER_MULTI_READ)
10 #define __LINUX_FSL_EDMA_TRACE
11 
12 #include <linux/types.h>
13 #include <linux/tracepoint.h>
14 
15 DECLARE_EVENT_CLASS(edma_log_io,
16 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
17 	TP_ARGS(edma, addr, value),
18 	TP_STRUCT__entry(
19 		__field(struct fsl_edma_engine *, edma)
20 		__field(void __iomem *, addr)
21 		__field(u32, value)
22 		__field(void __iomem *, membase)
23 	),
24 	TP_fast_assign(
25 		__entry->edma = edma;
26 		__entry->addr = addr;
27 		__entry->value = value;
28 		__entry->membase = edma->membase;
29 	),
30 	TP_printk("offset %08x: value %08x",
31 		(u32)(__entry->addr - __entry->membase), __entry->value)
32 );
33 
34 DEFINE_EVENT(edma_log_io, edma_readl,
35 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
36 	TP_ARGS(edma, addr, value)
37 );
38 
39 DEFINE_EVENT(edma_log_io, edma_writel,
40 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr,  u32 value),
41 	TP_ARGS(edma, addr, value)
42 );
43 
44 DEFINE_EVENT(edma_log_io, edma_readw,
45 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
46 	TP_ARGS(edma, addr, value)
47 );
48 
49 DEFINE_EVENT(edma_log_io, edma_writew,
50 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr,  u32 value),
51 	TP_ARGS(edma, addr, value)
52 );
53 
54 DEFINE_EVENT(edma_log_io, edma_readb,
55 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
56 	TP_ARGS(edma, addr, value)
57 );
58 
59 DEFINE_EVENT(edma_log_io, edma_writeb,
60 	TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr,  u32 value),
61 	TP_ARGS(edma, addr, value)
62 );
63 
64 DECLARE_EVENT_CLASS(edma_log_tcd,
65 	TP_PROTO(struct fsl_edma_chan *chan, void *tcd),
66 	TP_ARGS(chan, tcd),
67 	TP_STRUCT__entry(
68 		__field(u64, saddr)
69 		__field(u16, soff)
70 		__field(u16, attr)
71 		__field(u32, nbytes)
72 		__field(u64, slast)
73 		__field(u64, daddr)
74 		__field(u16, doff)
75 		__field(u16, citer)
76 		__field(u64, dlast_sga)
77 		__field(u16, csr)
78 		__field(u16, biter)
79 
80 	),
81 	TP_fast_assign(
82 		__entry->saddr = fsl_edma_get_tcd_to_cpu(chan, tcd, saddr),
83 		__entry->soff = fsl_edma_get_tcd_to_cpu(chan, tcd, soff),
84 		__entry->attr = fsl_edma_get_tcd_to_cpu(chan, tcd, attr),
85 		__entry->nbytes = fsl_edma_get_tcd_to_cpu(chan, tcd, nbytes),
86 		__entry->slast = fsl_edma_get_tcd_to_cpu(chan, tcd, slast),
87 		__entry->daddr = fsl_edma_get_tcd_to_cpu(chan, tcd, daddr),
88 		__entry->doff = fsl_edma_get_tcd_to_cpu(chan, tcd, doff),
89 		__entry->citer = fsl_edma_get_tcd_to_cpu(chan, tcd, citer),
90 		__entry->dlast_sga = fsl_edma_get_tcd_to_cpu(chan, tcd, dlast_sga),
91 		__entry->csr = fsl_edma_get_tcd_to_cpu(chan, tcd, csr),
92 		__entry->biter = fsl_edma_get_tcd_to_cpu(chan, tcd, biter);
93 	),
94 	TP_printk("\n==== TCD =====\n"
95 		  "  saddr:  0x%016llx\n"
96 		  "  soff:               0x%04x\n"
97 		  "  attr:               0x%04x\n"
98 		  "  nbytes:         0x%08x\n"
99 		  "  slast:  0x%016llx\n"
100 		  "  daddr:  0x%016llx\n"
101 		  "  doff:               0x%04x\n"
102 		  "  citer:              0x%04x\n"
103 		  "  dlast:  0x%016llx\n"
104 		  "  csr:                0x%04x\n"
105 		  "  biter:              0x%04x\n",
106 		__entry->saddr,
107 		__entry->soff,
108 		__entry->attr,
109 		__entry->nbytes,
110 		__entry->slast,
111 		__entry->daddr,
112 		__entry->doff,
113 		__entry->citer,
114 		__entry->dlast_sga,
115 		__entry->csr,
116 		__entry->biter)
117 );
118 
119 DEFINE_EVENT(edma_log_tcd, edma_fill_tcd,
120 	TP_PROTO(struct fsl_edma_chan *chan, void *tcd),
121 	TP_ARGS(chan, tcd)
122 );
123 
124 #endif
125 
126 /* this part must be outside header guard */
127 
128 #undef TRACE_INCLUDE_PATH
129 #define TRACE_INCLUDE_PATH .
130 
131 #undef TRACE_INCLUDE_FILE
132 #define TRACE_INCLUDE_FILE fsl-edma-trace
133 
134 #include <trace/define_trace.h>
135