|
9 | 9 |
|
10 | 10 | #include <linux/tracepoint.h>
|
11 | 11 |
|
| 12 | +// Some macros and helper functions are defined in 'drivers/firewire/ohci.c'. |
| 13 | + |
12 | 14 | TRACE_EVENT(irqs,
|
13 | 15 | TP_PROTO(unsigned int card_index, u32 events),
|
14 | 16 | TP_ARGS(card_index, events),
|
@@ -42,6 +44,58 @@ TRACE_EVENT(irqs,
|
42 | 44 | )
|
43 | 45 | );
|
44 | 46 |
|
| 47 | +#define QUADLET_SIZE 4 |
| 48 | + |
| 49 | +#define SELF_ID_COUNT_IS_ERROR(reg) \ |
| 50 | + (!!(((reg) & OHCI1394_SelfIDCount_selfIDError_MASK) >> OHCI1394_SelfIDCount_selfIDError_SHIFT)) |
| 51 | + |
| 52 | +#define SELF_ID_COUNT_GET_GENERATION(reg) \ |
| 53 | + (((reg) & OHCI1394_SelfIDCount_selfIDGeneration_MASK) >> OHCI1394_SelfIDCount_selfIDGeneration_SHIFT) |
| 54 | + |
| 55 | +#define SELF_ID_RECEIVE_Q0_GET_GENERATION(quadlet) \ |
| 56 | + (((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_SHIFT) |
| 57 | + |
| 58 | +#define SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(quadlet) \ |
| 59 | + (((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_SHIFT) |
| 60 | + |
| 61 | +TRACE_EVENT(self_id_complete, |
| 62 | + TP_PROTO(unsigned int card_index, u32 reg, const __le32 *self_id_receive, bool has_be_header_quirk), |
| 63 | + TP_ARGS(card_index, reg, self_id_receive, has_be_header_quirk), |
| 64 | + TP_STRUCT__entry( |
| 65 | + __field(u8, card_index) |
| 66 | + __field(u32, reg) |
| 67 | + __dynamic_array(u32, self_id_receive, ohci1394_self_id_count_get_size(reg)) |
| 68 | + ), |
| 69 | + TP_fast_assign( |
| 70 | + __entry->card_index = card_index; |
| 71 | + __entry->reg = reg; |
| 72 | + { |
| 73 | + u32 *ptr = __get_dynamic_array(self_id_receive); |
| 74 | + int i; |
| 75 | + |
| 76 | + for (i = 0; i < __get_dynamic_array_len(self_id_receive) / QUADLET_SIZE; ++i) |
| 77 | + ptr[i] = cond_le32_to_cpu(self_id_receive[i], has_be_header_quirk); |
| 78 | + } |
| 79 | + ), |
| 80 | + TP_printk( |
| 81 | + "card_index=%u is_error=%s generation_at_bus_reset=%u generation_at_completion=%u timestamp=0x%04x packet_data=%s", |
| 82 | + __entry->card_index, |
| 83 | + SELF_ID_COUNT_IS_ERROR(__entry->reg) ? "true" : "false", |
| 84 | + SELF_ID_COUNT_GET_GENERATION(__entry->reg), |
| 85 | + SELF_ID_RECEIVE_Q0_GET_GENERATION(((const u32 *)__get_dynamic_array(self_id_receive))[0]), |
| 86 | + SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(((const u32 *)__get_dynamic_array(self_id_receive))[0]), |
| 87 | + __print_array(((const u32 *)__get_dynamic_array(self_id_receive)) + 1, |
| 88 | + (__get_dynamic_array_len(self_id_receive) / QUADLET_SIZE) - 1, QUADLET_SIZE) |
| 89 | + ) |
| 90 | +); |
| 91 | + |
| 92 | +#undef SELF_ID_COUNT_IS_ERROR |
| 93 | +#undef SELF_ID_COUNT_GET_GENERATION |
| 94 | +#undef SELF_ID_RECEIVE_Q0_GET_GENERATION |
| 95 | +#undef SELF_ID_RECEIVE_Q0_GET_TIMESTAMP |
| 96 | + |
| 97 | +#undef QUADLET_SIZE |
| 98 | + |
45 | 99 | #endif // _FIREWIRE_OHCI_TRACE_EVENT_H
|
46 | 100 |
|
47 | 101 | #include <trace/define_trace.h>
|
0 commit comments