1 /*
2  *
3  * (C) COPYRIGHT 2012-2016 ARM Limited. All rights reserved.
4  *
5  * This program is free software and is provided to you under the terms of the
6  * GNU General Public License version 2 as published by the Free Software
7  * Foundation, and any use by you of this program is subject to the terms
8  * of such GNU licence.
9  *
10  * A copy of the licence is included with the program, and can also be obtained
11  * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
12  * Boston, MA  02110-1301, USA.
13  *
14  */
15 
16 #ifndef H_MALI_TIMELINE_H
17 #define H_MALI_TIMELINE_H
18 
19 #undef TRACE_SYSTEM
20 #define TRACE_SYSTEM mali_timeline
21 
22 #if !defined(_MALI_TIMELINE_H) || defined(TRACE_HEADER_MULTI_READ)
23 #define _MALI_TIMELINE_H
24 
25 #include <linux/tracepoint.h>
26 
27 TRACE_EVENT(mali_timeline_atoms_in_flight,
28 
29             TP_PROTO(u64 ts_sec, u32 ts_nsec, int tgid, int count),
30 
31             TP_ARGS(ts_sec, ts_nsec, tgid, count),
32 
33             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, tgid) __field(int, count)),
34 
35             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->tgid = tgid;
36                            __entry->count = count;),
37 
38             TP_printk("%i,%i.%.9i,%i,%i", CTX_SET_NR_ATOMS_IN_FLIGHT, (int)__entry->ts_sec, (int)__entry->ts_nsec,
39                       __entry->tgid, __entry->count));
40 
41 TRACE_EVENT(mali_timeline_atom,
42 
43             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int atom_id),
44 
45             TP_ARGS(ts_sec, ts_nsec, event_type, tgid, atom_id),
46 
47             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid)
48                                  __field(int, atom_id)),
49 
50             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
51                            __entry->tgid = tgid; __entry->atom_id = atom_id;),
52 
53             TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
54                       __entry->tgid, __entry->atom_id, __entry->atom_id));
55 
56 TRACE_EVENT(mali_timeline_gpu_slot_active,
57 
58             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int count),
59 
60             TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, count),
61 
62             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid)
63                                  __field(int, js) __field(int, count)),
64 
65             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
66                            __entry->tgid = tgid; __entry->js = js; __entry->count = count;),
67 
68             TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
69                       __entry->tgid, __entry->js, __entry->count));
70 
71 TRACE_EVENT(mali_timeline_gpu_slot_action,
72 
73             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int count),
74 
75             TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, count),
76 
77             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid)
78                                  __field(int, js) __field(int, count)),
79 
80             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
81                            __entry->tgid = tgid; __entry->js = js; __entry->count = count;),
82 
83             TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
84                       __entry->tgid, __entry->js, __entry->count));
85 
86 TRACE_EVENT(mali_timeline_gpu_power_active,
87 
88             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int active),
89 
90             TP_ARGS(ts_sec, ts_nsec, event_type, active),
91 
92             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, active)),
93 
94             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
95                            __entry->active = active;),
96 
97             TP_printk("%i,%i.%.9i,0,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
98                       __entry->active)
99 
100 );
101 
102 TRACE_EVENT(mali_timeline_l2_power_active,
103 
104             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int state),
105 
106             TP_ARGS(ts_sec, ts_nsec, event_type, state),
107 
108             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, state)),
109 
110             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
111                            __entry->state = state;),
112 
113             TP_printk("%i,%i.%.9i,0,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
114                       __entry->state)
115 
116 );
117 TRACE_EVENT(mali_timeline_pm_event,
118 
119             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int pm_event_type, unsigned int pm_event_id),
120 
121             TP_ARGS(ts_sec, ts_nsec, event_type, pm_event_type, pm_event_id),
122 
123             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type)
124                                  __field(int, pm_event_type) __field(unsigned int, pm_event_id)),
125 
126             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
127                            __entry->pm_event_type = pm_event_type; __entry->pm_event_id = pm_event_id;),
128 
129             TP_printk("%i,%i.%.9i,0,%i,%u", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
130                       __entry->pm_event_type, __entry->pm_event_id)
131 
132 );
133 
134 TRACE_EVENT(mali_timeline_slot_atom,
135 
136             TP_PROTO(u64 ts_sec, u32 ts_nsec, int event_type, int tgid, int js, int atom_id),
137 
138             TP_ARGS(ts_sec, ts_nsec, event_type, tgid, js, atom_id),
139 
140             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, event_type) __field(int, tgid)
141                                  __field(int, js) __field(int, atom_id)),
142 
143             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->event_type = event_type;
144                            __entry->tgid = tgid; __entry->js = js; __entry->atom_id = atom_id;),
145 
146             TP_printk("%i,%i.%.9i,%i,%i,%i", __entry->event_type, (int)__entry->ts_sec, (int)__entry->ts_nsec,
147                       __entry->tgid, __entry->js, __entry->atom_id));
148 
149 TRACE_EVENT(
150     mali_timeline_pm_checktrans,
151 
152     TP_PROTO(u64 ts_sec, u32 ts_nsec, int trans_code, int trans_id),
153 
154     TP_ARGS(ts_sec, ts_nsec, trans_code, trans_id),
155 
156     TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, trans_code) __field(int, trans_id)),
157 
158     TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->trans_code = trans_code;
159                    __entry->trans_id = trans_id;),
160 
161     TP_printk("%i,%i.%.9i,0,%i", __entry->trans_code, (int)__entry->ts_sec, (int)__entry->ts_nsec, __entry->trans_id)
162 
163 );
164 
165 TRACE_EVENT(mali_timeline_context_active,
166 
167             TP_PROTO(u64 ts_sec, u32 ts_nsec, int count),
168 
169             TP_ARGS(ts_sec, ts_nsec, count),
170 
171             TP_STRUCT__entry(__field(u64, ts_sec) __field(u32, ts_nsec) __field(int, count)),
172 
173             TP_fast_assign(__entry->ts_sec = ts_sec; __entry->ts_nsec = ts_nsec; __entry->count = count;),
174 
175             TP_printk("%i,%i.%.9i,0,%i", SW_SET_CONTEXT_ACTIVE, (int)__entry->ts_sec, (int)__entry->ts_nsec,
176                       __entry->count));
177 
178 #endif /* _MALI_TIMELINE_H */
179 
180 #define TMP_NULL
181 
182 #undef TRACE_INCLUDE_PATH
183 #define TRACE_INCLUDE_PATH TMP_NULL.
184 
185 /* This part must be outside protection */
186 #include <trace/define_trace.h>
187 
188 #endif
189