xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-am33xx/clock.h (revision dcf846d5dae75b81eccce46c577fd3957e73d474)
1f87fa62aSChandan Nath /*
2f87fa62aSChandan Nath  * clock.h
3f87fa62aSChandan Nath  *
4f87fa62aSChandan Nath  * clock header
5f87fa62aSChandan Nath  *
6b43c17cbSMatt Porter  * Copyright (C) 2011, Texas Instruments Incorporated - http://www.ti.com/
7f87fa62aSChandan Nath  *
81a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
9f87fa62aSChandan Nath  */
10f87fa62aSChandan Nath 
11f87fa62aSChandan Nath #ifndef _CLOCKS_H_
12f87fa62aSChandan Nath #define _CLOCKS_H_
13f87fa62aSChandan Nath 
14f87fa62aSChandan Nath #include <asm/arch/clocks_am33xx.h>
15f87fa62aSChandan Nath 
16*dcf846d5STENART Antoine #ifdef CONFIG_TI81XX
17*dcf846d5STENART Antoine #include <asm/arch/clock_ti81xx.h>
18*dcf846d5STENART Antoine #endif
19*dcf846d5STENART Antoine 
2094d77fb6SLokesh Vutla #define LDELAY 1000000
2194d77fb6SLokesh Vutla 
2295cb69faSLokesh Vutla /*CM_<clock_domain>__CLKCTRL */
2395cb69faSLokesh Vutla #define CD_CLKCTRL_CLKTRCTRL_SHIFT		0
2495cb69faSLokesh Vutla #define CD_CLKCTRL_CLKTRCTRL_MASK		3
2595cb69faSLokesh Vutla 
2695cb69faSLokesh Vutla #define CD_CLKCTRL_CLKTRCTRL_NO_SLEEP		0
2795cb69faSLokesh Vutla #define CD_CLKCTRL_CLKTRCTRL_SW_SLEEP		1
2895cb69faSLokesh Vutla #define CD_CLKCTRL_CLKTRCTRL_SW_WKUP		2
2995cb69faSLokesh Vutla 
3095cb69faSLokesh Vutla /* CM_<clock_domain>_<module>_CLKCTRL */
3195cb69faSLokesh Vutla #define MODULE_CLKCTRL_MODULEMODE_SHIFT		0
3295cb69faSLokesh Vutla #define MODULE_CLKCTRL_MODULEMODE_MASK		3
3395cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_SHIFT		16
3495cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_MASK		(3 << 16)
3595cb69faSLokesh Vutla 
3695cb69faSLokesh Vutla #define MODULE_CLKCTRL_MODULEMODE_SW_DISABLE		0
3795cb69faSLokesh Vutla #define MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN	2
3895cb69faSLokesh Vutla 
3995cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_FULLY_FUNCTIONAL	0
4095cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_TRANSITIONING	1
4195cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_IDLE		2
4295cb69faSLokesh Vutla #define MODULE_CLKCTRL_IDLEST_DISABLED		3
4395cb69faSLokesh Vutla 
4494d77fb6SLokesh Vutla /* CM_CLKMODE_DPLL */
4594d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_REGM4XEN_SHIFT		11
4694d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_REGM4XEN_MASK		(1 << 11)
4794d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_LPMODE_EN_SHIFT		10
4894d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_LPMODE_EN_MASK		(1 << 10)
4994d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_SHIFT	9
5094d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_RELOCK_RAMP_EN_MASK	(1 << 9)
5194d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_DRIFTGUARD_EN_SHIFT	8
5294d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_DRIFTGUARD_EN_MASK	(1 << 8)
5394d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_RAMP_RATE_SHIFT		5
5494d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_RAMP_RATE_MASK		(0x7 << 5)
5594d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_EN_SHIFT		0
5694d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_EN_MASK			(0x7 << 0)
5794d77fb6SLokesh Vutla 
5894d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_DPLL_EN_SHIFT		0
5994d77fb6SLokesh Vutla #define CM_CLKMODE_DPLL_DPLL_EN_MASK		7
6094d77fb6SLokesh Vutla 
6194d77fb6SLokesh Vutla #define DPLL_EN_STOP			1
6294d77fb6SLokesh Vutla #define DPLL_EN_MN_BYPASS		4
6394d77fb6SLokesh Vutla #define DPLL_EN_LOW_POWER_BYPASS	5
6494d77fb6SLokesh Vutla #define DPLL_EN_LOCK			7
6594d77fb6SLokesh Vutla 
6694d77fb6SLokesh Vutla /* CM_IDLEST_DPLL fields */
6794d77fb6SLokesh Vutla #define ST_DPLL_CLK_MASK		1
6894d77fb6SLokesh Vutla 
6994d77fb6SLokesh Vutla /* CM_CLKSEL_DPLL */
7094d77fb6SLokesh Vutla #define CM_CLKSEL_DPLL_M_SHIFT			8
7194d77fb6SLokesh Vutla #define CM_CLKSEL_DPLL_M_MASK			(0x7FF << 8)
7294d77fb6SLokesh Vutla #define CM_CLKSEL_DPLL_N_SHIFT			0
7394d77fb6SLokesh Vutla #define CM_CLKSEL_DPLL_N_MASK			0x7F
7494d77fb6SLokesh Vutla 
7594d77fb6SLokesh Vutla struct dpll_params {
7694d77fb6SLokesh Vutla 	u32 m;
7794d77fb6SLokesh Vutla 	u32 n;
7894d77fb6SLokesh Vutla 	s8 m2;
7994d77fb6SLokesh Vutla 	s8 m3;
8094d77fb6SLokesh Vutla 	s8 m4;
8194d77fb6SLokesh Vutla 	s8 m5;
8294d77fb6SLokesh Vutla 	s8 m6;
8394d77fb6SLokesh Vutla };
8494d77fb6SLokesh Vutla 
8594d77fb6SLokesh Vutla struct dpll_regs {
8694d77fb6SLokesh Vutla 	u32 cm_clkmode_dpll;
8794d77fb6SLokesh Vutla 	u32 cm_idlest_dpll;
8894d77fb6SLokesh Vutla 	u32 cm_autoidle_dpll;
8994d77fb6SLokesh Vutla 	u32 cm_clksel_dpll;
9094d77fb6SLokesh Vutla 	u32 cm_div_m2_dpll;
9194d77fb6SLokesh Vutla 	u32 cm_div_m3_dpll;
9294d77fb6SLokesh Vutla 	u32 cm_div_m4_dpll;
9394d77fb6SLokesh Vutla 	u32 cm_div_m5_dpll;
9494d77fb6SLokesh Vutla 	u32 cm_div_m6_dpll;
9594d77fb6SLokesh Vutla };
9694d77fb6SLokesh Vutla 
9794d77fb6SLokesh Vutla extern const struct dpll_regs dpll_mpu_regs;
9894d77fb6SLokesh Vutla extern const struct dpll_regs dpll_core_regs;
9994d77fb6SLokesh Vutla extern const struct dpll_regs dpll_per_regs;
10094d77fb6SLokesh Vutla extern const struct dpll_regs dpll_ddr_regs;
10194d77fb6SLokesh Vutla extern const struct dpll_params dpll_mpu;
10294d77fb6SLokesh Vutla extern const struct dpll_params dpll_core;
10394d77fb6SLokesh Vutla extern const struct dpll_params dpll_per;
10494d77fb6SLokesh Vutla extern const struct dpll_params dpll_ddr;
10594d77fb6SLokesh Vutla 
10695cb69faSLokesh Vutla extern struct cm_wkuppll *const cmwkup;
10794d77fb6SLokesh Vutla 
10894d77fb6SLokesh Vutla const struct dpll_params *get_dpll_ddr_params(void);
10994d77fb6SLokesh Vutla void do_setup_dpll(const struct dpll_regs *, const struct dpll_params *);
11095cb69faSLokesh Vutla void prcm_init(void);
11195cb69faSLokesh Vutla void enable_basic_clocks(void);
11295cb69faSLokesh Vutla void do_enable_clocks(u32 *const *, u32 *const *, u8);
11394d77fb6SLokesh Vutla 
114f87fa62aSChandan Nath #endif
115