MLK-17821-2 imx8: clock: Add cdns3 and usbotg clock enable and disable
authorYe Li <ye.li@nxp.com>
Thu, 21 Mar 2019 08:21:29 +0000 (01:21 -0700)
committerYe Li <ye.li@nxp.com>
Thu, 29 Apr 2021 07:56:20 +0000 (00:56 -0700)
Implemented the clock enable and disable interfaces for CDNS3 USB
driver and EHCI-MX6 USB otg driver.

Signed-off-by: Ye Li <ye.li@nxp.com>
Acked-by: Peter Chen <peter.chen@nxp.com>
(cherry picked from commit 2f0dc4c503d8ac831fb809ec124e79712defae77)
(cherry picked from commit c7a808574b37557199bd2b17c963ec207854b801)
(cherry picked from commit a369a235e5595b2a59754bd13f47cd699017fec3)

arch/arm/mach-imx/imx8/clock.c

index 9941b57..f1c2b6a 100644 (file)
@@ -20,3 +20,62 @@ u32 mxc_get_clock(enum mxc_clock clk)
 
        return 0;
 }
+
+void enable_usboh3_clk(unsigned char enable)
+{
+       LPCG_AllClockOn(USB_2_LPCG);
+       return;
+}
+
+void init_clk_usb3(int index)
+{
+       sc_err_t err;
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_MISC, true, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 set clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_MST_BUS, true, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 set clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_PER, true, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 set clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       LPCG_AllClockOn(USB_3_LPCG);
+       return;
+}
+
+int cdns3_enable_clks(int index)
+{
+       init_clk_usb3(index);
+       return 0;
+}
+
+int cdns3_disable_clks(int index)
+{
+       sc_err_t err;
+
+       LPCG_AllClockOff(USB_3_LPCG);
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_MISC, false, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 disable clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_MST_BUS, false, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 disable clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       err = sc_pm_clock_enable(-1, SC_R_USB_2, SC_PM_CLK_PER, false, false);
+       if (err != SC_ERR_NONE)
+               printf("USB3 disable clock failed!, line=%d (error = %d)\n",
+                       __LINE__, err);
+
+       return 0;
+}