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