trace.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM regmap
  4. #if !defined(_TRACE_REGMAP_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_REGMAP_H
  6. #include <linux/ktime.h>
  7. #include <linux/tracepoint.h>
  8. #include "internal.h"
  9. /*
  10. * Log register events
  11. */
  12. DECLARE_EVENT_CLASS(regmap_reg,
  13. TP_PROTO(struct regmap *map, unsigned int reg,
  14. unsigned int val),
  15. TP_ARGS(map, reg, val),
  16. TP_STRUCT__entry(
  17. __string( name, regmap_name(map) )
  18. __field( unsigned int, reg )
  19. __field( unsigned int, val )
  20. ),
  21. TP_fast_assign(
  22. __assign_str(name, regmap_name(map));
  23. __entry->reg = reg;
  24. __entry->val = val;
  25. ),
  26. TP_printk("%s reg=%x val=%x", __get_str(name), __entry->reg, __entry->val)
  27. );
  28. DEFINE_EVENT(regmap_reg, regmap_reg_write,
  29. TP_PROTO(struct regmap *map, unsigned int reg,
  30. unsigned int val),
  31. TP_ARGS(map, reg, val)
  32. );
  33. DEFINE_EVENT(regmap_reg, regmap_reg_read,
  34. TP_PROTO(struct regmap *map, unsigned int reg,
  35. unsigned int val),
  36. TP_ARGS(map, reg, val)
  37. );
  38. DEFINE_EVENT(regmap_reg, regmap_reg_read_cache,
  39. TP_PROTO(struct regmap *map, unsigned int reg,
  40. unsigned int val),
  41. TP_ARGS(map, reg, val)
  42. );
  43. DECLARE_EVENT_CLASS(regmap_bulk,
  44. TP_PROTO(struct regmap *map, unsigned int reg,
  45. const void *val, int val_len),
  46. TP_ARGS(map, reg, val, val_len),
  47. TP_STRUCT__entry(
  48. __string(name, regmap_name(map))
  49. __field(unsigned int, reg)
  50. __dynamic_array(char, buf, val_len)
  51. __field(int, val_len)
  52. ),
  53. TP_fast_assign(
  54. __assign_str(name, regmap_name(map));
  55. __entry->reg = reg;
  56. __entry->val_len = val_len;
  57. memcpy(__get_dynamic_array(buf), val, val_len);
  58. ),
  59. TP_printk("%s reg=%x val=%s", __get_str(name), __entry->reg,
  60. __print_hex(__get_dynamic_array(buf), __entry->val_len))
  61. );
  62. DEFINE_EVENT(regmap_bulk, regmap_bulk_write,
  63. TP_PROTO(struct regmap *map, unsigned int reg,
  64. const void *val, int val_len),
  65. TP_ARGS(map, reg, val, val_len)
  66. );
  67. DEFINE_EVENT(regmap_bulk, regmap_bulk_read,
  68. TP_PROTO(struct regmap *map, unsigned int reg,
  69. const void *val, int val_len),
  70. TP_ARGS(map, reg, val, val_len)
  71. );
  72. DECLARE_EVENT_CLASS(regmap_block,
  73. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  74. TP_ARGS(map, reg, count),
  75. TP_STRUCT__entry(
  76. __string( name, regmap_name(map) )
  77. __field( unsigned int, reg )
  78. __field( int, count )
  79. ),
  80. TP_fast_assign(
  81. __assign_str(name, regmap_name(map));
  82. __entry->reg = reg;
  83. __entry->count = count;
  84. ),
  85. TP_printk("%s reg=%x count=%d", __get_str(name), __entry->reg, __entry->count)
  86. );
  87. DEFINE_EVENT(regmap_block, regmap_hw_read_start,
  88. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  89. TP_ARGS(map, reg, count)
  90. );
  91. DEFINE_EVENT(regmap_block, regmap_hw_read_done,
  92. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  93. TP_ARGS(map, reg, count)
  94. );
  95. DEFINE_EVENT(regmap_block, regmap_hw_write_start,
  96. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  97. TP_ARGS(map, reg, count)
  98. );
  99. DEFINE_EVENT(regmap_block, regmap_hw_write_done,
  100. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  101. TP_ARGS(map, reg, count)
  102. );
  103. TRACE_EVENT(regcache_sync,
  104. TP_PROTO(struct regmap *map, const char *type,
  105. const char *status),
  106. TP_ARGS(map, type, status),
  107. TP_STRUCT__entry(
  108. __string( name, regmap_name(map) )
  109. __string( status, status )
  110. __string( type, type )
  111. ),
  112. TP_fast_assign(
  113. __assign_str(name, regmap_name(map));
  114. __assign_str(status, status);
  115. __assign_str(type, type);
  116. ),
  117. TP_printk("%s type=%s status=%s", __get_str(name),
  118. __get_str(type), __get_str(status))
  119. );
  120. DECLARE_EVENT_CLASS(regmap_bool,
  121. TP_PROTO(struct regmap *map, bool flag),
  122. TP_ARGS(map, flag),
  123. TP_STRUCT__entry(
  124. __string( name, regmap_name(map) )
  125. __field( int, flag )
  126. ),
  127. TP_fast_assign(
  128. __assign_str(name, regmap_name(map));
  129. __entry->flag = flag;
  130. ),
  131. TP_printk("%s flag=%d", __get_str(name), __entry->flag)
  132. );
  133. DEFINE_EVENT(regmap_bool, regmap_cache_only,
  134. TP_PROTO(struct regmap *map, bool flag),
  135. TP_ARGS(map, flag)
  136. );
  137. DEFINE_EVENT(regmap_bool, regmap_cache_bypass,
  138. TP_PROTO(struct regmap *map, bool flag),
  139. TP_ARGS(map, flag)
  140. );
  141. DECLARE_EVENT_CLASS(regmap_async,
  142. TP_PROTO(struct regmap *map),
  143. TP_ARGS(map),
  144. TP_STRUCT__entry(
  145. __string( name, regmap_name(map) )
  146. ),
  147. TP_fast_assign(
  148. __assign_str(name, regmap_name(map));
  149. ),
  150. TP_printk("%s", __get_str(name))
  151. );
  152. DEFINE_EVENT(regmap_block, regmap_async_write_start,
  153. TP_PROTO(struct regmap *map, unsigned int reg, int count),
  154. TP_ARGS(map, reg, count)
  155. );
  156. DEFINE_EVENT(regmap_async, regmap_async_io_complete,
  157. TP_PROTO(struct regmap *map),
  158. TP_ARGS(map)
  159. );
  160. DEFINE_EVENT(regmap_async, regmap_async_complete_start,
  161. TP_PROTO(struct regmap *map),
  162. TP_ARGS(map)
  163. );
  164. DEFINE_EVENT(regmap_async, regmap_async_complete_done,
  165. TP_PROTO(struct regmap *map),
  166. TP_ARGS(map)
  167. );
  168. TRACE_EVENT(regcache_drop_region,
  169. TP_PROTO(struct regmap *map, unsigned int from,
  170. unsigned int to),
  171. TP_ARGS(map, from, to),
  172. TP_STRUCT__entry(
  173. __string( name, regmap_name(map) )
  174. __field( unsigned int, from )
  175. __field( unsigned int, to )
  176. ),
  177. TP_fast_assign(
  178. __assign_str(name, regmap_name(map));
  179. __entry->from = from;
  180. __entry->to = to;
  181. ),
  182. TP_printk("%s %u-%u", __get_str(name), __entry->from, __entry->to)
  183. );
  184. #endif /* _TRACE_REGMAP_H */
  185. #undef TRACE_INCLUDE_PATH
  186. #define TRACE_INCLUDE_PATH .
  187. #undef TRACE_INCLUDE_FILE
  188. #define TRACE_INCLUDE_FILE trace
  189. /* This part must be outside protection */
  190. #include <trace/define_trace.h>