1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2021, The Linux Foundation. All rights reserved. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun #undef TRACE_SYSTEM 6*4882a593Smuzhiyun #define TRACE_SYSTEM rwmmio 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #if !defined(_TRACE_MMIO_H) || defined(TRACE_HEADER_MULTI_READ) 9*4882a593Smuzhiyun #define _TRACE_MMIO_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include <linux/tracepoint.h> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun TRACE_EVENT(rwmmio_write, 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun TP_PROTO(unsigned long fn, u64 val, u8 width, volatile void __iomem *addr), 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun TP_ARGS(fn, val, width, addr), 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun TP_STRUCT__entry( 20*4882a593Smuzhiyun __field(u64, fn) 21*4882a593Smuzhiyun __field(u64, val) 22*4882a593Smuzhiyun __field(u8, width) 23*4882a593Smuzhiyun __field(u64, addr) 24*4882a593Smuzhiyun ), 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun TP_fast_assign( 27*4882a593Smuzhiyun __entry->fn = fn; 28*4882a593Smuzhiyun __entry->val = val; 29*4882a593Smuzhiyun __entry->width = width; 30*4882a593Smuzhiyun __entry->addr = (u64)addr; 31*4882a593Smuzhiyun ), 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun TP_printk("%llxS write addr=%llx of width=%x val=0x%llx\n", 34*4882a593Smuzhiyun __entry->fn, __entry->addr, __entry->width, __entry->val) 35*4882a593Smuzhiyun ); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun TRACE_EVENT(rwmmio_read, 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun TP_PROTO(unsigned long fn, u8 width, const volatile void __iomem *addr), 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun TP_ARGS(fn, width, addr), 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun TP_STRUCT__entry( 44*4882a593Smuzhiyun __field(u64, fn) 45*4882a593Smuzhiyun __field(u8, width) 46*4882a593Smuzhiyun __field(u64, addr) 47*4882a593Smuzhiyun ), 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun TP_fast_assign( 50*4882a593Smuzhiyun __entry->fn = fn; 51*4882a593Smuzhiyun __entry->width = width; 52*4882a593Smuzhiyun __entry->addr = (u64)addr; 53*4882a593Smuzhiyun ), 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun TP_printk("%llxS read addr=%llx of width=%x\n", 56*4882a593Smuzhiyun __entry->fn, __entry->addr, __entry->width) 57*4882a593Smuzhiyun ); 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun TRACE_EVENT(rwmmio_post_read, 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun TP_PROTO(unsigned long fn, u64 val, u8 width, const volatile void __iomem *addr), 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun TP_ARGS(fn, val, width, addr), 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun TP_STRUCT__entry( 66*4882a593Smuzhiyun __field(u64, fn) 67*4882a593Smuzhiyun __field(u64, val) 68*4882a593Smuzhiyun __field(u8, width) 69*4882a593Smuzhiyun __field(u64, addr) 70*4882a593Smuzhiyun ), 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun TP_fast_assign( 73*4882a593Smuzhiyun __entry->fn = fn; 74*4882a593Smuzhiyun __entry->val = val; 75*4882a593Smuzhiyun __entry->width = width; 76*4882a593Smuzhiyun __entry->addr = (u64)addr; 77*4882a593Smuzhiyun ), 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun TP_printk("%llxS read addr=%llx of width=%x val=0x%llx\n", 80*4882a593Smuzhiyun __entry->fn, __entry->addr, __entry->width, __entry->val) 81*4882a593Smuzhiyun ); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #endif /* _TRACE_MMIO_H */ 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #include <trace/define_trace.h> 86