|
|
|
@ -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) |
|
|
|
|