1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2009 - 2014 Intel Corporation. All rights reserved. 5 * Copyright(c) 2016-2017 Intel Deutschland GmbH 6 *****************************************************************************/ 7 8 #if !defined(__IWLWIFI_DEVICE_TRACE_IO) || defined(TRACE_HEADER_MULTI_READ) 9 #define __IWLWIFI_DEVICE_TRACE_IO 10 11 #include <linux/tracepoint.h> 12 #include <linux/pci.h> 13 14 #undef TRACE_SYSTEM 15 #define TRACE_SYSTEM iwlwifi_io 16 17 TRACE_EVENT(iwlwifi_dev_ioread32, 18 TP_PROTO(const struct device *dev, u32 offs, u32 val), 19 TP_ARGS(dev, offs, val), 20 TP_STRUCT__entry( 21 DEV_ENTRY 22 __field(u32, offs) 23 __field(u32, val) 24 ), 25 TP_fast_assign( 26 DEV_ASSIGN; 27 __entry->offs = offs; 28 __entry->val = val; 29 ), 30 TP_printk("[%s] read io[%#x] = %#x", 31 __get_str(dev), __entry->offs, __entry->val) 32 ); 33 34 TRACE_EVENT(iwlwifi_dev_iowrite8, 35 TP_PROTO(const struct device *dev, u32 offs, u8 val), 36 TP_ARGS(dev, offs, val), 37 TP_STRUCT__entry( 38 DEV_ENTRY 39 __field(u32, offs) 40 __field(u8, val) 41 ), 42 TP_fast_assign( 43 DEV_ASSIGN; 44 __entry->offs = offs; 45 __entry->val = val; 46 ), 47 TP_printk("[%s] write io[%#x] = %#x)", 48 __get_str(dev), __entry->offs, __entry->val) 49 ); 50 51 TRACE_EVENT(iwlwifi_dev_iowrite32, 52 TP_PROTO(const struct device *dev, u32 offs, u32 val), 53 TP_ARGS(dev, offs, val), 54 TP_STRUCT__entry( 55 DEV_ENTRY 56 __field(u32, offs) 57 __field(u32, val) 58 ), 59 TP_fast_assign( 60 DEV_ASSIGN; 61 __entry->offs = offs; 62 __entry->val = val; 63 ), 64 TP_printk("[%s] write io[%#x] = %#x)", 65 __get_str(dev), __entry->offs, __entry->val) 66 ); 67 68 TRACE_EVENT(iwlwifi_dev_iowrite64, 69 TP_PROTO(const struct device *dev, u64 offs, u64 val), 70 TP_ARGS(dev, offs, val), 71 TP_STRUCT__entry( 72 DEV_ENTRY 73 __field(u64, offs) 74 __field(u64, val) 75 ), 76 TP_fast_assign( 77 DEV_ASSIGN; 78 __entry->offs = offs; 79 __entry->val = val; 80 ), 81 TP_printk("[%s] write io[%llu] = %llu)", 82 __get_str(dev), __entry->offs, __entry->val) 83 ); 84 85 TRACE_EVENT(iwlwifi_dev_iowrite_prph32, 86 TP_PROTO(const struct device *dev, u32 offs, u32 val), 87 TP_ARGS(dev, offs, val), 88 TP_STRUCT__entry( 89 DEV_ENTRY 90 __field(u32, offs) 91 __field(u32, val) 92 ), 93 TP_fast_assign( 94 DEV_ASSIGN; 95 __entry->offs = offs; 96 __entry->val = val; 97 ), 98 TP_printk("[%s] write PRPH[%#x] = %#x)", 99 __get_str(dev), __entry->offs, __entry->val) 100 ); 101 102 TRACE_EVENT(iwlwifi_dev_iowrite_prph64, 103 TP_PROTO(const struct device *dev, u64 offs, u64 val), 104 TP_ARGS(dev, offs, val), 105 TP_STRUCT__entry( 106 DEV_ENTRY 107 __field(u64, offs) 108 __field(u64, val) 109 ), 110 TP_fast_assign( 111 DEV_ASSIGN; 112 __entry->offs = offs; 113 __entry->val = val; 114 ), 115 TP_printk("[%s] write PRPH[%llu] = %llu)", 116 __get_str(dev), __entry->offs, __entry->val) 117 ); 118 119 TRACE_EVENT(iwlwifi_dev_ioread_prph32, 120 TP_PROTO(const struct device *dev, u32 offs, u32 val), 121 TP_ARGS(dev, offs, val), 122 TP_STRUCT__entry( 123 DEV_ENTRY 124 __field(u32, offs) 125 __field(u32, val) 126 ), 127 TP_fast_assign( 128 DEV_ASSIGN; 129 __entry->offs = offs; 130 __entry->val = val; 131 ), 132 TP_printk("[%s] read PRPH[%#x] = %#x", 133 __get_str(dev), __entry->offs, __entry->val) 134 ); 135 136 TRACE_EVENT(iwlwifi_dev_irq, 137 TP_PROTO(const struct device *dev), 138 TP_ARGS(dev), 139 TP_STRUCT__entry( 140 DEV_ENTRY 141 ), 142 TP_fast_assign( 143 DEV_ASSIGN; 144 ), 145 /* TP_printk("") doesn't compile */ 146 TP_printk("%d", 0) 147 ); 148 149 TRACE_EVENT(iwlwifi_dev_irq_msix, 150 TP_PROTO(const struct device *dev, struct msix_entry *msix_entry, 151 bool defirq, u32 inta_fh, u32 inta_hw), 152 TP_ARGS(dev, msix_entry, defirq, inta_fh, inta_hw), 153 TP_STRUCT__entry( 154 DEV_ENTRY 155 __field(u32, entry) 156 __field(u8, defirq) 157 __field(u32, inta_fh) 158 __field(u32, inta_hw) 159 ), 160 TP_fast_assign( 161 DEV_ASSIGN; 162 __entry->entry = msix_entry->entry; 163 __entry->defirq = defirq; 164 __entry->inta_fh = inta_fh; 165 __entry->inta_hw = inta_hw; 166 ), 167 TP_printk("entry:%d defirq:%d fh:0x%x, hw:0x%x", 168 __entry->entry, __entry->defirq, 169 __entry->inta_fh, __entry->inta_hw) 170 ); 171 172 TRACE_EVENT(iwlwifi_dev_ict_read, 173 TP_PROTO(const struct device *dev, u32 index, u32 value), 174 TP_ARGS(dev, index, value), 175 TP_STRUCT__entry( 176 DEV_ENTRY 177 __field(u32, index) 178 __field(u32, value) 179 ), 180 TP_fast_assign( 181 DEV_ASSIGN; 182 __entry->index = index; 183 __entry->value = value; 184 ), 185 TP_printk("[%s] read ict[%d] = %#.8x", 186 __get_str(dev), __entry->index, __entry->value) 187 ); 188 #endif /* __IWLWIFI_DEVICE_TRACE_IO */ 189 190 #undef TRACE_INCLUDE_PATH 191 #define TRACE_INCLUDE_PATH . 192 #undef TRACE_INCLUDE_FILE 193 #define TRACE_INCLUDE_FILE iwl-devtrace-io 194 #include <trace/define_trace.h> 195