xref: /arm-trusted-firmware/plat/mediatek/mt8195/drivers/apusys/apupwr_clkctl_def.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2021, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef APUPWR_CLKCTL_DEF_H
8*91f16700Schasinglulu #define APUPWR_CLKCTL_DEF_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <lib/mmio.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu enum dvfs_voltage_domain {
13*91f16700Schasinglulu 	V_VPU0			= 0,
14*91f16700Schasinglulu 	V_VPU1			= 1,
15*91f16700Schasinglulu 	V_MDLA0			= 2,
16*91f16700Schasinglulu 	V_MDLA1			= 3,
17*91f16700Schasinglulu 	V_APU_CONN		= 4,
18*91f16700Schasinglulu 	V_TOP_IOMMU		= 5,
19*91f16700Schasinglulu 	V_VCORE			= 6,
20*91f16700Schasinglulu 	APUSYS_BUCK_DOMAIN_NUM	= 7,
21*91f16700Schasinglulu };
22*91f16700Schasinglulu 
23*91f16700Schasinglulu enum dvfs_freq {
24*91f16700Schasinglulu 	DVFS_FREQ_NOT_SUPPORT	= 0,
25*91f16700Schasinglulu 	DVFS_FREQ_ACC_26M	= 1,
26*91f16700Schasinglulu 	DVFS_FREQ_ACC_PARKING	= 2,
27*91f16700Schasinglulu 	DVFS_FREQ_ACC_SOC	= 3,
28*91f16700Schasinglulu 	DVFS_FREQ_ACC_APUPLL	= 4,
29*91f16700Schasinglulu 	DVFS_FREQ_00_026000_F	= 26000,
30*91f16700Schasinglulu 	DVFS_FREQ_00_208000_F	= 208000,
31*91f16700Schasinglulu 	DVFS_FREQ_00_238000_F	= 238000,
32*91f16700Schasinglulu 	DVFS_FREQ_00_273000_F	= 273000,
33*91f16700Schasinglulu 	DVFS_FREQ_00_312000_F	= 312000,
34*91f16700Schasinglulu 	DVFS_FREQ_00_358000_F	= 358000,
35*91f16700Schasinglulu 	DVFS_FREQ_00_385000_F	= 385000,
36*91f16700Schasinglulu 	DVFS_FREQ_00_499200_F	= 499200,
37*91f16700Schasinglulu 	DVFS_FREQ_00_500000_F	= 500000,
38*91f16700Schasinglulu 	DVFS_FREQ_00_525000_F	= 525000,
39*91f16700Schasinglulu 	DVFS_FREQ_00_546000_F	= 546000,
40*91f16700Schasinglulu 	DVFS_FREQ_00_594000_F	= 594000,
41*91f16700Schasinglulu 	DVFS_FREQ_00_624000_F	= 624000,
42*91f16700Schasinglulu 	DVFS_FREQ_00_688000_F	= 688000,
43*91f16700Schasinglulu 	DVFS_FREQ_00_687500_F	= 687500,
44*91f16700Schasinglulu 	DVFS_FREQ_00_728000_F	= 728000,
45*91f16700Schasinglulu 	DVFS_FREQ_00_800000_F	= 800000,
46*91f16700Schasinglulu 	DVFS_FREQ_00_832000_F	= 832000,
47*91f16700Schasinglulu 	DVFS_FREQ_00_960000_F	= 960000,
48*91f16700Schasinglulu 	DVFS_FREQ_00_1100000_F	= 1100000,
49*91f16700Schasinglulu };
50*91f16700Schasinglulu #define DVFS_FREQ_MAX (DVFS_FREQ_00_1100000_F)
51*91f16700Schasinglulu 
52*91f16700Schasinglulu enum pll_set_rate_mode {
53*91f16700Schasinglulu 	CON0_PCW		= 0,
54*91f16700Schasinglulu 	FHCTL_SW		= 1,
55*91f16700Schasinglulu 	FHCTL_HW		= 2,
56*91f16700Schasinglulu 	PLL_SET_RATE_MODE_MAX	= 3,
57*91f16700Schasinglulu };
58*91f16700Schasinglulu 
59*91f16700Schasinglulu enum apupll {
60*91f16700Schasinglulu 	APUPLL		= 0,
61*91f16700Schasinglulu 	NPUPLL		= 1,
62*91f16700Schasinglulu 	APUPLL1		= 2,
63*91f16700Schasinglulu 	APUPLL2		= 3,
64*91f16700Schasinglulu 	APUPLL_MAX	= 4,
65*91f16700Schasinglulu };
66*91f16700Schasinglulu 
67*91f16700Schasinglulu #define BUCK_VVPU_DOMAIN_DEFAULT_FREQ	(DVFS_FREQ_00_273000_F)
68*91f16700Schasinglulu #define BUCK_VMDLA_DOMAIN_DEFAULT_FREQ	(DVFS_FREQ_00_312000_F)
69*91f16700Schasinglulu #define BUCK_VCONN_DOMAIN_DEFAULT_FREQ	(DVFS_FREQ_00_208000_F)
70*91f16700Schasinglulu 
71*91f16700Schasinglulu #define apupwr_writel(VAL, REG)		mmio_write_32((uintptr_t)REG, VAL)
72*91f16700Schasinglulu #define apupwr_writel_relax(VAL, REG)	mmio_write_32_relax((uintptr_t)REG, VAL)
73*91f16700Schasinglulu #define apupwr_readl(REG)		mmio_read_32((uintptr_t)REG)
74*91f16700Schasinglulu #define apupwr_clrbits(VAL, REG)	mmio_clrbits_32((uintptr_t)REG, VAL)
75*91f16700Schasinglulu #define apupwr_setbits(VAL, REG)	mmio_setbits_32((uintptr_t)REG, VAL)
76*91f16700Schasinglulu #define apupwr_clrsetbits(CLR_VAL, SET_VAL, REG)	\
77*91f16700Schasinglulu 			  mmio_clrsetbits_32((uintptr_t)REG, CLR_VAL, SET_VAL)
78*91f16700Schasinglulu 
79*91f16700Schasinglulu /* PLL and related register */
80*91f16700Schasinglulu #define APU_PLL_BASE		(APUSYS_APU_PLL_BASE)
81*91f16700Schasinglulu #define APU_PLL4H_PLL1_CON0	(APU_PLL_BASE + 0x008)
82*91f16700Schasinglulu #define APU_PLL4H_PLL1_CON1	(APU_PLL_BASE + 0x00C)
83*91f16700Schasinglulu #define APU_PLL4H_PLL1_CON3	(APU_PLL_BASE + 0x014)
84*91f16700Schasinglulu 
85*91f16700Schasinglulu #define APU_PLL4H_PLL2_CON0	(APU_PLL_BASE + 0x018)
86*91f16700Schasinglulu #define APU_PLL4H_PLL2_CON1	(APU_PLL_BASE + 0x01C)
87*91f16700Schasinglulu #define APU_PLL4H_PLL2_CON3	(APU_PLL_BASE + 0x024)
88*91f16700Schasinglulu 
89*91f16700Schasinglulu #define APU_PLL4H_PLL3_CON0	(APU_PLL_BASE + 0x028)
90*91f16700Schasinglulu #define APU_PLL4H_PLL3_CON1	(APU_PLL_BASE + 0x02C)
91*91f16700Schasinglulu #define APU_PLL4H_PLL3_CON3	(APU_PLL_BASE + 0x034)
92*91f16700Schasinglulu 
93*91f16700Schasinglulu #define APU_PLL4H_PLL4_CON0	(APU_PLL_BASE + 0x038)
94*91f16700Schasinglulu #define APU_PLL4H_PLL4_CON1	(APU_PLL_BASE + 0x03C)
95*91f16700Schasinglulu #define APU_PLL4H_PLL4_CON3	(APU_PLL_BASE + 0x044)
96*91f16700Schasinglulu 
97*91f16700Schasinglulu #define APU_PLL4H_FHCTL_HP_EN		(APU_PLL_BASE + 0x0E00)
98*91f16700Schasinglulu #define APU_PLL4H_FHCTL_UNITSLOPE_EN	(APU_PLL_BASE + 0x0E04)
99*91f16700Schasinglulu #define APU_PLL4H_FHCTL_CLK_CON		(APU_PLL_BASE + 0x0E08)
100*91f16700Schasinglulu #define APU_PLL4H_FHCTL_RST_CON		(APU_PLL_BASE + 0x0E0C)
101*91f16700Schasinglulu #define APU_PLL4H_FHCTL_SLOPE0		(APU_PLL_BASE + 0x0E10)
102*91f16700Schasinglulu #define APU_PLL4H_FHCTL_SLOPE1		(APU_PLL_BASE + 0x0E14)
103*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC_CFG	(APU_PLL_BASE + 0x0E18)
104*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC0_CON	(APU_PLL_BASE + 0x0E1C)
105*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC1_CON	(APU_PLL_BASE + 0x0E20)
106*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC2_CON	(APU_PLL_BASE + 0x0E24)
107*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC3_CON	(APU_PLL_BASE + 0x0E28)
108*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC4_CON	(APU_PLL_BASE + 0x0E2C)
109*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC5_CON	(APU_PLL_BASE + 0x0E30)
110*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC6_CON	(APU_PLL_BASE + 0x0E34)
111*91f16700Schasinglulu #define APU_PLL4H_FHCTL_DSSC7_CON	(APU_PLL_BASE + 0x0E38)
112*91f16700Schasinglulu #define APU_PLL4H_FHCTL0_CFG		(APU_PLL_BASE + 0x0E3C)
113*91f16700Schasinglulu #define APU_PLL4H_FHCTL0_UPDNLMT	(APU_PLL_BASE + 0x0E40)
114*91f16700Schasinglulu #define APU_PLL4H_FHCTL0_DDS		(APU_PLL_BASE + 0x0E44)
115*91f16700Schasinglulu #define APU_PLL4H_FHCTL0_DVFS		(APU_PLL_BASE + 0x0E48)
116*91f16700Schasinglulu #define APU_PLL4H_FHCTL0_MON		(APU_PLL_BASE + 0x0E4C)
117*91f16700Schasinglulu #define APU_PLL4H_FHCTL1_CFG		(APU_PLL_BASE + 0x0E50)
118*91f16700Schasinglulu #define APU_PLL4H_FHCTL1_UPDNLMT	(APU_PLL_BASE + 0x0E54)
119*91f16700Schasinglulu #define APU_PLL4H_FHCTL1_DDS		(APU_PLL_BASE + 0x0E58)
120*91f16700Schasinglulu #define APU_PLL4H_FHCTL1_DVFS		(APU_PLL_BASE + 0x0E5C)
121*91f16700Schasinglulu #define APU_PLL4H_FHCTL1_MON		(APU_PLL_BASE + 0x0E60)
122*91f16700Schasinglulu #define APU_PLL4H_FHCTL2_CFG		(APU_PLL_BASE + 0x0E64)
123*91f16700Schasinglulu #define APU_PLL4H_FHCTL2_UPDNLMT	(APU_PLL_BASE + 0x0E68)
124*91f16700Schasinglulu #define APU_PLL4H_FHCTL2_DDS		(APU_PLL_BASE + 0x0E6C)
125*91f16700Schasinglulu #define APU_PLL4H_FHCTL2_DVFS		(APU_PLL_BASE + 0x0E70)
126*91f16700Schasinglulu #define APU_PLL4H_FHCTL2_MON		(APU_PLL_BASE + 0x0E74)
127*91f16700Schasinglulu #define APU_PLL4H_FHCTL3_CFG		(APU_PLL_BASE + 0x0E78)
128*91f16700Schasinglulu #define APU_PLL4H_FHCTL3_UPDNLMT	(APU_PLL_BASE + 0x0E7C)
129*91f16700Schasinglulu #define APU_PLL4H_FHCTL3_DDS		(APU_PLL_BASE + 0x0E80)
130*91f16700Schasinglulu #define APU_PLL4H_FHCTL3_DVFS		(APU_PLL_BASE + 0x0E84)
131*91f16700Schasinglulu #define APU_PLL4H_FHCTL3_MON		(APU_PLL_BASE + 0x0E88)
132*91f16700Schasinglulu 
133*91f16700Schasinglulu /* PLL4H_PLLx_CON0 */
134*91f16700Schasinglulu #define RG_PLL_EN		BIT(0)
135*91f16700Schasinglulu 
136*91f16700Schasinglulu /* PLL4H_PLLx_CON1 */
137*91f16700Schasinglulu #define RG_PLL_SDM_PCW_CHG	BIT(31)
138*91f16700Schasinglulu #define POSDIV_SHIFT		(24U)
139*91f16700Schasinglulu #define POSDIV_MASK		(0x7)
140*91f16700Schasinglulu 
141*91f16700Schasinglulu /* PLL4H_PLLx_CON3 */
142*91f16700Schasinglulu #define DA_PLL_SDM_PWR_ON	BIT(0)
143*91f16700Schasinglulu #define DA_PLL_SDM_ISO_EN	BIT(1)
144*91f16700Schasinglulu 
145*91f16700Schasinglulu /* FHCTLx_DDS */
146*91f16700Schasinglulu #define DDS_MASK		GENMASK_32(21, 0)
147*91f16700Schasinglulu #define PCW_FRACTIONAL_SHIFT	14U
148*91f16700Schasinglulu #define PLL_TGL_ORG		BIT(31)
149*91f16700Schasinglulu 
150*91f16700Schasinglulu #define PLL_READY_TIME_20US	(20U)
151*91f16700Schasinglulu #define PLL_CMD_READY_TIME_1US	(1U)
152*91f16700Schasinglulu 
153*91f16700Schasinglulu #define FREQ_VCO_MIN		(1500U) /* 1500MHz*/
154*91f16700Schasinglulu #define FREQ_FIN		(26U)	/* 26M*/
155*91f16700Schasinglulu 
156*91f16700Schasinglulu /* ACC and related register */
157*91f16700Schasinglulu #define APU_ACC_BASE		(APUSYS_APU_ACC_BASE)
158*91f16700Schasinglulu #define APU_ACC_CONFG_SET0	(APU_ACC_BASE + 0x000)
159*91f16700Schasinglulu #define APU_ACC_CONFG_SET1	(APU_ACC_BASE + 0x004)
160*91f16700Schasinglulu #define APU_ACC_CONFG_SET2	(APU_ACC_BASE + 0x008)
161*91f16700Schasinglulu #define APU_ACC_CONFG_SET4	(APU_ACC_BASE + 0x010)
162*91f16700Schasinglulu #define APU_ACC_CONFG_SET5	(APU_ACC_BASE + 0x014)
163*91f16700Schasinglulu #define APU_ACC_CONFG_SET7	(APU_ACC_BASE + 0x01C)
164*91f16700Schasinglulu 
165*91f16700Schasinglulu #define APU_ACC_CONFG_CLR0	(APU_ACC_BASE + 0x040)
166*91f16700Schasinglulu #define APU_ACC_CONFG_CLR1	(APU_ACC_BASE + 0x044)
167*91f16700Schasinglulu #define APU_ACC_CONFG_CLR2	(APU_ACC_BASE + 0x048)
168*91f16700Schasinglulu #define APU_ACC_CONFG_CLR4	(APU_ACC_BASE + 0x050)
169*91f16700Schasinglulu #define APU_ACC_CONFG_CLR5	(APU_ACC_BASE + 0x054)
170*91f16700Schasinglulu #define APU_ACC_CONFG_CLR7	(APU_ACC_BASE + 0x05C)
171*91f16700Schasinglulu 
172*91f16700Schasinglulu #define APU_ACC_FM_CONFG_SET	(APU_ACC_BASE + 0x0C0)
173*91f16700Schasinglulu #define APU_ACC_FM_CONFG_CLR	(APU_ACC_BASE + 0x0C4)
174*91f16700Schasinglulu #define APU_ACC_FM_SEL		(APU_ACC_BASE + 0x0C8)
175*91f16700Schasinglulu #define APU_ACC_FM_CNT		(APU_ACC_BASE + 0x0CC)
176*91f16700Schasinglulu 
177*91f16700Schasinglulu /* APU AO control */
178*91f16700Schasinglulu #define APU_AO_CTRL_BASE	(APUSYS_APU_S_S_4_BASE)
179*91f16700Schasinglulu #define APU_CSR_DUMMY_0		(APU_AO_CTRL_BASE + 0x24)
180*91f16700Schasinglulu 
181*91f16700Schasinglulu #define AO_MD32_MNOC_MASK	(BIT(1) | BIT(0))
182*91f16700Schasinglulu 
183*91f16700Schasinglulu #define BIT_CGEN_F26M		(0)
184*91f16700Schasinglulu #define BIT_CGEN_PARK		(1)
185*91f16700Schasinglulu #define BIT_CGEN_SOC		(2)
186*91f16700Schasinglulu #define BIT_CGEN_APU		(3)
187*91f16700Schasinglulu #define BIT_CGEN_OUT		(4)
188*91f16700Schasinglulu #define BIT_SEL_PARK		(8)
189*91f16700Schasinglulu #define BIT_SEL_F26M		(9)
190*91f16700Schasinglulu #define BIT_SEL_APU_DIV2	(10)
191*91f16700Schasinglulu #define BIT_SEL_APU		(11)
192*91f16700Schasinglulu #define BIT_SEL_PARK_SRC_OUT	(12)
193*91f16700Schasinglulu #define BIT_INVEN_OUT		(15)
194*91f16700Schasinglulu 
195*91f16700Schasinglulu #endif /* APUPWR_CLKCTL_DEF_H*/
196