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