1 /* SPDX-License-Identifier: GPL-2.0 */
4 #define TRACE_SYSTEM rpm
6 #if !defined(_TRACE_RUNTIME_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
7 #define _TRACE_RUNTIME_POWER_H
9 #include <linux/ktime.h>
10 #include <linux/tracepoint.h>
15 * The rpm_internal events are used for tracing some important
16 * runtime pm internal functions.
18 DECLARE_EVENT_CLASS(rpm_internal
,
20 TP_PROTO(struct device
*dev
, int flags
),
25 __string( name
, dev_name(dev
) )
27 __field( int , usage_count
)
28 __field( int , disable_depth
)
29 __field( int , runtime_auto
)
30 __field( int , request_pending
)
31 __field( int , irq_safe
)
32 __field( int , child_count
)
36 __assign_str(name
, dev_name(dev
));
37 __entry
->flags
= flags
;
38 __entry
->usage_count
= atomic_read(
39 &dev
->power
.usage_count
);
40 __entry
->disable_depth
= dev
->power
.disable_depth
;
41 __entry
->runtime_auto
= dev
->power
.runtime_auto
;
42 __entry
->request_pending
= dev
->power
.request_pending
;
43 __entry
->irq_safe
= dev
->power
.irq_safe
;
44 __entry
->child_count
= atomic_read(
45 &dev
->power
.child_count
);
48 TP_printk("%s flags-%x cnt-%-2d dep-%-2d auto-%-1d p-%-1d"
50 __get_str(name
), __entry
->flags
,
52 __entry
->disable_depth
,
53 __entry
->runtime_auto
,
54 __entry
->request_pending
,
59 DEFINE_EVENT(rpm_internal
, rpm_suspend
,
61 TP_PROTO(struct device
*dev
, int flags
),
65 DEFINE_EVENT(rpm_internal
, rpm_resume
,
67 TP_PROTO(struct device
*dev
, int flags
),
71 DEFINE_EVENT(rpm_internal
, rpm_idle
,
73 TP_PROTO(struct device
*dev
, int flags
),
78 TRACE_EVENT(rpm_return_int
,
79 TP_PROTO(struct device
*dev
, unsigned long ip
, int ret
),
80 TP_ARGS(dev
, ip
, ret
),
83 __string( name
, dev_name(dev
))
84 __field( unsigned long, ip
)
89 __assign_str(name
, dev_name(dev
));
94 TP_printk("%pS:%s ret=%d", (void *)__entry
->ip
, __get_str(name
),
98 #endif /* _TRACE_RUNTIME_POWER_H */
100 /* This part must be outside protection */
101 #include <trace/define_trace.h>