1*9c92ab61SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2dfc202eaSStephen Boyd /* 3dfc202eaSStephen Boyd * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. 4dfc202eaSStephen Boyd */ 5dfc202eaSStephen Boyd #undef TRACE_SYSTEM 6dfc202eaSStephen Boyd #define TRACE_SYSTEM clk 7dfc202eaSStephen Boyd 8dfc202eaSStephen Boyd #if !defined(_TRACE_CLK_H) || defined(TRACE_HEADER_MULTI_READ) 9dfc202eaSStephen Boyd #define _TRACE_CLK_H 10dfc202eaSStephen Boyd 11dfc202eaSStephen Boyd #include <linux/tracepoint.h> 12dfc202eaSStephen Boyd 13dfc202eaSStephen Boyd struct clk_core; 14dfc202eaSStephen Boyd 15dfc202eaSStephen Boyd DECLARE_EVENT_CLASS(clk, 16dfc202eaSStephen Boyd 17dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 18dfc202eaSStephen Boyd 19dfc202eaSStephen Boyd TP_ARGS(core), 20dfc202eaSStephen Boyd 21dfc202eaSStephen Boyd TP_STRUCT__entry( 22dfc202eaSStephen Boyd __string( name, core->name ) 23dfc202eaSStephen Boyd ), 24dfc202eaSStephen Boyd 25dfc202eaSStephen Boyd TP_fast_assign( 26dfc202eaSStephen Boyd __assign_str(name, core->name); 27dfc202eaSStephen Boyd ), 28dfc202eaSStephen Boyd 29dfc202eaSStephen Boyd TP_printk("%s", __get_str(name)) 30dfc202eaSStephen Boyd ); 31dfc202eaSStephen Boyd 32dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_enable, 33dfc202eaSStephen Boyd 34dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 35dfc202eaSStephen Boyd 36dfc202eaSStephen Boyd TP_ARGS(core) 37dfc202eaSStephen Boyd ); 38dfc202eaSStephen Boyd 39dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_enable_complete, 40dfc202eaSStephen Boyd 41dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 42dfc202eaSStephen Boyd 43dfc202eaSStephen Boyd TP_ARGS(core) 44dfc202eaSStephen Boyd ); 45dfc202eaSStephen Boyd 46dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_disable, 47dfc202eaSStephen Boyd 48dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 49dfc202eaSStephen Boyd 50dfc202eaSStephen Boyd TP_ARGS(core) 51dfc202eaSStephen Boyd ); 52dfc202eaSStephen Boyd 53dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_disable_complete, 54dfc202eaSStephen Boyd 55dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 56dfc202eaSStephen Boyd 57dfc202eaSStephen Boyd TP_ARGS(core) 58dfc202eaSStephen Boyd ); 59dfc202eaSStephen Boyd 60dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_prepare, 61dfc202eaSStephen Boyd 62dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 63dfc202eaSStephen Boyd 64dfc202eaSStephen Boyd TP_ARGS(core) 65dfc202eaSStephen Boyd ); 66dfc202eaSStephen Boyd 67dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_prepare_complete, 68dfc202eaSStephen Boyd 69dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 70dfc202eaSStephen Boyd 71dfc202eaSStephen Boyd TP_ARGS(core) 72dfc202eaSStephen Boyd ); 73dfc202eaSStephen Boyd 74dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_unprepare, 75dfc202eaSStephen Boyd 76dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 77dfc202eaSStephen Boyd 78dfc202eaSStephen Boyd TP_ARGS(core) 79dfc202eaSStephen Boyd ); 80dfc202eaSStephen Boyd 81dfc202eaSStephen Boyd DEFINE_EVENT(clk, clk_unprepare_complete, 82dfc202eaSStephen Boyd 83dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core), 84dfc202eaSStephen Boyd 85dfc202eaSStephen Boyd TP_ARGS(core) 86dfc202eaSStephen Boyd ); 87dfc202eaSStephen Boyd 88dfc202eaSStephen Boyd DECLARE_EVENT_CLASS(clk_rate, 89dfc202eaSStephen Boyd 90dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, unsigned long rate), 91dfc202eaSStephen Boyd 92dfc202eaSStephen Boyd TP_ARGS(core, rate), 93dfc202eaSStephen Boyd 94dfc202eaSStephen Boyd TP_STRUCT__entry( 95dfc202eaSStephen Boyd __string( name, core->name ) 96dfc202eaSStephen Boyd __field(unsigned long, rate ) 97dfc202eaSStephen Boyd ), 98dfc202eaSStephen Boyd 99dfc202eaSStephen Boyd TP_fast_assign( 100dfc202eaSStephen Boyd __assign_str(name, core->name); 101dfc202eaSStephen Boyd __entry->rate = rate; 102dfc202eaSStephen Boyd ), 103dfc202eaSStephen Boyd 104dfc202eaSStephen Boyd TP_printk("%s %lu", __get_str(name), (unsigned long)__entry->rate) 105dfc202eaSStephen Boyd ); 106dfc202eaSStephen Boyd 107dfc202eaSStephen Boyd DEFINE_EVENT(clk_rate, clk_set_rate, 108dfc202eaSStephen Boyd 109dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, unsigned long rate), 110dfc202eaSStephen Boyd 111dfc202eaSStephen Boyd TP_ARGS(core, rate) 112dfc202eaSStephen Boyd ); 113dfc202eaSStephen Boyd 114dfc202eaSStephen Boyd DEFINE_EVENT(clk_rate, clk_set_rate_complete, 115dfc202eaSStephen Boyd 116dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, unsigned long rate), 117dfc202eaSStephen Boyd 118dfc202eaSStephen Boyd TP_ARGS(core, rate) 119dfc202eaSStephen Boyd ); 120dfc202eaSStephen Boyd 121dfc202eaSStephen Boyd DECLARE_EVENT_CLASS(clk_parent, 122dfc202eaSStephen Boyd 123dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, struct clk_core *parent), 124dfc202eaSStephen Boyd 125dfc202eaSStephen Boyd TP_ARGS(core, parent), 126dfc202eaSStephen Boyd 127dfc202eaSStephen Boyd TP_STRUCT__entry( 128dfc202eaSStephen Boyd __string( name, core->name ) 129975b820bSCai Li __string( pname, parent ? parent->name : "none" ) 130dfc202eaSStephen Boyd ), 131dfc202eaSStephen Boyd 132dfc202eaSStephen Boyd TP_fast_assign( 133dfc202eaSStephen Boyd __assign_str(name, core->name); 134975b820bSCai Li __assign_str(pname, parent ? parent->name : "none"); 135dfc202eaSStephen Boyd ), 136dfc202eaSStephen Boyd 137dfc202eaSStephen Boyd TP_printk("%s %s", __get_str(name), __get_str(pname)) 138dfc202eaSStephen Boyd ); 139dfc202eaSStephen Boyd 140dfc202eaSStephen Boyd DEFINE_EVENT(clk_parent, clk_set_parent, 141dfc202eaSStephen Boyd 142dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, struct clk_core *parent), 143dfc202eaSStephen Boyd 144dfc202eaSStephen Boyd TP_ARGS(core, parent) 145dfc202eaSStephen Boyd ); 146dfc202eaSStephen Boyd 147dfc202eaSStephen Boyd DEFINE_EVENT(clk_parent, clk_set_parent_complete, 148dfc202eaSStephen Boyd 149dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, struct clk_core *parent), 150dfc202eaSStephen Boyd 151dfc202eaSStephen Boyd TP_ARGS(core, parent) 152dfc202eaSStephen Boyd ); 153dfc202eaSStephen Boyd 154dfc202eaSStephen Boyd DECLARE_EVENT_CLASS(clk_phase, 155dfc202eaSStephen Boyd 156dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, int phase), 157dfc202eaSStephen Boyd 158dfc202eaSStephen Boyd TP_ARGS(core, phase), 159dfc202eaSStephen Boyd 160dfc202eaSStephen Boyd TP_STRUCT__entry( 161dfc202eaSStephen Boyd __string( name, core->name ) 162dfc202eaSStephen Boyd __field( int, phase ) 163dfc202eaSStephen Boyd ), 164dfc202eaSStephen Boyd 165dfc202eaSStephen Boyd TP_fast_assign( 166dfc202eaSStephen Boyd __assign_str(name, core->name); 167dfc202eaSStephen Boyd __entry->phase = phase; 168dfc202eaSStephen Boyd ), 169dfc202eaSStephen Boyd 170dfc202eaSStephen Boyd TP_printk("%s %d", __get_str(name), (int)__entry->phase) 171dfc202eaSStephen Boyd ); 172dfc202eaSStephen Boyd 173dfc202eaSStephen Boyd DEFINE_EVENT(clk_phase, clk_set_phase, 174dfc202eaSStephen Boyd 175dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, int phase), 176dfc202eaSStephen Boyd 177dfc202eaSStephen Boyd TP_ARGS(core, phase) 178dfc202eaSStephen Boyd ); 179dfc202eaSStephen Boyd 180dfc202eaSStephen Boyd DEFINE_EVENT(clk_phase, clk_set_phase_complete, 181dfc202eaSStephen Boyd 182dfc202eaSStephen Boyd TP_PROTO(struct clk_core *core, int phase), 183dfc202eaSStephen Boyd 184dfc202eaSStephen Boyd TP_ARGS(core, phase) 185dfc202eaSStephen Boyd ); 186dfc202eaSStephen Boyd 1879fba738aSJerome Brunet DECLARE_EVENT_CLASS(clk_duty_cycle, 1889fba738aSJerome Brunet 1899fba738aSJerome Brunet TP_PROTO(struct clk_core *core, struct clk_duty *duty), 1909fba738aSJerome Brunet 1919fba738aSJerome Brunet TP_ARGS(core, duty), 1929fba738aSJerome Brunet 1939fba738aSJerome Brunet TP_STRUCT__entry( 1949fba738aSJerome Brunet __string( name, core->name ) 1959fba738aSJerome Brunet __field( unsigned int, num ) 1969fba738aSJerome Brunet __field( unsigned int, den ) 1979fba738aSJerome Brunet ), 1989fba738aSJerome Brunet 1999fba738aSJerome Brunet TP_fast_assign( 2009fba738aSJerome Brunet __assign_str(name, core->name); 2019fba738aSJerome Brunet __entry->num = duty->num; 2029fba738aSJerome Brunet __entry->den = duty->den; 2039fba738aSJerome Brunet ), 2049fba738aSJerome Brunet 2059fba738aSJerome Brunet TP_printk("%s %u/%u", __get_str(name), (unsigned int)__entry->num, 2069fba738aSJerome Brunet (unsigned int)__entry->den) 2079fba738aSJerome Brunet ); 2089fba738aSJerome Brunet 2099fba738aSJerome Brunet DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle, 2109fba738aSJerome Brunet 2119fba738aSJerome Brunet TP_PROTO(struct clk_core *core, struct clk_duty *duty), 2129fba738aSJerome Brunet 2139fba738aSJerome Brunet TP_ARGS(core, duty) 2149fba738aSJerome Brunet ); 2159fba738aSJerome Brunet 2169fba738aSJerome Brunet DEFINE_EVENT(clk_duty_cycle, clk_set_duty_cycle_complete, 2179fba738aSJerome Brunet 2189fba738aSJerome Brunet TP_PROTO(struct clk_core *core, struct clk_duty *duty), 2199fba738aSJerome Brunet 2209fba738aSJerome Brunet TP_ARGS(core, duty) 2219fba738aSJerome Brunet ); 2229fba738aSJerome Brunet 223dfc202eaSStephen Boyd #endif /* _TRACE_CLK_H */ 224dfc202eaSStephen Boyd 225dfc202eaSStephen Boyd /* This part must be outside protection */ 226dfc202eaSStephen Boyd #include <trace/define_trace.h> 227