msm: tracing: Add ftrace support for LPM driver
Add trace event support to capture various parameters
of low power modes like power collapse, standalone power
collapse, retention and wfi during its entry and exit.
Change-Id: I0f8b918702ae47b354aa193aa7ef20b48110fb0f
Signed-off-by: Priyanka Mathur <pmathur@codeaurora.org>
diff --git a/arch/arm/mach-msm/trace_msm_low_power.h b/arch/arm/mach-msm/trace_msm_low_power.h
new file mode 100644
index 0000000..aa0a744
--- /dev/null
+++ b/arch/arm/mach-msm/trace_msm_low_power.h
@@ -0,0 +1,133 @@
+/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM msm_low_power
+
+#if !defined(_TRACE_MSM_LOW_POWER_H_) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_MSM_LOW_POWER_H_
+
+#include <linux/tracepoint.h>
+
+DECLARE_EVENT_CLASS(msm_pm_enter,
+
+ TP_PROTO(unsigned int cpu, uint32_t latency,
+ uint32_t sleep_us, uint32_t wake_up),
+
+ TP_ARGS(cpu, latency, sleep_us, wake_up),
+
+ TP_STRUCT__entry(
+ __field(unsigned int, cpu)
+ __field(uint32_t, latency)
+ __field(uint32_t, sleep_us)
+ __field(uint32_t, wake_up)
+ ),
+
+ TP_fast_assign(
+ __entry->cpu = cpu;
+ __entry->latency = latency;
+ __entry->sleep_us = sleep_us;
+ __entry->wake_up = wake_up;
+ ),
+
+ TP_printk("cpu: %u latency: %uus sleep: %uus wake_up: %u",
+ __entry->cpu,
+ __entry->latency,
+ __entry->sleep_us,
+ __entry->wake_up)
+);
+
+DEFINE_EVENT(msm_pm_enter, msm_pm_enter_pc,
+
+ TP_PROTO(unsigned int cpu, uint32_t latency,
+ uint32_t sleep_us, uint32_t wake_up),
+
+ TP_ARGS(cpu, latency, sleep_us, wake_up)
+);
+
+DEFINE_EVENT(msm_pm_enter, msm_pm_enter_ret,
+
+ TP_PROTO(unsigned int cpu, uint32_t latency,
+ uint32_t sleep_us, uint32_t wake_up),
+
+ TP_ARGS(cpu, latency, sleep_us, wake_up)
+);
+
+DEFINE_EVENT(msm_pm_enter, msm_pm_enter_spc,
+
+ TP_PROTO(unsigned int cpu, uint32_t latency,
+ uint32_t sleep_us, uint32_t wake_up),
+
+ TP_ARGS(cpu, latency, sleep_us, wake_up)
+);
+
+DEFINE_EVENT(msm_pm_enter, msm_pm_enter_wfi,
+
+ TP_PROTO(unsigned int cpu, uint32_t latency,
+ uint32_t sleep_us, uint32_t wake_up),
+
+ TP_ARGS(cpu, latency, sleep_us, wake_up)
+);
+
+DECLARE_EVENT_CLASS(msm_pm_exit,
+
+ TP_PROTO(unsigned int cpu, bool success),
+
+ TP_ARGS(cpu, success),
+
+ TP_STRUCT__entry(
+ __field(unsigned int , cpu)
+ __field(int, success)
+ ),
+
+ TP_fast_assign(
+ __entry->cpu = cpu;
+ __entry->success = success;
+ ),
+
+ TP_printk("cpu:%u success:%d",
+ __entry->cpu,
+ __entry->success)
+);
+
+DEFINE_EVENT(msm_pm_exit, msm_pm_exit_pc,
+
+ TP_PROTO(unsigned int cpu, bool success),
+
+ TP_ARGS(cpu, success)
+);
+
+DEFINE_EVENT(msm_pm_exit, msm_pm_exit_ret,
+
+ TP_PROTO(unsigned int cpu, bool success),
+
+ TP_ARGS(cpu, success)
+);
+
+DEFINE_EVENT(msm_pm_exit, msm_pm_exit_spc,
+
+ TP_PROTO(unsigned int cpu, bool success),
+
+ TP_ARGS(cpu, success)
+);
+
+DEFINE_EVENT(msm_pm_exit, msm_pm_exit_wfi,
+
+ TP_PROTO(unsigned int cpu, bool success),
+
+ TP_ARGS(cpu, success)
+);
+#endif
+#undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_FILE trace_msm_low_power
+#include <trace/define_trace.h>