Hi,

On Wed, Oct 15, 2014 at 10:46:17PM -0700, Kever Yang wrote:
> This patch move clock init out of gadget into platform,
> make both hcd and gadget can use the clock
> 
> Signed-off-by: Kever Yang <[email protected]>
> ---
> 
>  drivers/usb/dwc2/gadget.c   | 16 ++--------------
>  drivers/usb/dwc2/hcd.c      |  3 +++
>  drivers/usb/dwc2/platform.c | 30 ++++++++++++++++++------------
>  3 files changed, 23 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
> index 6ffbfc2..1943e52 100644
> --- a/drivers/usb/dwc2/gadget.c
> +++ b/drivers/usb/dwc2/gadget.c
> @@ -3408,20 +3408,12 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int 
> irq)
>                       hsotg->phyif = GUSBCFG_PHYIF8;
>       }
>  
> -     hsotg->clk = devm_clk_get(dev, "otg");
> -     if (IS_ERR(hsotg->clk)) {
> -             dev_err(dev, "cannot get otg clock\n");
> -             return PTR_ERR(hsotg->clk);
> -     }
> -
>       hsotg->gadget.max_speed = USB_SPEED_HIGH;
>       hsotg->gadget.ops = &s3c_hsotg_gadget_ops;
>       hsotg->gadget.name = dev_name(dev);
>  
>       /* reset the system */
>  
> -     clk_prepare_enable(hsotg->clk);
> -
>       /* regulators */
>  
>       for (i = 0; i < ARRAY_SIZE(hsotg->supplies); i++)
> @@ -3431,7 +3423,7 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg, int irq)
>                                hsotg->supplies);
>       if (ret) {
>               dev_err(dev, "failed to request supplies: %d\n", ret);
> -             goto err_clk;
> +             goto out;
>       }
>  
>       ret = regulator_bulk_enable(ARRAY_SIZE(hsotg->supplies),
> @@ -3510,9 +3502,7 @@ err_ep_mem:
>       kfree(eps);
>  err_supplies:
>       s3c_hsotg_phy_disable(hsotg);
> -err_clk:
> -     clk_disable_unprepare(hsotg->clk);
> -
> +out:
>       return ret;
>  }
>  EXPORT_SYMBOL_GPL(dwc2_gadget_init);
> @@ -3532,8 +3522,6 @@ int s3c_hsotg_remove(struct dwc2_hsotg *hsotg)
>               usb_gadget_unregister_driver(hsotg->driver);
>       }
>  
> -     clk_disable_unprepare(hsotg->clk);
> -
>       return 0;
>  }
>  EXPORT_SYMBOL_GPL(s3c_hsotg_remove);
> diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
> index fa49c72..fddd923 100644
> --- a/drivers/usb/dwc2/hcd.c
> +++ b/drivers/usb/dwc2/hcd.c
> @@ -46,6 +46,7 @@
>  #include <linux/delay.h>
>  #include <linux/io.h>
>  #include <linux/slab.h>
> +#include <linux/clk.h>
>  #include <linux/usb.h>
>  
>  #include <linux/usb/hcd.h>
> @@ -2266,6 +2267,7 @@ static int _dwc2_hcd_start(struct usb_hcd *hcd)
>       spin_lock_irqsave(&hsotg->lock, flags);
>  
>       hcd->state = HC_STATE_RUNNING;
> +     clk_enable(hsotg->clk);

with this you're moving clk_enable() from gadget to HCD. You might want
to leave this completely to the glue; at least for now.

-- 
balbi

Attachment: signature.asc
Description: Digital signature

Reply via email to