imx: imx_clock: mmc: Add USDHC clock API
authorJun Nie <jun.nie@linaro.org>
Thu, 28 Jun 2018 08:38:11 +0000 (16:38 +0800)
committerBryan O'Donoghue <bryan.odonoghue@linaro.org>
Tue, 4 Sep 2018 12:36:22 +0000 (13:36 +0100)
This patch adds an API to configure up the base USDHC clocks, taking a
bit-mask of silicon specific bits as an input from a higher layer in order
to direct the necessary clock source.

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

index 8fb42e3e0c830f0442c7bdd7e49cf7cb4d354f1c..0a13d4db9f9d978e0c689a97260ff5d54917c5e5 100644 (file)
@@ -82,3 +82,19 @@ void imx_clock_disable_uart(unsigned int uart_id)
        /* Clear the target */
        imx_clock_target_clr(ccm_trgt_id, 0xFFFFFFFF);
 }
+
+void imx_clock_enable_usdhc(unsigned int usdhc_id, uint32_t usdhc_clk_en_bits)
+{
+       unsigned int ccm_trgt_id = CCM_TRT_ID_USDHC1_CLK_ROOT + usdhc_id;
+       unsigned int ccm_ccgr_id = CCM_CCGR_ID_USBHDC1 + usdhc_id;
+
+       /* Check for error */
+       if (usdhc_id > MXC_MAX_USDHC_NUM)
+               return;
+
+       /* Set target register values */
+       imx_clock_target_set(ccm_trgt_id, usdhc_clk_en_bits);
+
+       /* Enable the clock gate */
+       imx_clock_gate_enable(ccm_ccgr_id, true);
+}
index f1d1912dd81ae91fee8a10bb323a49d1f815fd6a..51717c4b3b8c68be926ae00fbad4c73019e8acae 100644 (file)
@@ -991,5 +991,6 @@ void imx_clock_init(void);
 
 void imx_clock_enable_uart(unsigned int uart_id, uint32_t uart_clk_en_bits);
 void imx_clock_disable_uart(unsigned int uart_id);
+void imx_clock_enable_usdhc(unsigned int usdhc_id, uint32_t usdhc_clk_en_bits);
 
 #endif /* __IMX_CLOCK_H__ */