Commit 97405d843ece2a53e67b801e02ee42005d26e172
Committed by
Tom Rini
1 parent
7f36c88f64
Exists in
master
and in
53 other branches
ARM: DRA7xx: clocks: Update PLL values
Update PLL values. SYS_CLKSEL value for 20MHz is changed to 2. In other platforms SYS_CLKSEL value 2 represents reserved. But in sys_clk array ind 1 is used for 13Mhz. Since other platforms are not using 13Mhz, reusing index 1 for 20MHz. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Sricharan R <r.sricharan@ti.com>
Showing 7 changed files with 73 additions and 46 deletions Side-by-side Diff
arch/arm/cpu/armv7/omap-common/clocks-common.c
... | ... | @@ -50,13 +50,12 @@ |
50 | 50 | |
51 | 51 | const u32 sys_clk_array[8] = { |
52 | 52 | 12000000, /* 12 MHz */ |
53 | - 13000000, /* 13 MHz */ | |
53 | + 20000000, /* 20 MHz */ | |
54 | 54 | 16800000, /* 16.8 MHz */ |
55 | 55 | 19200000, /* 19.2 MHz */ |
56 | 56 | 26000000, /* 26 MHz */ |
57 | 57 | 27000000, /* 27 MHz */ |
58 | 58 | 38400000, /* 38.4 MHz */ |
59 | - 20000000, /* 20 MHz */ | |
60 | 59 | }; |
61 | 60 | |
62 | 61 | static inline u32 __get_sys_clk_index(void) |
... | ... | @@ -75,13 +74,6 @@ |
75 | 74 | /* SYS_CLKSEL - 1 to match the dpll param array indices */ |
76 | 75 | ind = (readl((*prcm)->cm_sys_clksel) & |
77 | 76 | CM_SYS_CLKSEL_SYS_CLKSEL_MASK) - 1; |
78 | - /* | |
79 | - * SYS_CLKSEL value for 20MHz is 0. This is introduced newly | |
80 | - * in DRA7XX socs. SYS_CLKSEL -1 will be greater than | |
81 | - * NUM_SYS_CLK. So considering the last 3 bits as the index | |
82 | - * for the dpll param array. | |
83 | - */ | |
84 | - ind &= CM_SYS_CLKSEL_SYS_CLKSEL_MASK; | |
85 | 77 | } |
86 | 78 | return ind; |
87 | 79 | } |
... | ... | @@ -441,6 +433,12 @@ |
441 | 433 | params = get_abe_dpll_params(*dplls_data); |
442 | 434 | #ifdef CONFIG_SYS_OMAP_ABE_SYSCK |
443 | 435 | abe_ref_clk = CM_ABE_PLL_REF_CLKSEL_CLKSEL_SYSCLK; |
436 | + | |
437 | + if (omap_revision() == DRA752_ES1_0) | |
438 | + /* Select the sys clk for dpll_abe */ | |
439 | + clrsetbits_le32((*prcm)->cm_abe_pll_sys_clksel, | |
440 | + CM_CLKSEL_ABE_PLL_SYS_CLKSEL_MASK, | |
441 | + CM_ABE_PLL_SYS_CLKSEL_SYSCLK2); | |
444 | 442 | #else |
445 | 443 | abe_ref_clk = CM_ABE_PLL_REF_CLKSEL_CLKSEL_32KCLK; |
446 | 444 | /* |
arch/arm/cpu/armv7/omap5/hw_data.c
... | ... | @@ -100,14 +100,13 @@ |
100 | 100 | }; |
101 | 101 | |
102 | 102 | static const struct dpll_params mpu_dpll_params_1ghz[NUM_SYS_CLKS] = { |
103 | - {250, 2, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
104 | - {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ | |
105 | - {119, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
106 | - {625, 11, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
107 | - {500, 12, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
103 | + {250, 2, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
104 | + {500, 9, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 20 MHz */ | |
105 | + {119, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
106 | + {625, 11, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
107 | + {500, 12, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
108 | 108 | {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ |
109 | - {625, 23, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
110 | - {50, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1} /* 20 MHz */ | |
109 | + {625, 23, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
111 | 110 | }; |
112 | 111 | |
113 | 112 | static const struct dpll_params |
114 | 113 | |
... | ... | @@ -133,15 +132,14 @@ |
133 | 132 | }; |
134 | 133 | |
135 | 134 | static const struct dpll_params |
136 | - core_dpll_params_2128mhz_ddr532_dra7xx[NUM_SYS_CLKS] = { | |
137 | - {266, 2, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6}, /* 12 MHz */ | |
138 | - {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ | |
139 | - {443, 6, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6}, /* 16.8 MHz */ | |
140 | - {277, 4, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6}, /* 19.2 MHz */ | |
141 | - {368, 8, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6}, /* 26 MHz */ | |
135 | + core_dpll_params_2128mhz_dra7xx[NUM_SYS_CLKS] = { | |
136 | + {266, 2, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 12 MHz */ | |
137 | + {266, 4, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 20 MHz */ | |
138 | + {443, 6, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 16.8 MHz */ | |
139 | + {277, 4, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 19.2 MHz */ | |
140 | + {368, 8, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 26 MHz */ | |
142 | 141 | {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ |
143 | - {277, 9, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6}, /* 38.4 MHz */ | |
144 | - {266, 4, 2, -1, -1, 4, 62, 5, -1, 5, 7, 6} /* 20 MHz */ | |
142 | + {277, 9, 2, 1, -1, 4, 62, 5, -1, 5, 4, 6}, /* 38.4 MHz */ | |
145 | 143 | }; |
146 | 144 | |
147 | 145 | static const struct dpll_params |
148 | 146 | |
... | ... | @@ -187,14 +185,13 @@ |
187 | 185 | }; |
188 | 186 | |
189 | 187 | static const struct dpll_params per_dpll_params_768mhz_dra7xx[NUM_SYS_CLKS] = { |
190 | - {32, 0, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 12 MHz */ | |
191 | - {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ | |
192 | - {160, 6, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 16.8 MHz */ | |
193 | - {20, 0, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 19.2 MHz */ | |
194 | - {192, 12, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 26 MHz */ | |
188 | + {32, 0, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 12 MHz */ | |
189 | + {96, 4, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 20 MHz */ | |
190 | + {160, 6, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 16.8 MHz */ | |
191 | + {20, 0, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 19.2 MHz */ | |
192 | + {192, 12, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 26 MHz */ | |
195 | 193 | {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ |
196 | - {10, 0, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 38.4 MHz */ | |
197 | - {96, 4, 4, -1, 3, 4, 10, 2, -1, -1, -1, -1} /* 20 MHz */ | |
194 | + {10, 0, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1}, /* 38.4 MHz */ | |
198 | 195 | }; |
199 | 196 | |
200 | 197 | static const struct dpll_params iva_dpll_params_2330mhz[NUM_SYS_CLKS] = { |
... | ... | @@ -207,6 +204,16 @@ |
207 | 204 | {91, 2, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1} /* 38.4 MHz */ |
208 | 205 | }; |
209 | 206 | |
207 | +static const struct dpll_params iva_dpll_params_2330mhz_dra7xx[NUM_SYS_CLKS] = { | |
208 | + {1165, 11, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
209 | + {233, 3, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 20 MHz */ | |
210 | + {208, 2, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
211 | + {182, 2, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
212 | + {224, 4, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
213 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ | |
214 | + {91, 2, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
215 | +}; | |
216 | + | |
210 | 217 | /* ABE M & N values with sys_clk as source */ |
211 | 218 | static const struct dpll_params |
212 | 219 | abe_dpll_params_sysclk_196608khz[NUM_SYS_CLKS] = { |
213 | 220 | |
214 | 221 | |
215 | 222 | |
216 | 223 | |
... | ... | @@ -224,26 +231,36 @@ |
224 | 231 | 750, 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1 |
225 | 232 | }; |
226 | 233 | |
234 | +/* ABE M & N values with sysclk2(22.5792 MHz) as input */ | |
235 | +static const struct dpll_params | |
236 | + abe_dpll_params_sysclk2_361267khz[NUM_SYS_CLKS] = { | |
237 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
238 | + {16, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 20 MHz */ | |
239 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
240 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
241 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
242 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ | |
243 | + {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
244 | +}; | |
245 | + | |
227 | 246 | static const struct dpll_params usb_dpll_params_1920mhz[NUM_SYS_CLKS] = { |
228 | 247 | {400, 4, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ |
229 | - {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ | |
248 | + {480, 9, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 20 MHz */ | |
230 | 249 | {400, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ |
231 | 250 | {400, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ |
232 | 251 | {480, 12, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ |
233 | 252 | {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ |
234 | 253 | {400, 15, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ |
235 | - {48, 0, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1} /* 20 MHz */ | |
236 | 254 | }; |
237 | 255 | |
238 | -static const struct dpll_params ddr_dpll_params_1066mhz[NUM_SYS_CLKS] = { | |
239 | - {533, 11, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
240 | - {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 13 MHz */ | |
241 | - {222, 6, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
242 | - {111, 3, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
243 | - {41, 1, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
256 | +static const struct dpll_params ddr_dpll_params_2128mhz[NUM_SYS_CLKS] = { | |
257 | + {266, 2, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 12 MHz */ | |
258 | + {266, 4, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 20 MHz */ | |
259 | + {190, 2, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 16.8 MHz */ | |
260 | + {665, 11, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 19.2 MHz */ | |
261 | + {532, 12, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 26 MHz */ | |
244 | 262 | {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* 27 MHz */ |
245 | - {347, 24, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
246 | - {533, 19, 1, 1, 4, -1, -1, -1, -1, -1, -1, -1} /* 20 MHz */ | |
263 | + {665, 23, 2, 1, 8, -1, -1, -1, -1, -1, -1, -1}, /* 38.4 MHz */ | |
247 | 264 | }; |
248 | 265 | |
249 | 266 | struct dplls omap5_dplls_es1 = { |
250 | 267 | |
251 | 268 | |
... | ... | @@ -276,10 +293,12 @@ |
276 | 293 | |
277 | 294 | struct dplls dra7xx_dplls = { |
278 | 295 | .mpu = mpu_dpll_params_1ghz, |
279 | - .core = core_dpll_params_2128mhz_ddr532_dra7xx, | |
296 | + .core = core_dpll_params_2128mhz_dra7xx, | |
280 | 297 | .per = per_dpll_params_768mhz_dra7xx, |
298 | + .abe = abe_dpll_params_sysclk2_361267khz, | |
299 | + .iva = iva_dpll_params_2330mhz_dra7xx, | |
281 | 300 | .usb = usb_dpll_params_1920mhz, |
282 | - .ddr = ddr_dpll_params_1066mhz, | |
301 | + .ddr = ddr_dpll_params_2128mhz, | |
283 | 302 | }; |
284 | 303 | |
285 | 304 | struct pmic_data palmas = { |
arch/arm/cpu/armv7/omap5/prcm-regs.c
... | ... | @@ -951,6 +951,7 @@ |
951 | 951 | /* l4 wkup regs */ |
952 | 952 | .cm_abe_pll_ref_clksel = 0x4ae0610c, |
953 | 953 | .cm_sys_clksel = 0x4ae06110, |
954 | + .cm_abe_pll_sys_clksel = 0x4ae06118, | |
954 | 955 | .cm_wkup_clkstctrl = 0x4ae07800, |
955 | 956 | .cm_wkup_l4wkup_clkctrl = 0x4ae07820, |
956 | 957 | .cm_wkup_wdtimer1_clkctrl = 0x4ae07828, |
arch/arm/include/asm/arch-omap4/clock.h
arch/arm/include/asm/arch-omap5/clock.h
... | ... | @@ -81,7 +81,7 @@ |
81 | 81 | #define CM_CLKSEL_DCC_EN_MASK (1 << 22) |
82 | 82 | |
83 | 83 | /* CM_SYS_CLKSEL */ |
84 | -#define CM_SYS_CLKSEL_SYS_CLKSEL_MASK 7 | |
84 | +#define CM_SYS_CLKSEL_SYS_CLKSEL_MASK 7 | |
85 | 85 | |
86 | 86 | /* CM_CLKSEL_CORE */ |
87 | 87 | #define CLKSEL_CORE_SHIFT 0 |
... | ... | @@ -97,6 +97,12 @@ |
97 | 97 | #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_MASK 1 |
98 | 98 | #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_SYSCLK 0 |
99 | 99 | #define CM_ABE_PLL_REF_CLKSEL_CLKSEL_32KCLK 1 |
100 | + | |
101 | +/* CM_CLKSEL_ABE_PLL_SYS */ | |
102 | +#define CM_CLKSEL_ABE_PLL_SYS_CLKSEL_SHIFT 0 | |
103 | +#define CM_CLKSEL_ABE_PLL_SYS_CLKSEL_MASK 1 | |
104 | +#define CM_ABE_PLL_SYS_CLKSEL_SYSCLK1 0 | |
105 | +#define CM_ABE_PLL_SYS_CLKSEL_SYSCLK2 1 | |
100 | 106 | |
101 | 107 | /* CM_BYPCLK_DPLL_IVA */ |
102 | 108 | #define CM_BYPCLK_DPLL_IVA_CLKSEL_SHIFT 0 |
arch/arm/include/asm/omap_common.h
... | ... | @@ -29,7 +29,7 @@ |
29 | 29 | |
30 | 30 | #include <common.h> |
31 | 31 | |
32 | -#define NUM_SYS_CLKS 8 | |
32 | +#define NUM_SYS_CLKS 7 | |
33 | 33 | |
34 | 34 | struct prcm_regs { |
35 | 35 | /* cm1.ckgen */ |
... | ... | @@ -303,6 +303,7 @@ |
303 | 303 | /* l4 wkup regs */ |
304 | 304 | u32 cm_abe_pll_ref_clksel; |
305 | 305 | u32 cm_sys_clksel; |
306 | + u32 cm_abe_pll_sys_clksel; | |
306 | 307 | u32 cm_wkup_clkstctrl; |
307 | 308 | u32 cm_wkup_l4wkup_clkctrl; |
308 | 309 | u32 cm_wkup_wdtimer1_clkctrl; |