Just like we did for endpoint commands, let's have a
single trace output for the command and its
status. This will improve trace readability

Signed-off-by: Felipe Balbi <felipe.ba...@linux.intel.com>
---
 drivers/usb/dwc3/debug.h  | 14 ++++++++++++++
 drivers/usb/dwc3/gadget.c | 14 ++++++--------
 drivers/usb/dwc3/trace.h  | 15 +++++++++------
 3 files changed, 29 insertions(+), 14 deletions(-)

diff --git a/drivers/usb/dwc3/debug.h b/drivers/usb/dwc3/debug.h
index 8eed4c7cc76b..22dfc3dd6a13 100644
--- a/drivers/usb/dwc3/debug.h
+++ b/drivers/usb/dwc3/debug.h
@@ -296,6 +296,20 @@ static inline const char *dwc3_ep_cmd_status_string(int 
status)
        }
 }
 
+static inline const char *dwc3_gadget_generic_cmd_status_string(int status)
+{
+       switch (status) {
+       case -ETIMEDOUT:
+               return "Timed Out";
+       case 0:
+               return "Successful";
+       case 1:
+               return "Error";
+       default:
+               return "UNKNOWN";
+       }
+}
+
 void dwc3_trace(void (*trace)(struct va_format *), const char *fmt, ...);
 
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 5cec5811169a..5986462e126d 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -207,32 +207,30 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct 
dwc3_request *req,
 int dwc3_send_gadget_generic_command(struct dwc3 *dwc, unsigned cmd, u32 param)
 {
        u32             timeout = 500;
+       int             status = 0;
        int             ret = 0;
        u32             reg;
 
-       trace_dwc3_gadget_generic_cmd(cmd, param);
-
        dwc3_writel(dwc->regs, DWC3_DGCMDPAR, param);
        dwc3_writel(dwc->regs, DWC3_DGCMD, cmd | DWC3_DGCMD_CMDACT);
 
        do {
                reg = dwc3_readl(dwc->regs, DWC3_DGCMD);
                if (!(reg & DWC3_DGCMD_CMDACT)) {
-                       dwc3_trace(trace_dwc3_gadget,
-                                       "Command Complete --> %d",
-                                       DWC3_DGCMD_STATUS(reg));
-                       if (DWC3_DGCMD_STATUS(reg))
+                       status = DWC3_DGCMD_STATUS(reg);
+                       if (status)
                                ret = -EINVAL;
                        break;
                }
        } while (timeout--);
 
        if (!timeout) {
-               dwc3_trace(trace_dwc3_gadget,
-                               "Command Timed Out");
                ret = -ETIMEDOUT;
+               status = -ETIMEDOUT;
        }
 
+       trace_dwc3_gadget_generic_cmd(cmd, param, status);
+
        return ret;
 }
 
diff --git a/drivers/usb/dwc3/trace.h b/drivers/usb/dwc3/trace.h
index 040f28b27d56..f43f9ebf7c3f 100644
--- a/drivers/usb/dwc3/trace.h
+++ b/drivers/usb/dwc3/trace.h
@@ -167,25 +167,28 @@ DEFINE_EVENT(dwc3_log_request, dwc3_gadget_giveback,
 );
 
 DECLARE_EVENT_CLASS(dwc3_log_generic_cmd,
-       TP_PROTO(unsigned int cmd, u32 param),
-       TP_ARGS(cmd, param),
+       TP_PROTO(unsigned int cmd, u32 param, int status),
+       TP_ARGS(cmd, param, status),
        TP_STRUCT__entry(
                __field(unsigned int, cmd)
                __field(u32, param)
+               __field(int, status)
        ),
        TP_fast_assign(
                __entry->cmd = cmd;
                __entry->param = param;
+               __entry->status = status;
        ),
-       TP_printk("cmd '%s' [%d] param %08x",
+       TP_printk("cmd '%s' [%d] param %08x --> status: %s",
                dwc3_gadget_generic_cmd_string(__entry->cmd),
-               __entry->cmd, __entry->param
+               __entry->cmd, __entry->param,
+               dwc3_gadget_generic_cmd_status_string(__entry->status)
        )
 );
 
 DEFINE_EVENT(dwc3_log_generic_cmd, dwc3_gadget_generic_cmd,
-       TP_PROTO(unsigned int cmd, u32 param),
-       TP_ARGS(cmd, param)
+       TP_PROTO(unsigned int cmd, u32 param, int status),
+       TP_ARGS(cmd, param, status)
 );
 
 DECLARE_EVENT_CLASS(dwc3_log_gadget_ep_cmd,
-- 
2.8.3

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to