| /* | 
 |  * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. | 
 |  * | 
 |  * This software is licensed under the terms of the GNU General Public | 
 |  * License version 2, as published by the Free Software Foundation, and | 
 |  * may be copied, distributed, and modified under those terms. | 
 |  * | 
 |  * 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 clk | 
 |  | 
 | #if !defined(_TRACE_CLK_H) || defined(TRACE_HEADER_MULTI_READ) | 
 | #define _TRACE_CLK_H | 
 |  | 
 | #include <linux/tracepoint.h> | 
 |  | 
 | struct clk_core; | 
 |  | 
 | DECLARE_EVENT_CLASS(clk, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__string(        name,           core->name       ) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__assign_str(name, core->name); | 
 | 	), | 
 |  | 
 | 	TP_printk("%s", __get_str(name)) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_enable, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_enable_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_disable, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_disable_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_prepare, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_prepare_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_unprepare, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk, clk_unprepare_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core), | 
 |  | 
 | 	TP_ARGS(core) | 
 | ); | 
 |  | 
 | DECLARE_EVENT_CLASS(clk_rate, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, unsigned long rate), | 
 |  | 
 | 	TP_ARGS(core, rate), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__string(        name,           core->name                ) | 
 | 		__field(unsigned long,           rate                      ) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__assign_str(name, core->name); | 
 | 		__entry->rate = rate; | 
 | 	), | 
 |  | 
 | 	TP_printk("%s %lu", __get_str(name), (unsigned long)__entry->rate) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_rate, clk_set_rate, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, unsigned long rate), | 
 |  | 
 | 	TP_ARGS(core, rate) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_rate, clk_set_rate_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, unsigned long rate), | 
 |  | 
 | 	TP_ARGS(core, rate) | 
 | ); | 
 |  | 
 | DECLARE_EVENT_CLASS(clk_parent, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_core *parent), | 
 |  | 
 | 	TP_ARGS(core, parent), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__string(        name,           core->name                ) | 
 | 		__string(        pname, parent ? parent->name : "none"     ) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__assign_str(name, core->name); | 
 | 		__assign_str(pname, parent ? parent->name : "none"); | 
 | 	), | 
 |  | 
 | 	TP_printk("%s %s", __get_str(name), __get_str(pname)) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_parent, clk_set_parent, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_core *parent), | 
 |  | 
 | 	TP_ARGS(core, parent) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_parent, clk_set_parent_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_core *parent), | 
 |  | 
 | 	TP_ARGS(core, parent) | 
 | ); | 
 |  | 
 | DECLARE_EVENT_CLASS(clk_phase, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, int phase), | 
 |  | 
 | 	TP_ARGS(core, phase), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__string(        name,           core->name                ) | 
 | 		__field(	  int,           phase                     ) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__assign_str(name, core->name); | 
 | 		__entry->phase = phase; | 
 | 	), | 
 |  | 
 | 	TP_printk("%s %d", __get_str(name), (int)__entry->phase) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_phase, clk_set_phase, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, int phase), | 
 |  | 
 | 	TP_ARGS(core, phase) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_phase, clk_set_phase_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, int phase), | 
 |  | 
 | 	TP_ARGS(core, phase) | 
 | ); | 
 |  | 
 | DECLARE_EVENT_CLASS(clk_duty_cycle, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_duty *duty), | 
 |  | 
 | 	TP_ARGS(core, duty), | 
 |  | 
 | 	TP_STRUCT__entry( | 
 | 		__string(        name,           core->name              ) | 
 | 		__field( unsigned int,           num                     ) | 
 | 		__field( unsigned int,           den                     ) | 
 | 	), | 
 |  | 
 | 	TP_fast_assign( | 
 | 		__assign_str(name, core->name); | 
 | 		__entry->num = duty->num; | 
 | 		__entry->den = duty->den; | 
 | 	), | 
 |  | 
 | 	TP_printk("%s %u/%u", __get_str(name), (unsigned int)__entry->num, | 
 | 		  (unsigned int)__entry->den) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_duty *duty), | 
 |  | 
 | 	TP_ARGS(core, duty) | 
 | ); | 
 |  | 
 | DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle_complete, | 
 |  | 
 | 	TP_PROTO(struct clk_core *core, struct clk_duty *duty), | 
 |  | 
 | 	TP_ARGS(core, duty) | 
 | ); | 
 |  | 
 | #endif /* _TRACE_CLK_H */ | 
 |  | 
 | /* This part must be outside protection */ | 
 | #include <trace/define_trace.h> |