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