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