|
|
@@ -0,0 +1,82 @@
|
|
|
+--- a/drivers/usb/gadget/udc/at91_udc.c
|
|
|
++++ b/drivers/usb/gadget/udc/at91_udc.c
|
|
|
+@@ -870,8 +870,6 @@
|
|
|
+ return;
|
|
|
+ udc->clocked = 1;
|
|
|
+
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- clk_enable(udc->uclk);
|
|
|
+ clk_enable(udc->iclk);
|
|
|
+ clk_enable(udc->fclk);
|
|
|
+ }
|
|
|
+@@ -884,8 +882,6 @@
|
|
|
+ udc->gadget.speed = USB_SPEED_UNKNOWN;
|
|
|
+ clk_disable(udc->fclk);
|
|
|
+ clk_disable(udc->iclk);
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- clk_disable(udc->uclk);
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+@@ -1766,27 +1762,18 @@
|
|
|
+ udc_reinit(udc);
|
|
|
+
|
|
|
+ /* get interface and function clocks */
|
|
|
+- udc->iclk = clk_get(dev, "udc_clk");
|
|
|
+- udc->fclk = clk_get(dev, "udpck");
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- udc->uclk = clk_get(dev, "usb_clk");
|
|
|
+- if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk) ||
|
|
|
+- (IS_ENABLED(CONFIG_COMMON_CLK) && IS_ERR(udc->uclk))) {
|
|
|
++ udc->iclk = clk_get(dev, "pclk");
|
|
|
++ udc->fclk = clk_get(dev, "hclk");
|
|
|
++ if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) {
|
|
|
+ DBG("clocks missing\n");
|
|
|
+ retval = -ENODEV;
|
|
|
+ goto fail1;
|
|
|
+ }
|
|
|
+
|
|
|
+- /* don't do anything until we have both gadget driver and VBUS */
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK)) {
|
|
|
+- clk_set_rate(udc->uclk, 48000000);
|
|
|
+- retval = clk_prepare(udc->uclk);
|
|
|
+- if (retval)
|
|
|
+- goto fail1;
|
|
|
+- }
|
|
|
++ clk_set_rate(udc->fclk, 48000000);
|
|
|
+ retval = clk_prepare(udc->fclk);
|
|
|
+ if (retval)
|
|
|
+- goto fail1a;
|
|
|
++ goto fail1;
|
|
|
+
|
|
|
+ retval = clk_prepare_enable(udc->iclk);
|
|
|
+ if (retval)
|
|
|
+@@ -1860,12 +1847,7 @@
|
|
|
+ clk_unprepare(udc->iclk);
|
|
|
+ fail1b:
|
|
|
+ clk_unprepare(udc->fclk);
|
|
|
+-fail1a:
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- clk_unprepare(udc->uclk);
|
|
|
+ fail1:
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK) && !IS_ERR(udc->uclk))
|
|
|
+- clk_put(udc->uclk);
|
|
|
+ if (!IS_ERR(udc->fclk))
|
|
|
+ clk_put(udc->fclk);
|
|
|
+ if (!IS_ERR(udc->iclk))
|
|
|
+@@ -1911,15 +1893,11 @@
|
|
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
+ release_mem_region(res->start, resource_size(res));
|
|
|
+
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- clk_unprepare(udc->uclk);
|
|
|
+ clk_unprepare(udc->fclk);
|
|
|
+ clk_unprepare(udc->iclk);
|
|
|
+
|
|
|
+ clk_put(udc->iclk);
|
|
|
+ clk_put(udc->fclk);
|
|
|
+- if (IS_ENABLED(CONFIG_COMMON_CLK))
|
|
|
+- clk_put(udc->uclk);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+ }
|