129a1f599SBaolin Wang #undef TRACE_SYSTEM 229a1f599SBaolin Wang #define TRACE_SYSTEM rtc 329a1f599SBaolin Wang 429a1f599SBaolin Wang #if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ) 529a1f599SBaolin Wang #define _TRACE_RTC_H 629a1f599SBaolin Wang 729a1f599SBaolin Wang #include <linux/rtc.h> 829a1f599SBaolin Wang #include <linux/tracepoint.h> 929a1f599SBaolin Wang 1029a1f599SBaolin Wang DECLARE_EVENT_CLASS(rtc_time_alarm_class, 1129a1f599SBaolin Wang 1229a1f599SBaolin Wang TP_PROTO(time64_t secs, int err), 1329a1f599SBaolin Wang 1429a1f599SBaolin Wang TP_ARGS(secs, err), 1529a1f599SBaolin Wang 1629a1f599SBaolin Wang TP_STRUCT__entry( 1729a1f599SBaolin Wang __field(time64_t, secs) 1829a1f599SBaolin Wang __field(int, err) 1929a1f599SBaolin Wang ), 2029a1f599SBaolin Wang 2129a1f599SBaolin Wang TP_fast_assign( 2229a1f599SBaolin Wang __entry->secs = secs; 2329a1f599SBaolin Wang __entry->err = err; 2429a1f599SBaolin Wang ), 2529a1f599SBaolin Wang 2629a1f599SBaolin Wang TP_printk("UTC (%lld) (%d)", 2729a1f599SBaolin Wang __entry->secs, __entry->err 2829a1f599SBaolin Wang ) 2929a1f599SBaolin Wang ); 3029a1f599SBaolin Wang 3129a1f599SBaolin Wang DEFINE_EVENT(rtc_time_alarm_class, rtc_set_time, 3229a1f599SBaolin Wang 3329a1f599SBaolin Wang TP_PROTO(time64_t secs, int err), 3429a1f599SBaolin Wang 3529a1f599SBaolin Wang TP_ARGS(secs, err) 3629a1f599SBaolin Wang ); 3729a1f599SBaolin Wang 3829a1f599SBaolin Wang DEFINE_EVENT(rtc_time_alarm_class, rtc_read_time, 3929a1f599SBaolin Wang 4029a1f599SBaolin Wang TP_PROTO(time64_t secs, int err), 4129a1f599SBaolin Wang 4229a1f599SBaolin Wang TP_ARGS(secs, err) 4329a1f599SBaolin Wang ); 4429a1f599SBaolin Wang 4529a1f599SBaolin Wang DEFINE_EVENT(rtc_time_alarm_class, rtc_set_alarm, 4629a1f599SBaolin Wang 4729a1f599SBaolin Wang TP_PROTO(time64_t secs, int err), 4829a1f599SBaolin Wang 4929a1f599SBaolin Wang TP_ARGS(secs, err) 5029a1f599SBaolin Wang ); 5129a1f599SBaolin Wang 5229a1f599SBaolin Wang DEFINE_EVENT(rtc_time_alarm_class, rtc_read_alarm, 5329a1f599SBaolin Wang 5429a1f599SBaolin Wang TP_PROTO(time64_t secs, int err), 5529a1f599SBaolin Wang 5629a1f599SBaolin Wang TP_ARGS(secs, err) 5729a1f599SBaolin Wang ); 5829a1f599SBaolin Wang 5929a1f599SBaolin Wang TRACE_EVENT(rtc_irq_set_freq, 6029a1f599SBaolin Wang 6129a1f599SBaolin Wang TP_PROTO(int freq, int err), 6229a1f599SBaolin Wang 6329a1f599SBaolin Wang TP_ARGS(freq, err), 6429a1f599SBaolin Wang 6529a1f599SBaolin Wang TP_STRUCT__entry( 6629a1f599SBaolin Wang __field(int, freq) 6729a1f599SBaolin Wang __field(int, err) 6829a1f599SBaolin Wang ), 6929a1f599SBaolin Wang 7029a1f599SBaolin Wang TP_fast_assign( 7129a1f599SBaolin Wang __entry->freq = freq; 7229a1f599SBaolin Wang __entry->err = err; 7329a1f599SBaolin Wang ), 7429a1f599SBaolin Wang 7529a1f599SBaolin Wang TP_printk("set RTC periodic IRQ frequency:%u (%d)", 7629a1f599SBaolin Wang __entry->freq, __entry->err 7729a1f599SBaolin Wang ) 7829a1f599SBaolin Wang ); 7929a1f599SBaolin Wang 8029a1f599SBaolin Wang TRACE_EVENT(rtc_irq_set_state, 8129a1f599SBaolin Wang 8229a1f599SBaolin Wang TP_PROTO(int enabled, int err), 8329a1f599SBaolin Wang 8429a1f599SBaolin Wang TP_ARGS(enabled, err), 8529a1f599SBaolin Wang 8629a1f599SBaolin Wang TP_STRUCT__entry( 8729a1f599SBaolin Wang __field(int, enabled) 8829a1f599SBaolin Wang __field(int, err) 8929a1f599SBaolin Wang ), 9029a1f599SBaolin Wang 9129a1f599SBaolin Wang TP_fast_assign( 9229a1f599SBaolin Wang __entry->enabled = enabled; 9329a1f599SBaolin Wang __entry->err = err; 9429a1f599SBaolin Wang ), 9529a1f599SBaolin Wang 9629a1f599SBaolin Wang TP_printk("%s RTC 2^N Hz periodic IRQs (%d)", 9729a1f599SBaolin Wang __entry->enabled ? "enable" : "disable", 9829a1f599SBaolin Wang __entry->err 9929a1f599SBaolin Wang ) 10029a1f599SBaolin Wang ); 10129a1f599SBaolin Wang 10229a1f599SBaolin Wang TRACE_EVENT(rtc_alarm_irq_enable, 10329a1f599SBaolin Wang 10429a1f599SBaolin Wang TP_PROTO(unsigned int enabled, int err), 10529a1f599SBaolin Wang 10629a1f599SBaolin Wang TP_ARGS(enabled, err), 10729a1f599SBaolin Wang 10829a1f599SBaolin Wang TP_STRUCT__entry( 10929a1f599SBaolin Wang __field(unsigned int, enabled) 11029a1f599SBaolin Wang __field(int, err) 11129a1f599SBaolin Wang ), 11229a1f599SBaolin Wang 11329a1f599SBaolin Wang TP_fast_assign( 11429a1f599SBaolin Wang __entry->enabled = enabled; 11529a1f599SBaolin Wang __entry->err = err; 11629a1f599SBaolin Wang ), 11729a1f599SBaolin Wang 11829a1f599SBaolin Wang TP_printk("%s RTC alarm IRQ (%d)", 11929a1f599SBaolin Wang __entry->enabled ? "enable" : "disable", 12029a1f599SBaolin Wang __entry->err 12129a1f599SBaolin Wang ) 12229a1f599SBaolin Wang ); 12329a1f599SBaolin Wang 12429a1f599SBaolin Wang DECLARE_EVENT_CLASS(rtc_offset_class, 12529a1f599SBaolin Wang 12629a1f599SBaolin Wang TP_PROTO(long offset, int err), 12729a1f599SBaolin Wang 12829a1f599SBaolin Wang TP_ARGS(offset, err), 12929a1f599SBaolin Wang 13029a1f599SBaolin Wang TP_STRUCT__entry( 13129a1f599SBaolin Wang __field(long, offset) 13229a1f599SBaolin Wang __field(int, err) 13329a1f599SBaolin Wang ), 13429a1f599SBaolin Wang 13529a1f599SBaolin Wang TP_fast_assign( 13629a1f599SBaolin Wang __entry->offset = offset; 13729a1f599SBaolin Wang __entry->err = err; 13829a1f599SBaolin Wang ), 13929a1f599SBaolin Wang 14029a1f599SBaolin Wang TP_printk("RTC offset: %ld (%d)", 14129a1f599SBaolin Wang __entry->offset, __entry->err 14229a1f599SBaolin Wang ) 14329a1f599SBaolin Wang ); 14429a1f599SBaolin Wang 14529a1f599SBaolin Wang DEFINE_EVENT(rtc_offset_class, rtc_set_offset, 14629a1f599SBaolin Wang 14729a1f599SBaolin Wang TP_PROTO(long offset, int err), 14829a1f599SBaolin Wang 14929a1f599SBaolin Wang TP_ARGS(offset, err) 15029a1f599SBaolin Wang ); 15129a1f599SBaolin Wang 15229a1f599SBaolin Wang DEFINE_EVENT(rtc_offset_class, rtc_read_offset, 15329a1f599SBaolin Wang 15429a1f599SBaolin Wang TP_PROTO(long offset, int err), 15529a1f599SBaolin Wang 15629a1f599SBaolin Wang TP_ARGS(offset, err) 15729a1f599SBaolin Wang ); 15829a1f599SBaolin Wang 15929a1f599SBaolin Wang DECLARE_EVENT_CLASS(rtc_timer_class, 16029a1f599SBaolin Wang 16129a1f599SBaolin Wang TP_PROTO(struct rtc_timer *timer), 16229a1f599SBaolin Wang 16329a1f599SBaolin Wang TP_ARGS(timer), 16429a1f599SBaolin Wang 16529a1f599SBaolin Wang TP_STRUCT__entry( 16629a1f599SBaolin Wang __field(struct rtc_timer *, timer) 16729a1f599SBaolin Wang __field(ktime_t, expires) 16829a1f599SBaolin Wang __field(ktime_t, period) 16929a1f599SBaolin Wang ), 17029a1f599SBaolin Wang 17129a1f599SBaolin Wang TP_fast_assign( 17229a1f599SBaolin Wang __entry->timer = timer; 17329a1f599SBaolin Wang __entry->expires = timer->node.expires; 17429a1f599SBaolin Wang __entry->period = timer->period; 17529a1f599SBaolin Wang ), 17629a1f599SBaolin Wang 17729a1f599SBaolin Wang TP_printk("RTC timer:(%p) expires:%lld period:%lld", 17829a1f599SBaolin Wang __entry->timer, __entry->expires, __entry->period 17929a1f599SBaolin Wang ) 18029a1f599SBaolin Wang ); 18129a1f599SBaolin Wang 18229a1f599SBaolin Wang DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue, 18329a1f599SBaolin Wang 18429a1f599SBaolin Wang TP_PROTO(struct rtc_timer *timer), 18529a1f599SBaolin Wang 18629a1f599SBaolin Wang TP_ARGS(timer) 18729a1f599SBaolin Wang ); 18829a1f599SBaolin Wang 18929a1f599SBaolin Wang DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue, 19029a1f599SBaolin Wang 19129a1f599SBaolin Wang TP_PROTO(struct rtc_timer *timer), 19229a1f599SBaolin Wang 19329a1f599SBaolin Wang TP_ARGS(timer) 19429a1f599SBaolin Wang ); 19529a1f599SBaolin Wang 19629a1f599SBaolin Wang DEFINE_EVENT(rtc_timer_class, rtc_timer_fired, 19729a1f599SBaolin Wang 19829a1f599SBaolin Wang TP_PROTO(struct rtc_timer *timer), 19929a1f599SBaolin Wang 20029a1f599SBaolin Wang TP_ARGS(timer) 20129a1f599SBaolin Wang ); 20229a1f599SBaolin Wang 20329a1f599SBaolin Wang #endif /* _TRACE_RTC_H */ 20429a1f599SBaolin Wang 20529a1f599SBaolin Wang /* This part must be outside protection */ 20629a1f599SBaolin Wang #include <trace/define_trace.h> 207