Commit 43c96be1 authored by Felipe Balbi's avatar Felipe Balbi

usb: dwc3: trace: print out ep0state also from XferComplete

With this extra piece of information, it will be
easier to find mismatches between driver and HW.
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent cdd72ac2
...@@ -200,10 +200,11 @@ dwc3_gadget_event_string(const struct dwc3_event_devt *event) ...@@ -200,10 +200,11 @@ dwc3_gadget_event_string(const struct dwc3_event_devt *event)
* @event: then event code * @event: then event code
*/ */
static inline const char * 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; u8 epnum = event->endpoint_number;
static char str[256]; static char str[256];
size_t len;
int status; int status;
int ret; int ret;
...@@ -215,6 +216,10 @@ dwc3_ep_event_string(const struct dwc3_event_depevt *event) ...@@ -215,6 +216,10 @@ dwc3_ep_event_string(const struct dwc3_event_depevt *event)
switch (event->endpoint_event) { switch (event->endpoint_event) {
case DWC3_DEPEVT_XFERCOMPLETE: case DWC3_DEPEVT_XFERCOMPLETE:
strcat(str, "Transfer Complete"); strcat(str, "Transfer Complete");
len = strlen(str);
if (epnum <= 1)
sprintf(str + len, " [%s]", dwc3_ep0_state_string(ep0state));
break; break;
case DWC3_DEPEVT_XFERINPROGRESS: case DWC3_DEPEVT_XFERINPROGRESS:
strcat(str, "Transfer In-Progress"); strcat(str, "Transfer In-Progress");
...@@ -299,14 +304,14 @@ static inline const char *dwc3_gadget_event_type_string(u8 event) ...@@ -299,14 +304,14 @@ static inline const char *dwc3_gadget_event_type_string(u8 event)
} }
} }
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; const union dwc3_event evt = (union dwc3_event) event;
if (evt.type.is_devspec) if (evt.type.is_devspec)
return dwc3_gadget_event_string(&evt.devt); return dwc3_gadget_event_string(&evt.devt);
else 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) static inline const char *dwc3_ep_cmd_status_string(int status)
......
...@@ -1078,10 +1078,6 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc, ...@@ -1078,10 +1078,6 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
void dwc3_ep0_interrupt(struct dwc3 *dwc, void dwc3_ep0_interrupt(struct dwc3 *dwc,
const struct dwc3_event_depevt *event) 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) { switch (event->endpoint_event) {
case DWC3_DEPEVT_XFERCOMPLETE: case DWC3_DEPEVT_XFERCOMPLETE:
dwc3_ep0_xfer_complete(dwc, event); dwc3_ep0_xfer_complete(dwc, event);
......
...@@ -2728,7 +2728,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc, ...@@ -2728,7 +2728,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc,
static void dwc3_process_event_entry(struct dwc3 *dwc, static void dwc3_process_event_entry(struct dwc3 *dwc,
const union dwc3_event *event) const union dwc3_event *event)
{ {
trace_dwc3_event(event->raw); trace_dwc3_event(event->raw, dwc);
/* Endpoint IRQ, handle it and return early */ /* Endpoint IRQ, handle it and return early */
if (event->type.is_devspec == 0) { if (event->type.is_devspec == 0) {
......
...@@ -63,21 +63,23 @@ DEFINE_EVENT(dwc3_log_msg, dwc3_ep0, ...@@ -63,21 +63,23 @@ DEFINE_EVENT(dwc3_log_msg, dwc3_ep0,
); );
DECLARE_EVENT_CLASS(dwc3_log_event, DECLARE_EVENT_CLASS(dwc3_log_event,
TP_PROTO(u32 event), TP_PROTO(u32 event, struct dwc3 *dwc),
TP_ARGS(event), TP_ARGS(event, dwc),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(u32, event) __field(u32, event)
__field(u32, ep0state)
), ),
TP_fast_assign( TP_fast_assign(
__entry->event = event; __entry->event = event;
__entry->ep0state = dwc->ep0state;
), ),
TP_printk("event (%08x): %s", __entry->event, 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, DEFINE_EVENT(dwc3_log_event, dwc3_event,
TP_PROTO(u32 event), TP_PROTO(u32 event, struct dwc3 *dwc),
TP_ARGS(event) TP_ARGS(event, dwc)
); );
DECLARE_EVENT_CLASS(dwc3_log_ctrl, DECLARE_EVENT_CLASS(dwc3_log_ctrl,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment