|
@@ -36,6 +36,35 @@ void enable_ocotp_clk(unsigned char enable)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_NAND_MXS
|
|
|
+void setup_gpmi_io_clk(u32 cfg)
|
|
|
+{
|
|
|
+ /* Disable clocks per ERR007177 from MX6 errata */
|
|
|
+ clrbits_le32(&imx_ccm->CCGR4,
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
|
|
|
+ MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
|
|
|
+
|
|
|
+ clrbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
|
|
|
+
|
|
|
+ clrsetbits_le32(&imx_ccm->cs2cdr,
|
|
|
+ MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK |
|
|
|
+ MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK |
|
|
|
+ MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK,
|
|
|
+ cfg);
|
|
|
+
|
|
|
+ setbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
|
|
|
+ setbits_le32(&imx_ccm->CCGR4,
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
|
|
|
+ MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
|
|
|
+ MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
void enable_usboh3_clk(unsigned char enable)
|
|
|
{
|
|
|
u32 reg;
|
|
@@ -49,6 +78,67 @@ void enable_usboh3_clk(unsigned char enable)
|
|
|
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_FEC_MXC
|
|
|
+void enable_enet_clk(unsigned char enable)
|
|
|
+{
|
|
|
+ u32 mask = MXC_CCM_CCGR1_ENET_CLK_ENABLE_MASK;
|
|
|
+
|
|
|
+ if (enable)
|
|
|
+ setbits_le32(&imx_ccm->CCGR1, mask);
|
|
|
+ else
|
|
|
+ clrbits_le32(&imx_ccm->CCGR1, mask);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef CONFIG_MXC_UART
|
|
|
+void enable_uart_clk(unsigned char enable)
|
|
|
+{
|
|
|
+ u32 mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK;
|
|
|
+
|
|
|
+ if (enable)
|
|
|
+ setbits_le32(&imx_ccm->CCGR5, mask);
|
|
|
+ else
|
|
|
+ clrbits_le32(&imx_ccm->CCGR5, mask);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef CONFIG_SPI
|
|
|
+/* spi_num can be from 0 - 4 */
|
|
|
+int enable_cspi_clock(unsigned char enable, unsigned spi_num)
|
|
|
+{
|
|
|
+ u32 mask;
|
|
|
+
|
|
|
+ if (spi_num > 4)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ mask = MXC_CCM_CCGR_CG_MASK << (spi_num * 2);
|
|
|
+ if (enable)
|
|
|
+ setbits_le32(&imx_ccm->CCGR1, mask);
|
|
|
+ else
|
|
|
+ clrbits_le32(&imx_ccm->CCGR1, mask);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+#ifdef CONFIG_MMC
|
|
|
+int enable_usdhc_clk(unsigned char enable, unsigned bus_num)
|
|
|
+{
|
|
|
+ u32 mask;
|
|
|
+
|
|
|
+ if (bus_num > 3)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ mask = MXC_CCM_CCGR_CG_MASK << (bus_num * 2 + 2);
|
|
|
+ if (enable)
|
|
|
+ setbits_le32(&imx_ccm->CCGR6, mask);
|
|
|
+ else
|
|
|
+ clrbits_le32(&imx_ccm->CCGR6, mask);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
#ifdef CONFIG_SYS_I2C_MXC
|
|
|
/* i2c_num can be from 0 - 2 */
|
|
|
int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
|