Merge tag 'for-5.15-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
[linux-2.6-microblaze.git] / include / trace / events / rpm.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2
3 #undef TRACE_SYSTEM
4 #define TRACE_SYSTEM rpm
5
6 #if !defined(_TRACE_RUNTIME_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
7 #define _TRACE_RUNTIME_POWER_H
8
9 #include <linux/ktime.h>
10 #include <linux/tracepoint.h>
11
12 struct device;
13
14 /*
15  * The rpm_internal events are used for tracing some important
16  * runtime pm internal functions.
17  */
18 DECLARE_EVENT_CLASS(rpm_internal,
19
20         TP_PROTO(struct device *dev, int flags),
21
22         TP_ARGS(dev, flags),
23
24         TP_STRUCT__entry(
25                 __string(       name,           dev_name(dev)   )
26                 __field(        int,            flags           )
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     )
33         ),
34
35         TP_fast_assign(
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);
46         ),
47
48         TP_printk("%s flags-%x cnt-%-2d dep-%-2d auto-%-1d p-%-1d"
49                         " irq-%-1d child-%d",
50                         __get_str(name), __entry->flags,
51                         __entry->usage_count,
52                         __entry->disable_depth,
53                         __entry->runtime_auto,
54                         __entry->request_pending,
55                         __entry->irq_safe,
56                         __entry->child_count
57                  )
58 );
59 DEFINE_EVENT(rpm_internal, rpm_suspend,
60
61         TP_PROTO(struct device *dev, int flags),
62
63         TP_ARGS(dev, flags)
64 );
65 DEFINE_EVENT(rpm_internal, rpm_resume,
66
67         TP_PROTO(struct device *dev, int flags),
68
69         TP_ARGS(dev, flags)
70 );
71 DEFINE_EVENT(rpm_internal, rpm_idle,
72
73         TP_PROTO(struct device *dev, int flags),
74
75         TP_ARGS(dev, flags)
76 );
77 DEFINE_EVENT(rpm_internal, rpm_usage,
78
79         TP_PROTO(struct device *dev, int flags),
80
81         TP_ARGS(dev, flags)
82 );
83
84 TRACE_EVENT(rpm_return_int,
85         TP_PROTO(struct device *dev, unsigned long ip, int ret),
86         TP_ARGS(dev, ip, ret),
87
88         TP_STRUCT__entry(
89                 __string(       name,           dev_name(dev))
90                 __field(        unsigned long,          ip      )
91                 __field(        int,                    ret     )
92         ),
93
94         TP_fast_assign(
95                 __assign_str(name, dev_name(dev));
96                 __entry->ip = ip;
97                 __entry->ret = ret;
98         ),
99
100         TP_printk("%pS:%s ret=%d", (void *)__entry->ip, __get_str(name),
101                 __entry->ret)
102 );
103
104 #endif /* _TRACE_RUNTIME_POWER_H */
105
106 /* This part must be outside protection */
107 #include <trace/define_trace.h>