cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cdnsp-trace.h (22118B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Cadence CDNSP DRD Driver.
      4 * Trace support header file
      5 *
      6 * Copyright (C) 2020 Cadence.
      7 *
      8 * Author: Pawel Laszczak <pawell@cadence.com>
      9 *
     10 */
     11
     12#undef TRACE_SYSTEM
     13#define TRACE_SYSTEM cdnsp-dev
     14
     15/*
     16 * The TRACE_SYSTEM_VAR defaults to TRACE_SYSTEM, but must be a
     17 * legitimate C variable. It is not exported to user space.
     18 */
     19#undef TRACE_SYSTEM_VAR
     20#define TRACE_SYSTEM_VAR cdnsp_dev
     21
     22#if !defined(__CDNSP_DEV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
     23#define __CDNSP_DEV_TRACE_H
     24
     25#include <linux/tracepoint.h>
     26#include "cdnsp-gadget.h"
     27#include "cdnsp-debug.h"
     28
     29/*
     30 * There is limitation for single buffer size in TRACEPOINT subsystem.
     31 * By default TRACE_BUF_SIZE is 1024, so no all data will be logged.
     32 * To show more data this must be increased. In most cases the default
     33 * value is sufficient.
     34 */
     35#define CDNSP_MSG_MAX 500
     36
     37DECLARE_EVENT_CLASS(cdnsp_log_ep,
     38	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     39	TP_ARGS(pep, stream_id),
     40	TP_STRUCT__entry(
     41		__string(name, pep->name)
     42		__field(unsigned int, state)
     43		__field(u32, stream_id)
     44		__field(u8, enabled)
     45		__field(unsigned int, num_streams)
     46		__field(int, td_count)
     47		__field(u8, first_prime_det)
     48		__field(u8, drbls_count)
     49	),
     50	TP_fast_assign(
     51		__assign_str(name, pep->name);
     52		__entry->state = pep->ep_state;
     53		__entry->stream_id = stream_id;
     54		__entry->enabled = pep->ep_state & EP_HAS_STREAMS;
     55		__entry->num_streams = pep->stream_info.num_streams;
     56		__entry->td_count = pep->stream_info.td_count;
     57		__entry->first_prime_det = pep->stream_info.first_prime_det;
     58		__entry->drbls_count = pep->stream_info.drbls_count;
     59	),
     60	TP_printk("%s: SID: %08x, ep state: %x, stream: enabled: %d num %d "
     61		  "tds %d, first prime: %d drbls %d",
     62		  __get_str(name), __entry->stream_id, __entry->state,
     63		  __entry->enabled, __entry->num_streams, __entry->td_count,
     64		  __entry->first_prime_det, __entry->drbls_count)
     65);
     66
     67DEFINE_EVENT(cdnsp_log_ep, cdnsp_tr_drbl,
     68	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     69	TP_ARGS(pep, stream_id)
     70);
     71
     72DEFINE_EVENT(cdnsp_log_ep, cdnsp_wait_for_prime,
     73	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     74	TP_ARGS(pep, stream_id)
     75);
     76
     77DEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_list_empty_with_skip,
     78	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     79	TP_ARGS(pep, stream_id)
     80);
     81
     82DEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_enable_end,
     83	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     84	TP_ARGS(pep, stream_id)
     85);
     86
     87DEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_disable_end,
     88	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     89	TP_ARGS(pep, stream_id)
     90);
     91
     92DEFINE_EVENT(cdnsp_log_ep, cdnsp_ep_busy_try_halt_again,
     93	TP_PROTO(struct cdnsp_ep *pep, u32 stream_id),
     94	TP_ARGS(pep, stream_id)
     95);
     96
     97DECLARE_EVENT_CLASS(cdnsp_log_enable_disable,
     98	TP_PROTO(int set),
     99	TP_ARGS(set),
    100	TP_STRUCT__entry(
    101		__field(int, set)
    102	),
    103	TP_fast_assign(
    104		__entry->set = set;
    105	),
    106	TP_printk("%s", __entry->set ? "enabled" : "disabled")
    107);
    108
    109DEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_pullup,
    110	TP_PROTO(int set),
    111	TP_ARGS(set)
    112);
    113
    114DEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_u1,
    115	TP_PROTO(int set),
    116	TP_ARGS(set)
    117);
    118
    119DEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_u2,
    120	TP_PROTO(int set),
    121	TP_ARGS(set)
    122);
    123
    124DEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_lpm,
    125	TP_PROTO(int set),
    126	TP_ARGS(set)
    127);
    128
    129DEFINE_EVENT(cdnsp_log_enable_disable, cdnsp_may_wakeup,
    130	TP_PROTO(int set),
    131	TP_ARGS(set)
    132);
    133
    134DECLARE_EVENT_CLASS(cdnsp_log_simple,
    135	TP_PROTO(char *msg),
    136	TP_ARGS(msg),
    137	TP_STRUCT__entry(
    138		__string(text, msg)
    139	),
    140	TP_fast_assign(
    141		__assign_str(text, msg);
    142	),
    143	TP_printk("%s", __get_str(text))
    144);
    145
    146DEFINE_EVENT(cdnsp_log_simple, cdnsp_exit,
    147	TP_PROTO(char *msg),
    148	TP_ARGS(msg)
    149);
    150
    151DEFINE_EVENT(cdnsp_log_simple, cdnsp_init,
    152	TP_PROTO(char *msg),
    153	TP_ARGS(msg)
    154);
    155
    156DEFINE_EVENT(cdnsp_log_simple, cdnsp_slot_id,
    157	TP_PROTO(char *msg),
    158	TP_ARGS(msg)
    159);
    160
    161DEFINE_EVENT(cdnsp_log_simple, cdnsp_no_room_on_ring,
    162	TP_PROTO(char *msg),
    163	TP_ARGS(msg)
    164);
    165
    166DEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_status_stage,
    167	TP_PROTO(char *msg),
    168	TP_ARGS(msg)
    169);
    170
    171DEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_request,
    172	TP_PROTO(char *msg),
    173	TP_ARGS(msg)
    174);
    175
    176DEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_set_config,
    177	TP_PROTO(char *msg),
    178	TP_ARGS(msg)
    179);
    180
    181DEFINE_EVENT(cdnsp_log_simple, cdnsp_ep0_halted,
    182	TP_PROTO(char *msg),
    183	TP_ARGS(msg)
    184);
    185
    186DEFINE_EVENT(cdnsp_log_simple, cdnsp_ep_halt,
    187	TP_PROTO(char *msg),
    188	TP_ARGS(msg)
    189);
    190
    191TRACE_EVENT(cdnsp_looking_trb_in_td,
    192	TP_PROTO(dma_addr_t suspect, dma_addr_t trb_start, dma_addr_t trb_end,
    193		 dma_addr_t curr_seg, dma_addr_t end_seg),
    194	TP_ARGS(suspect, trb_start, trb_end, curr_seg, end_seg),
    195	TP_STRUCT__entry(
    196		__field(dma_addr_t, suspect)
    197		__field(dma_addr_t, trb_start)
    198		__field(dma_addr_t, trb_end)
    199		__field(dma_addr_t, curr_seg)
    200		__field(dma_addr_t, end_seg)
    201	),
    202	TP_fast_assign(
    203		__entry->suspect = suspect;
    204		__entry->trb_start = trb_start;
    205		__entry->trb_end = trb_end;
    206		__entry->curr_seg = curr_seg;
    207		__entry->end_seg = end_seg;
    208	),
    209	TP_printk("DMA: suspect event: %pad, trb-start: %pad, trb-end %pad, "
    210		  "seg-start %pad, seg-end %pad",
    211		  &__entry->suspect, &__entry->trb_start, &__entry->trb_end,
    212		  &__entry->curr_seg, &__entry->end_seg)
    213);
    214
    215TRACE_EVENT(cdnsp_port_info,
    216	TP_PROTO(__le32 __iomem *addr, u32 offset, u32 count, u32 rev),
    217	TP_ARGS(addr, offset, count, rev),
    218	TP_STRUCT__entry(
    219		__field(__le32 __iomem *, addr)
    220		__field(u32, offset)
    221		__field(u32, count)
    222		__field(u32, rev)
    223	),
    224	TP_fast_assign(
    225		__entry->addr = addr;
    226		__entry->offset = offset;
    227		__entry->count = count;
    228		__entry->rev = rev;
    229	),
    230	TP_printk("Ext Cap %p, port offset = %u, count = %u, rev = 0x%x",
    231		  __entry->addr, __entry->offset, __entry->count, __entry->rev)
    232);
    233
    234DECLARE_EVENT_CLASS(cdnsp_log_deq_state,
    235	TP_PROTO(struct cdnsp_dequeue_state *state),
    236	TP_ARGS(state),
    237	TP_STRUCT__entry(
    238		__field(int, new_cycle_state)
    239		__field(struct cdnsp_segment *, new_deq_seg)
    240		__field(dma_addr_t, deq_seg_dma)
    241		__field(union cdnsp_trb	*, new_deq_ptr)
    242		__field(dma_addr_t, deq_ptr_dma)
    243	),
    244	TP_fast_assign(
    245		__entry->new_cycle_state = state->new_cycle_state;
    246		__entry->new_deq_seg = state->new_deq_seg;
    247		__entry->deq_seg_dma = state->new_deq_seg->dma;
    248		__entry->new_deq_ptr = state->new_deq_ptr,
    249		__entry->deq_ptr_dma = cdnsp_trb_virt_to_dma(state->new_deq_seg,
    250							     state->new_deq_ptr);
    251	),
    252	TP_printk("New cycle state = 0x%x, New dequeue segment = %p (0x%pad dma), "
    253		  "New dequeue pointer = %p (0x%pad dma)",
    254		  __entry->new_cycle_state, __entry->new_deq_seg,
    255		  &__entry->deq_seg_dma, __entry->new_deq_ptr,
    256		  &__entry->deq_ptr_dma
    257	)
    258);
    259
    260DEFINE_EVENT(cdnsp_log_deq_state, cdnsp_new_deq_state,
    261	TP_PROTO(struct cdnsp_dequeue_state *state),
    262	TP_ARGS(state)
    263);
    264
    265DECLARE_EVENT_CLASS(cdnsp_log_ctrl,
    266	TP_PROTO(struct usb_ctrlrequest *ctrl),
    267	TP_ARGS(ctrl),
    268	TP_STRUCT__entry(
    269		__field(u8, bRequestType)
    270		__field(u8, bRequest)
    271		__field(u16, wValue)
    272		__field(u16, wIndex)
    273		__field(u16, wLength)
    274		__dynamic_array(char, str, CDNSP_MSG_MAX)
    275	),
    276	TP_fast_assign(
    277		__entry->bRequestType = ctrl->bRequestType;
    278		__entry->bRequest = ctrl->bRequest;
    279		__entry->wValue = le16_to_cpu(ctrl->wValue);
    280		__entry->wIndex = le16_to_cpu(ctrl->wIndex);
    281		__entry->wLength = le16_to_cpu(ctrl->wLength);
    282	),
    283	TP_printk("%s", usb_decode_ctrl(__get_str(str), CDNSP_MSG_MAX,
    284					__entry->bRequestType,
    285					__entry->bRequest, __entry->wValue,
    286					__entry->wIndex, __entry->wLength)
    287	)
    288);
    289
    290DEFINE_EVENT(cdnsp_log_ctrl, cdnsp_ctrl_req,
    291	TP_PROTO(struct usb_ctrlrequest *ctrl),
    292	TP_ARGS(ctrl)
    293);
    294
    295DECLARE_EVENT_CLASS(cdnsp_log_bounce,
    296	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
    297		 dma_addr_t dma, unsigned int unalign),
    298	TP_ARGS(preq, new_buf_len, offset, dma, unalign),
    299	TP_STRUCT__entry(
    300		__string(name, preq->pep->name)
    301		__field(u32, new_buf_len)
    302		__field(u32, offset)
    303		__field(dma_addr_t, dma)
    304		__field(unsigned int, unalign)
    305	),
    306	TP_fast_assign(
    307		__assign_str(name, preq->pep->name);
    308		__entry->new_buf_len = new_buf_len;
    309		__entry->offset = offset;
    310		__entry->dma = dma;
    311		__entry->unalign = unalign;
    312	),
    313	TP_printk("%s buf len %d, offset %d, dma %pad, unalign %d",
    314		  __get_str(name), __entry->new_buf_len,
    315		  __entry->offset, &__entry->dma, __entry->unalign
    316	)
    317);
    318
    319DEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_align_td_split,
    320	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
    321		 dma_addr_t dma, unsigned int unalign),
    322	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
    323);
    324
    325DEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_map,
    326	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
    327		 dma_addr_t dma, unsigned int unalign),
    328	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
    329);
    330
    331DEFINE_EVENT(cdnsp_log_bounce, cdnsp_bounce_unmap,
    332	TP_PROTO(struct cdnsp_request *preq, u32 new_buf_len, u32 offset,
    333		 dma_addr_t dma, unsigned int unalign),
    334	TP_ARGS(preq, new_buf_len, offset, dma, unalign)
    335);
    336
    337DECLARE_EVENT_CLASS(cdnsp_log_trb,
    338	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    339	TP_ARGS(ring, trb),
    340	TP_STRUCT__entry(
    341		__field(u32, type)
    342		__field(u32, field0)
    343		__field(u32, field1)
    344		__field(u32, field2)
    345		__field(u32, field3)
    346		__field(union cdnsp_trb *, trb)
    347		__field(dma_addr_t, trb_dma)
    348		__dynamic_array(char, str, CDNSP_MSG_MAX)
    349	),
    350	TP_fast_assign(
    351		__entry->type = ring->type;
    352		__entry->field0 = le32_to_cpu(trb->field[0]);
    353		__entry->field1 = le32_to_cpu(trb->field[1]);
    354		__entry->field2 = le32_to_cpu(trb->field[2]);
    355		__entry->field3 = le32_to_cpu(trb->field[3]);
    356		__entry->trb = (union cdnsp_trb *)trb;
    357		__entry->trb_dma = cdnsp_trb_virt_to_dma(ring->deq_seg,
    358							 (union cdnsp_trb *)trb);
    359
    360	),
    361	TP_printk("%s: %s trb: %p(%pad)", cdnsp_ring_type_string(__entry->type),
    362		  cdnsp_decode_trb(__get_str(str), CDNSP_MSG_MAX,
    363				   __entry->field0, __entry->field1,
    364				   __entry->field2, __entry->field3),
    365				   __entry->trb, &__entry->trb_dma
    366	)
    367);
    368
    369DEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_event,
    370	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    371	TP_ARGS(ring, trb)
    372);
    373
    374DEFINE_EVENT(cdnsp_log_trb, cdnsp_trb_without_td,
    375	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    376	TP_ARGS(ring, trb)
    377);
    378
    379DEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_command,
    380	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    381	TP_ARGS(ring, trb)
    382);
    383
    384DEFINE_EVENT(cdnsp_log_trb, cdnsp_handle_transfer,
    385	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    386	TP_ARGS(ring, trb)
    387);
    388
    389DEFINE_EVENT(cdnsp_log_trb, cdnsp_queue_trb,
    390	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    391	TP_ARGS(ring, trb)
    392);
    393
    394DEFINE_EVENT(cdnsp_log_trb, cdnsp_cmd_wait_for_compl,
    395	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    396	TP_ARGS(ring, trb)
    397);
    398
    399DEFINE_EVENT(cdnsp_log_trb, cdnsp_cmd_timeout,
    400	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    401	TP_ARGS(ring, trb)
    402);
    403
    404DEFINE_EVENT(cdnsp_log_trb, cdnsp_defered_event,
    405	TP_PROTO(struct cdnsp_ring *ring, struct cdnsp_generic_trb *trb),
    406	TP_ARGS(ring, trb)
    407);
    408
    409DECLARE_EVENT_CLASS(cdnsp_log_pdev,
    410	TP_PROTO(struct cdnsp_device *pdev),
    411	TP_ARGS(pdev),
    412	TP_STRUCT__entry(
    413		__field(struct cdnsp_device *, pdev)
    414		__field(struct usb_gadget *, gadget)
    415		__field(dma_addr_t, out_ctx)
    416		__field(dma_addr_t, in_ctx)
    417		__field(u8, port_num)
    418	),
    419	TP_fast_assign(
    420		__entry->pdev = pdev;
    421		__entry->gadget = &pdev->gadget;
    422		__entry->in_ctx = pdev->in_ctx.dma;
    423		__entry->out_ctx = pdev->out_ctx.dma;
    424		__entry->port_num = pdev->active_port ?
    425				pdev->active_port->port_num : 0xFF;
    426	),
    427	TP_printk("pdev %p gadget %p ctx %pad | %pad, port %d ",
    428		  __entry->pdev, __entry->gadget, &__entry->in_ctx,
    429		  &__entry->out_ctx, __entry->port_num
    430	)
    431);
    432
    433DEFINE_EVENT(cdnsp_log_pdev, cdnsp_alloc_priv_device,
    434	TP_PROTO(struct cdnsp_device *vdev),
    435	TP_ARGS(vdev)
    436);
    437
    438DEFINE_EVENT(cdnsp_log_pdev, cdnsp_free_priv_device,
    439	TP_PROTO(struct cdnsp_device *vdev),
    440	TP_ARGS(vdev)
    441);
    442
    443DEFINE_EVENT(cdnsp_log_pdev, cdnsp_setup_device,
    444	TP_PROTO(struct cdnsp_device *vdev),
    445	TP_ARGS(vdev)
    446);
    447
    448DEFINE_EVENT(cdnsp_log_pdev, cdnsp_setup_addressable_priv_device,
    449	TP_PROTO(struct cdnsp_device *vdev),
    450	TP_ARGS(vdev)
    451);
    452
    453DECLARE_EVENT_CLASS(cdnsp_log_request,
    454	TP_PROTO(struct cdnsp_request *req),
    455	TP_ARGS(req),
    456	TP_STRUCT__entry(
    457		__string(name, req->pep->name)
    458		__field(struct usb_request *, request)
    459		__field(struct cdnsp_request *, preq)
    460		__field(void *, buf)
    461		__field(unsigned int, actual)
    462		__field(unsigned int, length)
    463		__field(int, status)
    464		__field(dma_addr_t, dma)
    465		__field(unsigned int, stream_id)
    466		__field(unsigned int, zero)
    467		__field(unsigned int, short_not_ok)
    468		__field(unsigned int, no_interrupt)
    469		__field(struct scatterlist*, sg)
    470		__field(unsigned int, num_sgs)
    471		__field(unsigned int, num_mapped_sgs)
    472
    473	),
    474	TP_fast_assign(
    475		__assign_str(name, req->pep->name);
    476		__entry->request = &req->request;
    477		__entry->preq = req;
    478		__entry->buf = req->request.buf;
    479		__entry->actual = req->request.actual;
    480		__entry->length = req->request.length;
    481		__entry->status = req->request.status;
    482		__entry->dma = req->request.dma;
    483		__entry->stream_id = req->request.stream_id;
    484		__entry->zero = req->request.zero;
    485		__entry->short_not_ok = req->request.short_not_ok;
    486		__entry->no_interrupt = req->request.no_interrupt;
    487		__entry->sg = req->request.sg;
    488		__entry->num_sgs = req->request.num_sgs;
    489		__entry->num_mapped_sgs = req->request.num_mapped_sgs;
    490	),
    491	TP_printk("%s; req U:%p/P:%p, req buf %p, length %u/%u, status %d, "
    492		  "buf dma (%pad), SID %u, %s%s%s, sg %p, num_sg %d,"
    493		  " num_m_sg %d",
    494		  __get_str(name), __entry->request, __entry->preq,
    495		  __entry->buf, __entry->actual, __entry->length,
    496		  __entry->status, &__entry->dma,
    497		  __entry->stream_id, __entry->zero ? "Z" : "z",
    498		  __entry->short_not_ok ? "S" : "s",
    499		  __entry->no_interrupt ? "I" : "i",
    500		  __entry->sg, __entry->num_sgs, __entry->num_mapped_sgs
    501		)
    502);
    503
    504DEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue,
    505	TP_PROTO(struct cdnsp_request *req),
    506	TP_ARGS(req)
    507);
    508
    509DEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue_busy,
    510	TP_PROTO(struct cdnsp_request *req),
    511	TP_ARGS(req)
    512);
    513
    514DEFINE_EVENT(cdnsp_log_request, cdnsp_request_enqueue_error,
    515	TP_PROTO(struct cdnsp_request *req),
    516	TP_ARGS(req)
    517);
    518
    519DEFINE_EVENT(cdnsp_log_request, cdnsp_request_dequeue,
    520	TP_PROTO(struct cdnsp_request *req),
    521	TP_ARGS(req)
    522);
    523
    524DEFINE_EVENT(cdnsp_log_request, cdnsp_request_giveback,
    525	TP_PROTO(struct cdnsp_request *req),
    526	TP_ARGS(req)
    527);
    528
    529DEFINE_EVENT(cdnsp_log_request, cdnsp_alloc_request,
    530	TP_PROTO(struct cdnsp_request *req),
    531	TP_ARGS(req)
    532);
    533
    534DEFINE_EVENT(cdnsp_log_request, cdnsp_free_request,
    535	TP_PROTO(struct cdnsp_request *req),
    536	TP_ARGS(req)
    537);
    538
    539DECLARE_EVENT_CLASS(cdnsp_log_ep_ctx,
    540	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    541	TP_ARGS(ctx),
    542	TP_STRUCT__entry(
    543		__field(u32, info)
    544		__field(u32, info2)
    545		__field(u64, deq)
    546		__field(u32, tx_info)
    547		__dynamic_array(char, str, CDNSP_MSG_MAX)
    548	),
    549	TP_fast_assign(
    550		__entry->info = le32_to_cpu(ctx->ep_info);
    551		__entry->info2 = le32_to_cpu(ctx->ep_info2);
    552		__entry->deq = le64_to_cpu(ctx->deq);
    553		__entry->tx_info = le32_to_cpu(ctx->tx_info);
    554	),
    555	TP_printk("%s", cdnsp_decode_ep_context(__get_str(str), CDNSP_MSG_MAX,
    556						__entry->info, __entry->info2,
    557						__entry->deq, __entry->tx_info)
    558	)
    559);
    560
    561DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_ep_disabled,
    562	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    563	TP_ARGS(ctx)
    564);
    565
    566DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_ep_stopped_or_disabled,
    567	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    568	TP_ARGS(ctx)
    569);
    570
    571DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_remove_request,
    572	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    573	TP_ARGS(ctx)
    574);
    575
    576DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_stop_ep,
    577	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    578	TP_ARGS(ctx)
    579);
    580
    581DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_flush_ep,
    582	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    583	TP_ARGS(ctx)
    584);
    585
    586DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_set_deq_ep,
    587	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    588	TP_ARGS(ctx)
    589);
    590
    591DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_reset_ep,
    592	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    593	TP_ARGS(ctx)
    594);
    595
    596DEFINE_EVENT(cdnsp_log_ep_ctx, cdnsp_handle_cmd_config_ep,
    597	TP_PROTO(struct cdnsp_ep_ctx *ctx),
    598	TP_ARGS(ctx)
    599);
    600
    601DECLARE_EVENT_CLASS(cdnsp_log_slot_ctx,
    602	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    603	TP_ARGS(ctx),
    604	TP_STRUCT__entry(
    605		__field(u32, info)
    606		__field(u32, info2)
    607		__field(u32, int_target)
    608		__field(u32, state)
    609	),
    610	TP_fast_assign(
    611		__entry->info = le32_to_cpu(ctx->dev_info);
    612		__entry->info2 = le32_to_cpu(ctx->dev_port);
    613		__entry->int_target = le32_to_cpu(ctx->int_target);
    614		__entry->state = le32_to_cpu(ctx->dev_state);
    615	),
    616	TP_printk("%s", cdnsp_decode_slot_context(__entry->info,
    617						  __entry->info2,
    618						  __entry->int_target,
    619						  __entry->state)
    620	)
    621);
    622
    623DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_slot_already_in_default,
    624	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    625	TP_ARGS(ctx)
    626);
    627
    628DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_enable_slot,
    629	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    630	TP_ARGS(ctx)
    631);
    632
    633DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_disable_slot,
    634	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    635	TP_ARGS(ctx)
    636);
    637
    638DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_reset_device,
    639	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    640	TP_ARGS(ctx)
    641);
    642
    643DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_setup_device_slot,
    644	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    645	TP_ARGS(ctx)
    646);
    647
    648DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_addr_dev,
    649	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    650	TP_ARGS(ctx)
    651);
    652
    653DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_reset_dev,
    654	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    655	TP_ARGS(ctx)
    656);
    657
    658DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_handle_cmd_set_deq,
    659	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    660	TP_ARGS(ctx)
    661);
    662
    663DEFINE_EVENT(cdnsp_log_slot_ctx, cdnsp_configure_endpoint,
    664	TP_PROTO(struct cdnsp_slot_ctx *ctx),
    665	TP_ARGS(ctx)
    666);
    667
    668DECLARE_EVENT_CLASS(cdnsp_log_td_info,
    669	TP_PROTO(struct cdnsp_request *preq),
    670	TP_ARGS(preq),
    671	TP_STRUCT__entry(
    672		__string(name, preq->pep->name)
    673		__field(struct usb_request *, request)
    674		__field(struct cdnsp_request *, preq)
    675		__field(union cdnsp_trb *, first_trb)
    676		__field(union cdnsp_trb *, last_trb)
    677		__field(dma_addr_t, trb_dma)
    678	),
    679	TP_fast_assign(
    680		__assign_str(name, preq->pep->name);
    681		__entry->request = &preq->request;
    682		__entry->preq = preq;
    683		__entry->first_trb = preq->td.first_trb;
    684		__entry->last_trb = preq->td.last_trb;
    685		__entry->trb_dma = cdnsp_trb_virt_to_dma(preq->td.start_seg,
    686							 preq->td.first_trb)
    687	),
    688	TP_printk("%s req/preq:  %p/%p, first trb %p[vir]/%pad(dma), last trb %p",
    689		  __get_str(name), __entry->request, __entry->preq,
    690		  __entry->first_trb, &__entry->trb_dma,
    691		  __entry->last_trb
    692		)
    693);
    694
    695DEFINE_EVENT(cdnsp_log_td_info, cdnsp_remove_request_td,
    696	TP_PROTO(struct cdnsp_request *preq),
    697	TP_ARGS(preq)
    698);
    699
    700DECLARE_EVENT_CLASS(cdnsp_log_ring,
    701	TP_PROTO(struct cdnsp_ring *ring),
    702	TP_ARGS(ring),
    703	TP_STRUCT__entry(
    704		__field(u32, type)
    705		__field(void *, ring)
    706		__field(dma_addr_t, enq)
    707		__field(dma_addr_t, deq)
    708		__field(dma_addr_t, enq_seg)
    709		__field(dma_addr_t, deq_seg)
    710		__field(unsigned int, num_segs)
    711		__field(unsigned int, stream_id)
    712		__field(unsigned int, cycle_state)
    713		__field(unsigned int, num_trbs_free)
    714		__field(unsigned int, bounce_buf_len)
    715	),
    716	TP_fast_assign(
    717		__entry->ring = ring;
    718		__entry->type = ring->type;
    719		__entry->num_segs = ring->num_segs;
    720		__entry->stream_id = ring->stream_id;
    721		__entry->enq_seg = ring->enq_seg->dma;
    722		__entry->deq_seg = ring->deq_seg->dma;
    723		__entry->cycle_state = ring->cycle_state;
    724		__entry->num_trbs_free = ring->num_trbs_free;
    725		__entry->bounce_buf_len = ring->bounce_buf_len;
    726		__entry->enq = cdnsp_trb_virt_to_dma(ring->enq_seg,
    727						     ring->enqueue);
    728		__entry->deq = cdnsp_trb_virt_to_dma(ring->deq_seg,
    729						     ring->dequeue);
    730	),
    731	TP_printk("%s %p: enq %pad(%pad) deq %pad(%pad) segs %d stream %d"
    732		  " free_trbs %d bounce %d cycle %d",
    733		  cdnsp_ring_type_string(__entry->type), __entry->ring,
    734		  &__entry->enq, &__entry->enq_seg,
    735		  &__entry->deq, &__entry->deq_seg,
    736		  __entry->num_segs,
    737		  __entry->stream_id,
    738		  __entry->num_trbs_free,
    739		  __entry->bounce_buf_len,
    740		  __entry->cycle_state
    741		)
    742);
    743
    744DEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_alloc,
    745	TP_PROTO(struct cdnsp_ring *ring),
    746	TP_ARGS(ring)
    747);
    748
    749DEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_free,
    750	TP_PROTO(struct cdnsp_ring *ring),
    751	TP_ARGS(ring)
    752);
    753
    754DEFINE_EVENT(cdnsp_log_ring, cdnsp_set_stream_ring,
    755	TP_PROTO(struct cdnsp_ring *ring),
    756	TP_ARGS(ring)
    757);
    758
    759DEFINE_EVENT(cdnsp_log_ring, cdnsp_ring_expansion,
    760	TP_PROTO(struct cdnsp_ring *ring),
    761	TP_ARGS(ring)
    762);
    763
    764DEFINE_EVENT(cdnsp_log_ring, cdnsp_inc_enq,
    765	TP_PROTO(struct cdnsp_ring *ring),
    766	TP_ARGS(ring)
    767);
    768
    769DEFINE_EVENT(cdnsp_log_ring, cdnsp_inc_deq,
    770	TP_PROTO(struct cdnsp_ring *ring),
    771	TP_ARGS(ring)
    772);
    773
    774DECLARE_EVENT_CLASS(cdnsp_log_portsc,
    775		TP_PROTO(u32 portnum, u32 portsc),
    776		TP_ARGS(portnum, portsc),
    777		TP_STRUCT__entry(
    778				__field(u32, portnum)
    779				__field(u32, portsc)
    780				__dynamic_array(char, str, CDNSP_MSG_MAX)
    781				),
    782		TP_fast_assign(
    783				__entry->portnum = portnum;
    784				__entry->portsc = portsc;
    785				),
    786		TP_printk("port-%d: %s",
    787			  __entry->portnum,
    788			  cdnsp_decode_portsc(__get_str(str), CDNSP_MSG_MAX,
    789					      __entry->portsc)
    790			)
    791);
    792
    793DEFINE_EVENT(cdnsp_log_portsc, cdnsp_handle_port_status,
    794		TP_PROTO(u32 portnum, u32 portsc),
    795		TP_ARGS(portnum, portsc)
    796);
    797
    798DEFINE_EVENT(cdnsp_log_portsc, cdnsp_link_state_changed,
    799		TP_PROTO(u32 portnum, u32 portsc),
    800		TP_ARGS(portnum, portsc)
    801);
    802
    803TRACE_EVENT(cdnsp_stream_number,
    804	TP_PROTO(struct cdnsp_ep *pep, int num_stream_ctxs, int num_streams),
    805	TP_ARGS(pep, num_stream_ctxs, num_streams),
    806	TP_STRUCT__entry(
    807		__string(name, pep->name)
    808		__field(int, num_stream_ctxs)
    809		__field(int, num_streams)
    810	),
    811	TP_fast_assign(
    812		__entry->num_stream_ctxs = num_stream_ctxs;
    813		__entry->num_streams = num_streams;
    814	),
    815	TP_printk("%s Need %u stream ctx entries for %u stream IDs.",
    816		  __get_str(name), __entry->num_stream_ctxs,
    817		  __entry->num_streams)
    818);
    819
    820#endif /* __CDNSP_TRACE_H */
    821
    822/* this part must be outside header guard */
    823
    824#undef TRACE_INCLUDE_PATH
    825#define TRACE_INCLUDE_PATH .
    826
    827#undef TRACE_INCLUDE_FILE
    828#define TRACE_INCLUDE_FILE cdnsp-trace
    829
    830#include <trace/define_trace.h>