| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // SPDX-License-Identifier: GPL-2.0-or-later
- // Copyright (c) 2024 Takashi Sakamoto
- #undef TRACE_SYSTEM
- #define TRACE_SYSTEM firewire_ohci
- #if !defined(_FIREWIRE_OHCI_TRACE_EVENT_H) || defined(TRACE_HEADER_MULTI_READ)
- #define _FIREWIRE_OHCI_TRACE_EVENT_H
- #include <linux/tracepoint.h>
- // Some macros and helper functions are defined in 'drivers/firewire/ohci.c'.
- TRACE_EVENT(irqs,
- TP_PROTO(unsigned int card_index, u32 events),
- TP_ARGS(card_index, events),
- TP_STRUCT__entry(
- __field(u8, card_index)
- __field(u32, events)
- ),
- TP_fast_assign(
- __entry->card_index = card_index;
- __entry->events = events;
- ),
- TP_printk(
- "card_index=%u events=%s",
- __entry->card_index,
- __print_flags(__entry->events, "|",
- { OHCI1394_selfIDComplete, "selfIDComplete" },
- { OHCI1394_RQPkt, "RQPkt" },
- { OHCI1394_RSPkt, "RSPkt" },
- { OHCI1394_reqTxComplete, "reqTxComplete" },
- { OHCI1394_respTxComplete, "respTxComplete" },
- { OHCI1394_isochRx, "isochRx" },
- { OHCI1394_isochTx, "isochTx" },
- { OHCI1394_postedWriteErr, "postedWriteErr" },
- { OHCI1394_cycleTooLong, "cycleTooLong" },
- { OHCI1394_cycle64Seconds, "cycle64Seconds" },
- { OHCI1394_cycleInconsistent, "cycleInconsistent" },
- { OHCI1394_regAccessFail, "regAccessFail" },
- { OHCI1394_unrecoverableError, "unrecoverableError" },
- { OHCI1394_busReset, "busReset" }
- )
- )
- );
- #define QUADLET_SIZE 4
- #define SELF_ID_COUNT_IS_ERROR(reg) \
- (!!(((reg) & OHCI1394_SelfIDCount_selfIDError_MASK) >> OHCI1394_SelfIDCount_selfIDError_SHIFT))
- #define SELF_ID_COUNT_GET_GENERATION(reg) \
- (((reg) & OHCI1394_SelfIDCount_selfIDGeneration_MASK) >> OHCI1394_SelfIDCount_selfIDGeneration_SHIFT)
- #define SELF_ID_RECEIVE_Q0_GET_GENERATION(quadlet) \
- (((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_GENERATION_SHIFT)
- #define SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(quadlet) \
- (((quadlet) & OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_MASK) >> OHCI1394_SELF_ID_RECEIVE_Q0_TIMESTAMP_SHIFT)
- TRACE_EVENT(self_id_complete,
- TP_PROTO(unsigned int card_index, u32 reg, const __le32 *self_id_receive, bool has_be_header_quirk),
- TP_ARGS(card_index, reg, self_id_receive, has_be_header_quirk),
- TP_STRUCT__entry(
- __field(u8, card_index)
- __field(u32, reg)
- __dynamic_array(u32, self_id_receive, ohci1394_self_id_count_get_size(reg))
- ),
- TP_fast_assign(
- __entry->card_index = card_index;
- __entry->reg = reg;
- {
- u32 *ptr = __get_dynamic_array(self_id_receive);
- int i;
- for (i = 0; i < __get_dynamic_array_len(self_id_receive) / QUADLET_SIZE; ++i)
- ptr[i] = cond_le32_to_cpu(self_id_receive[i], has_be_header_quirk);
- }
- ),
- TP_printk(
- "card_index=%u is_error=%s generation_at_bus_reset=%u generation_at_completion=%u timestamp=0x%04x packet_data=%s",
- __entry->card_index,
- SELF_ID_COUNT_IS_ERROR(__entry->reg) ? "true" : "false",
- SELF_ID_COUNT_GET_GENERATION(__entry->reg),
- SELF_ID_RECEIVE_Q0_GET_GENERATION(((const u32 *)__get_dynamic_array(self_id_receive))[0]),
- SELF_ID_RECEIVE_Q0_GET_TIMESTAMP(((const u32 *)__get_dynamic_array(self_id_receive))[0]),
- __print_array(((const u32 *)__get_dynamic_array(self_id_receive)) + 1,
- (__get_dynamic_array_len(self_id_receive) / QUADLET_SIZE) - 1, QUADLET_SIZE)
- )
- );
- #undef SELF_ID_COUNT_IS_ERROR
- #undef SELF_ID_COUNT_GET_GENERATION
- #undef SELF_ID_RECEIVE_Q0_GET_GENERATION
- #undef SELF_ID_RECEIVE_Q0_GET_TIMESTAMP
- #undef QUADLET_SIZE
- #endif // _FIREWIRE_OHCI_TRACE_EVENT_H
- #include <trace/define_trace.h>
|