314 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved.4 */5#undef TRACE_SYSTEM6#define TRACE_SYSTEM clk7 8#if !defined(_TRACE_CLK_H) || defined(TRACE_HEADER_MULTI_READ)9#define _TRACE_CLK_H10 11#include <linux/tracepoint.h>12 13struct clk_core;14 15DECLARE_EVENT_CLASS(clk,16 17 TP_PROTO(struct clk_core *core),18 19 TP_ARGS(core),20 21 TP_STRUCT__entry(22 __string( name, core->name )23 ),24 25 TP_fast_assign(26 __assign_str(name);27 ),28 29 TP_printk("%s", __get_str(name))30);31 32DEFINE_EVENT(clk, clk_enable,33 34 TP_PROTO(struct clk_core *core),35 36 TP_ARGS(core)37);38 39DEFINE_EVENT(clk, clk_enable_complete,40 41 TP_PROTO(struct clk_core *core),42 43 TP_ARGS(core)44);45 46DEFINE_EVENT(clk, clk_disable,47 48 TP_PROTO(struct clk_core *core),49 50 TP_ARGS(core)51);52 53DEFINE_EVENT(clk, clk_disable_complete,54 55 TP_PROTO(struct clk_core *core),56 57 TP_ARGS(core)58);59 60DEFINE_EVENT(clk, clk_prepare,61 62 TP_PROTO(struct clk_core *core),63 64 TP_ARGS(core)65);66 67DEFINE_EVENT(clk, clk_prepare_complete,68 69 TP_PROTO(struct clk_core *core),70 71 TP_ARGS(core)72);73 74DEFINE_EVENT(clk, clk_unprepare,75 76 TP_PROTO(struct clk_core *core),77 78 TP_ARGS(core)79);80 81DEFINE_EVENT(clk, clk_unprepare_complete,82 83 TP_PROTO(struct clk_core *core),84 85 TP_ARGS(core)86);87 88DECLARE_EVENT_CLASS(clk_rate,89 90 TP_PROTO(struct clk_core *core, unsigned long rate),91 92 TP_ARGS(core, rate),93 94 TP_STRUCT__entry(95 __string( name, core->name )96 __field(unsigned long, rate )97 ),98 99 TP_fast_assign(100 __assign_str(name);101 __entry->rate = rate;102 ),103 104 TP_printk("%s %lu", __get_str(name), (unsigned long)__entry->rate)105);106 107DEFINE_EVENT(clk_rate, clk_set_rate,108 109 TP_PROTO(struct clk_core *core, unsigned long rate),110 111 TP_ARGS(core, rate)112);113 114DEFINE_EVENT(clk_rate, clk_set_rate_complete,115 116 TP_PROTO(struct clk_core *core, unsigned long rate),117 118 TP_ARGS(core, rate)119);120 121DEFINE_EVENT(clk_rate, clk_set_min_rate,122 123 TP_PROTO(struct clk_core *core, unsigned long rate),124 125 TP_ARGS(core, rate)126);127 128DEFINE_EVENT(clk_rate, clk_set_max_rate,129 130 TP_PROTO(struct clk_core *core, unsigned long rate),131 132 TP_ARGS(core, rate)133);134 135DECLARE_EVENT_CLASS(clk_rate_range,136 137 TP_PROTO(struct clk_core *core, unsigned long min, unsigned long max),138 139 TP_ARGS(core, min, max),140 141 TP_STRUCT__entry(142 __string( name, core->name )143 __field(unsigned long, min )144 __field(unsigned long, max )145 ),146 147 TP_fast_assign(148 __assign_str(name);149 __entry->min = min;150 __entry->max = max;151 ),152 153 TP_printk("%s min %lu max %lu", __get_str(name),154 (unsigned long)__entry->min,155 (unsigned long)__entry->max)156);157 158DEFINE_EVENT(clk_rate_range, clk_set_rate_range,159 160 TP_PROTO(struct clk_core *core, unsigned long min, unsigned long max),161 162 TP_ARGS(core, min, max)163);164 165DECLARE_EVENT_CLASS(clk_parent,166 167 TP_PROTO(struct clk_core *core, struct clk_core *parent),168 169 TP_ARGS(core, parent),170 171 TP_STRUCT__entry(172 __string( name, core->name )173 __string( pname, parent ? parent->name : "none" )174 ),175 176 TP_fast_assign(177 __assign_str(name);178 __assign_str(pname);179 ),180 181 TP_printk("%s %s", __get_str(name), __get_str(pname))182);183 184DEFINE_EVENT(clk_parent, clk_set_parent,185 186 TP_PROTO(struct clk_core *core, struct clk_core *parent),187 188 TP_ARGS(core, parent)189);190 191DEFINE_EVENT(clk_parent, clk_set_parent_complete,192 193 TP_PROTO(struct clk_core *core, struct clk_core *parent),194 195 TP_ARGS(core, parent)196);197 198DECLARE_EVENT_CLASS(clk_phase,199 200 TP_PROTO(struct clk_core *core, int phase),201 202 TP_ARGS(core, phase),203 204 TP_STRUCT__entry(205 __string( name, core->name )206 __field( int, phase )207 ),208 209 TP_fast_assign(210 __assign_str(name);211 __entry->phase = phase;212 ),213 214 TP_printk("%s %d", __get_str(name), (int)__entry->phase)215);216 217DEFINE_EVENT(clk_phase, clk_set_phase,218 219 TP_PROTO(struct clk_core *core, int phase),220 221 TP_ARGS(core, phase)222);223 224DEFINE_EVENT(clk_phase, clk_set_phase_complete,225 226 TP_PROTO(struct clk_core *core, int phase),227 228 TP_ARGS(core, phase)229);230 231DECLARE_EVENT_CLASS(clk_duty_cycle,232 233 TP_PROTO(struct clk_core *core, struct clk_duty *duty),234 235 TP_ARGS(core, duty),236 237 TP_STRUCT__entry(238 __string( name, core->name )239 __field( unsigned int, num )240 __field( unsigned int, den )241 ),242 243 TP_fast_assign(244 __assign_str(name);245 __entry->num = duty->num;246 __entry->den = duty->den;247 ),248 249 TP_printk("%s %u/%u", __get_str(name), (unsigned int)__entry->num,250 (unsigned int)__entry->den)251);252 253DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle,254 255 TP_PROTO(struct clk_core *core, struct clk_duty *duty),256 257 TP_ARGS(core, duty)258);259 260DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle_complete,261 262 TP_PROTO(struct clk_core *core, struct clk_duty *duty),263 264 TP_ARGS(core, duty)265);266 267DECLARE_EVENT_CLASS(clk_rate_request,268 269 TP_PROTO(struct clk_rate_request *req),270 271 TP_ARGS(req),272 273 TP_STRUCT__entry(274 __string( name, req->core ? req->core->name : "none")275 __string( pname, req->best_parent_hw ? clk_hw_get_name(req->best_parent_hw) : "none" )276 __field(unsigned long, min )277 __field(unsigned long, max )278 __field(unsigned long, prate )279 ),280 281 TP_fast_assign(282 __assign_str(name);283 __assign_str(pname);284 __entry->min = req->min_rate;285 __entry->max = req->max_rate;286 __entry->prate = req->best_parent_rate;287 ),288 289 TP_printk("%s min %lu max %lu, parent %s (%lu)", __get_str(name),290 (unsigned long)__entry->min,291 (unsigned long)__entry->max,292 __get_str(pname),293 (unsigned long)__entry->prate)294);295 296DEFINE_EVENT(clk_rate_request, clk_rate_request_start,297 298 TP_PROTO(struct clk_rate_request *req),299 300 TP_ARGS(req)301);302 303DEFINE_EVENT(clk_rate_request, clk_rate_request_done,304 305 TP_PROTO(struct clk_rate_request *req),306 307 TP_ARGS(req)308);309 310#endif /* _TRACE_CLK_H */311 312/* This part must be outside protection */313#include <trace/define_trace.h>314