OSDN Git Service

usb: dwc2: Move parameter initialization into params.c
authorJohn Youn <johnyoun@synopsys.com>
Fri, 4 Nov 2016 00:55:55 +0000 (17:55 -0700)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Fri, 18 Nov 2016 11:54:11 +0000 (13:54 +0200)
Consolidate and move all the parameter initialization code from the
probe function to params.c.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/core.h
drivers/usb/dwc2/params.c
drivers/usb/dwc2/platform.c

index f3d14f3..8d26847 100644 (file)
@@ -1259,6 +1259,9 @@ extern int dwc2_get_hwparams(struct dwc2_hsotg *hsotg);
 extern int dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg);
 extern int dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg);
 
+/* Parameters */
+int dwc2_init_params(struct dwc2_hsotg *hsotg);
+
 /*
  * The following functions check the controller's OTG operation mode
  * capability (GHWCFG2.OTG_MODE).
index ff7c844..d6c92d4 100644 (file)
@@ -1123,3 +1123,32 @@ void dwc2_set_all_params(struct dwc2_core_params *params, int value)
        for (i = 0; i < size; i++)
                p[i] = value;
 }
+
+int dwc2_init_params(struct dwc2_hsotg *hsotg)
+{
+       const struct of_device_id *match;
+       const struct dwc2_core_params *params;
+       struct dwc2_core_params defparams;
+
+       match = of_match_device(dwc2_of_match_table, hsotg->dev);
+       if (match && match->data) {
+               params = match->data;
+       } else {
+               /* Default all params to autodetect */
+               dwc2_set_all_params(&defparams, -1);
+               params = &defparams;
+
+               /*
+                * Disable descriptor dma mode by default as the HW can support
+                * it, but does not support it for SPLIT transactions.
+                * Disable it for FS devices as well.
+                */
+               defparams.dma_desc_enable = 0;
+               defparams.dma_desc_fs_enable = 0;
+       }
+
+       /* Validate parameter values */
+       dwc2_set_parameters(hsotg, params);
+
+       return 0;
+}
index d335e36..4fbfe09 100644 (file)
@@ -365,30 +365,10 @@ static void dwc2_driver_shutdown(struct platform_device *dev)
  */
 static int dwc2_driver_probe(struct platform_device *dev)
 {
-       const struct of_device_id *match;
-       const struct dwc2_core_params *params;
-       struct dwc2_core_params defparams;
        struct dwc2_hsotg *hsotg;
        struct resource *res;
        int retval;
 
-       match = of_match_device(dwc2_of_match_table, &dev->dev);
-       if (match && match->data) {
-               params = match->data;
-       } else {
-               /* Default all params to autodetect */
-               dwc2_set_all_params(&defparams, -1);
-               params = &defparams;
-
-               /*
-                * Disable descriptor dma mode by default as the HW can support
-                * it, but does not support it for SPLIT transactions.
-                * Disable it for FS devices as well.
-                */
-               defparams.dma_desc_enable = 0;
-               defparams.dma_desc_fs_enable = 0;
-       }
-
        hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
        if (!hsotg)
                return -ENOMEM;
@@ -453,11 +433,12 @@ static int dwc2_driver_probe(struct platform_device *dev)
        if (retval)
                goto error;
 
-       /* Validate parameter values */
-       dwc2_set_parameters(hsotg, params);
-
        dwc2_force_dr_mode(hsotg);
 
+       retval = dwc2_init_params(hsotg);
+       if (retval)
+               goto error;
+
        if (hsotg->dr_mode != USB_DR_MODE_HOST) {
                retval = dwc2_gadget_init(hsotg, hsotg->irq);
                if (retval)