fsl-edma-trace.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2023 NXP.
  4. */
  5. #undef TRACE_SYSTEM
  6. #define TRACE_SYSTEM fsl_edma
  7. #if !defined(__LINUX_FSL_EDMA_TRACE) || defined(TRACE_HEADER_MULTI_READ)
  8. #define __LINUX_FSL_EDMA_TRACE
  9. #include <linux/types.h>
  10. #include <linux/tracepoint.h>
  11. DECLARE_EVENT_CLASS(edma_log_io,
  12. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  13. TP_ARGS(edma, addr, value),
  14. TP_STRUCT__entry(
  15. __field(struct fsl_edma_engine *, edma)
  16. __field(void __iomem *, addr)
  17. __field(u32, value)
  18. ),
  19. TP_fast_assign(
  20. __entry->edma = edma;
  21. __entry->addr = addr;
  22. __entry->value = value;
  23. ),
  24. TP_printk("offset %08x: value %08x",
  25. (u32)(__entry->addr - __entry->edma->membase), __entry->value)
  26. );
  27. DEFINE_EVENT(edma_log_io, edma_readl,
  28. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  29. TP_ARGS(edma, addr, value)
  30. );
  31. DEFINE_EVENT(edma_log_io, edma_writel,
  32. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  33. TP_ARGS(edma, addr, value)
  34. );
  35. DEFINE_EVENT(edma_log_io, edma_readw,
  36. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  37. TP_ARGS(edma, addr, value)
  38. );
  39. DEFINE_EVENT(edma_log_io, edma_writew,
  40. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  41. TP_ARGS(edma, addr, value)
  42. );
  43. DEFINE_EVENT(edma_log_io, edma_readb,
  44. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  45. TP_ARGS(edma, addr, value)
  46. );
  47. DEFINE_EVENT(edma_log_io, edma_writeb,
  48. TP_PROTO(struct fsl_edma_engine *edma, void __iomem *addr, u32 value),
  49. TP_ARGS(edma, addr, value)
  50. );
  51. DECLARE_EVENT_CLASS(edma_log_tcd,
  52. TP_PROTO(struct fsl_edma_chan *chan, void *tcd),
  53. TP_ARGS(chan, tcd),
  54. TP_STRUCT__entry(
  55. __field(u64, saddr)
  56. __field(u16, soff)
  57. __field(u16, attr)
  58. __field(u32, nbytes)
  59. __field(u64, slast)
  60. __field(u64, daddr)
  61. __field(u16, doff)
  62. __field(u16, citer)
  63. __field(u64, dlast_sga)
  64. __field(u16, csr)
  65. __field(u16, biter)
  66. ),
  67. TP_fast_assign(
  68. __entry->saddr = fsl_edma_get_tcd_to_cpu(chan, tcd, saddr),
  69. __entry->soff = fsl_edma_get_tcd_to_cpu(chan, tcd, soff),
  70. __entry->attr = fsl_edma_get_tcd_to_cpu(chan, tcd, attr),
  71. __entry->nbytes = fsl_edma_get_tcd_to_cpu(chan, tcd, nbytes),
  72. __entry->slast = fsl_edma_get_tcd_to_cpu(chan, tcd, slast),
  73. __entry->daddr = fsl_edma_get_tcd_to_cpu(chan, tcd, daddr),
  74. __entry->doff = fsl_edma_get_tcd_to_cpu(chan, tcd, doff),
  75. __entry->citer = fsl_edma_get_tcd_to_cpu(chan, tcd, citer),
  76. __entry->dlast_sga = fsl_edma_get_tcd_to_cpu(chan, tcd, dlast_sga),
  77. __entry->csr = fsl_edma_get_tcd_to_cpu(chan, tcd, csr),
  78. __entry->biter = fsl_edma_get_tcd_to_cpu(chan, tcd, biter);
  79. ),
  80. TP_printk("\n==== TCD =====\n"
  81. " saddr: 0x%016llx\n"
  82. " soff: 0x%04x\n"
  83. " attr: 0x%04x\n"
  84. " nbytes: 0x%08x\n"
  85. " slast: 0x%016llx\n"
  86. " daddr: 0x%016llx\n"
  87. " doff: 0x%04x\n"
  88. " citer: 0x%04x\n"
  89. " dlast: 0x%016llx\n"
  90. " csr: 0x%04x\n"
  91. " biter: 0x%04x\n",
  92. __entry->saddr,
  93. __entry->soff,
  94. __entry->attr,
  95. __entry->nbytes,
  96. __entry->slast,
  97. __entry->daddr,
  98. __entry->doff,
  99. __entry->citer,
  100. __entry->dlast_sga,
  101. __entry->csr,
  102. __entry->biter)
  103. );
  104. DEFINE_EVENT(edma_log_tcd, edma_fill_tcd,
  105. TP_PROTO(struct fsl_edma_chan *chan, void *tcd),
  106. TP_ARGS(chan, tcd)
  107. );
  108. #endif
  109. /* this part must be outside header guard */
  110. #undef TRACE_INCLUDE_PATH
  111. #define TRACE_INCLUDE_PATH .
  112. #undef TRACE_INCLUDE_FILE
  113. #define TRACE_INCLUDE_FILE fsl-edma-trace
  114. #include <trace/define_trace.h>