xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-stv0991/stv0991_cgu.h (revision f448c5d3200372fa73f340144d013fdecf4e2f1f)
19fa32b12SVikas Manocha /*
29fa32b12SVikas Manocha  * (C) Copyright 2014
39fa32b12SVikas Manocha  * Vikas Manocha, ST Micoelectronics, vikas.manocha@st.com
49fa32b12SVikas Manocha  *
59fa32b12SVikas Manocha  * SPDX-License-Identifier:	GPL-2.0+
69fa32b12SVikas Manocha  */
79fa32b12SVikas Manocha 
89fa32b12SVikas Manocha #ifndef _STV0991_CGU_H
99fa32b12SVikas Manocha #define _STV0991_CGU_H
109fa32b12SVikas Manocha 
119fa32b12SVikas Manocha struct stv0991_cgu_regs {
129fa32b12SVikas Manocha 	u32 cpu_freq;		/* offset 0x0 */
139fa32b12SVikas Manocha 	u32 icn2_freq;		/* offset 0x4 */
149fa32b12SVikas Manocha 	u32 dma_freq;		/* offset 0x8 */
159fa32b12SVikas Manocha 	u32 isp_freq;		/* offset 0xc */
169fa32b12SVikas Manocha 	u32 h264_freq;		/* offset 0x10 */
179fa32b12SVikas Manocha 	u32 osif_freq;		/* offset 0x14 */
189fa32b12SVikas Manocha 	u32 ren_freq;		/* offset 0x18 */
199fa32b12SVikas Manocha 	u32 tim_freq;		/* offset 0x1c */
209fa32b12SVikas Manocha 	u32 sai_freq;		/* offset 0x20 */
219fa32b12SVikas Manocha 	u32 eth_freq;		/* offset 0x24 */
229fa32b12SVikas Manocha 	u32 i2c_freq;		/* offset 0x28 */
239fa32b12SVikas Manocha 	u32 spi_freq;		/* offset 0x2c */
249fa32b12SVikas Manocha 	u32 uart_freq;		/* offset 0x30 */
259fa32b12SVikas Manocha 	u32 qspi_freq;		/* offset 0x34 */
269fa32b12SVikas Manocha 	u32 sdio_freq;		/* offset 0x38 */
279fa32b12SVikas Manocha 	u32 usi_freq;		/* offset 0x3c */
289fa32b12SVikas Manocha 	u32 can_line_freq;	/* offset 0x40 */
299fa32b12SVikas Manocha 	u32 debug_freq;		/* offset 0x44 */
309fa32b12SVikas Manocha 	u32 trace_freq;		/* offset 0x48 */
319fa32b12SVikas Manocha 	u32 stm_freq;		/* offset 0x4c */
329fa32b12SVikas Manocha 	u32 eth_ctrl;		/* offset 0x50 */
339fa32b12SVikas Manocha 	u32 reserved[3];	/* offset 0x54 */
349fa32b12SVikas Manocha 	u32 osc_ctrl;		/* offset 0x60 */
359fa32b12SVikas Manocha 	u32 pll1_ctrl;		/* offset 0x64 */
369fa32b12SVikas Manocha 	u32 pll1_freq;		/* offset 0x68 */
379fa32b12SVikas Manocha 	u32 pll1_fract;		/* offset 0x6c */
389fa32b12SVikas Manocha 	u32 pll1_spread;	/* offset 0x70 */
399fa32b12SVikas Manocha 	u32 pll1_status;	/* offset 0x74 */
409fa32b12SVikas Manocha 	u32 pll2_ctrl;		/* offset 0x78 */
419fa32b12SVikas Manocha 	u32 pll2_freq;		/* offset 0x7c */
429fa32b12SVikas Manocha 	u32 pll2_fract;		/* offset 0x80 */
439fa32b12SVikas Manocha 	u32 pll2_spread;	/* offset 0x84 */
449fa32b12SVikas Manocha 	u32 pll2_status;	/* offset 0x88 */
459fa32b12SVikas Manocha 	u32 cgu_enable_1;	/* offset 0x8c */
469fa32b12SVikas Manocha 	u32 cgu_enable_2;	/* offset 0x90 */
479fa32b12SVikas Manocha 	u32 cgu_isp_pulse;	/* offset 0x94 */
489fa32b12SVikas Manocha 	u32 cgu_h264_pulse;	/* offset 0x98 */
499fa32b12SVikas Manocha 	u32 cgu_osif_pulse;	/* offset 0x9c */
509fa32b12SVikas Manocha 	u32 cgu_ren_pulse;	/* offset 0xa0 */
519fa32b12SVikas Manocha 
529fa32b12SVikas Manocha };
539fa32b12SVikas Manocha 
549fa32b12SVikas Manocha /* CGU Timer */
559fa32b12SVikas Manocha #define CLK_TMR_OSC			0
569fa32b12SVikas Manocha #define CLK_TMR_MCLK			1
579fa32b12SVikas Manocha #define CLK_TMR_PLL1			2
589fa32b12SVikas Manocha #define CLK_TMR_PLL2			3
599fa32b12SVikas Manocha #define MDIV_SHIFT_TMR			3
609fa32b12SVikas Manocha #define DIV_SHIFT_TMR			6
619fa32b12SVikas Manocha 
629fa32b12SVikas Manocha #define TIMER1_CLK_CFG			(0 << DIV_SHIFT_TMR \
639fa32b12SVikas Manocha 					| 0 << MDIV_SHIFT_TMR | CLK_TMR_MCLK)
649fa32b12SVikas Manocha 
659fa32b12SVikas Manocha /* Clock Enable/Disable */
669fa32b12SVikas Manocha 
679fa32b12SVikas Manocha #define TIMER1_CLK_EN			(1 << 15)
689fa32b12SVikas Manocha 
699fa32b12SVikas Manocha /* CGU Uart config */
709fa32b12SVikas Manocha #define CLK_UART_MCLK			0
719fa32b12SVikas Manocha #define CLK_UART_PLL1			1
729fa32b12SVikas Manocha #define CLK_UART_PLL2			2
739fa32b12SVikas Manocha 
749fa32b12SVikas Manocha #define MDIV_SHIFT_UART			3
759fa32b12SVikas Manocha #define DIV_SHIFT_UART			6
769fa32b12SVikas Manocha 
779fa32b12SVikas Manocha #define UART_CLK_CFG			(4 << DIV_SHIFT_UART \
789fa32b12SVikas Manocha 					| 1 << MDIV_SHIFT_UART | CLK_UART_MCLK)
799fa32b12SVikas Manocha 
802ce4eaf4SVikas Manocha /* CGU Ethernet clock config */
812ce4eaf4SVikas Manocha #define CLK_ETH_MCLK			0
822ce4eaf4SVikas Manocha #define CLK_ETH_PLL1			1
832ce4eaf4SVikas Manocha #define CLK_ETH_PLL2			2
842ce4eaf4SVikas Manocha 
852ce4eaf4SVikas Manocha #define MDIV_SHIFT_ETH			3
862ce4eaf4SVikas Manocha #define DIV_SHIFT_ETH			6
872ce4eaf4SVikas Manocha #define DIV_ETH_125			9
882ce4eaf4SVikas Manocha #define DIV_ETH_50			12
892ce4eaf4SVikas Manocha #define DIV_ETH_P2P			15
902ce4eaf4SVikas Manocha 
912ce4eaf4SVikas Manocha #define ETH_CLK_CFG			(4 << DIV_ETH_P2P | 4 << DIV_ETH_50 \
922ce4eaf4SVikas Manocha 					| 1 << DIV_ETH_125 \
932ce4eaf4SVikas Manocha 					| 0 << DIV_SHIFT_ETH \
942ce4eaf4SVikas Manocha 					| 3 << MDIV_SHIFT_ETH | CLK_ETH_PLL1)
952ce4eaf4SVikas Manocha  /* CGU Ethernet control */
962ce4eaf4SVikas Manocha 
972ce4eaf4SVikas Manocha #define ETH_CLK_TX_EXT_PHY		0
982ce4eaf4SVikas Manocha #define ETH_CLK_TX_125M			1
992ce4eaf4SVikas Manocha #define ETH_CLK_TX_25M			2
1002ce4eaf4SVikas Manocha #define ETH_CLK_TX_2M5			3
1012ce4eaf4SVikas Manocha #define ETH_CLK_TX_DIS			7
1022ce4eaf4SVikas Manocha 
1032ce4eaf4SVikas Manocha #define ETH_CLK_RX_EXT_PHY		0
1042ce4eaf4SVikas Manocha #define ETH_CLK_RX_25M			1
1052ce4eaf4SVikas Manocha #define ETH_CLK_RX_2M5			2
1062ce4eaf4SVikas Manocha #define ETH_CLK_RX_DIS			3
1072ce4eaf4SVikas Manocha #define RX_CLK_SHIFT			3
1082ce4eaf4SVikas Manocha #define ETH_CLK_MASK			~(0x1F)
1092ce4eaf4SVikas Manocha 
1102ce4eaf4SVikas Manocha #define ETH_PHY_MODE_GMII		0
1112ce4eaf4SVikas Manocha #define ETH_PHY_MODE_RMII		1
1122ce4eaf4SVikas Manocha #define ETH_PHY_CLK_DIS			1
1132ce4eaf4SVikas Manocha 
1142ce4eaf4SVikas Manocha #define ETH_CLK_CTRL			(ETH_CLK_RX_EXT_PHY << RX_CLK_SHIFT \
1152ce4eaf4SVikas Manocha 					| ETH_CLK_TX_EXT_PHY)
116*54afb500SVikas Manocha /* CGU qspi clock */
117*54afb500SVikas Manocha #define DIV_HCLK1_SHIFT			9
118*54afb500SVikas Manocha #define DIV_CRYP_SHIFT			6
119*54afb500SVikas Manocha #define MDIV_QSPI_SHIFT			3
120*54afb500SVikas Manocha 
121*54afb500SVikas Manocha #define CLK_QSPI_OSC			0
122*54afb500SVikas Manocha #define CLK_QSPI_MCLK			1
123*54afb500SVikas Manocha #define CLK_QSPI_PLL1			2
124*54afb500SVikas Manocha #define CLK_QSPI_PLL2			3
125*54afb500SVikas Manocha 
126*54afb500SVikas Manocha #define QSPI_CLK_CTRL			(3 << DIV_HCLK1_SHIFT \
127*54afb500SVikas Manocha 					| 1 << DIV_CRYP_SHIFT \
128*54afb500SVikas Manocha 					| 0 << MDIV_QSPI_SHIFT \
129*54afb500SVikas Manocha 					| CLK_QSPI_OSC)
130*54afb500SVikas Manocha 
1319fa32b12SVikas Manocha #endif
132