s3c-hsotg: Regulator switching fix
authorKamil Debski <k.debski@samsung.com>
Tue, 15 Oct 2013 13:26:40 +0000 (15:26 +0200)
committerChanho Park <chanho61.park@samsung.com>
Tue, 18 Nov 2014 02:44:57 +0000 (11:44 +0900)
This patch delays switching off regulators in s3c_hsotg_udc_stop after
the critical section has been finished.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
drivers/usb/gadget/s3c-hsotg.c

index f9bd408..dfa56e7 100644 (file)
@@ -3005,9 +3005,6 @@ static int s3c_hsotg_udc_stop(struct usb_gadget *gadget,
 
        spin_lock_irqsave(&hsotg->lock, flags);
 
-       s3c_hsotg_phy_disable(hsotg);
-       regulator_bulk_disable(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);
-
        if (!driver)
                hsotg->driver = NULL;
 
@@ -3015,6 +3012,8 @@ static int s3c_hsotg_udc_stop(struct usb_gadget *gadget,
 
        spin_unlock_irqrestore(&hsotg->lock, flags);
 
+       regulator_bulk_disable(ARRAY_SIZE(hsotg->supplies), hsotg->supplies);
+
        return 0;
 }
 
@@ -3555,6 +3554,8 @@ static int s3c_hsotg_probe(struct platform_device *pdev)
        hsotg->gadget.ops = &s3c_hsotg_gadget_ops;
        hsotg->gadget.name = dev_name(dev);
 
+       hsotg->gadget.dev.of_node = hsotg->dev->of_node;
+
        /* reset the system */
 
        clk_prepare_enable(hsotg->clk);