usb: dwc3: gadget: combine modify & restore into single argument
authorFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 9 Apr 2018 09:40:48 +0000 (12:40 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Mon, 21 May 2018 07:00:58 +0000 (10:00 +0300)
Those two arguments refer to a single bitfield in the register. In
order to simplify the code, we can combine them into a single argument
and expect caller to pass the correct action argument at all times.

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc3/gadget.c

index 4518e85d673bdaab32ff7cc890ceed7d84d3a250..6e746d456ae7e00c31cf4c78c86630cecbd48d16 100644 (file)
@@ -523,16 +523,12 @@ static int dwc3_gadget_start_config(struct dwc3 *dwc, struct dwc3_ep *dep)
 }
 
 static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
-               bool modify, bool restore)
+               unsigned int action)
 {
        const struct usb_ss_ep_comp_descriptor *comp_desc;
        const struct usb_endpoint_descriptor *desc;
        struct dwc3_gadget_ep_cmd_params params;
 
-       if (dev_WARN_ONCE(dwc->dev, modify && restore,
-                                       "Can't modify and restore\n"))
-               return -EINVAL;
-
        comp_desc = dep->endpoint.comp_desc;
        desc = dep->endpoint.desc;
 
@@ -547,14 +543,9 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
                params.param0 |= DWC3_DEPCFG_BURST_SIZE(burst - 1);
        }
 
-       if (modify) {
-               params.param0 |= DWC3_DEPCFG_ACTION_MODIFY;
-       } else if (restore) {
-               params.param0 |= DWC3_DEPCFG_ACTION_RESTORE;
+       params.param0 |= action;
+       if (action == DWC3_DEPCFG_ACTION_RESTORE)
                params.param2 |= dep->saved_state;
-       } else {
-               params.param0 |= DWC3_DEPCFG_ACTION_INIT;
-       }
 
        if (usb_endpoint_xfer_control(desc))
                params.param1 = DWC3_DEPCFG_XFER_COMPLETE_EN;
@@ -609,14 +600,12 @@ static int dwc3_gadget_set_xfer_resource(struct dwc3 *dwc, struct dwc3_ep *dep)
 /**
  * __dwc3_gadget_ep_enable - initializes a hw endpoint
  * @dep: endpoint to be initialized
- * @modify: if true, modify existing endpoint configuration
- * @restore: if true, restore endpoint configuration from scratch buffer
+ * @action: one of INIT, MODIFY or RESTORE
  *
  * Caller should take care of locking. Execute all necessary commands to
  * initialize a HW endpoint so it can be used by a gadget driver.
  */
-static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
-               bool modify, bool restore)
+static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action)
 {
        const struct usb_endpoint_descriptor *desc = dep->endpoint.desc;
        struct dwc3             *dwc = dep->dwc;
@@ -630,7 +619,7 @@ static int __dwc3_gadget_ep_enable(struct dwc3_ep *dep,
                        return ret;
        }
 
-       ret = dwc3_gadget_set_ep_config(dwc, dep, modify, restore);
+       ret = dwc3_gadget_set_ep_config(dwc, dep, action);
        if (ret)
                return ret;
 
@@ -804,7 +793,7 @@ static int dwc3_gadget_ep_enable(struct usb_ep *ep,
                return 0;
 
        spin_lock_irqsave(&dwc->lock, flags);
-       ret = __dwc3_gadget_ep_enable(dep, false, false);
+       ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_INIT);
        spin_unlock_irqrestore(&dwc->lock, flags);
 
        return ret;
@@ -1871,14 +1860,14 @@ static int __dwc3_gadget_start(struct dwc3 *dwc)
        dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512);
 
        dep = dwc->eps[0];
-       ret = __dwc3_gadget_ep_enable(dep, false, false);
+       ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_INIT);
        if (ret) {
                dev_err(dwc->dev, "failed to enable %s\n", dep->name);
                goto err0;
        }
 
        dep = dwc->eps[1];
-       ret = __dwc3_gadget_ep_enable(dep, false, false);
+       ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_INIT);
        if (ret) {
                dev_err(dwc->dev, "failed to enable %s\n", dep->name);
                goto err1;
@@ -2789,14 +2778,14 @@ static void dwc3_gadget_conndone_interrupt(struct dwc3 *dwc)
        }
 
        dep = dwc->eps[0];
-       ret = __dwc3_gadget_ep_enable(dep, true, false);
+       ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_MODIFY);
        if (ret) {
                dev_err(dwc->dev, "failed to enable %s\n", dep->name);
                return;
        }
 
        dep = dwc->eps[1];
-       ret = __dwc3_gadget_ep_enable(dep, true, false);
+       ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_MODIFY);
        if (ret) {
                dev_err(dwc->dev, "failed to enable %s\n", dep->name);
                return;