fsi.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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_slave_init,
  118. TP_PROTO(const struct fsi_slave *slave),
  119. TP_ARGS(slave),
  120. TP_STRUCT__entry(
  121. __field(int, master_idx)
  122. __field(int, master_n_links)
  123. __field(int, idx)
  124. __field(int, link)
  125. __field(int, chip_id)
  126. __field(__u32, cfam_id)
  127. __field(__u32, size)
  128. ),
  129. TP_fast_assign(
  130. __entry->master_idx = slave->master->idx;
  131. __entry->master_n_links = slave->master->n_links;
  132. __entry->idx = slave->cdev_idx;
  133. __entry->link = slave->link;
  134. __entry->chip_id = slave->chip_id;
  135. __entry->cfam_id = slave->cfam_id;
  136. __entry->size = slave->size;
  137. ),
  138. TP_printk("fsi%d: idx:%d link:%d/%d cid:%d cfam:%08x %08x",
  139. __entry->master_idx,
  140. __entry->idx,
  141. __entry->link,
  142. __entry->master_n_links,
  143. __entry->chip_id,
  144. __entry->cfam_id,
  145. __entry->size
  146. )
  147. );
  148. TRACE_EVENT(fsi_slave_invalid_cfam,
  149. TP_PROTO(const struct fsi_master *master, int link, uint32_t cfam_id),
  150. TP_ARGS(master, link, cfam_id),
  151. TP_STRUCT__entry(
  152. __field(int, master_idx)
  153. __field(int, master_n_links)
  154. __field(int, link)
  155. __field(__u32, cfam_id)
  156. ),
  157. TP_fast_assign(
  158. __entry->master_idx = master->idx;
  159. __entry->master_n_links = master->n_links;
  160. __entry->link = link;
  161. __entry->cfam_id = cfam_id;
  162. ),
  163. TP_printk("fsi%d: cfam:%08x link:%d/%d",
  164. __entry->master_idx,
  165. __entry->cfam_id,
  166. __entry->link,
  167. __entry->master_n_links
  168. )
  169. );
  170. TRACE_EVENT(fsi_dev_init,
  171. TP_PROTO(const struct fsi_device *dev),
  172. TP_ARGS(dev),
  173. TP_STRUCT__entry(
  174. __field(int, master_idx)
  175. __field(int, link)
  176. __field(int, type)
  177. __field(int, unit)
  178. __field(int, version)
  179. __field(__u32, addr)
  180. __field(__u32, size)
  181. ),
  182. TP_fast_assign(
  183. __entry->master_idx = dev->slave->master->idx;
  184. __entry->link = dev->slave->link;
  185. __entry->type = dev->engine_type;
  186. __entry->unit = dev->unit;
  187. __entry->version = dev->version;
  188. __entry->addr = dev->addr;
  189. __entry->size = dev->size;
  190. ),
  191. TP_printk("fsi%d: slv%d: t:%02x u:%02x v:%02x %08x@%08x",
  192. __entry->master_idx,
  193. __entry->link,
  194. __entry->type,
  195. __entry->unit,
  196. __entry->version,
  197. __entry->size,
  198. __entry->addr
  199. )
  200. );
  201. #endif /* _TRACE_FSI_H */
  202. #include <trace/define_trace.h>