|
@@ -10,12 +10,17 @@
|
|
|
#ifndef _TRACE_POWER_ENUM_
|
|
|
#define _TRACE_POWER_ENUM_
|
|
|
enum {
|
|
|
- POWER_NONE = 0,
|
|
|
- POWER_CSTATE = 1,
|
|
|
- POWER_PSTATE = 2,
|
|
|
+ POWER_NONE = 0,
|
|
|
+ POWER_CSTATE = 1, /* C-State */
|
|
|
+ POWER_PSTATE = 2, /* Fequency change or DVFS */
|
|
|
+ POWER_SSTATE = 3, /* Suspend */
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
+/*
|
|
|
+ * The power events are used for cpuidle & suspend (power_start, power_end)
|
|
|
+ * and for cpufreq (power_frequency)
|
|
|
+ */
|
|
|
DECLARE_EVENT_CLASS(power,
|
|
|
|
|
|
TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
|
|
@@ -70,6 +75,85 @@ TRACE_EVENT(power_end,
|
|
|
|
|
|
);
|
|
|
|
|
|
+/*
|
|
|
+ * The clock events are used for clock enable/disable and for
|
|
|
+ * clock rate change
|
|
|
+ */
|
|
|
+DECLARE_EVENT_CLASS(clock,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __string( name, name )
|
|
|
+ __field( u64, state )
|
|
|
+ __field( u64, cpu_id )
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ __assign_str(name, name);
|
|
|
+ __entry->state = state;
|
|
|
+ __entry->cpu_id = cpu_id;
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
|
|
|
+ (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
+DEFINE_EVENT(clock, clock_enable,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
+DEFINE_EVENT(clock, clock_disable,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
+DEFINE_EVENT(clock, clock_set_rate,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
+/*
|
|
|
+ * The power domain events are used for power domains transitions
|
|
|
+ */
|
|
|
+DECLARE_EVENT_CLASS(power_domain,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id),
|
|
|
+
|
|
|
+ TP_STRUCT__entry(
|
|
|
+ __string( name, name )
|
|
|
+ __field( u64, state )
|
|
|
+ __field( u64, cpu_id )
|
|
|
+ ),
|
|
|
+
|
|
|
+ TP_fast_assign(
|
|
|
+ __assign_str(name, name);
|
|
|
+ __entry->state = state;
|
|
|
+ __entry->cpu_id = cpu_id;
|
|
|
+),
|
|
|
+
|
|
|
+ TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
|
|
|
+ (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
+DEFINE_EVENT(power_domain, power_domain_target,
|
|
|
+
|
|
|
+ TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
|
|
|
+
|
|
|
+ TP_ARGS(name, state, cpu_id)
|
|
|
+);
|
|
|
+
|
|
|
#endif /* _TRACE_POWER_H */
|
|
|
|
|
|
/* This part must be outside protection */
|