1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM rtc
3
4#if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_RTC_H
6
7#include <linux/rtc.h>
8#include <linux/tracepoint.h>
9
10DECLARE_EVENT_CLASS(rtc_time_alarm_class,
11
12	TP_PROTO(time64_t secs, int err),
13
14	TP_ARGS(secs, err),
15
16	TP_STRUCT__entry(
17		__field(time64_t, secs)
18		__field(int, err)
19	),
20
21	TP_fast_assign(
22		__entry->secs = secs;
23		__entry->err = err;
24	),
25
26	TP_printk("UTC (%lld) (%d)",
27		  __entry->secs, __entry->err
28	)
29);
30
31DEFINE_EVENT(rtc_time_alarm_class, rtc_set_time,
32
33	TP_PROTO(time64_t secs, int err),
34
35	TP_ARGS(secs, err)
36);
37
38DEFINE_EVENT(rtc_time_alarm_class, rtc_read_time,
39
40	TP_PROTO(time64_t secs, int err),
41
42	TP_ARGS(secs, err)
43);
44
45DEFINE_EVENT(rtc_time_alarm_class, rtc_set_alarm,
46
47	TP_PROTO(time64_t secs, int err),
48
49	TP_ARGS(secs, err)
50);
51
52DEFINE_EVENT(rtc_time_alarm_class, rtc_read_alarm,
53
54	TP_PROTO(time64_t secs, int err),
55
56	TP_ARGS(secs, err)
57);
58
59TRACE_EVENT(rtc_irq_set_freq,
60
61	TP_PROTO(int freq, int err),
62
63	TP_ARGS(freq, err),
64
65	TP_STRUCT__entry(
66		__field(int, freq)
67		__field(int, err)
68	),
69
70	TP_fast_assign(
71		__entry->freq = freq;
72		__entry->err = err;
73	),
74
75	TP_printk("set RTC periodic IRQ frequency:%u (%d)",
76		  __entry->freq, __entry->err
77	)
78);
79
80TRACE_EVENT(rtc_irq_set_state,
81
82	TP_PROTO(int enabled, int err),
83
84	TP_ARGS(enabled, err),
85
86	TP_STRUCT__entry(
87		__field(int, enabled)
88		__field(int, err)
89	),
90
91	TP_fast_assign(
92		__entry->enabled = enabled;
93		__entry->err = err;
94	),
95
96	TP_printk("%s RTC 2^N Hz periodic IRQs (%d)",
97		  __entry->enabled ? "enable" : "disable",
98		  __entry->err
99	)
100);
101
102TRACE_EVENT(rtc_alarm_irq_enable,
103
104	TP_PROTO(unsigned int enabled, int err),
105
106	TP_ARGS(enabled, err),
107
108	TP_STRUCT__entry(
109		__field(unsigned int, enabled)
110		__field(int, err)
111	),
112
113	TP_fast_assign(
114		__entry->enabled = enabled;
115		__entry->err = err;
116	),
117
118	TP_printk("%s RTC alarm IRQ (%d)",
119		  __entry->enabled ? "enable" : "disable",
120		  __entry->err
121	)
122);
123
124DECLARE_EVENT_CLASS(rtc_offset_class,
125
126	TP_PROTO(long offset, int err),
127
128	TP_ARGS(offset, err),
129
130	TP_STRUCT__entry(
131		__field(long, offset)
132		__field(int, err)
133	),
134
135	TP_fast_assign(
136		__entry->offset = offset;
137		__entry->err = err;
138	),
139
140	TP_printk("RTC offset: %ld (%d)",
141		  __entry->offset, __entry->err
142	)
143);
144
145DEFINE_EVENT(rtc_offset_class, rtc_set_offset,
146
147	TP_PROTO(long offset, int err),
148
149	TP_ARGS(offset, err)
150);
151
152DEFINE_EVENT(rtc_offset_class, rtc_read_offset,
153
154	TP_PROTO(long offset, int err),
155
156	TP_ARGS(offset, err)
157);
158
159DECLARE_EVENT_CLASS(rtc_timer_class,
160
161	TP_PROTO(struct rtc_timer *timer),
162
163	TP_ARGS(timer),
164
165	TP_STRUCT__entry(
166		__field(struct rtc_timer *, timer)
167		__field(ktime_t, expires)
168		__field(ktime_t, period)
169	),
170
171	TP_fast_assign(
172		__entry->timer = timer;
173		__entry->expires = timer->node.expires;
174		__entry->period = timer->period;
175	),
176
177	TP_printk("RTC timer:(%p) expires:%lld period:%lld",
178		  __entry->timer, __entry->expires, __entry->period
179	)
180);
181
182DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue,
183
184	TP_PROTO(struct rtc_timer *timer),
185
186	TP_ARGS(timer)
187);
188
189DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue,
190
191	TP_PROTO(struct rtc_timer *timer),
192
193	TP_ARGS(timer)
194);
195
196DEFINE_EVENT(rtc_timer_class, rtc_timer_fired,
197
198	TP_PROTO(struct rtc_timer *timer),
199
200	TP_ARGS(timer)
201);
202
203#endif /* _TRACE_RTC_H */
204
205/* This part must be outside protection */
206#include <trace/define_trace.h>
207