1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #undef TRACE_SYSTEM 3*4882a593Smuzhiyun #define TRACE_SYSTEM regmap 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #if !defined(_TRACE_REGMAP_H) || defined(TRACE_HEADER_MULTI_READ) 6*4882a593Smuzhiyun #define _TRACE_REGMAP_H 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <linux/ktime.h> 9*4882a593Smuzhiyun #include <linux/tracepoint.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "internal.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* 14*4882a593Smuzhiyun * Log register events 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun DECLARE_EVENT_CLASS(regmap_reg, 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, 19*4882a593Smuzhiyun unsigned int val), 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun TP_ARGS(map, reg, val), 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun TP_STRUCT__entry( 24*4882a593Smuzhiyun __string( name, regmap_name(map) ) 25*4882a593Smuzhiyun __field( unsigned int, reg ) 26*4882a593Smuzhiyun __field( unsigned int, val ) 27*4882a593Smuzhiyun ), 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun TP_fast_assign( 30*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 31*4882a593Smuzhiyun __entry->reg = reg; 32*4882a593Smuzhiyun __entry->val = val; 33*4882a593Smuzhiyun ), 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun TP_printk("%s reg=%x val=%x", __get_str(name), 36*4882a593Smuzhiyun (unsigned int)__entry->reg, 37*4882a593Smuzhiyun (unsigned int)__entry->val) 38*4882a593Smuzhiyun ); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun DEFINE_EVENT(regmap_reg, regmap_reg_write, 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, 43*4882a593Smuzhiyun unsigned int val), 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun TP_ARGS(map, reg, val) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun ); 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun DEFINE_EVENT(regmap_reg, regmap_reg_read, 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, 52*4882a593Smuzhiyun unsigned int val), 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun TP_ARGS(map, reg, val) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun ); 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun DEFINE_EVENT(regmap_reg, regmap_reg_read_cache, 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, 61*4882a593Smuzhiyun unsigned int val), 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun TP_ARGS(map, reg, val) 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun ); 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun DECLARE_EVENT_CLASS(regmap_block, 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun TP_ARGS(map, reg, count), 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun TP_STRUCT__entry( 74*4882a593Smuzhiyun __string( name, regmap_name(map) ) 75*4882a593Smuzhiyun __field( unsigned int, reg ) 76*4882a593Smuzhiyun __field( int, count ) 77*4882a593Smuzhiyun ), 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun TP_fast_assign( 80*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 81*4882a593Smuzhiyun __entry->reg = reg; 82*4882a593Smuzhiyun __entry->count = count; 83*4882a593Smuzhiyun ), 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun TP_printk("%s reg=%x count=%d", __get_str(name), 86*4882a593Smuzhiyun (unsigned int)__entry->reg, 87*4882a593Smuzhiyun (int)__entry->count) 88*4882a593Smuzhiyun ); 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun DEFINE_EVENT(regmap_block, regmap_hw_read_start, 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun TP_ARGS(map, reg, count) 95*4882a593Smuzhiyun ); 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun DEFINE_EVENT(regmap_block, regmap_hw_read_done, 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun TP_ARGS(map, reg, count) 102*4882a593Smuzhiyun ); 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun DEFINE_EVENT(regmap_block, regmap_hw_write_start, 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun TP_ARGS(map, reg, count) 109*4882a593Smuzhiyun ); 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun DEFINE_EVENT(regmap_block, regmap_hw_write_done, 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun TP_ARGS(map, reg, count) 116*4882a593Smuzhiyun ); 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun TRACE_EVENT(regcache_sync, 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun TP_PROTO(struct regmap *map, const char *type, 121*4882a593Smuzhiyun const char *status), 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun TP_ARGS(map, type, status), 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun TP_STRUCT__entry( 126*4882a593Smuzhiyun __string( name, regmap_name(map) ) 127*4882a593Smuzhiyun __string( status, status ) 128*4882a593Smuzhiyun __string( type, type ) 129*4882a593Smuzhiyun __field( int, type ) 130*4882a593Smuzhiyun ), 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun TP_fast_assign( 133*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 134*4882a593Smuzhiyun __assign_str(status, status); 135*4882a593Smuzhiyun __assign_str(type, type); 136*4882a593Smuzhiyun ), 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun TP_printk("%s type=%s status=%s", __get_str(name), 139*4882a593Smuzhiyun __get_str(type), __get_str(status)) 140*4882a593Smuzhiyun ); 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun DECLARE_EVENT_CLASS(regmap_bool, 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun TP_PROTO(struct regmap *map, bool flag), 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun TP_ARGS(map, flag), 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun TP_STRUCT__entry( 149*4882a593Smuzhiyun __string( name, regmap_name(map) ) 150*4882a593Smuzhiyun __field( int, flag ) 151*4882a593Smuzhiyun ), 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun TP_fast_assign( 154*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 155*4882a593Smuzhiyun __entry->flag = flag; 156*4882a593Smuzhiyun ), 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun TP_printk("%s flag=%d", __get_str(name), 159*4882a593Smuzhiyun (int)__entry->flag) 160*4882a593Smuzhiyun ); 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun DEFINE_EVENT(regmap_bool, regmap_cache_only, 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun TP_PROTO(struct regmap *map, bool flag), 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun TP_ARGS(map, flag) 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun ); 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun DEFINE_EVENT(regmap_bool, regmap_cache_bypass, 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun TP_PROTO(struct regmap *map, bool flag), 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun TP_ARGS(map, flag) 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun ); 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun DECLARE_EVENT_CLASS(regmap_async, 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun TP_PROTO(struct regmap *map), 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun TP_ARGS(map), 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun TP_STRUCT__entry( 185*4882a593Smuzhiyun __string( name, regmap_name(map) ) 186*4882a593Smuzhiyun ), 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun TP_fast_assign( 189*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 190*4882a593Smuzhiyun ), 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun TP_printk("%s", __get_str(name)) 193*4882a593Smuzhiyun ); 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun DEFINE_EVENT(regmap_block, regmap_async_write_start, 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int reg, int count), 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun TP_ARGS(map, reg, count) 200*4882a593Smuzhiyun ); 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun DEFINE_EVENT(regmap_async, regmap_async_io_complete, 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun TP_PROTO(struct regmap *map), 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun TP_ARGS(map) 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun ); 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun DEFINE_EVENT(regmap_async, regmap_async_complete_start, 211*4882a593Smuzhiyun 212*4882a593Smuzhiyun TP_PROTO(struct regmap *map), 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun TP_ARGS(map) 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun ); 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun DEFINE_EVENT(regmap_async, regmap_async_complete_done, 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun TP_PROTO(struct regmap *map), 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun TP_ARGS(map) 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun ); 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun TRACE_EVENT(regcache_drop_region, 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun TP_PROTO(struct regmap *map, unsigned int from, 229*4882a593Smuzhiyun unsigned int to), 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun TP_ARGS(map, from, to), 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun TP_STRUCT__entry( 234*4882a593Smuzhiyun __string( name, regmap_name(map) ) 235*4882a593Smuzhiyun __field( unsigned int, from ) 236*4882a593Smuzhiyun __field( unsigned int, to ) 237*4882a593Smuzhiyun ), 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun TP_fast_assign( 240*4882a593Smuzhiyun __assign_str(name, regmap_name(map)); 241*4882a593Smuzhiyun __entry->from = from; 242*4882a593Smuzhiyun __entry->to = to; 243*4882a593Smuzhiyun ), 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun TP_printk("%s %u-%u", __get_str(name), (unsigned int)__entry->from, 246*4882a593Smuzhiyun (unsigned int)__entry->to) 247*4882a593Smuzhiyun ); 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun #endif /* _TRACE_REGMAP_H */ 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 252*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 255*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun /* This part must be outside protection */ 258*4882a593Smuzhiyun #include <trace/define_trace.h> 259