1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2015-2016, Intel Corporation. All rights reserved. 4*4882a593Smuzhiyun * Intel Management Engine Interface (Intel MEI) Linux driver 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #if !defined(_MEI_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) 8*4882a593Smuzhiyun #define _MEI_TRACE_H_ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <linux/stringify.h> 11*4882a593Smuzhiyun #include <linux/types.h> 12*4882a593Smuzhiyun #include <linux/tracepoint.h> 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #include <linux/device.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #undef TRACE_SYSTEM 17*4882a593Smuzhiyun #define TRACE_SYSTEM mei 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun TRACE_EVENT(mei_reg_read, 20*4882a593Smuzhiyun TP_PROTO(const struct device *dev, const char *reg, u32 offs, u32 val), 21*4882a593Smuzhiyun TP_ARGS(dev, reg, offs, val), 22*4882a593Smuzhiyun TP_STRUCT__entry( 23*4882a593Smuzhiyun __string(dev, dev_name(dev)) 24*4882a593Smuzhiyun __field(const char *, reg) 25*4882a593Smuzhiyun __field(u32, offs) 26*4882a593Smuzhiyun __field(u32, val) 27*4882a593Smuzhiyun ), 28*4882a593Smuzhiyun TP_fast_assign( 29*4882a593Smuzhiyun __assign_str(dev, dev_name(dev)) 30*4882a593Smuzhiyun __entry->reg = reg; 31*4882a593Smuzhiyun __entry->offs = offs; 32*4882a593Smuzhiyun __entry->val = val; 33*4882a593Smuzhiyun ), 34*4882a593Smuzhiyun TP_printk("[%s] read %s:[%#x] = %#x", 35*4882a593Smuzhiyun __get_str(dev), __entry->reg, __entry->offs, __entry->val) 36*4882a593Smuzhiyun ); 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun TRACE_EVENT(mei_reg_write, 39*4882a593Smuzhiyun TP_PROTO(const struct device *dev, const char *reg, u32 offs, u32 val), 40*4882a593Smuzhiyun TP_ARGS(dev, reg, offs, val), 41*4882a593Smuzhiyun TP_STRUCT__entry( 42*4882a593Smuzhiyun __string(dev, dev_name(dev)) 43*4882a593Smuzhiyun __field(const char *, reg) 44*4882a593Smuzhiyun __field(u32, offs) 45*4882a593Smuzhiyun __field(u32, val) 46*4882a593Smuzhiyun ), 47*4882a593Smuzhiyun TP_fast_assign( 48*4882a593Smuzhiyun __assign_str(dev, dev_name(dev)) 49*4882a593Smuzhiyun __entry->reg = reg; 50*4882a593Smuzhiyun __entry->offs = offs; 51*4882a593Smuzhiyun __entry->val = val; 52*4882a593Smuzhiyun ), 53*4882a593Smuzhiyun TP_printk("[%s] write %s[%#x] = %#x", 54*4882a593Smuzhiyun __get_str(dev), __entry->reg, __entry->offs, __entry->val) 55*4882a593Smuzhiyun ); 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun TRACE_EVENT(mei_pci_cfg_read, 58*4882a593Smuzhiyun TP_PROTO(const struct device *dev, const char *reg, u32 offs, u32 val), 59*4882a593Smuzhiyun TP_ARGS(dev, reg, offs, val), 60*4882a593Smuzhiyun TP_STRUCT__entry( 61*4882a593Smuzhiyun __string(dev, dev_name(dev)) 62*4882a593Smuzhiyun __field(const char *, reg) 63*4882a593Smuzhiyun __field(u32, offs) 64*4882a593Smuzhiyun __field(u32, val) 65*4882a593Smuzhiyun ), 66*4882a593Smuzhiyun TP_fast_assign( 67*4882a593Smuzhiyun __assign_str(dev, dev_name(dev)) 68*4882a593Smuzhiyun __entry->reg = reg; 69*4882a593Smuzhiyun __entry->offs = offs; 70*4882a593Smuzhiyun __entry->val = val; 71*4882a593Smuzhiyun ), 72*4882a593Smuzhiyun TP_printk("[%s] pci cfg read %s:[%#x] = %#x", 73*4882a593Smuzhiyun __get_str(dev), __entry->reg, __entry->offs, __entry->val) 74*4882a593Smuzhiyun ); 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun #endif /* _MEI_TRACE_H_ */ 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun /* This part must be outside protection */ 79*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 80*4882a593Smuzhiyun #undef TRACE_INCLUDE_FILE 81*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 82*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE mei-trace 83*4882a593Smuzhiyun #include <trace/define_trace.h> 84