162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Cadence CDNSP DRD Driver.
462306a36Sopenharmony_ci * Trace support header file
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Copyright (C) 2020 Cadence.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Author: Pawel Laszczak <pawell@cadence.com>
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#undef TRACE_SYSTEM
1362306a36Sopenharmony_ci#define TRACE_SYSTEM cdnsp-dev
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * The TRACE_SYSTEM_VAR defaults to TRACE_SYSTEM, but must be a
1762306a36Sopenharmony_ci * legitimate C variable. It is not exported to user space.
1862306a36Sopenharmony_ci */
1962306a36Sopenharmony_ci#undef TRACE_SYSTEM_VAR
2062306a36Sopenharmony_ci#define TRACE_SYSTEM_VAR cdnsp_dev
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#if !defined(__CDNSP_DEV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
2362306a36Sopenharmony_ci#define __CDNSP_DEV_TRACE_H
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#include <linux/tracepoint.h>
2662306a36Sopenharmony_ci#include "cdnsp-gadget.h"
2762306a36Sopenharmony_ci#include "cdnsp-debug.h"
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci/*
3062306a36Sopenharmony_ci * There is limitation for single buffer size in TRACEPOINT subsystem.
3162306a36Sopenharmony_ci * By default TRACE_BUF_SIZE is 1024, so no all data will be logged.
3262306a36Sopenharmony_ci * To show more data this must be increased. In most cases the default
3362306a36Sopenharmony_ci * value is sufficient.
3462306a36Sopenharmony_ci */
3562306a36Sopenharmony_ci#define CDNSP_MSG_MAX 500
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_ep,
3862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
3962306a36Sopenharmony_ci	TP_ARGS(pep, stream_id),
4062306a36Sopenharmony_ci	TP_STRUCT__entry(
4162306a36Sopenharmony_ci		__string(name, pep->name)
4262306a36Sopenharmony_ci		__field(unsigned int, state)
4362306a36Sopenharmony_ci		__field(u32, stream_id)
4462306a36Sopenharmony_ci		__field(u8, enabled)
4562306a36Sopenharmony_ci		__field(unsigned int, num_streams)
4662306a36Sopenharmony_ci		__field(int, td_count)
4762306a36Sopenharmony_ci		__field(u8, first_prime_det)
4862306a36Sopenharmony_ci		__field(u8, drbls_count)
4962306a36Sopenharmony_ci	),
5062306a36Sopenharmony_ci	TP_fast_assign(
5162306a36Sopenharmony_ci		__assign_str(name, pep->name);
5262306a36Sopenharmony_ci		__entry->state = pep->ep_state;
5362306a36Sopenharmony_ci		__entry->stream_id = stream_id;
5462306a36Sopenharmony_ci		__entry->enabled = pep->ep_state & EP_HAS_STREAMS;
5562306a36Sopenharmony_ci		__entry->num_streams = pep->stream_info.num_streams;
5662306a36Sopenharmony_ci		__entry->td_count = pep->stream_info.td_count;
5762306a36Sopenharmony_ci		__entry->first_prime_det = pep->stream_info.first_prime_det;
5862306a36Sopenharmony_ci		__entry->drbls_count = pep->stream_info.drbls_count;
5962306a36Sopenharmony_ci	),
6062306a36Sopenharmony_ci	TP_printk("%s: SID: %08x, ep state: %x, stream: enabled: %d num %d "
6162306a36Sopenharmony_ci		  "tds %d, first prime: %d drbls %d",
6262306a36Sopenharmony_ci		  __get_str(name), __entry->stream_id, __entry->state,
6362306a36Sopenharmony_ci		  __entry->enabled, __entry->num_streams, __entry->td_count,
6462306a36Sopenharmony_ci		  __entry->first_prime_det, __entry->drbls_count)
6562306a36Sopenharmony_ci);
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_tr_drbl,
6862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
6962306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
7062306a36Sopenharmony_ci);
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_wait_for_prime,
7362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
7462306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
7562306a36Sopenharmony_ci);
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_list_empty_with_skip,
7862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
7962306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
8062306a36Sopenharmony_ci);
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_enable_end,
8362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
8462306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
8562306a36Sopenharmony_ci);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_disable_end,
8862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
8962306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
9062306a36Sopenharmony_ci);
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_busy_try_halt_again,
9362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
9462306a36Sopenharmony_ci	TP_ARGS(pep, stream_id)
9562306a36Sopenharmony_ci);
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_enable_disable,
9862306a36Sopenharmony_ci	TP_PROTO(int set),
9962306a36Sopenharmony_ci	TP_ARGS(set),
10062306a36Sopenharmony_ci	TP_STRUCT__entry(
10162306a36Sopenharmony_ci		__field(int, set)
10262306a36Sopenharmony_ci	),
10362306a36Sopenharmony_ci	TP_fast_assign(
10462306a36Sopenharmony_ci		__entry->set = set;
10562306a36Sopenharmony_ci	),
10662306a36Sopenharmony_ci	TP_printk("%s", __entry->set ? "enabled" : "disabled")
10762306a36Sopenharmony_ci);
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_pullup,
11062306a36Sopenharmony_ci	TP_PROTO(int set),
11162306a36Sopenharmony_ci	TP_ARGS(set)
11262306a36Sopenharmony_ci);
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_u1,
11562306a36Sopenharmony_ci	TP_PROTO(int set),
11662306a36Sopenharmony_ci	TP_ARGS(set)
11762306a36Sopenharmony_ci);
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_u2,
12062306a36Sopenharmony_ci	TP_PROTO(int set),
12162306a36Sopenharmony_ci	TP_ARGS(set)
12262306a36Sopenharmony_ci);
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_lpm,
12562306a36Sopenharmony_ci	TP_PROTO(int set),
12662306a36Sopenharmony_ci	TP_ARGS(set)
12762306a36Sopenharmony_ci);
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_may_wakeup,
13062306a36Sopenharmony_ci	TP_PROTO(int set),
13162306a36Sopenharmony_ci	TP_ARGS(set)
13262306a36Sopenharmony_ci);
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_simple,
13562306a36Sopenharmony_ci	TP_PROTO(char *msg),
13662306a36Sopenharmony_ci	TP_ARGS(msg),
13762306a36Sopenharmony_ci	TP_STRUCT__entry(
13862306a36Sopenharmony_ci		__string(text, msg)
13962306a36Sopenharmony_ci	),
14062306a36Sopenharmony_ci	TP_fast_assign(
14162306a36Sopenharmony_ci		__assign_str(text, msg);
14262306a36Sopenharmony_ci	),
14362306a36Sopenharmony_ci	TP_printk("%s", __get_str(text))
14462306a36Sopenharmony_ci);
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_exit,
14762306a36Sopenharmony_ci	TP_PROTO(char *msg),
14862306a36Sopenharmony_ci	TP_ARGS(msg)
14962306a36Sopenharmony_ci);
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_init,
15262306a36Sopenharmony_ci	TP_PROTO(char *msg),
15362306a36Sopenharmony_ci	TP_ARGS(msg)
15462306a36Sopenharmony_ci);
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_slot_id,
15762306a36Sopenharmony_ci	TP_PROTO(char *msg),
15862306a36Sopenharmony_ci	TP_ARGS(msg)
15962306a36Sopenharmony_ci);
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_no_room_on_ring,
16262306a36Sopenharmony_ci	TP_PROTO(char *msg),
16362306a36Sopenharmony_ci	TP_ARGS(msg)
16462306a36Sopenharmony_ci);
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_status_stage,
16762306a36Sopenharmony_ci	TP_PROTO(char *msg),
16862306a36Sopenharmony_ci	TP_ARGS(msg)
16962306a36Sopenharmony_ci);
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_request,
17262306a36Sopenharmony_ci	TP_PROTO(char *msg),
17362306a36Sopenharmony_ci	TP_ARGS(msg)
17462306a36Sopenharmony_ci);
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_set_config,
17762306a36Sopenharmony_ci	TP_PROTO(char *msg),
17862306a36Sopenharmony_ci	TP_ARGS(msg)
17962306a36Sopenharmony_ci);
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_halted,
18262306a36Sopenharmony_ci	TP_PROTO(char *msg),
18362306a36Sopenharmony_ci	TP_ARGS(msg)
18462306a36Sopenharmony_ci);
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_simple, cdnsp_ep_halt,
18762306a36Sopenharmony_ci	TP_PROTO(char *msg),
18862306a36Sopenharmony_ci	TP_ARGS(msg)
18962306a36Sopenharmony_ci);
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ciTRACE_EVENT(cdnsp_looking_trb_in_td,
19262306a36Sopenharmony_ci	TP_PROTO(dma_addr_t suspect, dma_addr_t trb_start, dma_addr_t trb_end,
19362306a36Sopenharmony_ci		 dma_addr_t curr_seg, dma_addr_t end_seg),
19462306a36Sopenharmony_ci	TP_ARGS(suspect, trb_start, trb_end, curr_seg, end_seg),
19562306a36Sopenharmony_ci	TP_STRUCT__entry(
19662306a36Sopenharmony_ci		__field(dma_addr_t, suspect)
19762306a36Sopenharmony_ci		__field(dma_addr_t, trb_start)
19862306a36Sopenharmony_ci		__field(dma_addr_t, trb_end)
19962306a36Sopenharmony_ci		__field(dma_addr_t, curr_seg)
20062306a36Sopenharmony_ci		__field(dma_addr_t, end_seg)
20162306a36Sopenharmony_ci	),
20262306a36Sopenharmony_ci	TP_fast_assign(
20362306a36Sopenharmony_ci		__entry->suspect = suspect;
20462306a36Sopenharmony_ci		__entry->trb_start = trb_start;
20562306a36Sopenharmony_ci		__entry->trb_end = trb_end;
20662306a36Sopenharmony_ci		__entry->curr_seg = curr_seg;
20762306a36Sopenharmony_ci		__entry->end_seg = end_seg;
20862306a36Sopenharmony_ci	),
20962306a36Sopenharmony_ci	TP_printk("DMA: suspect event: %pad, trb-start: %pad, trb-end %pad, "
21062306a36Sopenharmony_ci		  "seg-start %pad, seg-end %pad",
21162306a36Sopenharmony_ci		  &__entry->suspect, &__entry->trb_start, &__entry->trb_end,
21262306a36Sopenharmony_ci		  &__entry->curr_seg, &__entry->end_seg)
21362306a36Sopenharmony_ci);
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ciTRACE_EVENT(cdnsp_port_info,
21662306a36Sopenharmony_ci	TP_PROTO(__le32 __iomem *addr, u32 offset, u32 count, u32 rev),
21762306a36Sopenharmony_ci	TP_ARGS(addr, offset, count, rev),
21862306a36Sopenharmony_ci	TP_STRUCT__entry(
21962306a36Sopenharmony_ci		__field(__le32 __iomem *, addr)
22062306a36Sopenharmony_ci		__field(u32, offset)
22162306a36Sopenharmony_ci		__field(u32, count)
22262306a36Sopenharmony_ci		__field(u32, rev)
22362306a36Sopenharmony_ci	),
22462306a36Sopenharmony_ci	TP_fast_assign(
22562306a36Sopenharmony_ci		__entry->addr = addr;
22662306a36Sopenharmony_ci		__entry->offset = offset;
22762306a36Sopenharmony_ci		__entry->count = count;
22862306a36Sopenharmony_ci		__entry->rev = rev;
22962306a36Sopenharmony_ci	),
23062306a36Sopenharmony_ci	TP_printk("Ext Cap %p, port offset = %u, count = %u, rev = 0x%x",
23162306a36Sopenharmony_ci		  __entry->addr, __entry->offset, __entry->count, __entry->rev)
23262306a36Sopenharmony_ci);
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_deq_state,
23562306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_dequeue_state *state),
23662306a36Sopenharmony_ci	TP_ARGS(state),
23762306a36Sopenharmony_ci	TP_STRUCT__entry(
23862306a36Sopenharmony_ci		__field(int, new_cycle_state)
23962306a36Sopenharmony_ci		__field(struct cdnsp_segment *, new_deq_seg)
24062306a36Sopenharmony_ci		__field(dma_addr_t, deq_seg_dma)
24162306a36Sopenharmony_ci		__field(union cdnsp_trb	*, new_deq_ptr)
24262306a36Sopenharmony_ci		__field(dma_addr_t, deq_ptr_dma)
24362306a36Sopenharmony_ci	),
24462306a36Sopenharmony_ci	TP_fast_assign(
24562306a36Sopenharmony_ci		__entry->new_cycle_state = state->new_cycle_state;
24662306a36Sopenharmony_ci		__entry->new_deq_seg = state->new_deq_seg;
24762306a36Sopenharmony_ci		__entry->deq_seg_dma = state->new_deq_seg->dma;
24862306a36Sopenharmony_ci		__entry->new_deq_ptr = state->new_deq_ptr,
24962306a36Sopenharmony_ci		__entry->deq_ptr_dma = cdnsp_trb_virt_to_dma(state->new_deq_seg,
25062306a36Sopenharmony_ci							     state->new_deq_ptr);
25162306a36Sopenharmony_ci	),
25262306a36Sopenharmony_ci	TP_printk("New cycle state = 0x%x, New dequeue segment = %p (0x%pad dma), "
25362306a36Sopenharmony_ci		  "New dequeue pointer = %p (0x%pad dma)",
25462306a36Sopenharmony_ci		  __entry->new_cycle_state, __entry->new_deq_seg,
25562306a36Sopenharmony_ci		  &__entry->deq_seg_dma, __entry->new_deq_ptr,
25662306a36Sopenharmony_ci		  &__entry->deq_ptr_dma
25762306a36Sopenharmony_ci	)
25862306a36Sopenharmony_ci);
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_deq_state, cdnsp_new_deq_state,
26162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_dequeue_state *state),
26262306a36Sopenharmony_ci	TP_ARGS(state)
26362306a36Sopenharmony_ci);
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_ctrl,
26662306a36Sopenharmony_ci	TP_PROTO(struct usb_ctrlrequest *ctrl),
26762306a36Sopenharmony_ci	TP_ARGS(ctrl),
26862306a36Sopenharmony_ci	TP_STRUCT__entry(
26962306a36Sopenharmony_ci		__field(u8, bRequestType)
27062306a36Sopenharmony_ci		__field(u8, bRequest)
27162306a36Sopenharmony_ci		__field(u16, wValue)
27262306a36Sopenharmony_ci		__field(u16, wIndex)
27362306a36Sopenharmony_ci		__field(u16, wLength)
27462306a36Sopenharmony_ci	),
27562306a36Sopenharmony_ci	TP_fast_assign(
27662306a36Sopenharmony_ci		__entry->bRequestType = ctrl->bRequestType;
27762306a36Sopenharmony_ci		__entry->bRequest = ctrl->bRequest;
27862306a36Sopenharmony_ci		__entry->wValue = le16_to_cpu(ctrl->wValue);
27962306a36Sopenharmony_ci		__entry->wIndex = le16_to_cpu(ctrl->wIndex);
28062306a36Sopenharmony_ci		__entry->wLength = le16_to_cpu(ctrl->wLength);
28162306a36Sopenharmony_ci	),
28262306a36Sopenharmony_ci	TP_printk("%s", usb_decode_ctrl(__get_buf(CDNSP_MSG_MAX), CDNSP_MSG_MAX,
28362306a36Sopenharmony_ci					__entry->bRequestType,
28462306a36Sopenharmony_ci					__entry->bRequest, __entry->wValue,
28562306a36Sopenharmony_ci					__entry->wIndex, __entry->wLength)
28662306a36Sopenharmony_ci	)
28762306a36Sopenharmony_ci);
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ctrl, cdnsp_ctrl_req,
29062306a36Sopenharmony_ci	TP_PROTO(struct usb_ctrlrequest *ctrl),
29162306a36Sopenharmony_ci	TP_ARGS(ctrl)
29262306a36Sopenharmony_ci);
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_bounce,
29562306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
29662306a36Sopenharmony_ci		 dma_addr_t dma, unsigned int unalign),
29762306a36Sopenharmony_ci	TP_ARGS(preq, new_buf_len, offset, dma, unalign),
29862306a36Sopenharmony_ci	TP_STRUCT__entry(
29962306a36Sopenharmony_ci		__string(name, preq->pep->name)
30062306a36Sopenharmony_ci		__field(u32, new_buf_len)
30162306a36Sopenharmony_ci		__field(u32, offset)
30262306a36Sopenharmony_ci		__field(dma_addr_t, dma)
30362306a36Sopenharmony_ci		__field(unsigned int, unalign)
30462306a36Sopenharmony_ci	),
30562306a36Sopenharmony_ci	TP_fast_assign(
30662306a36Sopenharmony_ci		__assign_str(name, preq->pep->name);
30762306a36Sopenharmony_ci		__entry->new_buf_len = new_buf_len;
30862306a36Sopenharmony_ci		__entry->offset = offset;
30962306a36Sopenharmony_ci		__entry->dma = dma;
31062306a36Sopenharmony_ci		__entry->unalign = unalign;
31162306a36Sopenharmony_ci	),
31262306a36Sopenharmony_ci	TP_printk("%s buf len %d, offset %d, dma %pad, unalign %d",
31362306a36Sopenharmony_ci		  __get_str(name), __entry->new_buf_len,
31462306a36Sopenharmony_ci		  __entry->offset, &__entry->dma, __entry->unalign
31562306a36Sopenharmony_ci	)
31662306a36Sopenharmony_ci);
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_align_td_split,
31962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
32062306a36Sopenharmony_ci		 dma_addr_t dma, unsigned int unalign),
32162306a36Sopenharmony_ci	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
32262306a36Sopenharmony_ci);
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_map,
32562306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
32662306a36Sopenharmony_ci		 dma_addr_t dma, unsigned int unalign),
32762306a36Sopenharmony_ci	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
32862306a36Sopenharmony_ci);
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_unmap,
33162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
33262306a36Sopenharmony_ci		 dma_addr_t dma, unsigned int unalign),
33362306a36Sopenharmony_ci	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
33462306a36Sopenharmony_ci);
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_trb,
33762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
33862306a36Sopenharmony_ci	TP_ARGS(ring, trb),
33962306a36Sopenharmony_ci	TP_STRUCT__entry(
34062306a36Sopenharmony_ci		__field(u32, type)
34162306a36Sopenharmony_ci		__field(u32, field0)
34262306a36Sopenharmony_ci		__field(u32, field1)
34362306a36Sopenharmony_ci		__field(u32, field2)
34462306a36Sopenharmony_ci		__field(u32, field3)
34562306a36Sopenharmony_ci		__field(union cdnsp_trb *, trb)
34662306a36Sopenharmony_ci		__field(dma_addr_t, trb_dma)
34762306a36Sopenharmony_ci	),
34862306a36Sopenharmony_ci	TP_fast_assign(
34962306a36Sopenharmony_ci		__entry->type = ring->type;
35062306a36Sopenharmony_ci		__entry->field0 = le32_to_cpu(trb->field[0]);
35162306a36Sopenharmony_ci		__entry->field1 = le32_to_cpu(trb->field[1]);
35262306a36Sopenharmony_ci		__entry->field2 = le32_to_cpu(trb->field[2]);
35362306a36Sopenharmony_ci		__entry->field3 = le32_to_cpu(trb->field[3]);
35462306a36Sopenharmony_ci		__entry->trb = (union cdnsp_trb *)trb;
35562306a36Sopenharmony_ci		__entry->trb_dma = cdnsp_trb_virt_to_dma(ring->deq_seg,
35662306a36Sopenharmony_ci							 (union cdnsp_trb *)trb);
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci	),
35962306a36Sopenharmony_ci	TP_printk("%s: %s trb: %p(%pad)", cdnsp_ring_type_string(__entry->type),
36062306a36Sopenharmony_ci		  cdnsp_decode_trb(__get_buf(CDNSP_MSG_MAX), CDNSP_MSG_MAX,
36162306a36Sopenharmony_ci				   __entry->field0, __entry->field1,
36262306a36Sopenharmony_ci				   __entry->field2, __entry->field3),
36362306a36Sopenharmony_ci				   __entry->trb, &__entry->trb_dma
36462306a36Sopenharmony_ci	)
36562306a36Sopenharmony_ci);
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_event,
36862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
36962306a36Sopenharmony_ci	TP_ARGS(ring, trb)
37062306a36Sopenharmony_ci);
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_trb_without_td,
37362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
37462306a36Sopenharmony_ci	TP_ARGS(ring, trb)
37562306a36Sopenharmony_ci);
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_command,
37862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
37962306a36Sopenharmony_ci	TP_ARGS(ring, trb)
38062306a36Sopenharmony_ci);
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_transfer,
38362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
38462306a36Sopenharmony_ci	TP_ARGS(ring, trb)
38562306a36Sopenharmony_ci);
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_queue_trb,
38862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
38962306a36Sopenharmony_ci	TP_ARGS(ring, trb)
39062306a36Sopenharmony_ci);
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_cmd_wait_for_compl,
39362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
39462306a36Sopenharmony_ci	TP_ARGS(ring, trb)
39562306a36Sopenharmony_ci);
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_cmd_timeout,
39862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
39962306a36Sopenharmony_ci	TP_ARGS(ring, trb)
40062306a36Sopenharmony_ci);
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_trb, cdnsp_defered_event,
40362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
40462306a36Sopenharmony_ci	TP_ARGS(ring, trb)
40562306a36Sopenharmony_ci);
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_pdev,
40862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_device *pdev),
40962306a36Sopenharmony_ci	TP_ARGS(pdev),
41062306a36Sopenharmony_ci	TP_STRUCT__entry(
41162306a36Sopenharmony_ci		__field(struct cdnsp_device *, pdev)
41262306a36Sopenharmony_ci		__field(struct usb_gadget *, gadget)
41362306a36Sopenharmony_ci		__field(dma_addr_t, out_ctx)
41462306a36Sopenharmony_ci		__field(dma_addr_t, in_ctx)
41562306a36Sopenharmony_ci		__field(u8, port_num)
41662306a36Sopenharmony_ci	),
41762306a36Sopenharmony_ci	TP_fast_assign(
41862306a36Sopenharmony_ci		__entry->pdev = pdev;
41962306a36Sopenharmony_ci		__entry->gadget = &pdev->gadget;
42062306a36Sopenharmony_ci		__entry->in_ctx = pdev->in_ctx.dma;
42162306a36Sopenharmony_ci		__entry->out_ctx = pdev->out_ctx.dma;
42262306a36Sopenharmony_ci		__entry->port_num = pdev->active_port ?
42362306a36Sopenharmony_ci				pdev->active_port->port_num : 0xFF;
42462306a36Sopenharmony_ci	),
42562306a36Sopenharmony_ci	TP_printk("pdev %p gadget %p ctx %pad | %pad, port %d ",
42662306a36Sopenharmony_ci		  __entry->pdev, __entry->gadget, &__entry->in_ctx,
42762306a36Sopenharmony_ci		  &__entry->out_ctx, __entry->port_num
42862306a36Sopenharmony_ci	)
42962306a36Sopenharmony_ci);
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_pdev, cdnsp_alloc_priv_device,
43262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_device *vdev),
43362306a36Sopenharmony_ci	TP_ARGS(vdev)
43462306a36Sopenharmony_ci);
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_pdev, cdnsp_free_priv_device,
43762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_device *vdev),
43862306a36Sopenharmony_ci	TP_ARGS(vdev)
43962306a36Sopenharmony_ci);
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_pdev, cdnsp_setup_device,
44262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_device *vdev),
44362306a36Sopenharmony_ci	TP_ARGS(vdev)
44462306a36Sopenharmony_ci);
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_pdev, cdnsp_setup_addressable_priv_device,
44762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_device *vdev),
44862306a36Sopenharmony_ci	TP_ARGS(vdev)
44962306a36Sopenharmony_ci);
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_request,
45262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
45362306a36Sopenharmony_ci	TP_ARGS(req),
45462306a36Sopenharmony_ci	TP_STRUCT__entry(
45562306a36Sopenharmony_ci		__string(name, req->pep->name)
45662306a36Sopenharmony_ci		__field(struct usb_request *, request)
45762306a36Sopenharmony_ci		__field(struct cdnsp_request *, preq)
45862306a36Sopenharmony_ci		__field(void *, buf)
45962306a36Sopenharmony_ci		__field(unsigned int, actual)
46062306a36Sopenharmony_ci		__field(unsigned int, length)
46162306a36Sopenharmony_ci		__field(int, status)
46262306a36Sopenharmony_ci		__field(dma_addr_t, dma)
46362306a36Sopenharmony_ci		__field(unsigned int, stream_id)
46462306a36Sopenharmony_ci		__field(unsigned int, zero)
46562306a36Sopenharmony_ci		__field(unsigned int, short_not_ok)
46662306a36Sopenharmony_ci		__field(unsigned int, no_interrupt)
46762306a36Sopenharmony_ci		__field(struct scatterlist*, sg)
46862306a36Sopenharmony_ci		__field(unsigned int, num_sgs)
46962306a36Sopenharmony_ci		__field(unsigned int, num_mapped_sgs)
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci	),
47262306a36Sopenharmony_ci	TP_fast_assign(
47362306a36Sopenharmony_ci		__assign_str(name, req->pep->name);
47462306a36Sopenharmony_ci		__entry->request = &req->request;
47562306a36Sopenharmony_ci		__entry->preq = req;
47662306a36Sopenharmony_ci		__entry->buf = req->request.buf;
47762306a36Sopenharmony_ci		__entry->actual = req->request.actual;
47862306a36Sopenharmony_ci		__entry->length = req->request.length;
47962306a36Sopenharmony_ci		__entry->status = req->request.status;
48062306a36Sopenharmony_ci		__entry->dma = req->request.dma;
48162306a36Sopenharmony_ci		__entry->stream_id = req->request.stream_id;
48262306a36Sopenharmony_ci		__entry->zero = req->request.zero;
48362306a36Sopenharmony_ci		__entry->short_not_ok = req->request.short_not_ok;
48462306a36Sopenharmony_ci		__entry->no_interrupt = req->request.no_interrupt;
48562306a36Sopenharmony_ci		__entry->sg = req->request.sg;
48662306a36Sopenharmony_ci		__entry->num_sgs = req->request.num_sgs;
48762306a36Sopenharmony_ci		__entry->num_mapped_sgs = req->request.num_mapped_sgs;
48862306a36Sopenharmony_ci	),
48962306a36Sopenharmony_ci	TP_printk("%s; req U:%p/P:%p, req buf %p, length %u/%u, status %d, "
49062306a36Sopenharmony_ci		  "buf dma (%pad), SID %u, %s%s%s, sg %p, num_sg %d,"
49162306a36Sopenharmony_ci		  " num_m_sg %d",
49262306a36Sopenharmony_ci		  __get_str(name), __entry->request, __entry->preq,
49362306a36Sopenharmony_ci		  __entry->buf, __entry->actual, __entry->length,
49462306a36Sopenharmony_ci		  __entry->status, &__entry->dma,
49562306a36Sopenharmony_ci		  __entry->stream_id, __entry->zero ? "Z" : "z",
49662306a36Sopenharmony_ci		  __entry->short_not_ok ? "S" : "s",
49762306a36Sopenharmony_ci		  __entry->no_interrupt ? "I" : "i",
49862306a36Sopenharmony_ci		  __entry->sg, __entry->num_sgs, __entry->num_mapped_sgs
49962306a36Sopenharmony_ci		)
50062306a36Sopenharmony_ci);
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue,
50362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
50462306a36Sopenharmony_ci	TP_ARGS(req)
50562306a36Sopenharmony_ci);
50662306a36Sopenharmony_ci
50762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue_busy,
50862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
50962306a36Sopenharmony_ci	TP_ARGS(req)
51062306a36Sopenharmony_ci);
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue_error,
51362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
51462306a36Sopenharmony_ci	TP_ARGS(req)
51562306a36Sopenharmony_ci);
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_request_dequeue,
51862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
51962306a36Sopenharmony_ci	TP_ARGS(req)
52062306a36Sopenharmony_ci);
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_request_giveback,
52362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
52462306a36Sopenharmony_ci	TP_ARGS(req)
52562306a36Sopenharmony_ci);
52662306a36Sopenharmony_ci
52762306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_alloc_request,
52862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
52962306a36Sopenharmony_ci	TP_ARGS(req)
53062306a36Sopenharmony_ci);
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_request, cdnsp_free_request,
53362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *req),
53462306a36Sopenharmony_ci	TP_ARGS(req)
53562306a36Sopenharmony_ci);
53662306a36Sopenharmony_ci
53762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_ep_ctx,
53862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
53962306a36Sopenharmony_ci	TP_ARGS(ctx),
54062306a36Sopenharmony_ci	TP_STRUCT__entry(
54162306a36Sopenharmony_ci		__field(u32, info)
54262306a36Sopenharmony_ci		__field(u32, info2)
54362306a36Sopenharmony_ci		__field(u64, deq)
54462306a36Sopenharmony_ci		__field(u32, tx_info)
54562306a36Sopenharmony_ci	),
54662306a36Sopenharmony_ci	TP_fast_assign(
54762306a36Sopenharmony_ci		__entry->info = le32_to_cpu(ctx->ep_info);
54862306a36Sopenharmony_ci		__entry->info2 = le32_to_cpu(ctx->ep_info2);
54962306a36Sopenharmony_ci		__entry->deq = le64_to_cpu(ctx->deq);
55062306a36Sopenharmony_ci		__entry->tx_info = le32_to_cpu(ctx->tx_info);
55162306a36Sopenharmony_ci	),
55262306a36Sopenharmony_ci	TP_printk("%s", cdnsp_decode_ep_context(__get_buf(CDNSP_MSG_MAX), CDNSP_MSG_MAX,
55362306a36Sopenharmony_ci						__entry->info, __entry->info2,
55462306a36Sopenharmony_ci						__entry->deq, __entry->tx_info)
55562306a36Sopenharmony_ci	)
55662306a36Sopenharmony_ci);
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_ep_disabled,
55962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
56062306a36Sopenharmony_ci	TP_ARGS(ctx)
56162306a36Sopenharmony_ci);
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_ep_stopped_or_disabled,
56462306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
56562306a36Sopenharmony_ci	TP_ARGS(ctx)
56662306a36Sopenharmony_ci);
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_remove_request,
56962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
57062306a36Sopenharmony_ci	TP_ARGS(ctx)
57162306a36Sopenharmony_ci);
57262306a36Sopenharmony_ci
57362306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_stop_ep,
57462306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
57562306a36Sopenharmony_ci	TP_ARGS(ctx)
57662306a36Sopenharmony_ci);
57762306a36Sopenharmony_ci
57862306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_flush_ep,
57962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
58062306a36Sopenharmony_ci	TP_ARGS(ctx)
58162306a36Sopenharmony_ci);
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_set_deq_ep,
58462306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
58562306a36Sopenharmony_ci	TP_ARGS(ctx)
58662306a36Sopenharmony_ci);
58762306a36Sopenharmony_ci
58862306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_reset_ep,
58962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
59062306a36Sopenharmony_ci	TP_ARGS(ctx)
59162306a36Sopenharmony_ci);
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_config_ep,
59462306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep_ctx *ctx),
59562306a36Sopenharmony_ci	TP_ARGS(ctx)
59662306a36Sopenharmony_ci);
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_slot_ctx,
59962306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
60062306a36Sopenharmony_ci	TP_ARGS(ctx),
60162306a36Sopenharmony_ci	TP_STRUCT__entry(
60262306a36Sopenharmony_ci		__field(u32, info)
60362306a36Sopenharmony_ci		__field(u32, info2)
60462306a36Sopenharmony_ci		__field(u32, int_target)
60562306a36Sopenharmony_ci		__field(u32, state)
60662306a36Sopenharmony_ci	),
60762306a36Sopenharmony_ci	TP_fast_assign(
60862306a36Sopenharmony_ci		__entry->info = le32_to_cpu(ctx->dev_info);
60962306a36Sopenharmony_ci		__entry->info2 = le32_to_cpu(ctx->dev_port);
61062306a36Sopenharmony_ci		__entry->int_target = le32_to_cpu(ctx->int_target);
61162306a36Sopenharmony_ci		__entry->state = le32_to_cpu(ctx->dev_state);
61262306a36Sopenharmony_ci	),
61362306a36Sopenharmony_ci	TP_printk("%s", cdnsp_decode_slot_context(__entry->info,
61462306a36Sopenharmony_ci						  __entry->info2,
61562306a36Sopenharmony_ci						  __entry->int_target,
61662306a36Sopenharmony_ci						  __entry->state)
61762306a36Sopenharmony_ci	)
61862306a36Sopenharmony_ci);
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_slot_already_in_default,
62162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
62262306a36Sopenharmony_ci	TP_ARGS(ctx)
62362306a36Sopenharmony_ci);
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_enable_slot,
62662306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
62762306a36Sopenharmony_ci	TP_ARGS(ctx)
62862306a36Sopenharmony_ci);
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_disable_slot,
63162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
63262306a36Sopenharmony_ci	TP_ARGS(ctx)
63362306a36Sopenharmony_ci);
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_reset_device,
63662306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
63762306a36Sopenharmony_ci	TP_ARGS(ctx)
63862306a36Sopenharmony_ci);
63962306a36Sopenharmony_ci
64062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_setup_device_slot,
64162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
64262306a36Sopenharmony_ci	TP_ARGS(ctx)
64362306a36Sopenharmony_ci);
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_addr_dev,
64662306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
64762306a36Sopenharmony_ci	TP_ARGS(ctx)
64862306a36Sopenharmony_ci);
64962306a36Sopenharmony_ci
65062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_reset_dev,
65162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
65262306a36Sopenharmony_ci	TP_ARGS(ctx)
65362306a36Sopenharmony_ci);
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_set_deq,
65662306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
65762306a36Sopenharmony_ci	TP_ARGS(ctx)
65862306a36Sopenharmony_ci);
65962306a36Sopenharmony_ci
66062306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_configure_endpoint,
66162306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_slot_ctx *ctx),
66262306a36Sopenharmony_ci	TP_ARGS(ctx)
66362306a36Sopenharmony_ci);
66462306a36Sopenharmony_ci
66562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_td_info,
66662306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq),
66762306a36Sopenharmony_ci	TP_ARGS(preq),
66862306a36Sopenharmony_ci	TP_STRUCT__entry(
66962306a36Sopenharmony_ci		__string(name, preq->pep->name)
67062306a36Sopenharmony_ci		__field(struct usb_request *, request)
67162306a36Sopenharmony_ci		__field(struct cdnsp_request *, preq)
67262306a36Sopenharmony_ci		__field(union cdnsp_trb *, first_trb)
67362306a36Sopenharmony_ci		__field(union cdnsp_trb *, last_trb)
67462306a36Sopenharmony_ci		__field(dma_addr_t, trb_dma)
67562306a36Sopenharmony_ci	),
67662306a36Sopenharmony_ci	TP_fast_assign(
67762306a36Sopenharmony_ci		__assign_str(name, preq->pep->name);
67862306a36Sopenharmony_ci		__entry->request = &preq->request;
67962306a36Sopenharmony_ci		__entry->preq = preq;
68062306a36Sopenharmony_ci		__entry->first_trb = preq->td.first_trb;
68162306a36Sopenharmony_ci		__entry->last_trb = preq->td.last_trb;
68262306a36Sopenharmony_ci		__entry->trb_dma = cdnsp_trb_virt_to_dma(preq->td.start_seg,
68362306a36Sopenharmony_ci							 preq->td.first_trb)
68462306a36Sopenharmony_ci	),
68562306a36Sopenharmony_ci	TP_printk("%s req/preq:  %p/%p, first trb %p[vir]/%pad(dma), last trb %p",
68662306a36Sopenharmony_ci		  __get_str(name), __entry->request, __entry->preq,
68762306a36Sopenharmony_ci		  __entry->first_trb, &__entry->trb_dma,
68862306a36Sopenharmony_ci		  __entry->last_trb
68962306a36Sopenharmony_ci		)
69062306a36Sopenharmony_ci);
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_td_info, cdnsp_remove_request_td,
69362306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_request *preq),
69462306a36Sopenharmony_ci	TP_ARGS(preq)
69562306a36Sopenharmony_ci);
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_ring,
69862306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
69962306a36Sopenharmony_ci	TP_ARGS(ring),
70062306a36Sopenharmony_ci	TP_STRUCT__entry(
70162306a36Sopenharmony_ci		__field(u32, type)
70262306a36Sopenharmony_ci		__field(void *, ring)
70362306a36Sopenharmony_ci		__field(dma_addr_t, enq)
70462306a36Sopenharmony_ci		__field(dma_addr_t, deq)
70562306a36Sopenharmony_ci		__field(dma_addr_t, enq_seg)
70662306a36Sopenharmony_ci		__field(dma_addr_t, deq_seg)
70762306a36Sopenharmony_ci		__field(unsigned int, num_segs)
70862306a36Sopenharmony_ci		__field(unsigned int, stream_id)
70962306a36Sopenharmony_ci		__field(unsigned int, cycle_state)
71062306a36Sopenharmony_ci		__field(unsigned int, num_trbs_free)
71162306a36Sopenharmony_ci		__field(unsigned int, bounce_buf_len)
71262306a36Sopenharmony_ci	),
71362306a36Sopenharmony_ci	TP_fast_assign(
71462306a36Sopenharmony_ci		__entry->ring = ring;
71562306a36Sopenharmony_ci		__entry->type = ring->type;
71662306a36Sopenharmony_ci		__entry->num_segs = ring->num_segs;
71762306a36Sopenharmony_ci		__entry->stream_id = ring->stream_id;
71862306a36Sopenharmony_ci		__entry->enq_seg = ring->enq_seg->dma;
71962306a36Sopenharmony_ci		__entry->deq_seg = ring->deq_seg->dma;
72062306a36Sopenharmony_ci		__entry->cycle_state = ring->cycle_state;
72162306a36Sopenharmony_ci		__entry->num_trbs_free = ring->num_trbs_free;
72262306a36Sopenharmony_ci		__entry->bounce_buf_len = ring->bounce_buf_len;
72362306a36Sopenharmony_ci		__entry->enq = cdnsp_trb_virt_to_dma(ring->enq_seg,
72462306a36Sopenharmony_ci						     ring->enqueue);
72562306a36Sopenharmony_ci		__entry->deq = cdnsp_trb_virt_to_dma(ring->deq_seg,
72662306a36Sopenharmony_ci						     ring->dequeue);
72762306a36Sopenharmony_ci	),
72862306a36Sopenharmony_ci	TP_printk("%s %p: enq %pad(%pad) deq %pad(%pad) segs %d stream %d"
72962306a36Sopenharmony_ci		  " free_trbs %d bounce %d cycle %d",
73062306a36Sopenharmony_ci		  cdnsp_ring_type_string(__entry->type), __entry->ring,
73162306a36Sopenharmony_ci		  &__entry->enq, &__entry->enq_seg,
73262306a36Sopenharmony_ci		  &__entry->deq, &__entry->deq_seg,
73362306a36Sopenharmony_ci		  __entry->num_segs,
73462306a36Sopenharmony_ci		  __entry->stream_id,
73562306a36Sopenharmony_ci		  __entry->num_trbs_free,
73662306a36Sopenharmony_ci		  __entry->bounce_buf_len,
73762306a36Sopenharmony_ci		  __entry->cycle_state
73862306a36Sopenharmony_ci		)
73962306a36Sopenharmony_ci);
74062306a36Sopenharmony_ci
74162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_alloc,
74262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
74362306a36Sopenharmony_ci	TP_ARGS(ring)
74462306a36Sopenharmony_ci);
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_free,
74762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
74862306a36Sopenharmony_ci	TP_ARGS(ring)
74962306a36Sopenharmony_ci);
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_set_stream_ring,
75262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
75362306a36Sopenharmony_ci	TP_ARGS(ring)
75462306a36Sopenharmony_ci);
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_expansion,
75762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
75862306a36Sopenharmony_ci	TP_ARGS(ring)
75962306a36Sopenharmony_ci);
76062306a36Sopenharmony_ci
76162306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_inc_enq,
76262306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
76362306a36Sopenharmony_ci	TP_ARGS(ring)
76462306a36Sopenharmony_ci);
76562306a36Sopenharmony_ci
76662306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_ring, cdnsp_inc_deq,
76762306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ring *ring),
76862306a36Sopenharmony_ci	TP_ARGS(ring)
76962306a36Sopenharmony_ci);
77062306a36Sopenharmony_ci
77162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cdnsp_log_portsc,
77262306a36Sopenharmony_ci		TP_PROTO(u32 portnum, u32 portsc),
77362306a36Sopenharmony_ci		TP_ARGS(portnum, portsc),
77462306a36Sopenharmony_ci		TP_STRUCT__entry(
77562306a36Sopenharmony_ci				__field(u32, portnum)
77662306a36Sopenharmony_ci				__field(u32, portsc)
77762306a36Sopenharmony_ci				),
77862306a36Sopenharmony_ci		TP_fast_assign(
77962306a36Sopenharmony_ci				__entry->portnum = portnum;
78062306a36Sopenharmony_ci				__entry->portsc = portsc;
78162306a36Sopenharmony_ci				),
78262306a36Sopenharmony_ci		TP_printk("port-%d: %s",
78362306a36Sopenharmony_ci			  __entry->portnum,
78462306a36Sopenharmony_ci			  cdnsp_decode_portsc(__get_buf(CDNSP_MSG_MAX), CDNSP_MSG_MAX,
78562306a36Sopenharmony_ci					      __entry->portsc)
78662306a36Sopenharmony_ci			)
78762306a36Sopenharmony_ci);
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_portsc, cdnsp_handle_port_status,
79062306a36Sopenharmony_ci		TP_PROTO(u32 portnum, u32 portsc),
79162306a36Sopenharmony_ci		TP_ARGS(portnum, portsc)
79262306a36Sopenharmony_ci);
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ciDEFINE_EVENT(cdnsp_log_portsc, cdnsp_link_state_changed,
79562306a36Sopenharmony_ci		TP_PROTO(u32 portnum, u32 portsc),
79662306a36Sopenharmony_ci		TP_ARGS(portnum, portsc)
79762306a36Sopenharmony_ci);
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_ciTRACE_EVENT(cdnsp_stream_number,
80062306a36Sopenharmony_ci	TP_PROTO(struct cdnsp_ep *pep, int num_stream_ctxs, int num_streams),
80162306a36Sopenharmony_ci	TP_ARGS(pep, num_stream_ctxs, num_streams),
80262306a36Sopenharmony_ci	TP_STRUCT__entry(
80362306a36Sopenharmony_ci		__string(name, pep->name)
80462306a36Sopenharmony_ci		__field(int, num_stream_ctxs)
80562306a36Sopenharmony_ci		__field(int, num_streams)
80662306a36Sopenharmony_ci	),
80762306a36Sopenharmony_ci	TP_fast_assign(
80862306a36Sopenharmony_ci		__entry->num_stream_ctxs = num_stream_ctxs;
80962306a36Sopenharmony_ci		__entry->num_streams = num_streams;
81062306a36Sopenharmony_ci	),
81162306a36Sopenharmony_ci	TP_printk("%s Need %u stream ctx entries for %u stream IDs.",
81262306a36Sopenharmony_ci		  __get_str(name), __entry->num_stream_ctxs,
81362306a36Sopenharmony_ci		  __entry->num_streams)
81462306a36Sopenharmony_ci);
81562306a36Sopenharmony_ci
81662306a36Sopenharmony_ci#endif /* __CDNSP_TRACE_H */
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_ci/* this part must be outside header guard */
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
82162306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
82262306a36Sopenharmony_ci
82362306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
82462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE cdnsp-trace
82562306a36Sopenharmony_ci
82662306a36Sopenharmony_ci#include <trace/define_trace.h>
827