1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
4  */
5 #undef TRACE_SYSTEM
6 #define TRACE_SYSTEM rwmmio
7 
8 #if !defined(_TRACE_RWMMIO_H) || defined(TRACE_HEADER_MULTI_READ)
9 #define _TRACE_RWMMIO_H
10 
11 #include <linux/tracepoint.h>
12 
13 DECLARE_EVENT_CLASS(rwmmio_rw_template,
14 
15 	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
16 		 volatile void __iomem *addr),
17 
18 	TP_ARGS(caller, caller0, val, width, addr),
19 
20 	TP_STRUCT__entry(
21 		__field(unsigned long, caller)
22 		__field(unsigned long, caller0)
23 		__field(unsigned long, addr)
24 		__field(u64, val)
25 		__field(u8, width)
26 	),
27 
28 	TP_fast_assign(
29 		__entry->caller = caller;
30 		__entry->caller0 = caller0;
31 		__entry->val = val;
32 		__entry->addr = (unsigned long)addr;
33 		__entry->width = width;
34 	),
35 
36 	TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
37 		(void *)__entry->caller0, (void *)__entry->caller, __entry->width,
38 		__entry->val, __entry->addr)
39 );
40 
41 DEFINE_EVENT(rwmmio_rw_template, rwmmio_write,
42 	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
43 		 volatile void __iomem *addr),
44 	TP_ARGS(caller, caller0, val, width, addr)
45 );
46 
47 DEFINE_EVENT(rwmmio_rw_template, rwmmio_post_write,
48 	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
49 		 volatile void __iomem *addr),
50 	TP_ARGS(caller, caller0, val, width, addr)
51 );
52 
53 TRACE_EVENT(rwmmio_read,
54 
55 	TP_PROTO(unsigned long caller, unsigned long caller0, u8 width,
56 		 const volatile void __iomem *addr),
57 
58 	TP_ARGS(caller, caller0, width, addr),
59 
60 	TP_STRUCT__entry(
61 		__field(unsigned long, caller)
62 		__field(unsigned long, caller0)
63 		__field(unsigned long, addr)
64 		__field(u8, width)
65 	),
66 
67 	TP_fast_assign(
68 		__entry->caller = caller;
69 		__entry->caller0 = caller0;
70 		__entry->addr = (unsigned long)addr;
71 		__entry->width = width;
72 	),
73 
74 	TP_printk("%pS -> %pS width=%d addr=%#lx",
75 		 (void *)__entry->caller0, (void *)__entry->caller, __entry->width, __entry->addr)
76 );
77 
78 TRACE_EVENT(rwmmio_post_read,
79 
80 	TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
81 		 const volatile void __iomem *addr),
82 
83 	TP_ARGS(caller, caller0, val, width, addr),
84 
85 	TP_STRUCT__entry(
86 		__field(unsigned long, caller)
87 		__field(unsigned long, caller0)
88 		__field(unsigned long, addr)
89 		__field(u64, val)
90 		__field(u8, width)
91 	),
92 
93 	TP_fast_assign(
94 		__entry->caller = caller;
95 		__entry->caller0 = caller0;
96 		__entry->val = val;
97 		__entry->addr = (unsigned long)addr;
98 		__entry->width = width;
99 	),
100 
101 	TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
102 		 (void *)__entry->caller0, (void *)__entry->caller, __entry->width,
103 		 __entry->val, __entry->addr)
104 );
105 
106 #endif /* _TRACE_RWMMIO_H */
107 
108 #include <trace/define_trace.h>
109