imx: imx_clock: usb: Add USB clock API
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Mon, 16 Jul 2018 17:21:19 +0000 (18:21 +0100)
committerBryan O'Donoghue <bryan.odonoghue@linaro.org>
Tue, 4 Sep 2018 12:36:23 +0000 (13:36 +0100)
This set of patches adds a very minimal layer of USB enabling patches to
clock.c. Unlike the watchdog or UART blocks the USB clocks pertain to PHYs,
the main USB clock etc, not to different instances of the same IP block.

As a result this patch-set takes the clock CCGR clock identifier directly
rather than as an index of an instance of blocks of the same type.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
plat/imx/common/imx_clock.c
plat/imx/common/include/imx_clock.h

index 09cd101b395c294c6dc8070c2a836fe237d8c3e0..ccf2aeb1389bebf3dd393beab3347a3ca0db070b 100644 (file)
@@ -132,3 +132,21 @@ void imx_clock_set_wdog_clk_root_bits(uint32_t wdog_clk_root_en_bits)
        /* Enable the common clock root just once */
        imx_clock_target_set(CCM_TRT_ID_WDOG_CLK_ROOT, wdog_clk_root_en_bits);
 }
+
+void imx_clock_enable_usb(unsigned int ccm_ccgr_usb_id)
+{
+       /* Enable the clock gate */
+       imx_clock_gate_enable(ccm_ccgr_usb_id, true);
+}
+
+void imx_clock_disable_usb(unsigned int ccm_ccgr_usb_id)
+{
+       /* Disable the clock gate */
+       imx_clock_gate_enable(ccm_ccgr_usb_id, false);
+}
+
+void imx_clock_set_usb_clk_root_bits(uint32_t usb_clk_root_en_bits)
+{
+       /* Enable the common clock root just once */
+       imx_clock_target_set(CCM_TRT_ID_USB_HSIC_CLK_ROOT, usb_clk_root_en_bits);
+}
index 27858bbda14f77a612ec5c22033ccc25c5e96d34..85586380f6a38c36566ad32b4d3e69395a979ae3 100644 (file)
@@ -995,5 +995,8 @@ void imx_clock_enable_usdhc(unsigned int usdhc_id, uint32_t usdhc_clk_en_bits);
 void imx_clock_set_wdog_clk_root_bits(uint32_t wdog_clk_root_en_bits);
 void imx_clock_enable_wdog(unsigned int wdog_id);
 void imx_clock_disable_wdog(unsigned int wdog_id);
+void imx_clock_enable_usb(unsigned int usb_id);
+void imx_clock_disable_usb(unsigned int usb_id);
+void imx_clock_set_usb_clk_root_bits(uint32_t usb_clk_root_en_bits);
 
 #endif /* __IMX_CLOCK_H__ */