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

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
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -200,10 +200,11 @@ dwc3_gadget_event_string(const struct dwc3_event_devt *event)
 * @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;

@@ -215,6 +216,10 @@ dwc3_ep_event_string(const struct dwc3_event_depevt *event)
	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");
@@ -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;

	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)
+0 −4
Original line number Diff line number Diff line
@@ -1078,10 +1078,6 @@ static void dwc3_ep0_xfernotready(struct dwc3 *dwc,
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);
+1 −1
Original line number Diff line number Diff line
@@ -2728,7 +2728,7 @@ static void dwc3_gadget_interrupt(struct dwc3 *dwc,
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) {
+7 −5
Original line number Diff line number Diff line
@@ -63,21 +63,23 @@ DEFINE_EVENT(dwc3_log_msg, dwc3_ep0,
);

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,