From c7a808574b37557199bd2b17c963ec207854b801 Mon Sep 17 00:00:00 2001 From: Ye Li Date: Thu, 21 Mar 2019 01:21:29 -0700 Subject: [PATCH] MLK-17821-2 imx8: clock: Add cdns3 and usbotg clock enable and disable Implemented the clock enable and disable interfaces for CDNS3 USB driver and EHCI-MX6 USB otg driver. Signed-off-by: Ye Li Acked-by: Peter Chen (cherry picked from commit 2f0dc4c503d8ac831fb809ec124e79712defae77) --- arch/arm/mach-imx/imx8/clock.c | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/arch/arm/mach-imx/imx8/clock.c b/arch/arm/mach-imx/imx8/clock.c index d747e1332f..d2edd0bfb6 100644 --- a/arch/arm/mach-imx/imx8/clock.c +++ b/arch/arm/mach-imx/imx8/clock.c @@ -19,3 +19,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; +} -- 2.17.1