fsi.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM fsi
  4. #if !defined(_TRACE_FSI_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_FSI_H
  6. #include <linux/tracepoint.h>
  7. TRACE_EVENT(fsi_master_read,
  8. TP_PROTO(const struct fsi_master *master, int link, int id,
  9. uint32_t addr, size_t size),
  10. TP_ARGS(master, link, id, addr, size),
  11. TP_STRUCT__entry(
  12. __field(int, master_idx)
  13. __field(int, link)
  14. __field(int, id)
  15. __field(__u32, addr)
  16. __field(size_t, size)
  17. ),
  18. TP_fast_assign(
  19. __entry->master_idx = master->idx;
  20. __entry->link = link;
  21. __entry->id = id;
  22. __entry->addr = addr;
  23. __entry->size = size;
  24. ),
  25. TP_printk("fsi%d:%02d:%02d %08x[%zu]",
  26. __entry->master_idx,
  27. __entry->link,
  28. __entry->id,
  29. __entry->addr,
  30. __entry->size
  31. )
  32. );
  33. TRACE_EVENT(fsi_master_write,
  34. TP_PROTO(const struct fsi_master *master, int link, int id,
  35. uint32_t addr, size_t size, const void *data),
  36. TP_ARGS(master, link, id, addr, size, data),
  37. TP_STRUCT__entry(
  38. __field(int, master_idx)
  39. __field(int, link)
  40. __field(int, id)
  41. __field(__u32, addr)
  42. __field(size_t, size)
  43. __field(__u32, data)
  44. ),
  45. TP_fast_assign(
  46. __entry->master_idx = master->idx;
  47. __entry->link = link;
  48. __entry->id = id;
  49. __entry->addr = addr;
  50. __entry->size = size;
  51. __entry->data = 0;
  52. memcpy(&__entry->data, data, size);
  53. ),
  54. TP_printk("fsi%d:%02d:%02d %08x[%zu] <= {%*ph}",
  55. __entry->master_idx,
  56. __entry->link,
  57. __entry->id,
  58. __entry->addr,
  59. __entry->size,
  60. (int)__entry->size, &__entry->data
  61. )
  62. );
  63. TRACE_EVENT(fsi_master_rw_result,
  64. TP_PROTO(const struct fsi_master *master, int link, int id,
  65. uint32_t addr, size_t size,
  66. bool write, const void *data, int ret),
  67. TP_ARGS(master, link, id, addr, size, write, data, ret),
  68. TP_STRUCT__entry(
  69. __field(int, master_idx)
  70. __field(int, link)
  71. __field(int, id)
  72. __field(__u32, addr)
  73. __field(size_t, size)
  74. __field(bool, write)
  75. __field(__u32, data)
  76. __field(int, ret)
  77. ),
  78. TP_fast_assign(
  79. __entry->master_idx = master->idx;
  80. __entry->link = link;
  81. __entry->id = id;
  82. __entry->addr = addr;
  83. __entry->size = size;
  84. __entry->write = write;
  85. __entry->data = 0;
  86. __entry->ret = ret;
  87. if (__entry->write || !__entry->ret)
  88. memcpy(&__entry->data, data, size);
  89. ),
  90. TP_printk("fsi%d:%02d:%02d %08x[%zu] %s {%*ph} ret %d",
  91. __entry->master_idx,
  92. __entry->link,
  93. __entry->id,
  94. __entry->addr,
  95. __entry->size,
  96. __entry->write ? "<=" : "=>",
  97. (int)__entry->size, &__entry->data,
  98. __entry->ret
  99. )
  100. );
  101. TRACE_EVENT(fsi_master_break,
  102. TP_PROTO(const struct fsi_master *master, int link),
  103. TP_ARGS(master, link),
  104. TP_STRUCT__entry(
  105. __field(int, master_idx)
  106. __field(int, link)
  107. ),
  108. TP_fast_assign(
  109. __entry->master_idx = master->idx;
  110. __entry->link = link;
  111. ),
  112. TP_printk("fsi%d:%d",
  113. __entry->master_idx,
  114. __entry->link
  115. )
  116. );
  117. TRACE_EVENT(fsi_master_scan,
  118. TP_PROTO(const struct fsi_master *master, bool scan),
  119. TP_ARGS(master, scan),
  120. TP_STRUCT__entry(
  121. __field(int, master_idx)
  122. __field(int, n_links)
  123. __field(bool, scan)
  124. ),
  125. TP_fast_assign(
  126. __entry->master_idx = master->idx;
  127. __entry->n_links = master->n_links;
  128. __entry->scan = scan;
  129. ),
  130. TP_printk("fsi%d (%d links) %s", __entry->master_idx, __entry->n_links,
  131. __entry->scan ? "scan" : "unscan")
  132. );
  133. TRACE_EVENT(fsi_master_unregister,
  134. TP_PROTO(const struct fsi_master *master),
  135. TP_ARGS(master),
  136. TP_STRUCT__entry(
  137. __field(int, master_idx)
  138. __field(int, n_links)
  139. ),
  140. TP_fast_assign(
  141. __entry->master_idx = master->idx;
  142. __entry->n_links = master->n_links;
  143. ),
  144. TP_printk("fsi%d (%d links)", __entry->master_idx, __entry->n_links)
  145. );
  146. TRACE_EVENT(fsi_slave_init,
  147. TP_PROTO(const struct fsi_slave *slave),
  148. TP_ARGS(slave),
  149. TP_STRUCT__entry(
  150. __field(int, master_idx)
  151. __field(int, master_n_links)
  152. __field(int, idx)
  153. __field(int, link)
  154. __field(int, chip_id)
  155. __field(__u32, cfam_id)
  156. __field(__u32, size)
  157. ),
  158. TP_fast_assign(
  159. __entry->master_idx = slave->master->idx;
  160. __entry->master_n_links = slave->master->n_links;
  161. __entry->idx = slave->cdev_idx;
  162. __entry->link = slave->link;
  163. __entry->chip_id = slave->chip_id;
  164. __entry->cfam_id = slave->cfam_id;
  165. __entry->size = slave->size;
  166. ),
  167. TP_printk("fsi%d: idx:%d link:%d/%d cid:%d cfam:%08x %08x",
  168. __entry->master_idx,
  169. __entry->idx,
  170. __entry->link,
  171. __entry->master_n_links,
  172. __entry->chip_id,
  173. __entry->cfam_id,
  174. __entry->size
  175. )
  176. );
  177. TRACE_EVENT(fsi_slave_invalid_cfam,
  178. TP_PROTO(const struct fsi_master *master, int link, uint32_t cfam_id),
  179. TP_ARGS(master, link, cfam_id),
  180. TP_STRUCT__entry(
  181. __field(int, master_idx)
  182. __field(int, master_n_links)
  183. __field(int, link)
  184. __field(__u32, cfam_id)
  185. ),
  186. TP_fast_assign(
  187. __entry->master_idx = master->idx;
  188. __entry->master_n_links = master->n_links;
  189. __entry->link = link;
  190. __entry->cfam_id = cfam_id;
  191. ),
  192. TP_printk("fsi%d: cfam:%08x link:%d/%d",
  193. __entry->master_idx,
  194. __entry->cfam_id,
  195. __entry->link,
  196. __entry->master_n_links
  197. )
  198. );
  199. TRACE_EVENT(fsi_dev_init,
  200. TP_PROTO(const struct fsi_device *dev),
  201. TP_ARGS(dev),
  202. TP_STRUCT__entry(
  203. __field(int, master_idx)
  204. __field(int, link)
  205. __field(int, type)
  206. __field(int, unit)
  207. __field(int, version)
  208. __field(__u32, addr)
  209. __field(__u32, size)
  210. ),
  211. TP_fast_assign(
  212. __entry->master_idx = dev->slave->master->idx;
  213. __entry->link = dev->slave->link;
  214. __entry->type = dev->engine_type;
  215. __entry->unit = dev->unit;
  216. __entry->version = dev->version;
  217. __entry->addr = dev->addr;
  218. __entry->size = dev->size;
  219. ),
  220. TP_printk("fsi%d: slv%d: t:%02x u:%02x v:%02x %08x@%08x",
  221. __entry->master_idx,
  222. __entry->link,
  223. __entry->type,
  224. __entry->unit,
  225. __entry->version,
  226. __entry->size,
  227. __entry->addr
  228. )
  229. );
  230. #endif /* _TRACE_FSI_H */
  231. #include <trace/define_trace.h>