xref: /OK3568_Linux_fs/kernel/arch/arm/mach-omap2/opp2xxx.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * opp2xxx.h - macros for old-style OMAP2xxx "OPP" definitions
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2005-2009 Texas Instruments, Inc.
6*4882a593Smuzhiyun  * Copyright (C) 2004-2009 Nokia Corporation
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * Richard Woodruff <r-woodruff2@ti.com>
9*4882a593Smuzhiyun  *
10*4882a593Smuzhiyun  * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
11*4882a593Smuzhiyun  * These configurations are characterized by voltage and speed for clocks.
12*4882a593Smuzhiyun  * The device is only validated for certain combinations. One way to express
13*4882a593Smuzhiyun  * these combinations is via the 'ratio's' which the clocks operate with
14*4882a593Smuzhiyun  * respect to each other. These ratio sets are for a given voltage/DPLL
15*4882a593Smuzhiyun  * setting. All configurations can be described by a DPLL setting and a ratio
16*4882a593Smuzhiyun  * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
17*4882a593Smuzhiyun  *
18*4882a593Smuzhiyun  * 2430 differs from 2420 in that there are no more phase synchronizers used.
19*4882a593Smuzhiyun  * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
20*4882a593Smuzhiyun  * 2430 (iva2.1, NOdsp, mdm)
21*4882a593Smuzhiyun  *
22*4882a593Smuzhiyun  * XXX Missing voltage data.
23*4882a593Smuzhiyun  *
24*4882a593Smuzhiyun  * THe format described in this file is deprecated.  Once a reasonable
25*4882a593Smuzhiyun  * OPP API exists, the data in this file should be converted to use it.
26*4882a593Smuzhiyun  *
27*4882a593Smuzhiyun  * This is technically part of the OMAP2xxx clock code.
28*4882a593Smuzhiyun  */
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #ifndef __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
31*4882a593Smuzhiyun #define __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun /**
34*4882a593Smuzhiyun  * struct prcm_config - define clock rates on a per-OPP basis (24xx)
35*4882a593Smuzhiyun  *
36*4882a593Smuzhiyun  * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated.
37*4882a593Smuzhiyun  * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,CM_CLKSEL_DSP
38*4882a593Smuzhiyun  * CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL CM_CLKSEL2_PLL, CM_CLKSEL_MDM
39*4882a593Smuzhiyun  *
40*4882a593Smuzhiyun  * This is deprecated.  As soon as we have a decent OPP API, we should
41*4882a593Smuzhiyun  * move all this stuff to it.
42*4882a593Smuzhiyun  */
43*4882a593Smuzhiyun struct prcm_config {
44*4882a593Smuzhiyun 	unsigned long xtal_speed;	/* crystal rate */
45*4882a593Smuzhiyun 	unsigned long dpll_speed;	/* dpll: out*xtal*M/(N-1)table_recalc */
46*4882a593Smuzhiyun 	unsigned long mpu_speed;	/* speed of MPU */
47*4882a593Smuzhiyun 	unsigned long cm_clksel_mpu;	/* mpu divider */
48*4882a593Smuzhiyun 	unsigned long cm_clksel_dsp;	/* dsp+iva1 div(2420), iva2.1(2430) */
49*4882a593Smuzhiyun 	unsigned long cm_clksel_gfx;	/* gfx dividers */
50*4882a593Smuzhiyun 	unsigned long cm_clksel1_core;	/* major subsystem dividers */
51*4882a593Smuzhiyun 	unsigned long cm_clksel1_pll;	/* m,n */
52*4882a593Smuzhiyun 	unsigned long cm_clksel2_pll;	/* dpllx1 or x2 out */
53*4882a593Smuzhiyun 	unsigned long cm_clksel_mdm;	/* modem dividers 2430 only */
54*4882a593Smuzhiyun 	unsigned long base_sdrc_rfr;	/* base refresh timing for a set */
55*4882a593Smuzhiyun 	unsigned short flags;
56*4882a593Smuzhiyun };
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /* Core fields for cm_clksel, not ratio governed */
60*4882a593Smuzhiyun #define RX_CLKSEL_DSS1			(0x10 << 8)
61*4882a593Smuzhiyun #define RX_CLKSEL_DSS2			(0x0 << 13)
62*4882a593Smuzhiyun #define RX_CLKSEL_SSI			(0x5 << 20)
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /*-------------------------------------------------------------------------
65*4882a593Smuzhiyun  * Voltage/DPLL ratios
66*4882a593Smuzhiyun  *-------------------------------------------------------------------------*/
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /* 2430 Ratio's, 2430-Ratio Config 1 */
69*4882a593Smuzhiyun #define R1_CLKSEL_L3			(4 << 0)
70*4882a593Smuzhiyun #define R1_CLKSEL_L4			(2 << 5)
71*4882a593Smuzhiyun #define R1_CLKSEL_USB			(4 << 25)
72*4882a593Smuzhiyun #define R1_CM_CLKSEL1_CORE_VAL		(R1_CLKSEL_USB | RX_CLKSEL_SSI | \
73*4882a593Smuzhiyun 					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
74*4882a593Smuzhiyun 					 R1_CLKSEL_L4 | R1_CLKSEL_L3)
75*4882a593Smuzhiyun #define R1_CLKSEL_MPU			(2 << 0)
76*4882a593Smuzhiyun #define R1_CM_CLKSEL_MPU_VAL		R1_CLKSEL_MPU
77*4882a593Smuzhiyun #define R1_CLKSEL_DSP			(2 << 0)
78*4882a593Smuzhiyun #define R1_CLKSEL_DSP_IF		(2 << 5)
79*4882a593Smuzhiyun #define R1_CM_CLKSEL_DSP_VAL		(R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF)
80*4882a593Smuzhiyun #define R1_CLKSEL_GFX			(2 << 0)
81*4882a593Smuzhiyun #define R1_CM_CLKSEL_GFX_VAL		R1_CLKSEL_GFX
82*4882a593Smuzhiyun #define R1_CLKSEL_MDM			(4 << 0)
83*4882a593Smuzhiyun #define R1_CM_CLKSEL_MDM_VAL		R1_CLKSEL_MDM
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /* 2430-Ratio Config 2 */
86*4882a593Smuzhiyun #define R2_CLKSEL_L3			(6 << 0)
87*4882a593Smuzhiyun #define R2_CLKSEL_L4			(2 << 5)
88*4882a593Smuzhiyun #define R2_CLKSEL_USB			(2 << 25)
89*4882a593Smuzhiyun #define R2_CM_CLKSEL1_CORE_VAL		(R2_CLKSEL_USB | RX_CLKSEL_SSI | \
90*4882a593Smuzhiyun 					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
91*4882a593Smuzhiyun 					 R2_CLKSEL_L4 | R2_CLKSEL_L3)
92*4882a593Smuzhiyun #define R2_CLKSEL_MPU			(2 << 0)
93*4882a593Smuzhiyun #define R2_CM_CLKSEL_MPU_VAL		R2_CLKSEL_MPU
94*4882a593Smuzhiyun #define R2_CLKSEL_DSP			(2 << 0)
95*4882a593Smuzhiyun #define R2_CLKSEL_DSP_IF		(3 << 5)
96*4882a593Smuzhiyun #define R2_CM_CLKSEL_DSP_VAL		(R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF)
97*4882a593Smuzhiyun #define R2_CLKSEL_GFX			(2 << 0)
98*4882a593Smuzhiyun #define R2_CM_CLKSEL_GFX_VAL		R2_CLKSEL_GFX
99*4882a593Smuzhiyun #define R2_CLKSEL_MDM			(6 << 0)
100*4882a593Smuzhiyun #define R2_CM_CLKSEL_MDM_VAL		R2_CLKSEL_MDM
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun /* 2430-Ratio Bootm (BYPASS) */
103*4882a593Smuzhiyun #define RB_CLKSEL_L3			(1 << 0)
104*4882a593Smuzhiyun #define RB_CLKSEL_L4			(1 << 5)
105*4882a593Smuzhiyun #define RB_CLKSEL_USB			(1 << 25)
106*4882a593Smuzhiyun #define RB_CM_CLKSEL1_CORE_VAL		(RB_CLKSEL_USB | RX_CLKSEL_SSI | \
107*4882a593Smuzhiyun 					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
108*4882a593Smuzhiyun 					 RB_CLKSEL_L4 | RB_CLKSEL_L3)
109*4882a593Smuzhiyun #define RB_CLKSEL_MPU			(1 << 0)
110*4882a593Smuzhiyun #define RB_CM_CLKSEL_MPU_VAL		RB_CLKSEL_MPU
111*4882a593Smuzhiyun #define RB_CLKSEL_DSP			(1 << 0)
112*4882a593Smuzhiyun #define RB_CLKSEL_DSP_IF		(1 << 5)
113*4882a593Smuzhiyun #define RB_CM_CLKSEL_DSP_VAL		(RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF)
114*4882a593Smuzhiyun #define RB_CLKSEL_GFX			(1 << 0)
115*4882a593Smuzhiyun #define RB_CM_CLKSEL_GFX_VAL		RB_CLKSEL_GFX
116*4882a593Smuzhiyun #define RB_CLKSEL_MDM			(1 << 0)
117*4882a593Smuzhiyun #define RB_CM_CLKSEL_MDM_VAL		RB_CLKSEL_MDM
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /* 2420 Ratio Equivalents */
120*4882a593Smuzhiyun #define RXX_CLKSEL_VLYNQ		(0x12 << 15)
121*4882a593Smuzhiyun #define RXX_CLKSEL_SSI			(0x8 << 20)
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun /* 2420-PRCM III 532MHz core */
124*4882a593Smuzhiyun #define RIII_CLKSEL_L3			(4 << 0)	/* 133MHz */
125*4882a593Smuzhiyun #define RIII_CLKSEL_L4			(2 << 5)	/* 66.5MHz */
126*4882a593Smuzhiyun #define RIII_CLKSEL_USB			(4 << 25)	/* 33.25MHz */
127*4882a593Smuzhiyun #define RIII_CM_CLKSEL1_CORE_VAL	(RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \
128*4882a593Smuzhiyun 					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
129*4882a593Smuzhiyun 					 RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \
130*4882a593Smuzhiyun 					 RIII_CLKSEL_L3)
131*4882a593Smuzhiyun #define RIII_CLKSEL_MPU			(2 << 0)	/* 266MHz */
132*4882a593Smuzhiyun #define RIII_CM_CLKSEL_MPU_VAL		RIII_CLKSEL_MPU
133*4882a593Smuzhiyun #define RIII_CLKSEL_DSP			(3 << 0)	/* c5x - 177.3MHz */
134*4882a593Smuzhiyun #define RIII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 88.67MHz */
135*4882a593Smuzhiyun #define RIII_SYNC_DSP			(1 << 7)	/* Enable sync */
136*4882a593Smuzhiyun #define RIII_CLKSEL_IVA			(6 << 8)	/* iva1 - 88.67MHz */
137*4882a593Smuzhiyun #define RIII_SYNC_IVA			(1 << 13)	/* Enable sync */
138*4882a593Smuzhiyun #define RIII_CM_CLKSEL_DSP_VAL		(RIII_SYNC_IVA | RIII_CLKSEL_IVA | \
139*4882a593Smuzhiyun 					 RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \
140*4882a593Smuzhiyun 					 RIII_CLKSEL_DSP)
141*4882a593Smuzhiyun #define RIII_CLKSEL_GFX			(2 << 0)	/* 66.5MHz */
142*4882a593Smuzhiyun #define RIII_CM_CLKSEL_GFX_VAL		RIII_CLKSEL_GFX
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun /* 2420-PRCM II 600MHz core */
145*4882a593Smuzhiyun #define RII_CLKSEL_L3			(6 << 0)	/* 100MHz */
146*4882a593Smuzhiyun #define RII_CLKSEL_L4			(2 << 5)	/* 50MHz */
147*4882a593Smuzhiyun #define RII_CLKSEL_USB			(2 << 25)	/* 50MHz */
148*4882a593Smuzhiyun #define RII_CM_CLKSEL1_CORE_VAL		(RII_CLKSEL_USB | RXX_CLKSEL_SSI | \
149*4882a593Smuzhiyun 					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
150*4882a593Smuzhiyun 					 RX_CLKSEL_DSS1 | RII_CLKSEL_L4 | \
151*4882a593Smuzhiyun 					 RII_CLKSEL_L3)
152*4882a593Smuzhiyun #define RII_CLKSEL_MPU			(2 << 0)	/* 300MHz */
153*4882a593Smuzhiyun #define RII_CM_CLKSEL_MPU_VAL		RII_CLKSEL_MPU
154*4882a593Smuzhiyun #define RII_CLKSEL_DSP			(3 << 0)	/* c5x - 200MHz */
155*4882a593Smuzhiyun #define RII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 100MHz */
156*4882a593Smuzhiyun #define RII_SYNC_DSP			(0 << 7)	/* Bypass sync */
157*4882a593Smuzhiyun #define RII_CLKSEL_IVA			(3 << 8)	/* iva1 - 200MHz */
158*4882a593Smuzhiyun #define RII_SYNC_IVA			(0 << 13)	/* Bypass sync */
159*4882a593Smuzhiyun #define RII_CM_CLKSEL_DSP_VAL		(RII_SYNC_IVA | RII_CLKSEL_IVA | \
160*4882a593Smuzhiyun 					 RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \
161*4882a593Smuzhiyun 					 RII_CLKSEL_DSP)
162*4882a593Smuzhiyun #define RII_CLKSEL_GFX			(2 << 0)	/* 50MHz */
163*4882a593Smuzhiyun #define RII_CM_CLKSEL_GFX_VAL		RII_CLKSEL_GFX
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun /* 2420-PRCM I 660MHz core */
166*4882a593Smuzhiyun #define RI_CLKSEL_L3			(4 << 0)	/* 165MHz */
167*4882a593Smuzhiyun #define RI_CLKSEL_L4			(2 << 5)	/* 82.5MHz */
168*4882a593Smuzhiyun #define RI_CLKSEL_USB			(4 << 25)	/* 41.25MHz */
169*4882a593Smuzhiyun #define RI_CM_CLKSEL1_CORE_VAL		(RI_CLKSEL_USB |		\
170*4882a593Smuzhiyun 					 RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \
171*4882a593Smuzhiyun 					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
172*4882a593Smuzhiyun 					 RI_CLKSEL_L4 | RI_CLKSEL_L3)
173*4882a593Smuzhiyun #define RI_CLKSEL_MPU			(2 << 0)	/* 330MHz */
174*4882a593Smuzhiyun #define RI_CM_CLKSEL_MPU_VAL		RI_CLKSEL_MPU
175*4882a593Smuzhiyun #define RI_CLKSEL_DSP			(3 << 0)	/* c5x - 220MHz */
176*4882a593Smuzhiyun #define RI_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 110MHz */
177*4882a593Smuzhiyun #define RI_SYNC_DSP			(1 << 7)	/* Activate sync */
178*4882a593Smuzhiyun #define RI_CLKSEL_IVA			(4 << 8)	/* iva1 - 165MHz */
179*4882a593Smuzhiyun #define RI_SYNC_IVA			(0 << 13)	/* Bypass sync */
180*4882a593Smuzhiyun #define RI_CM_CLKSEL_DSP_VAL		(RI_SYNC_IVA | RI_CLKSEL_IVA |	\
181*4882a593Smuzhiyun 					 RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \
182*4882a593Smuzhiyun 					 RI_CLKSEL_DSP)
183*4882a593Smuzhiyun #define RI_CLKSEL_GFX			(1 << 0)	/* 165MHz */
184*4882a593Smuzhiyun #define RI_CM_CLKSEL_GFX_VAL		RI_CLKSEL_GFX
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun /* 2420-PRCM VII (boot) */
187*4882a593Smuzhiyun #define RVII_CLKSEL_L3			(1 << 0)
188*4882a593Smuzhiyun #define RVII_CLKSEL_L4			(1 << 5)
189*4882a593Smuzhiyun #define RVII_CLKSEL_DSS1		(1 << 8)
190*4882a593Smuzhiyun #define RVII_CLKSEL_DSS2		(0 << 13)
191*4882a593Smuzhiyun #define RVII_CLKSEL_VLYNQ		(1 << 15)
192*4882a593Smuzhiyun #define RVII_CLKSEL_SSI			(1 << 20)
193*4882a593Smuzhiyun #define RVII_CLKSEL_USB			(1 << 25)
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun #define RVII_CM_CLKSEL1_CORE_VAL	(RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \
196*4882a593Smuzhiyun 					 RVII_CLKSEL_VLYNQ | \
197*4882a593Smuzhiyun 					 RVII_CLKSEL_DSS2 | RVII_CLKSEL_DSS1 | \
198*4882a593Smuzhiyun 					 RVII_CLKSEL_L4 | RVII_CLKSEL_L3)
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define RVII_CLKSEL_MPU			(1 << 0) /* all divide by 1 */
201*4882a593Smuzhiyun #define RVII_CM_CLKSEL_MPU_VAL		RVII_CLKSEL_MPU
202*4882a593Smuzhiyun 
203*4882a593Smuzhiyun #define RVII_CLKSEL_DSP			(1 << 0)
204*4882a593Smuzhiyun #define RVII_CLKSEL_DSP_IF		(1 << 5)
205*4882a593Smuzhiyun #define RVII_SYNC_DSP			(0 << 7)
206*4882a593Smuzhiyun #define RVII_CLKSEL_IVA			(1 << 8)
207*4882a593Smuzhiyun #define RVII_SYNC_IVA			(0 << 13)
208*4882a593Smuzhiyun #define RVII_CM_CLKSEL_DSP_VAL		(RVII_SYNC_IVA | RVII_CLKSEL_IVA | \
209*4882a593Smuzhiyun 					 RVII_SYNC_DSP | RVII_CLKSEL_DSP_IF | \
210*4882a593Smuzhiyun 					 RVII_CLKSEL_DSP)
211*4882a593Smuzhiyun 
212*4882a593Smuzhiyun #define RVII_CLKSEL_GFX			(1 << 0)
213*4882a593Smuzhiyun #define RVII_CM_CLKSEL_GFX_VAL		RVII_CLKSEL_GFX
214*4882a593Smuzhiyun 
215*4882a593Smuzhiyun /*-------------------------------------------------------------------------
216*4882a593Smuzhiyun  * 2430 Target modes: Along with each configuration the CPU has several
217*4882a593Smuzhiyun  * modes which goes along with them. Modes mainly are the addition of
218*4882a593Smuzhiyun  * describe DPLL combinations to go along with a ratio.
219*4882a593Smuzhiyun  *-------------------------------------------------------------------------*/
220*4882a593Smuzhiyun 
221*4882a593Smuzhiyun /* Hardware governed */
222*4882a593Smuzhiyun #define MX_48M_SRC			(0 << 3)
223*4882a593Smuzhiyun #define MX_54M_SRC			(0 << 5)
224*4882a593Smuzhiyun #define MX_APLLS_CLIKIN_12		(3 << 23)
225*4882a593Smuzhiyun #define MX_APLLS_CLIKIN_13		(2 << 23)
226*4882a593Smuzhiyun #define MX_APLLS_CLIKIN_19_2		(0 << 23)
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun /*
229*4882a593Smuzhiyun  * 2430 - standalone, 2*ref*M/(n+1), M/N is for exactness not relock speed
230*4882a593Smuzhiyun  * #5a	(ratio1) baseport-target, target DPLL = 266*2 = 532MHz
231*4882a593Smuzhiyun  */
232*4882a593Smuzhiyun #define M5A_DPLL_MULT_12		(133 << 12)
233*4882a593Smuzhiyun #define M5A_DPLL_DIV_12			(5 << 8)
234*4882a593Smuzhiyun #define M5A_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
235*4882a593Smuzhiyun 					 M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \
236*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
237*4882a593Smuzhiyun #define M5A_DPLL_MULT_13		(61 << 12)
238*4882a593Smuzhiyun #define M5A_DPLL_DIV_13			(2 << 8)
239*4882a593Smuzhiyun #define M5A_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
240*4882a593Smuzhiyun 					 M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \
241*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
242*4882a593Smuzhiyun #define M5A_DPLL_MULT_19		(55 << 12)
243*4882a593Smuzhiyun #define M5A_DPLL_DIV_19			(3 << 8)
244*4882a593Smuzhiyun #define M5A_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
245*4882a593Smuzhiyun 					 M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \
246*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19_2)
247*4882a593Smuzhiyun /* #5b	(ratio1) target DPLL = 200*2 = 400MHz */
248*4882a593Smuzhiyun #define M5B_DPLL_MULT_12		(50 << 12)
249*4882a593Smuzhiyun #define M5B_DPLL_DIV_12			(2 << 8)
250*4882a593Smuzhiyun #define M5B_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
251*4882a593Smuzhiyun 					 M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \
252*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
253*4882a593Smuzhiyun #define M5B_DPLL_MULT_13		(200 << 12)
254*4882a593Smuzhiyun #define M5B_DPLL_DIV_13			(12 << 8)
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun #define M5B_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
257*4882a593Smuzhiyun 					 M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \
258*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
259*4882a593Smuzhiyun #define M5B_DPLL_MULT_19		(125 << 12)
260*4882a593Smuzhiyun #define M5B_DPLL_DIV_19			(31 << 8)
261*4882a593Smuzhiyun #define M5B_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
262*4882a593Smuzhiyun 					 M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \
263*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19_2)
264*4882a593Smuzhiyun /*
265*4882a593Smuzhiyun  * #4	(ratio2), DPLL = 399*2 = 798MHz, L3=133MHz
266*4882a593Smuzhiyun  */
267*4882a593Smuzhiyun #define M4_DPLL_MULT_12			(133 << 12)
268*4882a593Smuzhiyun #define M4_DPLL_DIV_12			(3 << 8)
269*4882a593Smuzhiyun #define M4_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
270*4882a593Smuzhiyun 					 M4_DPLL_DIV_12 | M4_DPLL_MULT_12 | \
271*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun #define M4_DPLL_MULT_13			(399 << 12)
274*4882a593Smuzhiyun #define M4_DPLL_DIV_13			(12 << 8)
275*4882a593Smuzhiyun #define M4_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
276*4882a593Smuzhiyun 					 M4_DPLL_DIV_13 | M4_DPLL_MULT_13 | \
277*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
278*4882a593Smuzhiyun 
279*4882a593Smuzhiyun #define M4_DPLL_MULT_19			(145 << 12)
280*4882a593Smuzhiyun #define M4_DPLL_DIV_19			(6 << 8)
281*4882a593Smuzhiyun #define M4_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
282*4882a593Smuzhiyun 					 M4_DPLL_DIV_19 | M4_DPLL_MULT_19 | \
283*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19_2)
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun /*
286*4882a593Smuzhiyun  * #3	(ratio2) baseport-target, target DPLL = 330*2 = 660MHz
287*4882a593Smuzhiyun  */
288*4882a593Smuzhiyun #define M3_DPLL_MULT_12			(55 << 12)
289*4882a593Smuzhiyun #define M3_DPLL_DIV_12			(1 << 8)
290*4882a593Smuzhiyun #define M3_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
291*4882a593Smuzhiyun 					 M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \
292*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
293*4882a593Smuzhiyun #define M3_DPLL_MULT_13			(76 << 12)
294*4882a593Smuzhiyun #define M3_DPLL_DIV_13			(2 << 8)
295*4882a593Smuzhiyun #define M3_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
296*4882a593Smuzhiyun 					 M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \
297*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
298*4882a593Smuzhiyun #define M3_DPLL_MULT_19			(17 << 12)
299*4882a593Smuzhiyun #define M3_DPLL_DIV_19			(0 << 8)
300*4882a593Smuzhiyun #define M3_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
301*4882a593Smuzhiyun 					 M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \
302*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19_2)
303*4882a593Smuzhiyun 
304*4882a593Smuzhiyun /*
305*4882a593Smuzhiyun  * #2   (ratio1) DPLL = 330*2 = 660MHz, L3=165MHz
306*4882a593Smuzhiyun  */
307*4882a593Smuzhiyun #define M2_DPLL_MULT_12		        (55 << 12)
308*4882a593Smuzhiyun #define M2_DPLL_DIV_12		        (1 << 8)
309*4882a593Smuzhiyun #define M2_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
310*4882a593Smuzhiyun 					 M2_DPLL_DIV_12 | M2_DPLL_MULT_12 | \
311*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun /* Speed changes - Used 658.7MHz instead of 660MHz for LP-Refresh M=76 N=2,
314*4882a593Smuzhiyun  * relock time issue */
315*4882a593Smuzhiyun /* Core frequency changed from 330/165 to 329/164 MHz*/
316*4882a593Smuzhiyun #define M2_DPLL_MULT_13		        (76 << 12)
317*4882a593Smuzhiyun #define M2_DPLL_DIV_13		        (2 << 8)
318*4882a593Smuzhiyun #define M2_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
319*4882a593Smuzhiyun 					 M2_DPLL_DIV_13 | M2_DPLL_MULT_13 | \
320*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define M2_DPLL_MULT_19		        (17 << 12)
323*4882a593Smuzhiyun #define M2_DPLL_DIV_19		        (0 << 8)
324*4882a593Smuzhiyun #define M2_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
325*4882a593Smuzhiyun 					 M2_DPLL_DIV_19 | M2_DPLL_MULT_19 | \
326*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19_2)
327*4882a593Smuzhiyun 
328*4882a593Smuzhiyun /* boot (boot) */
329*4882a593Smuzhiyun #define MB_DPLL_MULT			(1 << 12)
330*4882a593Smuzhiyun #define MB_DPLL_DIV			(0 << 8)
331*4882a593Smuzhiyun #define MB_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
332*4882a593Smuzhiyun 					 MB_DPLL_DIV | MB_DPLL_MULT | \
333*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
334*4882a593Smuzhiyun 
335*4882a593Smuzhiyun #define MB_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
336*4882a593Smuzhiyun 					 MB_DPLL_DIV | MB_DPLL_MULT | \
337*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun #define MB_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
340*4882a593Smuzhiyun 					 MB_DPLL_DIV | MB_DPLL_MULT | \
341*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_19)
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun /*
344*4882a593Smuzhiyun  * 2430 - chassis (sedna)
345*4882a593Smuzhiyun  * 165 (ratio1) same as above #2
346*4882a593Smuzhiyun  * 150 (ratio1)
347*4882a593Smuzhiyun  * 133 (ratio2) same as above #4
348*4882a593Smuzhiyun  * 110 (ratio2) same as above #3
349*4882a593Smuzhiyun  * 104 (ratio2)
350*4882a593Smuzhiyun  * boot (boot)
351*4882a593Smuzhiyun  */
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun /* PRCM I target DPLL = 2*330MHz = 660MHz */
354*4882a593Smuzhiyun #define MI_DPLL_MULT_12			(55 << 12)
355*4882a593Smuzhiyun #define MI_DPLL_DIV_12			(1 << 8)
356*4882a593Smuzhiyun #define MI_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
357*4882a593Smuzhiyun 					 MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \
358*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
359*4882a593Smuzhiyun 
360*4882a593Smuzhiyun /*
361*4882a593Smuzhiyun  * 2420 Equivalent - mode registers
362*4882a593Smuzhiyun  * PRCM II , target DPLL = 2*300MHz = 600MHz
363*4882a593Smuzhiyun  */
364*4882a593Smuzhiyun #define MII_DPLL_MULT_12		(50 << 12)
365*4882a593Smuzhiyun #define MII_DPLL_DIV_12			(1 << 8)
366*4882a593Smuzhiyun #define MII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
367*4882a593Smuzhiyun 					 MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \
368*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_12)
369*4882a593Smuzhiyun #define MII_DPLL_MULT_13		(300 << 12)
370*4882a593Smuzhiyun #define MII_DPLL_DIV_13			(12 << 8)
371*4882a593Smuzhiyun #define MII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
372*4882a593Smuzhiyun 					 MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \
373*4882a593Smuzhiyun 					 MX_APLLS_CLIKIN_13)
374*4882a593Smuzhiyun 
375*4882a593Smuzhiyun /* PRCM III target DPLL = 2*266 = 532MHz*/
376*4882a593Smuzhiyun #define MIII_DPLL_MULT_12		(133 << 12)
377*4882a593Smuzhiyun #define MIII_DPLL_DIV_12		(5 << 8)
378*4882a593Smuzhiyun #define MIII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
379*4882a593Smuzhiyun 					 MIII_DPLL_DIV_12 | \
380*4882a593Smuzhiyun 					 MIII_DPLL_MULT_12 | MX_APLLS_CLIKIN_12)
381*4882a593Smuzhiyun #define MIII_DPLL_MULT_13		(266 << 12)
382*4882a593Smuzhiyun #define MIII_DPLL_DIV_13		(12 << 8)
383*4882a593Smuzhiyun #define MIII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
384*4882a593Smuzhiyun 					 MIII_DPLL_DIV_13 | \
385*4882a593Smuzhiyun 					 MIII_DPLL_MULT_13 | MX_APLLS_CLIKIN_13)
386*4882a593Smuzhiyun 
387*4882a593Smuzhiyun /* PRCM VII (boot bypass) */
388*4882a593Smuzhiyun #define MVII_CM_CLKSEL1_PLL_12_VAL	MB_CM_CLKSEL1_PLL_12_VAL
389*4882a593Smuzhiyun #define MVII_CM_CLKSEL1_PLL_13_VAL	MB_CM_CLKSEL1_PLL_13_VAL
390*4882a593Smuzhiyun 
391*4882a593Smuzhiyun /* High and low operation value */
392*4882a593Smuzhiyun #define MX_CLKSEL2_PLL_2x_VAL		(2 << 0)
393*4882a593Smuzhiyun #define MX_CLKSEL2_PLL_1x_VAL		(1 << 0)
394*4882a593Smuzhiyun 
395*4882a593Smuzhiyun /* MPU speed defines */
396*4882a593Smuzhiyun #define S12M	12000000
397*4882a593Smuzhiyun #define S13M	13000000
398*4882a593Smuzhiyun #define S19M	19200000
399*4882a593Smuzhiyun #define S26M	26000000
400*4882a593Smuzhiyun #define S100M	100000000
401*4882a593Smuzhiyun #define S133M	133000000
402*4882a593Smuzhiyun #define S150M	150000000
403*4882a593Smuzhiyun #define S164M	164000000
404*4882a593Smuzhiyun #define S165M	165000000
405*4882a593Smuzhiyun #define S199M	199000000
406*4882a593Smuzhiyun #define S200M	200000000
407*4882a593Smuzhiyun #define S266M	266000000
408*4882a593Smuzhiyun #define S300M	300000000
409*4882a593Smuzhiyun #define S329M	329000000
410*4882a593Smuzhiyun #define S330M	330000000
411*4882a593Smuzhiyun #define S399M	399000000
412*4882a593Smuzhiyun #define S400M	400000000
413*4882a593Smuzhiyun #define S532M	532000000
414*4882a593Smuzhiyun #define S600M	600000000
415*4882a593Smuzhiyun #define S658M	658000000
416*4882a593Smuzhiyun #define S660M	660000000
417*4882a593Smuzhiyun #define S798M	798000000
418*4882a593Smuzhiyun 
419*4882a593Smuzhiyun 
420*4882a593Smuzhiyun extern const struct prcm_config omap2420_rate_table[];
421*4882a593Smuzhiyun 
422*4882a593Smuzhiyun #ifdef CONFIG_SOC_OMAP2430
423*4882a593Smuzhiyun extern const struct prcm_config omap2430_rate_table[];
424*4882a593Smuzhiyun #else
425*4882a593Smuzhiyun #define omap2430_rate_table	NULL
426*4882a593Smuzhiyun #endif
427*4882a593Smuzhiyun extern const struct prcm_config *rate_table;
428*4882a593Smuzhiyun extern const struct prcm_config *curr_prcm_set;
429*4882a593Smuzhiyun 
430*4882a593Smuzhiyun #endif
431