xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-mx6/clock.h (revision 6d97dc10a81062a787fcf5e5df7b88d1ea122a64)
123608e23SJason Liu /*
223608e23SJason Liu  * (C) Copyright 2009
323608e23SJason Liu  * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
423608e23SJason Liu  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
623608e23SJason Liu  */
723608e23SJason Liu 
823608e23SJason Liu #ifndef __ASM_ARCH_CLOCK_H
923608e23SJason Liu #define __ASM_ARCH_CLOCK_H
1023608e23SJason Liu 
11833b6435SBenoît Thébaudeau #include <common.h>
12833b6435SBenoît Thébaudeau 
13833b6435SBenoît Thébaudeau #ifdef CONFIG_SYS_MX6_HCLK
14833b6435SBenoît Thébaudeau #define MXC_HCLK	CONFIG_SYS_MX6_HCLK
15833b6435SBenoît Thébaudeau #else
16833b6435SBenoît Thébaudeau #define MXC_HCLK	24000000
17833b6435SBenoît Thébaudeau #endif
18833b6435SBenoît Thébaudeau 
19833b6435SBenoît Thébaudeau #ifdef CONFIG_SYS_MX6_CLK32
20833b6435SBenoît Thébaudeau #define MXC_CLK32	CONFIG_SYS_MX6_CLK32
21833b6435SBenoît Thébaudeau #else
22833b6435SBenoît Thébaudeau #define MXC_CLK32	32768
23833b6435SBenoît Thébaudeau #endif
24833b6435SBenoît Thébaudeau 
2523608e23SJason Liu enum mxc_clock {
2623608e23SJason Liu 	MXC_ARM_CLK = 0,
2723608e23SJason Liu 	MXC_PER_CLK,
2823608e23SJason Liu 	MXC_AHB_CLK,
2923608e23SJason Liu 	MXC_IPG_CLK,
3023608e23SJason Liu 	MXC_IPG_PERCLK,
3123608e23SJason Liu 	MXC_UART_CLK,
3223608e23SJason Liu 	MXC_CSPI_CLK,
3323608e23SJason Liu 	MXC_AXI_CLK,
3423608e23SJason Liu 	MXC_EMI_SLOW_CLK,
3523608e23SJason Liu 	MXC_DDR_CLK,
3623608e23SJason Liu 	MXC_ESDHC_CLK,
3723608e23SJason Liu 	MXC_ESDHC2_CLK,
3823608e23SJason Liu 	MXC_ESDHC3_CLK,
3923608e23SJason Liu 	MXC_ESDHC4_CLK,
4023608e23SJason Liu 	MXC_SATA_CLK,
4123608e23SJason Liu 	MXC_NFC_CLK,
42e7bed5c2SMatthias Weisser 	MXC_I2C_CLK,
4323608e23SJason Liu };
4423608e23SJason Liu 
455f98d0b5SFabio Estevam enum enet_freq {
467731745cSStefan Roese 	ENET_25MHZ,
477731745cSStefan Roese 	ENET_50MHZ,
487731745cSStefan Roese 	ENET_100MHZ,
497731745cSStefan Roese 	ENET_125MHZ,
505f98d0b5SFabio Estevam };
515f98d0b5SFabio Estevam 
5223608e23SJason Liu u32 imx_get_uartclk(void);
5323608e23SJason Liu u32 imx_get_fecclk(void);
5423608e23SJason Liu unsigned int mxc_get_clock(enum mxc_clock clk);
55224beb83SNikita Kiryanov void setup_gpmi_io_clk(u32 cfg);
5636c1ca4dSNitin Garg void hab_caam_clock_enable(unsigned char enable);
57112fd2ecSBenoît Thébaudeau void enable_ocotp_clk(unsigned char enable);
583f467529SWolfgang Grandegger void enable_usboh3_clk(unsigned char enable);
59224beb83SNikita Kiryanov void enable_uart_clk(unsigned char enable);
60224beb83SNikita Kiryanov int enable_usdhc_clk(unsigned char enable, unsigned bus_num);
6164e7cdb5SEric Nelson int enable_sata_clock(void);
628d29cef5SNikita Kiryanov void disable_sata_clock(void);
6379814492SMarek Vasut int enable_pcie_clock(void);
64cc54a0f7STroy Kisky int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
65a0ae0091SHeiko Schocher int enable_spi_clk(unsigned char enable, unsigned spi_num);
665ea7f0e3SPardeep Kumar Singla void enable_ipu_clock(void);
67*6d97dc10SPeng Fan int enable_fec_anatop_clock(int fec_id, enum enet_freq freq);
68224beb83SNikita Kiryanov void enable_enet_clk(unsigned char enable);
69b93ab2eeSPeng Fan void enable_qspi_clk(int qspi_num);
70cf202d26SNitin Garg void enable_thermal_clk(void);
7123608e23SJason Liu #endif /* __ASM_ARCH_CLOCK_H */
72