usb: dwc3: gadget: Skip checking Update Transfer status
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Tue, 30 Nov 2021 02:53:09 +0000 (18:53 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Dec 2021 11:02:49 +0000 (12:02 +0100)
If we're not setting CMDACT (from "No Response" Update Transfer
command), then there's no point in checking for the command status. So
skip it. This can reduce a register read delay and improve performance.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/3dc31cf11581ae3ee82d9202dda3fc17d897d786.1638240306.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/gadget.c

index 7e3db00e9759529579af1c11dd12c9f4ab821937..00b3f19c4d3efab260d6d6d178058219bbce533b 100644 (file)
@@ -357,6 +357,12 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd,
                cmd |= DWC3_DEPCMD_CMDACT;
 
        dwc3_writel(dep->regs, DWC3_DEPCMD, cmd);
+
+       if (!(cmd & DWC3_DEPCMD_CMDACT)) {
+               ret = 0;
+               goto skip_status;
+       }
+
        do {
                reg = dwc3_readl(dep->regs, DWC3_DEPCMD);
                if (!(reg & DWC3_DEPCMD_CMDACT)) {
@@ -398,6 +404,7 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd,
                cmd_status = -ETIMEDOUT;
        }
 
+skip_status:
        trace_dwc3_gadget_ep_cmd(dep, cmd, params, cmd_status);
 
        if (DWC3_DEPCMD_CMD(cmd) == DWC3_DEPCMD_STARTTRANSFER) {