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