Linux Audio

Check our new training course

Loading...
v6.13.7
  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
 12struct device;
 13
 14/*
 15 * The rpm_internal events are used for tracing some important
 16 * runtime pm internal functions.
 17 */
 18DECLARE_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);
 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);
 59DEFINE_EVENT(rpm_internal, rpm_suspend,
 60
 61	TP_PROTO(struct device *dev, int flags),
 62
 63	TP_ARGS(dev, flags)
 64);
 65DEFINE_EVENT(rpm_internal, rpm_resume,
 66
 67	TP_PROTO(struct device *dev, int flags),
 68
 69	TP_ARGS(dev, flags)
 70);
 71DEFINE_EVENT(rpm_internal, rpm_idle,
 72
 73	TP_PROTO(struct device *dev, int flags),
 74
 75	TP_ARGS(dev, flags)
 76);
 77DEFINE_EVENT(rpm_internal, rpm_usage,
 78
 79	TP_PROTO(struct device *dev, int flags),
 80
 81	TP_ARGS(dev, flags)
 82);
 83
 84TRACE_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);
 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#define RPM_STATUS_STRINGS \
105	EM(RPM_INVALID, "RPM_INVALID") \
106	EM(RPM_ACTIVE, "RPM_ACTIVE") \
107	EM(RPM_RESUMING, "RPM_RESUMING") \
108	EM(RPM_SUSPENDED, "RPM_SUSPENDED") \
109	EMe(RPM_SUSPENDING, "RPM_SUSPENDING")
110
111/* Enums require being exported to userspace, for user tool parsing. */
112#undef EM
113#undef EMe
114#define EM(a, b)	TRACE_DEFINE_ENUM(a);
115#define EMe(a, b)	TRACE_DEFINE_ENUM(a);
116
117RPM_STATUS_STRINGS
118
119/*
120 * Now redefine the EM() and EMe() macros to map the enums to the strings that
121 * will be printed in the output.
122 */
123#undef EM
124#undef EMe
125#define EM(a, b)	{ a, b },
126#define EMe(a, b)	{ a, b }
127
128TRACE_EVENT(rpm_status,
129	TP_PROTO(struct device *dev, enum rpm_status status),
130	TP_ARGS(dev, status),
131
132	TP_STRUCT__entry(
133		__string(name,	dev_name(dev))
134		__field(int,	status)
135	),
136
137	TP_fast_assign(
138		__assign_str(name);
139		__entry->status = status;
140	),
141
142	TP_printk("%s status=%s", __get_str(name),
143		__print_symbolic(__entry->status, RPM_STATUS_STRINGS))
144);
145
146#endif /* _TRACE_RUNTIME_POWER_H */
147
148/* This part must be outside protection */
149#include <trace/define_trace.h>
v3.15
 
  1
  2#undef TRACE_SYSTEM
  3#define TRACE_SYSTEM rpm
  4
  5#if !defined(_TRACE_RUNTIME_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
  6#define _TRACE_RUNTIME_POWER_H
  7
  8#include <linux/ktime.h>
  9#include <linux/tracepoint.h>
 10
 11struct device;
 12
 13/*
 14 * The rpm_internal events are used for tracing some important
 15 * runtime pm internal functions.
 16 */
 17DECLARE_EVENT_CLASS(rpm_internal,
 18
 19	TP_PROTO(struct device *dev, int flags),
 20
 21	TP_ARGS(dev, flags),
 22
 23	TP_STRUCT__entry(
 24		__string(       name,		dev_name(dev)	)
 25		__field(        int,            flags           )
 26		__field(        int ,   	usage_count	)
 27		__field(        int ,   	disable_depth   )
 28		__field(        int ,   	runtime_auto	)
 29		__field(        int ,   	request_pending	)
 30		__field(        int ,   	irq_safe	)
 31		__field(        int ,   	child_count 	)
 32	),
 33
 34	TP_fast_assign(
 35		__assign_str(name, dev_name(dev));
 36		__entry->flags = flags;
 37		__entry->usage_count = atomic_read(
 38			&dev->power.usage_count);
 39		__entry->disable_depth = dev->power.disable_depth;
 40		__entry->runtime_auto = dev->power.runtime_auto;
 41		__entry->request_pending = dev->power.request_pending;
 42		__entry->irq_safe = dev->power.irq_safe;
 43		__entry->child_count = atomic_read(
 44			&dev->power.child_count);
 45	),
 46
 47	TP_printk("%s flags-%x cnt-%-2d dep-%-2d auto-%-1d p-%-1d"
 48			" irq-%-1d child-%d",
 49			__get_str(name), __entry->flags,
 50			__entry->usage_count,
 51			__entry->disable_depth,
 52			__entry->runtime_auto,
 53			__entry->request_pending,
 54			__entry->irq_safe,
 55			__entry->child_count
 56		 )
 57);
 58DEFINE_EVENT(rpm_internal, rpm_suspend,
 59
 60	TP_PROTO(struct device *dev, int flags),
 61
 62	TP_ARGS(dev, flags)
 63);
 64DEFINE_EVENT(rpm_internal, rpm_resume,
 65
 66	TP_PROTO(struct device *dev, int flags),
 67
 68	TP_ARGS(dev, flags)
 69);
 70DEFINE_EVENT(rpm_internal, rpm_idle,
 71
 72	TP_PROTO(struct device *dev, int flags),
 73
 74	TP_ARGS(dev, flags)
 75);
 
 
 
 
 
 
 76
 77TRACE_EVENT(rpm_return_int,
 78	TP_PROTO(struct device *dev, unsigned long ip, int ret),
 79	TP_ARGS(dev, ip, ret),
 80
 81	TP_STRUCT__entry(
 82		__string(       name,		dev_name(dev))
 83		__field(	unsigned long,		ip	)
 84		__field(	int,			ret	)
 85	),
 86
 87	TP_fast_assign(
 88		__assign_str(name, dev_name(dev));
 89		__entry->ip = ip;
 90		__entry->ret = ret;
 91	),
 92
 93	TP_printk("%pS:%s ret=%d", (void *)__entry->ip, __get_str(name),
 94		__entry->ret)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 95);
 96
 97#endif /* _TRACE_RUNTIME_POWER_H */
 98
 99/* This part must be outside protection */
100#include <trace/define_trace.h>