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