/* Copyright (c) 2012, 2014-2017, 2019-2020, 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 TRACE_EVENT(cpu_power_select, TP_PROTO(int index, u32 sleep_us, u32 latency, u32 next_event_us), TP_ARGS(index, sleep_us, latency, next_event_us), TP_STRUCT__entry( __field(int, index) __field(u32, sleep_us) __field(u32, latency) __field(u32, next_event_us) ), TP_fast_assign( __entry->index = index; __entry->sleep_us = sleep_us; __entry->latency = latency; __entry->next_event_us = next_event_us; ), TP_printk("idx:%d sleep_time:%u latency:%u next_event:%u", __entry->index, __entry->sleep_us, __entry->latency, __entry->next_event_us) ); TRACE_EVENT(cpu_pred_select, TP_PROTO(u32 predtype, u64 predicted, u32 tmr_time), TP_ARGS(predtype, predicted, tmr_time), TP_STRUCT__entry( __field(u32, predtype) __field(u64, predicted) __field(u32, tmr_time) ), TP_fast_assign( __entry->predtype = predtype; __entry->predicted = predicted; __entry->tmr_time = tmr_time; ), TP_printk("pred:%u time:%lu tmr_time:%u", __entry->predtype, (unsigned long)__entry->predicted, __entry->tmr_time) ); TRACE_EVENT(cpu_pred_hist, TP_PROTO(int idx, u32 resi, u32 sample, u32 tmr), TP_ARGS(idx, resi, sample, tmr), TP_STRUCT__entry( __field(int, idx) __field(u32, resi) __field(u32, sample) __field(u32, tmr) ), TP_fast_assign( __entry->idx = idx; __entry->resi = resi; __entry->sample = sample; __entry->tmr = tmr; ), TP_printk("idx:%d resi:%u sample:%u tmr:%u", __entry->idx, __entry->resi, __entry->sample, __entry->tmr) ); TRACE_EVENT(cpu_idle_enter, TP_PROTO(int index), TP_ARGS(index), TP_STRUCT__entry( __field(int, index) ), TP_fast_assign( __entry->index = index; ), TP_printk("idx:%d", __entry->index) ); TRACE_EVENT(cpu_idle_exit, TP_PROTO(int index, bool success), TP_ARGS(index, success), TP_STRUCT__entry( __field(int, index) __field(bool, success) ), TP_fast_assign( __entry->index = index; __entry->success = success; ), TP_printk("idx:%d success:%d", __entry->index, __entry->success) ); TRACE_EVENT(cluster_enter, TP_PROTO(const char *name, int index, unsigned long sync_cpus, unsigned long child_cpus, bool from_idle), TP_ARGS(name, index, sync_cpus, child_cpus, from_idle), TP_STRUCT__entry( __field(const char *, name) __field(int, index) __field(unsigned long, sync_cpus) __field(unsigned long, child_cpus) __field(bool, from_idle) ), TP_fast_assign( __entry->name = name; __entry->index = index; __entry->sync_cpus = sync_cpus; __entry->child_cpus = child_cpus; __entry->from_idle = from_idle; ), TP_printk("cluster_name:%s idx:%d sync:0x%lx child:0x%lx idle:%d", __entry->name, __entry->index, __entry->sync_cpus, __entry->child_cpus, __entry->from_idle) ); TRACE_EVENT(cluster_exit, TP_PROTO(const char *name, int index, unsigned long sync_cpus, unsigned long child_cpus, bool from_idle), TP_ARGS(name, index, sync_cpus, child_cpus, from_idle), TP_STRUCT__entry( __field(const char *, name) __field(int, index) __field(unsigned long, sync_cpus) __field(unsigned long, child_cpus) __field(bool, from_idle) ), TP_fast_assign( __entry->name = name; __entry->index = index; __entry->sync_cpus = sync_cpus; __entry->child_cpus = child_cpus; __entry->from_idle = from_idle; ), TP_printk("cluster_name:%s idx:%d sync:0x%lx child:0x%lx idle:%d", __entry->name, __entry->index, __entry->sync_cpus, __entry->child_cpus, __entry->from_idle) ); TRACE_EVENT(cluster_pred_select, TP_PROTO(const char *name, int index, u32 sleep_us, u32 latency, int pred, u32 pred_us), TP_ARGS(name, index, sleep_us, latency, pred, pred_us), TP_STRUCT__entry( __field(const char *, name) __field(int, index) __field(u32, sleep_us) __field(u32, latency) __field(int, pred) __field(u32, pred_us) ), TP_fast_assign( __entry->name = name; __entry->index = index; __entry->sleep_us = sleep_us; __entry->latency = latency; __entry->pred = pred; __entry->pred_us = pred_us; ), TP_printk("name:%s idx:%d sleep_time:%u latency:%u pred:%d pred_us:%u", __entry->name, __entry->index, __entry->sleep_us, __entry->latency, __entry->pred, __entry->pred_us) ); TRACE_EVENT(cluster_pred_hist, TP_PROTO(const char *name, int idx, u32 resi, u32 sample, u32 tmr), TP_ARGS(name, idx, resi, sample, tmr), TP_STRUCT__entry( __field(const char *, name) __field(int, idx) __field(u32, resi) __field(u32, sample) __field(u32, tmr) ), TP_fast_assign( __entry->name = name; __entry->idx = idx; __entry->resi = resi; __entry->sample = sample; __entry->tmr = tmr; ), TP_printk("name:%s idx:%d resi:%u sample:%u tmr:%u", __entry->name, __entry->idx, __entry->resi, __entry->sample, __entry->tmr) ); TRACE_EVENT(pre_pc_cb, TP_PROTO(int tzflag), TP_ARGS(tzflag), TP_STRUCT__entry( __field(int, tzflag) ), TP_fast_assign( __entry->tzflag = tzflag; ), TP_printk("tzflag:%d", __entry->tzflag ) ); #endif #define TRACE_INCLUDE_FILE trace_msm_low_power #include