* @event: then event code
  */
 static inline const char *
-dwc3_ep_event_string(const struct dwc3_event_depevt *event)
+dwc3_ep_event_string(const struct dwc3_event_depevt *event, u32 ep0state)
 {
        u8 epnum = event->endpoint_number;
        static char str[256];
+       size_t len;
        int status;
        int ret;
 
        switch (event->endpoint_event) {
        case DWC3_DEPEVT_XFERCOMPLETE:
                strcat(str, "Transfer Complete");
+               len = strlen(str);
+
+               if (epnum <= 1)
+                       sprintf(str + len, " [%s]", dwc3_ep0_state_string(ep0state));
                break;
        case DWC3_DEPEVT_XFERINPROGRESS:
                strcat(str, "Transfer In-Progress");
        }
 }
 
-static inline const char *dwc3_decode_event(u32 event)
+static inline const char *dwc3_decode_event(u32 event, u32 ep0state)
 {
        const union dwc3_event evt = (union dwc3_event) event;
 
        if (evt.type.is_devspec)
                return dwc3_gadget_event_string(&evt.devt);
        else
-               return dwc3_ep_event_string(&evt.depevt);
+               return dwc3_ep_event_string(&evt.depevt, ep0state);
 }
 
 static inline const char *dwc3_ep_cmd_status_string(int status)
 
 void dwc3_ep0_interrupt(struct dwc3 *dwc,
                const struct dwc3_event_depevt *event)
 {
-       dwc3_trace(trace_dwc3_ep0, "%s: state '%s'",
-                       dwc3_ep_event_string(event),
-                       dwc3_ep0_state_string(dwc->ep0state));
-
        switch (event->endpoint_event) {
        case DWC3_DEPEVT_XFERCOMPLETE:
                dwc3_ep0_xfer_complete(dwc, event);
 
 static void dwc3_process_event_entry(struct dwc3 *dwc,
                const union dwc3_event *event)
 {
-       trace_dwc3_event(event->raw);
+       trace_dwc3_event(event->raw, dwc);
 
        /* Endpoint IRQ, handle it and return early */
        if (event->type.is_devspec == 0) {
 
 );
 
 DECLARE_EVENT_CLASS(dwc3_log_event,
-       TP_PROTO(u32 event),
-       TP_ARGS(event),
+       TP_PROTO(u32 event, struct dwc3 *dwc),
+       TP_ARGS(event, dwc),
        TP_STRUCT__entry(
                __field(u32, event)
+               __field(u32, ep0state)
        ),
        TP_fast_assign(
                __entry->event = event;
+               __entry->ep0state = dwc->ep0state;
        ),
        TP_printk("event (%08x): %s", __entry->event,
-                       dwc3_decode_event(__entry->event))
+                       dwc3_decode_event(__entry->event, __entry->ep0state))
 );
 
 DEFINE_EVENT(dwc3_log_event, dwc3_event,
-       TP_PROTO(u32 event),
-       TP_ARGS(event)
+       TP_PROTO(u32 event, struct dwc3 *dwc),
+       TP_ARGS(event, dwc)
 );
 
 DECLARE_EVENT_CLASS(dwc3_log_ctrl,