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