blob: 7c8d7f4856033e8e22f04c49616cdfff8943bc4a [file] [log] [blame]
Rajendra Nayak972c5422009-12-08 18:46:28 -07001/*
2 * OMAP4 Clock data
3 *
Rajendra Nayak54776052010-02-22 22:09:39 -07004 * Copyright (C) 2009-2010 Texas Instruments, Inc.
5 * Copyright (C) 2009-2010 Nokia Corporation
Rajendra Nayak972c5422009-12-08 18:46:28 -07006 *
7 * Paul Walmsley (paul@pwsan.com)
8 * Rajendra Nayak (rnayak@ti.com)
9 * Benoit Cousson (b-cousson@ti.com)
10 *
11 * This file is automatically generated from the OMAP hardware databases.
12 * We respectfully ask that any modifications to this file be coordinated
13 * with the public linux-omap@vger.kernel.org mailing list and the
14 * authors above to ensure that the autogeneration scripts are kept
15 * up-to-date with the file contents.
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License version 2 as
19 * published by the Free Software Foundation.
Rajendra Nayak76cf5292010-09-27 14:02:54 -060020 *
21 * XXX Some of the ES1 clocks have been removed/changed; once support
22 * is added for discriminating clocks by ES level, these should be added back
23 * in.
Rajendra Nayak972c5422009-12-08 18:46:28 -070024 */
25
26#include <linux/kernel.h>
Paul Walmsley93340a22010-02-22 22:09:12 -070027#include <linux/list.h>
Rajendra Nayak972c5422009-12-08 18:46:28 -070028#include <linux/clk.h>
Rajendra Nayak972c5422009-12-08 18:46:28 -070029#include <plat/clkdev_omap.h>
30
31#include "clock.h"
32#include "clock44xx.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070033#include "cm1_44xx.h"
34#include "cm2_44xx.h"
Rajendra Nayak972c5422009-12-08 18:46:28 -070035#include "cm-regbits-44xx.h"
Paul Walmsley59fb6592010-12-21 15:30:55 -070036#include "prm44xx.h"
Paul Walmsleyd198b512010-12-21 15:30:54 -070037#include "prm44xx.h"
Rajendra Nayak972c5422009-12-08 18:46:28 -070038#include "prm-regbits-44xx.h"
Paul Walmsley4814ced2010-10-08 11:40:20 -060039#include "control.h"
Rajendra Nayak972c5422009-12-08 18:46:28 -070040
Paul Walmsley59fb6592010-12-21 15:30:55 -070041/* OMAP4 modulemode control */
42#define OMAP4430_MODULEMODE_HWCTRL 0
43#define OMAP4430_MODULEMODE_SWCTRL 1
44
Rajendra Nayak972c5422009-12-08 18:46:28 -070045/* Root clocks */
46
47static struct clk extalt_clkin_ck = {
48 .name = "extalt_clkin_ck",
49 .rate = 59000000,
50 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070051};
52
53static struct clk pad_clks_ck = {
54 .name = "pad_clks_ck",
55 .rate = 12000000,
Benoit Coussond9b98f52010-12-21 21:08:13 -070056 .ops = &clkops_omap2_dflt,
57 .enable_reg = OMAP4430_CM_CLKSEL_ABE,
58 .enable_bit = OMAP4430_PAD_CLKS_GATE_SHIFT,
Rajendra Nayak972c5422009-12-08 18:46:28 -070059};
60
61static struct clk pad_slimbus_core_clks_ck = {
62 .name = "pad_slimbus_core_clks_ck",
63 .rate = 12000000,
64 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070065};
66
67static struct clk secure_32k_clk_src_ck = {
68 .name = "secure_32k_clk_src_ck",
69 .rate = 32768,
70 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070071};
72
73static struct clk slimbus_clk = {
74 .name = "slimbus_clk",
75 .rate = 12000000,
Benoit Coussond9b98f52010-12-21 21:08:13 -070076 .ops = &clkops_omap2_dflt,
77 .enable_reg = OMAP4430_CM_CLKSEL_ABE,
78 .enable_bit = OMAP4430_SLIMBUS_CLK_GATE_SHIFT,
Rajendra Nayak972c5422009-12-08 18:46:28 -070079};
80
81static struct clk sys_32k_ck = {
82 .name = "sys_32k_ck",
83 .rate = 32768,
84 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070085};
86
87static struct clk virt_12000000_ck = {
88 .name = "virt_12000000_ck",
89 .ops = &clkops_null,
90 .rate = 12000000,
91};
92
93static struct clk virt_13000000_ck = {
94 .name = "virt_13000000_ck",
95 .ops = &clkops_null,
96 .rate = 13000000,
97};
98
99static struct clk virt_16800000_ck = {
100 .name = "virt_16800000_ck",
101 .ops = &clkops_null,
102 .rate = 16800000,
103};
104
105static struct clk virt_19200000_ck = {
106 .name = "virt_19200000_ck",
107 .ops = &clkops_null,
108 .rate = 19200000,
109};
110
111static struct clk virt_26000000_ck = {
112 .name = "virt_26000000_ck",
113 .ops = &clkops_null,
114 .rate = 26000000,
115};
116
117static struct clk virt_27000000_ck = {
118 .name = "virt_27000000_ck",
119 .ops = &clkops_null,
120 .rate = 27000000,
121};
122
123static struct clk virt_38400000_ck = {
124 .name = "virt_38400000_ck",
125 .ops = &clkops_null,
126 .rate = 38400000,
127};
128
129static const struct clksel_rate div_1_0_rates[] = {
130 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
131 { .div = 0 },
132};
133
134static const struct clksel_rate div_1_1_rates[] = {
135 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
136 { .div = 0 },
137};
138
139static const struct clksel_rate div_1_2_rates[] = {
140 { .div = 1, .val = 2, .flags = RATE_IN_4430 },
141 { .div = 0 },
142};
143
144static const struct clksel_rate div_1_3_rates[] = {
145 { .div = 1, .val = 3, .flags = RATE_IN_4430 },
146 { .div = 0 },
147};
148
149static const struct clksel_rate div_1_4_rates[] = {
150 { .div = 1, .val = 4, .flags = RATE_IN_4430 },
151 { .div = 0 },
152};
153
154static const struct clksel_rate div_1_5_rates[] = {
155 { .div = 1, .val = 5, .flags = RATE_IN_4430 },
156 { .div = 0 },
157};
158
159static const struct clksel_rate div_1_6_rates[] = {
160 { .div = 1, .val = 6, .flags = RATE_IN_4430 },
161 { .div = 0 },
162};
163
164static const struct clksel_rate div_1_7_rates[] = {
165 { .div = 1, .val = 7, .flags = RATE_IN_4430 },
166 { .div = 0 },
167};
168
169static const struct clksel sys_clkin_sel[] = {
170 { .parent = &virt_12000000_ck, .rates = div_1_1_rates },
171 { .parent = &virt_13000000_ck, .rates = div_1_2_rates },
172 { .parent = &virt_16800000_ck, .rates = div_1_3_rates },
173 { .parent = &virt_19200000_ck, .rates = div_1_4_rates },
174 { .parent = &virt_26000000_ck, .rates = div_1_5_rates },
175 { .parent = &virt_27000000_ck, .rates = div_1_6_rates },
176 { .parent = &virt_38400000_ck, .rates = div_1_7_rates },
177 { .parent = NULL },
178};
179
180static struct clk sys_clkin_ck = {
181 .name = "sys_clkin_ck",
182 .rate = 38400000,
183 .clksel = sys_clkin_sel,
184 .init = &omap2_init_clksel_parent,
185 .clksel_reg = OMAP4430_CM_SYS_CLKSEL,
186 .clksel_mask = OMAP4430_SYS_CLKSEL_MASK,
187 .ops = &clkops_null,
188 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700189};
190
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600191static struct clk tie_low_clock_ck = {
192 .name = "tie_low_clock_ck",
193 .rate = 0,
194 .ops = &clkops_null,
195};
196
Rajendra Nayak972c5422009-12-08 18:46:28 -0700197static struct clk utmi_phy_clkout_ck = {
198 .name = "utmi_phy_clkout_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600199 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700200 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700201};
202
203static struct clk xclk60mhsp1_ck = {
204 .name = "xclk60mhsp1_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600205 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700206 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700207};
208
209static struct clk xclk60mhsp2_ck = {
210 .name = "xclk60mhsp2_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600211 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700212 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700213};
214
215static struct clk xclk60motg_ck = {
216 .name = "xclk60motg_ck",
217 .rate = 60000000,
218 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700219};
220
221/* Module clocks and DPLL outputs */
222
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600223static const struct clksel abe_dpll_bypass_clk_mux_sel[] = {
224 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700225 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
226 { .parent = NULL },
227};
228
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600229static struct clk abe_dpll_bypass_clk_mux_ck = {
230 .name = "abe_dpll_bypass_clk_mux_ck",
231 .parent = &sys_clkin_ck,
232 .ops = &clkops_null,
233 .recalc = &followparent_recalc,
234};
235
Rajendra Nayak972c5422009-12-08 18:46:28 -0700236static struct clk abe_dpll_refclk_mux_ck = {
237 .name = "abe_dpll_refclk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600238 .parent = &sys_clkin_ck,
239 .clksel = abe_dpll_bypass_clk_mux_sel,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700240 .init = &omap2_init_clksel_parent,
241 .clksel_reg = OMAP4430_CM_ABE_PLL_REF_CLKSEL,
242 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
243 .ops = &clkops_null,
244 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700245};
246
247/* DPLL_ABE */
248static struct dpll_data dpll_abe_dd = {
249 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_ABE,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600250 .clk_bypass = &abe_dpll_bypass_clk_mux_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700251 .clk_ref = &abe_dpll_refclk_mux_ck,
252 .control_reg = OMAP4430_CM_CLKMODE_DPLL_ABE,
253 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
254 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_ABE,
255 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_ABE,
256 .mult_mask = OMAP4430_DPLL_MULT_MASK,
257 .div1_mask = OMAP4430_DPLL_DIV_MASK,
258 .enable_mask = OMAP4430_DPLL_EN_MASK,
259 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
260 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
261 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
262 .max_divider = OMAP4430_MAX_DPLL_DIV,
263 .min_divider = 1,
264};
265
266
267static struct clk dpll_abe_ck = {
268 .name = "dpll_abe_ck",
269 .parent = &abe_dpll_refclk_mux_ck,
270 .dpll_data = &dpll_abe_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700271 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700272 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700273 .recalc = &omap3_dpll_recalc,
274 .round_rate = &omap2_dpll_round_rate,
275 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700276};
277
Thara Gopinath032b5a72010-12-21 21:08:13 -0700278static struct clk dpll_abe_x2_ck = {
279 .name = "dpll_abe_x2_ck",
Rajendra Nayak972c5422009-12-08 18:46:28 -0700280 .parent = &dpll_abe_ck,
281 .ops = &clkops_null,
Thara Gopinath032b5a72010-12-21 21:08:13 -0700282 .recalc = &omap3_clkoutx2_recalc,
283};
284
285static const struct clksel_rate div31_1to31_rates[] = {
286 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
287 { .div = 2, .val = 2, .flags = RATE_IN_4430 },
288 { .div = 3, .val = 3, .flags = RATE_IN_4430 },
289 { .div = 4, .val = 4, .flags = RATE_IN_4430 },
290 { .div = 5, .val = 5, .flags = RATE_IN_4430 },
291 { .div = 6, .val = 6, .flags = RATE_IN_4430 },
292 { .div = 7, .val = 7, .flags = RATE_IN_4430 },
293 { .div = 8, .val = 8, .flags = RATE_IN_4430 },
294 { .div = 9, .val = 9, .flags = RATE_IN_4430 },
295 { .div = 10, .val = 10, .flags = RATE_IN_4430 },
296 { .div = 11, .val = 11, .flags = RATE_IN_4430 },
297 { .div = 12, .val = 12, .flags = RATE_IN_4430 },
298 { .div = 13, .val = 13, .flags = RATE_IN_4430 },
299 { .div = 14, .val = 14, .flags = RATE_IN_4430 },
300 { .div = 15, .val = 15, .flags = RATE_IN_4430 },
301 { .div = 16, .val = 16, .flags = RATE_IN_4430 },
302 { .div = 17, .val = 17, .flags = RATE_IN_4430 },
303 { .div = 18, .val = 18, .flags = RATE_IN_4430 },
304 { .div = 19, .val = 19, .flags = RATE_IN_4430 },
305 { .div = 20, .val = 20, .flags = RATE_IN_4430 },
306 { .div = 21, .val = 21, .flags = RATE_IN_4430 },
307 { .div = 22, .val = 22, .flags = RATE_IN_4430 },
308 { .div = 23, .val = 23, .flags = RATE_IN_4430 },
309 { .div = 24, .val = 24, .flags = RATE_IN_4430 },
310 { .div = 25, .val = 25, .flags = RATE_IN_4430 },
311 { .div = 26, .val = 26, .flags = RATE_IN_4430 },
312 { .div = 27, .val = 27, .flags = RATE_IN_4430 },
313 { .div = 28, .val = 28, .flags = RATE_IN_4430 },
314 { .div = 29, .val = 29, .flags = RATE_IN_4430 },
315 { .div = 30, .val = 30, .flags = RATE_IN_4430 },
316 { .div = 31, .val = 31, .flags = RATE_IN_4430 },
317 { .div = 0 },
318};
319
320static const struct clksel dpll_abe_m2x2_div[] = {
321 { .parent = &dpll_abe_x2_ck, .rates = div31_1to31_rates },
322 { .parent = NULL },
323};
324
325static struct clk dpll_abe_m2x2_ck = {
326 .name = "dpll_abe_m2x2_ck",
327 .parent = &dpll_abe_x2_ck,
328 .clksel = dpll_abe_m2x2_div,
329 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE,
330 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
331 .ops = &clkops_null,
332 .recalc = &omap2_clksel_recalc,
333 .round_rate = &omap2_clksel_round_rate,
334 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700335};
336
337static struct clk abe_24m_fclk = {
338 .name = "abe_24m_fclk",
339 .parent = &dpll_abe_m2x2_ck,
340 .ops = &clkops_null,
341 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700342};
343
344static const struct clksel_rate div3_1to4_rates[] = {
345 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
346 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
347 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
348 { .div = 0 },
349};
350
351static const struct clksel abe_clk_div[] = {
352 { .parent = &dpll_abe_m2x2_ck, .rates = div3_1to4_rates },
353 { .parent = NULL },
354};
355
356static struct clk abe_clk = {
357 .name = "abe_clk",
358 .parent = &dpll_abe_m2x2_ck,
359 .clksel = abe_clk_div,
360 .clksel_reg = OMAP4430_CM_CLKSEL_ABE,
361 .clksel_mask = OMAP4430_CLKSEL_OPP_MASK,
362 .ops = &clkops_null,
363 .recalc = &omap2_clksel_recalc,
364 .round_rate = &omap2_clksel_round_rate,
365 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700366};
367
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600368static const struct clksel_rate div2_1to2_rates[] = {
369 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
370 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
371 { .div = 0 },
372};
373
Rajendra Nayak972c5422009-12-08 18:46:28 -0700374static const struct clksel aess_fclk_div[] = {
375 { .parent = &abe_clk, .rates = div2_1to2_rates },
376 { .parent = NULL },
377};
378
379static struct clk aess_fclk = {
380 .name = "aess_fclk",
381 .parent = &abe_clk,
382 .clksel = aess_fclk_div,
383 .clksel_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL,
384 .clksel_mask = OMAP4430_CLKSEL_AESS_FCLK_MASK,
385 .ops = &clkops_null,
386 .recalc = &omap2_clksel_recalc,
387 .round_rate = &omap2_clksel_round_rate,
388 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700389};
390
Thara Gopinath032b5a72010-12-21 21:08:13 -0700391static struct clk dpll_abe_m3x2_ck = {
392 .name = "dpll_abe_m3x2_ck",
393 .parent = &dpll_abe_x2_ck,
394 .clksel = dpll_abe_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700395 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_ABE,
396 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
397 .ops = &clkops_null,
398 .recalc = &omap2_clksel_recalc,
399 .round_rate = &omap2_clksel_round_rate,
400 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700401};
402
403static const struct clksel core_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600404 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Thara Gopinath032b5a72010-12-21 21:08:13 -0700405 { .parent = &dpll_abe_m3x2_ck, .rates = div_1_1_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700406 { .parent = NULL },
407};
408
409static struct clk core_hsd_byp_clk_mux_ck = {
410 .name = "core_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600411 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700412 .clksel = core_hsd_byp_clk_mux_sel,
413 .init = &omap2_init_clksel_parent,
414 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
415 .clksel_mask = OMAP4430_DPLL_BYP_CLKSEL_MASK,
416 .ops = &clkops_null,
417 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700418};
419
420/* DPLL_CORE */
421static struct dpll_data dpll_core_dd = {
422 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
423 .clk_bypass = &core_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600424 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700425 .control_reg = OMAP4430_CM_CLKMODE_DPLL_CORE,
426 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
427 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_CORE,
428 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_CORE,
429 .mult_mask = OMAP4430_DPLL_MULT_MASK,
430 .div1_mask = OMAP4430_DPLL_DIV_MASK,
431 .enable_mask = OMAP4430_DPLL_EN_MASK,
432 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
433 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
434 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
435 .max_divider = OMAP4430_MAX_DPLL_DIV,
436 .min_divider = 1,
437};
438
439
440static struct clk dpll_core_ck = {
441 .name = "dpll_core_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600442 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700443 .dpll_data = &dpll_core_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700444 .init = &omap2_init_dpll_parent,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700445 .ops = &clkops_null,
446 .recalc = &omap3_dpll_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700447};
448
Thara Gopinath032b5a72010-12-21 21:08:13 -0700449static struct clk dpll_core_x2_ck = {
450 .name = "dpll_core_x2_ck",
451 .parent = &dpll_core_ck,
452 .ops = &clkops_null,
453 .recalc = &omap3_clkoutx2_recalc,
454};
455
456static const struct clksel dpll_core_m6x2_div[] = {
457 { .parent = &dpll_core_x2_ck, .rates = div31_1to31_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700458 { .parent = NULL },
459};
460
Thara Gopinath032b5a72010-12-21 21:08:13 -0700461static struct clk dpll_core_m6x2_ck = {
462 .name = "dpll_core_m6x2_ck",
463 .parent = &dpll_core_x2_ck,
464 .clksel = dpll_core_m6x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700465 .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_CORE,
466 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
467 .ops = &clkops_null,
468 .recalc = &omap2_clksel_recalc,
469 .round_rate = &omap2_clksel_round_rate,
470 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700471};
472
473static const struct clksel dbgclk_mux_sel[] = {
474 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Thara Gopinath032b5a72010-12-21 21:08:13 -0700475 { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700476 { .parent = NULL },
477};
478
479static struct clk dbgclk_mux_ck = {
480 .name = "dbgclk_mux_ck",
481 .parent = &sys_clkin_ck,
482 .ops = &clkops_null,
483 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700484};
485
Thara Gopinath032b5a72010-12-21 21:08:13 -0700486static const struct clksel dpll_core_m2_div[] = {
487 { .parent = &dpll_core_ck, .rates = div31_1to31_rates },
488 { .parent = NULL },
489};
490
Rajendra Nayak972c5422009-12-08 18:46:28 -0700491static struct clk dpll_core_m2_ck = {
492 .name = "dpll_core_m2_ck",
493 .parent = &dpll_core_ck,
Thara Gopinath032b5a72010-12-21 21:08:13 -0700494 .clksel = dpll_core_m2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700495 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_CORE,
496 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
497 .ops = &clkops_null,
498 .recalc = &omap2_clksel_recalc,
499 .round_rate = &omap2_clksel_round_rate,
500 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700501};
502
503static struct clk ddrphy_ck = {
504 .name = "ddrphy_ck",
505 .parent = &dpll_core_m2_ck,
506 .ops = &clkops_null,
507 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700508};
509
Thara Gopinath032b5a72010-12-21 21:08:13 -0700510static struct clk dpll_core_m5x2_ck = {
511 .name = "dpll_core_m5x2_ck",
512 .parent = &dpll_core_x2_ck,
513 .clksel = dpll_core_m6x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700514 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_CORE,
515 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
516 .ops = &clkops_null,
517 .recalc = &omap2_clksel_recalc,
518 .round_rate = &omap2_clksel_round_rate,
519 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700520};
521
522static const struct clksel div_core_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -0700523 { .parent = &dpll_core_m5x2_ck, .rates = div2_1to2_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700524 { .parent = NULL },
525};
526
527static struct clk div_core_ck = {
528 .name = "div_core_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700529 .parent = &dpll_core_m5x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700530 .clksel = div_core_div,
531 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
532 .clksel_mask = OMAP4430_CLKSEL_CORE_MASK,
533 .ops = &clkops_null,
534 .recalc = &omap2_clksel_recalc,
535 .round_rate = &omap2_clksel_round_rate,
536 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700537};
538
539static const struct clksel_rate div4_1to8_rates[] = {
540 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
541 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
542 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
543 { .div = 8, .val = 3, .flags = RATE_IN_4430 },
544 { .div = 0 },
545};
546
547static const struct clksel div_iva_hs_clk_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -0700548 { .parent = &dpll_core_m5x2_ck, .rates = div4_1to8_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700549 { .parent = NULL },
550};
551
552static struct clk div_iva_hs_clk = {
553 .name = "div_iva_hs_clk",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700554 .parent = &dpll_core_m5x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700555 .clksel = div_iva_hs_clk_div,
556 .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_IVA,
557 .clksel_mask = OMAP4430_CLKSEL_0_1_MASK,
558 .ops = &clkops_null,
559 .recalc = &omap2_clksel_recalc,
560 .round_rate = &omap2_clksel_round_rate,
561 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700562};
563
564static struct clk div_mpu_hs_clk = {
565 .name = "div_mpu_hs_clk",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700566 .parent = &dpll_core_m5x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700567 .clksel = div_iva_hs_clk_div,
568 .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_MPU,
569 .clksel_mask = OMAP4430_CLKSEL_0_1_MASK,
570 .ops = &clkops_null,
571 .recalc = &omap2_clksel_recalc,
572 .round_rate = &omap2_clksel_round_rate,
573 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700574};
575
Thara Gopinath032b5a72010-12-21 21:08:13 -0700576static struct clk dpll_core_m4x2_ck = {
577 .name = "dpll_core_m4x2_ck",
578 .parent = &dpll_core_x2_ck,
579 .clksel = dpll_core_m6x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700580 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_CORE,
581 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
582 .ops = &clkops_null,
583 .recalc = &omap2_clksel_recalc,
584 .round_rate = &omap2_clksel_round_rate,
585 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700586};
587
588static struct clk dll_clk_div_ck = {
589 .name = "dll_clk_div_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700590 .parent = &dpll_core_m4x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700591 .ops = &clkops_null,
592 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700593};
594
Thara Gopinath032b5a72010-12-21 21:08:13 -0700595static const struct clksel dpll_abe_m2_div[] = {
596 { .parent = &dpll_abe_ck, .rates = div31_1to31_rates },
597 { .parent = NULL },
598};
599
Rajendra Nayak972c5422009-12-08 18:46:28 -0700600static struct clk dpll_abe_m2_ck = {
601 .name = "dpll_abe_m2_ck",
602 .parent = &dpll_abe_ck,
Thara Gopinath032b5a72010-12-21 21:08:13 -0700603 .clksel = dpll_abe_m2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700604 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE,
605 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
606 .ops = &clkops_null,
607 .recalc = &omap2_clksel_recalc,
608 .round_rate = &omap2_clksel_round_rate,
609 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700610};
611
Thara Gopinath032b5a72010-12-21 21:08:13 -0700612static struct clk dpll_core_m3x2_ck = {
613 .name = "dpll_core_m3x2_ck",
614 .parent = &dpll_core_x2_ck,
615 .clksel = dpll_core_m6x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700616 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_CORE,
617 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
618 .ops = &clkops_null,
619 .recalc = &omap2_clksel_recalc,
620 .round_rate = &omap2_clksel_round_rate,
621 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700622};
623
Thara Gopinath032b5a72010-12-21 21:08:13 -0700624static struct clk dpll_core_m7x2_ck = {
625 .name = "dpll_core_m7x2_ck",
626 .parent = &dpll_core_x2_ck,
627 .clksel = dpll_core_m6x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700628 .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_CORE,
629 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
630 .ops = &clkops_null,
631 .recalc = &omap2_clksel_recalc,
632 .round_rate = &omap2_clksel_round_rate,
633 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700634};
635
636static const struct clksel iva_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600637 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700638 { .parent = &div_iva_hs_clk, .rates = div_1_1_rates },
639 { .parent = NULL },
640};
641
642static struct clk iva_hsd_byp_clk_mux_ck = {
643 .name = "iva_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600644 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700645 .ops = &clkops_null,
646 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700647};
648
649/* DPLL_IVA */
650static struct dpll_data dpll_iva_dd = {
651 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_IVA,
652 .clk_bypass = &iva_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600653 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700654 .control_reg = OMAP4430_CM_CLKMODE_DPLL_IVA,
655 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
656 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_IVA,
657 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_IVA,
658 .mult_mask = OMAP4430_DPLL_MULT_MASK,
659 .div1_mask = OMAP4430_DPLL_DIV_MASK,
660 .enable_mask = OMAP4430_DPLL_EN_MASK,
661 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
662 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
663 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
664 .max_divider = OMAP4430_MAX_DPLL_DIV,
665 .min_divider = 1,
666};
667
668
669static struct clk dpll_iva_ck = {
670 .name = "dpll_iva_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600671 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700672 .dpll_data = &dpll_iva_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700673 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700674 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700675 .recalc = &omap3_dpll_recalc,
676 .round_rate = &omap2_dpll_round_rate,
677 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700678};
679
Thara Gopinath032b5a72010-12-21 21:08:13 -0700680static struct clk dpll_iva_x2_ck = {
681 .name = "dpll_iva_x2_ck",
682 .parent = &dpll_iva_ck,
683 .ops = &clkops_null,
684 .recalc = &omap3_clkoutx2_recalc,
685};
686
687static const struct clksel dpll_iva_m4x2_div[] = {
688 { .parent = &dpll_iva_x2_ck, .rates = div31_1to31_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700689 { .parent = NULL },
690};
691
Thara Gopinath032b5a72010-12-21 21:08:13 -0700692static struct clk dpll_iva_m4x2_ck = {
693 .name = "dpll_iva_m4x2_ck",
694 .parent = &dpll_iva_x2_ck,
695 .clksel = dpll_iva_m4x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700696 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_IVA,
697 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
698 .ops = &clkops_null,
699 .recalc = &omap2_clksel_recalc,
700 .round_rate = &omap2_clksel_round_rate,
701 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700702};
703
Thara Gopinath032b5a72010-12-21 21:08:13 -0700704static struct clk dpll_iva_m5x2_ck = {
705 .name = "dpll_iva_m5x2_ck",
706 .parent = &dpll_iva_x2_ck,
707 .clksel = dpll_iva_m4x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700708 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_IVA,
709 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
710 .ops = &clkops_null,
711 .recalc = &omap2_clksel_recalc,
712 .round_rate = &omap2_clksel_round_rate,
713 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700714};
715
716/* DPLL_MPU */
717static struct dpll_data dpll_mpu_dd = {
718 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_MPU,
719 .clk_bypass = &div_mpu_hs_clk,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600720 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700721 .control_reg = OMAP4430_CM_CLKMODE_DPLL_MPU,
722 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
723 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_MPU,
724 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_MPU,
725 .mult_mask = OMAP4430_DPLL_MULT_MASK,
726 .div1_mask = OMAP4430_DPLL_DIV_MASK,
727 .enable_mask = OMAP4430_DPLL_EN_MASK,
728 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
729 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
730 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
731 .max_divider = OMAP4430_MAX_DPLL_DIV,
732 .min_divider = 1,
733};
734
735
736static struct clk dpll_mpu_ck = {
737 .name = "dpll_mpu_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600738 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700739 .dpll_data = &dpll_mpu_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700740 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700741 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700742 .recalc = &omap3_dpll_recalc,
743 .round_rate = &omap2_dpll_round_rate,
744 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700745};
746
747static const struct clksel dpll_mpu_m2_div[] = {
748 { .parent = &dpll_mpu_ck, .rates = div31_1to31_rates },
749 { .parent = NULL },
750};
751
752static struct clk dpll_mpu_m2_ck = {
753 .name = "dpll_mpu_m2_ck",
754 .parent = &dpll_mpu_ck,
755 .clksel = dpll_mpu_m2_div,
756 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_MPU,
757 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
758 .ops = &clkops_null,
759 .recalc = &omap2_clksel_recalc,
760 .round_rate = &omap2_clksel_round_rate,
761 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700762};
763
764static struct clk per_hs_clk_div_ck = {
765 .name = "per_hs_clk_div_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700766 .parent = &dpll_abe_m3x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700767 .ops = &clkops_null,
768 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700769};
770
771static const struct clksel per_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600772 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700773 { .parent = &per_hs_clk_div_ck, .rates = div_1_1_rates },
774 { .parent = NULL },
775};
776
777static struct clk per_hsd_byp_clk_mux_ck = {
778 .name = "per_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600779 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700780 .clksel = per_hsd_byp_clk_mux_sel,
781 .init = &omap2_init_clksel_parent,
782 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
783 .clksel_mask = OMAP4430_DPLL_BYP_CLKSEL_MASK,
784 .ops = &clkops_null,
785 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700786};
787
788/* DPLL_PER */
789static struct dpll_data dpll_per_dd = {
790 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
791 .clk_bypass = &per_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600792 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700793 .control_reg = OMAP4430_CM_CLKMODE_DPLL_PER,
794 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
795 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_PER,
796 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_PER,
797 .mult_mask = OMAP4430_DPLL_MULT_MASK,
798 .div1_mask = OMAP4430_DPLL_DIV_MASK,
799 .enable_mask = OMAP4430_DPLL_EN_MASK,
800 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
801 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
802 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
803 .max_divider = OMAP4430_MAX_DPLL_DIV,
804 .min_divider = 1,
805};
806
807
808static struct clk dpll_per_ck = {
809 .name = "dpll_per_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600810 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700811 .dpll_data = &dpll_per_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700812 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700813 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700814 .recalc = &omap3_dpll_recalc,
815 .round_rate = &omap2_dpll_round_rate,
816 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700817};
818
819static const struct clksel dpll_per_m2_div[] = {
820 { .parent = &dpll_per_ck, .rates = div31_1to31_rates },
821 { .parent = NULL },
822};
823
824static struct clk dpll_per_m2_ck = {
825 .name = "dpll_per_m2_ck",
826 .parent = &dpll_per_ck,
827 .clksel = dpll_per_m2_div,
828 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_PER,
829 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
830 .ops = &clkops_null,
831 .recalc = &omap2_clksel_recalc,
832 .round_rate = &omap2_clksel_round_rate,
833 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700834};
835
Thara Gopinath032b5a72010-12-21 21:08:13 -0700836static struct clk dpll_per_x2_ck = {
837 .name = "dpll_per_x2_ck",
Rajendra Nayak972c5422009-12-08 18:46:28 -0700838 .parent = &dpll_per_ck,
839 .ops = &clkops_null,
Thara Gopinath032b5a72010-12-21 21:08:13 -0700840 .recalc = &omap3_clkoutx2_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700841};
842
Thara Gopinath032b5a72010-12-21 21:08:13 -0700843static const struct clksel dpll_per_m2x2_div[] = {
844 { .parent = &dpll_per_x2_ck, .rates = div31_1to31_rates },
845 { .parent = NULL },
846};
847
848static struct clk dpll_per_m2x2_ck = {
849 .name = "dpll_per_m2x2_ck",
850 .parent = &dpll_per_x2_ck,
851 .clksel = dpll_per_m2x2_div,
852 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_PER,
853 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
854 .ops = &clkops_null,
855 .recalc = &omap2_clksel_recalc,
856 .round_rate = &omap2_clksel_round_rate,
857 .set_rate = &omap2_clksel_set_rate,
858};
859
860static struct clk dpll_per_m3x2_ck = {
861 .name = "dpll_per_m3x2_ck",
862 .parent = &dpll_per_x2_ck,
863 .clksel = dpll_per_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700864 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_PER,
865 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
866 .ops = &clkops_null,
867 .recalc = &omap2_clksel_recalc,
868 .round_rate = &omap2_clksel_round_rate,
869 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700870};
871
Thara Gopinath032b5a72010-12-21 21:08:13 -0700872static struct clk dpll_per_m4x2_ck = {
873 .name = "dpll_per_m4x2_ck",
874 .parent = &dpll_per_x2_ck,
875 .clksel = dpll_per_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700876 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_PER,
877 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
878 .ops = &clkops_null,
879 .recalc = &omap2_clksel_recalc,
880 .round_rate = &omap2_clksel_round_rate,
881 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700882};
883
Thara Gopinath032b5a72010-12-21 21:08:13 -0700884static struct clk dpll_per_m5x2_ck = {
885 .name = "dpll_per_m5x2_ck",
886 .parent = &dpll_per_x2_ck,
887 .clksel = dpll_per_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700888 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_PER,
889 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
890 .ops = &clkops_null,
891 .recalc = &omap2_clksel_recalc,
892 .round_rate = &omap2_clksel_round_rate,
893 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700894};
895
Thara Gopinath032b5a72010-12-21 21:08:13 -0700896static struct clk dpll_per_m6x2_ck = {
897 .name = "dpll_per_m6x2_ck",
898 .parent = &dpll_per_x2_ck,
899 .clksel = dpll_per_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700900 .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_PER,
901 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
902 .ops = &clkops_null,
903 .recalc = &omap2_clksel_recalc,
904 .round_rate = &omap2_clksel_round_rate,
905 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700906};
907
Thara Gopinath032b5a72010-12-21 21:08:13 -0700908static struct clk dpll_per_m7x2_ck = {
909 .name = "dpll_per_m7x2_ck",
910 .parent = &dpll_per_x2_ck,
911 .clksel = dpll_per_m2x2_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700912 .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_PER,
913 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
914 .ops = &clkops_null,
915 .recalc = &omap2_clksel_recalc,
916 .round_rate = &omap2_clksel_round_rate,
917 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700918};
919
920/* DPLL_UNIPRO */
921static struct dpll_data dpll_unipro_dd = {
922 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_UNIPRO,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600923 .clk_bypass = &sys_clkin_ck,
924 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700925 .control_reg = OMAP4430_CM_CLKMODE_DPLL_UNIPRO,
926 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
927 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO,
928 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_UNIPRO,
929 .mult_mask = OMAP4430_DPLL_MULT_MASK,
930 .div1_mask = OMAP4430_DPLL_DIV_MASK,
931 .enable_mask = OMAP4430_DPLL_EN_MASK,
932 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
933 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
934 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
935 .max_divider = OMAP4430_MAX_DPLL_DIV,
936 .min_divider = 1,
937};
938
939
940static struct clk dpll_unipro_ck = {
941 .name = "dpll_unipro_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600942 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700943 .dpll_data = &dpll_unipro_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700944 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700945 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700946 .recalc = &omap3_dpll_recalc,
947 .round_rate = &omap2_dpll_round_rate,
948 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700949};
950
Thara Gopinath032b5a72010-12-21 21:08:13 -0700951static struct clk dpll_unipro_x2_ck = {
952 .name = "dpll_unipro_x2_ck",
953 .parent = &dpll_unipro_ck,
954 .ops = &clkops_null,
955 .recalc = &omap3_clkoutx2_recalc,
956};
957
Rajendra Nayak972c5422009-12-08 18:46:28 -0700958static const struct clksel dpll_unipro_m2x2_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -0700959 { .parent = &dpll_unipro_x2_ck, .rates = div31_1to31_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700960 { .parent = NULL },
961};
962
963static struct clk dpll_unipro_m2x2_ck = {
964 .name = "dpll_unipro_m2x2_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700965 .parent = &dpll_unipro_x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700966 .clksel = dpll_unipro_m2x2_div,
967 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_UNIPRO,
968 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
969 .ops = &clkops_null,
970 .recalc = &omap2_clksel_recalc,
971 .round_rate = &omap2_clksel_round_rate,
972 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700973};
974
975static struct clk usb_hs_clk_div_ck = {
976 .name = "usb_hs_clk_div_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -0700977 .parent = &dpll_abe_m3x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700978 .ops = &clkops_null,
979 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700980};
981
982/* DPLL_USB */
983static struct dpll_data dpll_usb_dd = {
984 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_USB,
985 .clk_bypass = &usb_hs_clk_div_ck,
Benoit Cousson0e433272010-09-27 14:02:54 -0600986 .flags = DPLL_J_TYPE | DPLL_NO_DCO_SEL,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600987 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700988 .control_reg = OMAP4430_CM_CLKMODE_DPLL_USB,
989 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
990 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_USB,
991 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_USB,
992 .mult_mask = OMAP4430_DPLL_MULT_MASK,
993 .div1_mask = OMAP4430_DPLL_DIV_MASK,
994 .enable_mask = OMAP4430_DPLL_EN_MASK,
995 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
996 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
997 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
998 .max_divider = OMAP4430_MAX_DPLL_DIV,
999 .min_divider = 1,
1000};
1001
1002
1003static struct clk dpll_usb_ck = {
1004 .name = "dpll_usb_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001005 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001006 .dpll_data = &dpll_usb_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -07001007 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -07001008 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001009 .recalc = &omap3_dpll_recalc,
1010 .round_rate = &omap2_dpll_round_rate,
1011 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001012};
1013
1014static struct clk dpll_usb_clkdcoldo_ck = {
1015 .name = "dpll_usb_clkdcoldo_ck",
1016 .parent = &dpll_usb_ck,
1017 .ops = &clkops_null,
1018 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001019};
1020
1021static const struct clksel dpll_usb_m2_div[] = {
1022 { .parent = &dpll_usb_ck, .rates = div31_1to31_rates },
1023 { .parent = NULL },
1024};
1025
1026static struct clk dpll_usb_m2_ck = {
1027 .name = "dpll_usb_m2_ck",
1028 .parent = &dpll_usb_ck,
1029 .clksel = dpll_usb_m2_div,
1030 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_USB,
1031 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK,
1032 .ops = &clkops_null,
1033 .recalc = &omap2_clksel_recalc,
1034 .round_rate = &omap2_clksel_round_rate,
1035 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001036};
1037
1038static const struct clksel ducati_clk_mux_sel[] = {
1039 { .parent = &div_core_ck, .rates = div_1_0_rates },
Thara Gopinath032b5a72010-12-21 21:08:13 -07001040 { .parent = &dpll_per_m6x2_ck, .rates = div_1_1_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001041 { .parent = NULL },
1042};
1043
1044static struct clk ducati_clk_mux_ck = {
1045 .name = "ducati_clk_mux_ck",
1046 .parent = &div_core_ck,
1047 .clksel = ducati_clk_mux_sel,
1048 .init = &omap2_init_clksel_parent,
1049 .clksel_reg = OMAP4430_CM_CLKSEL_DUCATI_ISS_ROOT,
1050 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1051 .ops = &clkops_null,
1052 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001053};
1054
1055static struct clk func_12m_fclk = {
1056 .name = "func_12m_fclk",
1057 .parent = &dpll_per_m2x2_ck,
1058 .ops = &clkops_null,
1059 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001060};
1061
1062static struct clk func_24m_clk = {
1063 .name = "func_24m_clk",
1064 .parent = &dpll_per_m2_ck,
1065 .ops = &clkops_null,
1066 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001067};
1068
1069static struct clk func_24mc_fclk = {
1070 .name = "func_24mc_fclk",
1071 .parent = &dpll_per_m2x2_ck,
1072 .ops = &clkops_null,
1073 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001074};
1075
1076static const struct clksel_rate div2_4to8_rates[] = {
1077 { .div = 4, .val = 0, .flags = RATE_IN_4430 },
1078 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
1079 { .div = 0 },
1080};
1081
1082static const struct clksel func_48m_fclk_div[] = {
1083 { .parent = &dpll_per_m2x2_ck, .rates = div2_4to8_rates },
1084 { .parent = NULL },
1085};
1086
1087static struct clk func_48m_fclk = {
1088 .name = "func_48m_fclk",
1089 .parent = &dpll_per_m2x2_ck,
1090 .clksel = func_48m_fclk_div,
1091 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1092 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1093 .ops = &clkops_null,
1094 .recalc = &omap2_clksel_recalc,
1095 .round_rate = &omap2_clksel_round_rate,
1096 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001097};
1098
1099static struct clk func_48mc_fclk = {
1100 .name = "func_48mc_fclk",
1101 .parent = &dpll_per_m2x2_ck,
1102 .ops = &clkops_null,
1103 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001104};
1105
1106static const struct clksel_rate div2_2to4_rates[] = {
1107 { .div = 2, .val = 0, .flags = RATE_IN_4430 },
1108 { .div = 4, .val = 1, .flags = RATE_IN_4430 },
1109 { .div = 0 },
1110};
1111
1112static const struct clksel func_64m_fclk_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -07001113 { .parent = &dpll_per_m4x2_ck, .rates = div2_2to4_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001114 { .parent = NULL },
1115};
1116
1117static struct clk func_64m_fclk = {
1118 .name = "func_64m_fclk",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001119 .parent = &dpll_per_m4x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001120 .clksel = func_64m_fclk_div,
1121 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1122 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1123 .ops = &clkops_null,
1124 .recalc = &omap2_clksel_recalc,
1125 .round_rate = &omap2_clksel_round_rate,
1126 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001127};
1128
1129static const struct clksel func_96m_fclk_div[] = {
1130 { .parent = &dpll_per_m2x2_ck, .rates = div2_2to4_rates },
1131 { .parent = NULL },
1132};
1133
1134static struct clk func_96m_fclk = {
1135 .name = "func_96m_fclk",
1136 .parent = &dpll_per_m2x2_ck,
1137 .clksel = func_96m_fclk_div,
1138 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1139 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1140 .ops = &clkops_null,
1141 .recalc = &omap2_clksel_recalc,
1142 .round_rate = &omap2_clksel_round_rate,
1143 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001144};
1145
1146static const struct clksel hsmmc6_fclk_sel[] = {
1147 { .parent = &func_64m_fclk, .rates = div_1_0_rates },
1148 { .parent = &func_96m_fclk, .rates = div_1_1_rates },
1149 { .parent = NULL },
1150};
1151
1152static struct clk hsmmc6_fclk = {
1153 .name = "hsmmc6_fclk",
1154 .parent = &func_64m_fclk,
1155 .ops = &clkops_null,
1156 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001157};
1158
1159static const struct clksel_rate div2_1to8_rates[] = {
1160 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
1161 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
1162 { .div = 0 },
1163};
1164
1165static const struct clksel init_60m_fclk_div[] = {
1166 { .parent = &dpll_usb_m2_ck, .rates = div2_1to8_rates },
1167 { .parent = NULL },
1168};
1169
1170static struct clk init_60m_fclk = {
1171 .name = "init_60m_fclk",
1172 .parent = &dpll_usb_m2_ck,
1173 .clksel = init_60m_fclk_div,
1174 .clksel_reg = OMAP4430_CM_CLKSEL_USB_60MHZ,
1175 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1176 .ops = &clkops_null,
1177 .recalc = &omap2_clksel_recalc,
1178 .round_rate = &omap2_clksel_round_rate,
1179 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001180};
1181
1182static const struct clksel l3_div_div[] = {
1183 { .parent = &div_core_ck, .rates = div2_1to2_rates },
1184 { .parent = NULL },
1185};
1186
1187static struct clk l3_div_ck = {
1188 .name = "l3_div_ck",
1189 .parent = &div_core_ck,
1190 .clksel = l3_div_div,
1191 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
1192 .clksel_mask = OMAP4430_CLKSEL_L3_MASK,
1193 .ops = &clkops_null,
1194 .recalc = &omap2_clksel_recalc,
1195 .round_rate = &omap2_clksel_round_rate,
1196 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001197};
1198
1199static const struct clksel l4_div_div[] = {
1200 { .parent = &l3_div_ck, .rates = div2_1to2_rates },
1201 { .parent = NULL },
1202};
1203
1204static struct clk l4_div_ck = {
1205 .name = "l4_div_ck",
1206 .parent = &l3_div_ck,
1207 .clksel = l4_div_div,
1208 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
1209 .clksel_mask = OMAP4430_CLKSEL_L4_MASK,
1210 .ops = &clkops_null,
1211 .recalc = &omap2_clksel_recalc,
1212 .round_rate = &omap2_clksel_round_rate,
1213 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001214};
1215
1216static struct clk lp_clk_div_ck = {
1217 .name = "lp_clk_div_ck",
1218 .parent = &dpll_abe_m2x2_ck,
1219 .ops = &clkops_null,
1220 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001221};
1222
1223static const struct clksel l4_wkup_clk_mux_sel[] = {
1224 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
1225 { .parent = &lp_clk_div_ck, .rates = div_1_1_rates },
1226 { .parent = NULL },
1227};
1228
1229static struct clk l4_wkup_clk_mux_ck = {
1230 .name = "l4_wkup_clk_mux_ck",
1231 .parent = &sys_clkin_ck,
1232 .clksel = l4_wkup_clk_mux_sel,
1233 .init = &omap2_init_clksel_parent,
1234 .clksel_reg = OMAP4430_CM_L4_WKUP_CLKSEL,
1235 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1236 .ops = &clkops_null,
1237 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001238};
1239
1240static const struct clksel per_abe_nc_fclk_div[] = {
1241 { .parent = &dpll_abe_m2_ck, .rates = div2_1to2_rates },
1242 { .parent = NULL },
1243};
1244
1245static struct clk per_abe_nc_fclk = {
1246 .name = "per_abe_nc_fclk",
1247 .parent = &dpll_abe_m2_ck,
1248 .clksel = per_abe_nc_fclk_div,
1249 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1250 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1251 .ops = &clkops_null,
1252 .recalc = &omap2_clksel_recalc,
1253 .round_rate = &omap2_clksel_round_rate,
1254 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001255};
1256
1257static const struct clksel mcasp2_fclk_sel[] = {
1258 { .parent = &func_96m_fclk, .rates = div_1_0_rates },
1259 { .parent = &per_abe_nc_fclk, .rates = div_1_1_rates },
1260 { .parent = NULL },
1261};
1262
1263static struct clk mcasp2_fclk = {
1264 .name = "mcasp2_fclk",
1265 .parent = &func_96m_fclk,
1266 .ops = &clkops_null,
1267 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001268};
1269
1270static struct clk mcasp3_fclk = {
1271 .name = "mcasp3_fclk",
1272 .parent = &func_96m_fclk,
1273 .ops = &clkops_null,
1274 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001275};
1276
1277static struct clk ocp_abe_iclk = {
1278 .name = "ocp_abe_iclk",
1279 .parent = &aess_fclk,
1280 .ops = &clkops_null,
1281 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001282};
1283
1284static struct clk per_abe_24m_fclk = {
1285 .name = "per_abe_24m_fclk",
1286 .parent = &dpll_abe_m2_ck,
1287 .ops = &clkops_null,
1288 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001289};
1290
1291static const struct clksel pmd_stm_clock_mux_sel[] = {
1292 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Thara Gopinath032b5a72010-12-21 21:08:13 -07001293 { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates },
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001294 { .parent = &tie_low_clock_ck, .rates = div_1_2_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001295 { .parent = NULL },
1296};
1297
1298static struct clk pmd_stm_clock_mux_ck = {
1299 .name = "pmd_stm_clock_mux_ck",
1300 .parent = &sys_clkin_ck,
1301 .ops = &clkops_null,
1302 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001303};
1304
1305static struct clk pmd_trace_clk_mux_ck = {
1306 .name = "pmd_trace_clk_mux_ck",
1307 .parent = &sys_clkin_ck,
1308 .ops = &clkops_null,
1309 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001310};
1311
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001312static const struct clksel syc_clk_div_div[] = {
1313 { .parent = &sys_clkin_ck, .rates = div2_1to2_rates },
1314 { .parent = NULL },
1315};
1316
Rajendra Nayak972c5422009-12-08 18:46:28 -07001317static struct clk syc_clk_div_ck = {
1318 .name = "syc_clk_div_ck",
1319 .parent = &sys_clkin_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001320 .clksel = syc_clk_div_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001321 .clksel_reg = OMAP4430_CM_ABE_DSS_SYS_CLKSEL,
1322 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1323 .ops = &clkops_null,
1324 .recalc = &omap2_clksel_recalc,
1325 .round_rate = &omap2_clksel_round_rate,
1326 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001327};
1328
1329/* Leaf clocks controlled by modules */
1330
Rajendra Nayak54776052010-02-22 22:09:39 -07001331static struct clk aes1_fck = {
1332 .name = "aes1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001333 .ops = &clkops_omap2_dflt,
1334 .enable_reg = OMAP4430_CM_L4SEC_AES1_CLKCTRL,
1335 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1336 .clkdm_name = "l4_secure_clkdm",
1337 .parent = &l3_div_ck,
1338 .recalc = &followparent_recalc,
1339};
1340
Rajendra Nayak54776052010-02-22 22:09:39 -07001341static struct clk aes2_fck = {
1342 .name = "aes2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001343 .ops = &clkops_omap2_dflt,
1344 .enable_reg = OMAP4430_CM_L4SEC_AES2_CLKCTRL,
1345 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1346 .clkdm_name = "l4_secure_clkdm",
1347 .parent = &l3_div_ck,
1348 .recalc = &followparent_recalc,
1349};
1350
Rajendra Nayak54776052010-02-22 22:09:39 -07001351static struct clk aess_fck = {
1352 .name = "aess_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001353 .ops = &clkops_omap2_dflt,
1354 .enable_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL,
1355 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1356 .clkdm_name = "abe_clkdm",
1357 .parent = &aess_fclk,
1358 .recalc = &followparent_recalc,
1359};
1360
Benoit Cousson1c03f422010-09-27 14:02:55 -06001361static struct clk bandgap_fclk = {
1362 .name = "bandgap_fclk",
1363 .ops = &clkops_omap2_dflt,
1364 .enable_reg = OMAP4430_CM_WKUP_BANDGAP_CLKCTRL,
1365 .enable_bit = OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT,
1366 .clkdm_name = "l4_wkup_clkdm",
1367 .parent = &sys_32k_ck,
1368 .recalc = &followparent_recalc,
1369};
1370
Rajendra Nayak54776052010-02-22 22:09:39 -07001371static struct clk des3des_fck = {
1372 .name = "des3des_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001373 .ops = &clkops_omap2_dflt,
1374 .enable_reg = OMAP4430_CM_L4SEC_DES3DES_CLKCTRL,
1375 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1376 .clkdm_name = "l4_secure_clkdm",
1377 .parent = &l4_div_ck,
1378 .recalc = &followparent_recalc,
1379};
1380
1381static const struct clksel dmic_sync_mux_sel[] = {
1382 { .parent = &abe_24m_fclk, .rates = div_1_0_rates },
1383 { .parent = &syc_clk_div_ck, .rates = div_1_1_rates },
1384 { .parent = &func_24m_clk, .rates = div_1_2_rates },
1385 { .parent = NULL },
1386};
1387
1388static struct clk dmic_sync_mux_ck = {
1389 .name = "dmic_sync_mux_ck",
1390 .parent = &abe_24m_fclk,
1391 .clksel = dmic_sync_mux_sel,
1392 .init = &omap2_init_clksel_parent,
1393 .clksel_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1394 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1395 .ops = &clkops_null,
1396 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001397};
1398
1399static const struct clksel func_dmic_abe_gfclk_sel[] = {
1400 { .parent = &dmic_sync_mux_ck, .rates = div_1_0_rates },
1401 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1402 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1403 { .parent = NULL },
1404};
1405
Rajendra Nayak54776052010-02-22 22:09:39 -07001406/* Merged func_dmic_abe_gfclk into dmic */
1407static struct clk dmic_fck = {
1408 .name = "dmic_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001409 .parent = &dmic_sync_mux_ck,
1410 .clksel = func_dmic_abe_gfclk_sel,
1411 .init = &omap2_init_clksel_parent,
1412 .clksel_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1413 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1414 .ops = &clkops_omap2_dflt,
1415 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001416 .enable_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1417 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1418 .clkdm_name = "abe_clkdm",
1419};
1420
Benoit Cousson0e433272010-09-27 14:02:54 -06001421static struct clk dsp_fck = {
1422 .name = "dsp_fck",
1423 .ops = &clkops_omap2_dflt,
1424 .enable_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL,
1425 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1426 .clkdm_name = "tesla_clkdm",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001427 .parent = &dpll_iva_m4x2_ck,
Benoit Cousson0e433272010-09-27 14:02:54 -06001428 .recalc = &followparent_recalc,
1429};
1430
Benoit Cousson1c03f422010-09-27 14:02:55 -06001431static struct clk dss_sys_clk = {
1432 .name = "dss_sys_clk",
1433 .ops = &clkops_omap2_dflt,
1434 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1435 .enable_bit = OMAP4430_OPTFCLKEN_SYS_CLK_SHIFT,
1436 .clkdm_name = "l3_dss_clkdm",
1437 .parent = &syc_clk_div_ck,
1438 .recalc = &followparent_recalc,
1439};
1440
1441static struct clk dss_tv_clk = {
1442 .name = "dss_tv_clk",
1443 .ops = &clkops_omap2_dflt,
1444 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1445 .enable_bit = OMAP4430_OPTFCLKEN_TV_CLK_SHIFT,
1446 .clkdm_name = "l3_dss_clkdm",
1447 .parent = &extalt_clkin_ck,
1448 .recalc = &followparent_recalc,
1449};
1450
1451static struct clk dss_dss_clk = {
1452 .name = "dss_dss_clk",
1453 .ops = &clkops_omap2_dflt,
1454 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1455 .enable_bit = OMAP4430_OPTFCLKEN_DSSCLK_SHIFT,
1456 .clkdm_name = "l3_dss_clkdm",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001457 .parent = &dpll_per_m5x2_ck,
Benoit Cousson1c03f422010-09-27 14:02:55 -06001458 .recalc = &followparent_recalc,
1459};
1460
1461static struct clk dss_48mhz_clk = {
1462 .name = "dss_48mhz_clk",
1463 .ops = &clkops_omap2_dflt,
1464 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1465 .enable_bit = OMAP4430_OPTFCLKEN_48MHZ_CLK_SHIFT,
1466 .clkdm_name = "l3_dss_clkdm",
1467 .parent = &func_48mc_fclk,
1468 .recalc = &followparent_recalc,
1469};
1470
Rajendra Nayak54776052010-02-22 22:09:39 -07001471static struct clk dss_fck = {
1472 .name = "dss_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001473 .ops = &clkops_omap2_dflt,
1474 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1475 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1476 .clkdm_name = "l3_dss_clkdm",
1477 .parent = &l3_div_ck,
1478 .recalc = &followparent_recalc,
1479};
1480
Benoit Cousson0e433272010-09-27 14:02:54 -06001481static struct clk efuse_ctrl_cust_fck = {
1482 .name = "efuse_ctrl_cust_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001483 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06001484 .enable_reg = OMAP4430_CM_CEFUSE_CEFUSE_CLKCTRL,
1485 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1486 .clkdm_name = "l4_cefuse_clkdm",
1487 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001488 .recalc = &followparent_recalc,
1489};
1490
Benoit Cousson0e433272010-09-27 14:02:54 -06001491static struct clk emif1_fck = {
1492 .name = "emif1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001493 .ops = &clkops_omap2_dflt,
1494 .enable_reg = OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL,
1495 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Santosh Shilimkar090830b2010-06-16 19:01:33 +03001496 .flags = ENABLE_ON_INIT,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001497 .clkdm_name = "l3_emif_clkdm",
1498 .parent = &ddrphy_ck,
1499 .recalc = &followparent_recalc,
1500};
1501
Benoit Cousson0e433272010-09-27 14:02:54 -06001502static struct clk emif2_fck = {
1503 .name = "emif2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001504 .ops = &clkops_omap2_dflt,
1505 .enable_reg = OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL,
1506 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Santosh Shilimkar090830b2010-06-16 19:01:33 +03001507 .flags = ENABLE_ON_INIT,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001508 .clkdm_name = "l3_emif_clkdm",
1509 .parent = &ddrphy_ck,
1510 .recalc = &followparent_recalc,
1511};
1512
1513static const struct clksel fdif_fclk_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -07001514 { .parent = &dpll_per_m4x2_ck, .rates = div3_1to4_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001515 { .parent = NULL },
1516};
1517
Rajendra Nayak54776052010-02-22 22:09:39 -07001518/* Merged fdif_fclk into fdif */
1519static struct clk fdif_fck = {
1520 .name = "fdif_fck",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001521 .parent = &dpll_per_m4x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001522 .clksel = fdif_fclk_div,
1523 .clksel_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL,
1524 .clksel_mask = OMAP4430_CLKSEL_FCLK_MASK,
1525 .ops = &clkops_omap2_dflt,
1526 .recalc = &omap2_clksel_recalc,
1527 .round_rate = &omap2_clksel_round_rate,
1528 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001529 .enable_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL,
1530 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1531 .clkdm_name = "iss_clkdm",
1532};
1533
Benoit Cousson0e433272010-09-27 14:02:54 -06001534static struct clk fpka_fck = {
1535 .name = "fpka_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001536 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06001537 .enable_reg = OMAP4430_CM_L4SEC_PKAEIP29_CLKCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001538 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
Benoit Cousson0e433272010-09-27 14:02:54 -06001539 .clkdm_name = "l4_secure_clkdm",
1540 .parent = &l4_div_ck,
1541 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001542};
1543
Benoit Cousson1c03f422010-09-27 14:02:55 -06001544static struct clk gpio1_dbclk = {
1545 .name = "gpio1_dbclk",
1546 .ops = &clkops_omap2_dflt,
1547 .enable_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1548 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1549 .clkdm_name = "l4_wkup_clkdm",
1550 .parent = &sys_32k_ck,
1551 .recalc = &followparent_recalc,
1552};
1553
Rajendra Nayak54776052010-02-22 22:09:39 -07001554static struct clk gpio1_ick = {
1555 .name = "gpio1_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001556 .ops = &clkops_omap2_dflt,
1557 .enable_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1558 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1559 .clkdm_name = "l4_wkup_clkdm",
1560 .parent = &l4_wkup_clk_mux_ck,
1561 .recalc = &followparent_recalc,
1562};
1563
Benoit Cousson1c03f422010-09-27 14:02:55 -06001564static struct clk gpio2_dbclk = {
1565 .name = "gpio2_dbclk",
1566 .ops = &clkops_omap2_dflt,
1567 .enable_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1568 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1569 .clkdm_name = "l4_per_clkdm",
1570 .parent = &sys_32k_ck,
1571 .recalc = &followparent_recalc,
1572};
1573
Rajendra Nayak54776052010-02-22 22:09:39 -07001574static struct clk gpio2_ick = {
1575 .name = "gpio2_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001576 .ops = &clkops_omap2_dflt,
1577 .enable_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1578 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1579 .clkdm_name = "l4_per_clkdm",
1580 .parent = &l4_div_ck,
1581 .recalc = &followparent_recalc,
1582};
1583
Benoit Cousson1c03f422010-09-27 14:02:55 -06001584static struct clk gpio3_dbclk = {
1585 .name = "gpio3_dbclk",
1586 .ops = &clkops_omap2_dflt,
1587 .enable_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1588 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1589 .clkdm_name = "l4_per_clkdm",
1590 .parent = &sys_32k_ck,
1591 .recalc = &followparent_recalc,
1592};
1593
Rajendra Nayak54776052010-02-22 22:09:39 -07001594static struct clk gpio3_ick = {
1595 .name = "gpio3_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001596 .ops = &clkops_omap2_dflt,
1597 .enable_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1598 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1599 .clkdm_name = "l4_per_clkdm",
1600 .parent = &l4_div_ck,
1601 .recalc = &followparent_recalc,
1602};
1603
Benoit Cousson1c03f422010-09-27 14:02:55 -06001604static struct clk gpio4_dbclk = {
1605 .name = "gpio4_dbclk",
1606 .ops = &clkops_omap2_dflt,
1607 .enable_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1608 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1609 .clkdm_name = "l4_per_clkdm",
1610 .parent = &sys_32k_ck,
1611 .recalc = &followparent_recalc,
1612};
1613
Rajendra Nayak54776052010-02-22 22:09:39 -07001614static struct clk gpio4_ick = {
1615 .name = "gpio4_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001616 .ops = &clkops_omap2_dflt,
1617 .enable_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1618 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1619 .clkdm_name = "l4_per_clkdm",
1620 .parent = &l4_div_ck,
1621 .recalc = &followparent_recalc,
1622};
1623
Benoit Cousson1c03f422010-09-27 14:02:55 -06001624static struct clk gpio5_dbclk = {
1625 .name = "gpio5_dbclk",
1626 .ops = &clkops_omap2_dflt,
1627 .enable_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
1628 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1629 .clkdm_name = "l4_per_clkdm",
1630 .parent = &sys_32k_ck,
1631 .recalc = &followparent_recalc,
1632};
1633
Rajendra Nayak54776052010-02-22 22:09:39 -07001634static struct clk gpio5_ick = {
1635 .name = "gpio5_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001636 .ops = &clkops_omap2_dflt,
1637 .enable_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
1638 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1639 .clkdm_name = "l4_per_clkdm",
1640 .parent = &l4_div_ck,
1641 .recalc = &followparent_recalc,
1642};
1643
Benoit Cousson1c03f422010-09-27 14:02:55 -06001644static struct clk gpio6_dbclk = {
1645 .name = "gpio6_dbclk",
1646 .ops = &clkops_omap2_dflt,
1647 .enable_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
1648 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1649 .clkdm_name = "l4_per_clkdm",
1650 .parent = &sys_32k_ck,
1651 .recalc = &followparent_recalc,
1652};
1653
Rajendra Nayak54776052010-02-22 22:09:39 -07001654static struct clk gpio6_ick = {
1655 .name = "gpio6_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001656 .ops = &clkops_omap2_dflt,
1657 .enable_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
1658 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1659 .clkdm_name = "l4_per_clkdm",
1660 .parent = &l4_div_ck,
1661 .recalc = &followparent_recalc,
1662};
1663
Rajendra Nayak54776052010-02-22 22:09:39 -07001664static struct clk gpmc_ick = {
1665 .name = "gpmc_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001666 .ops = &clkops_omap2_dflt,
1667 .enable_reg = OMAP4430_CM_L3_2_GPMC_CLKCTRL,
1668 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1669 .clkdm_name = "l3_2_clkdm",
1670 .parent = &l3_div_ck,
1671 .recalc = &followparent_recalc,
1672};
1673
Benoit Cousson0e433272010-09-27 14:02:54 -06001674static const struct clksel sgx_clk_mux_sel[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -07001675 { .parent = &dpll_core_m7x2_ck, .rates = div_1_0_rates },
1676 { .parent = &dpll_per_m7x2_ck, .rates = div_1_1_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001677 { .parent = NULL },
1678};
1679
Benoit Cousson0e433272010-09-27 14:02:54 -06001680/* Merged sgx_clk_mux into gpu */
1681static struct clk gpu_fck = {
1682 .name = "gpu_fck",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001683 .parent = &dpll_core_m7x2_ck,
Benoit Cousson0e433272010-09-27 14:02:54 -06001684 .clksel = sgx_clk_mux_sel,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001685 .init = &omap2_init_clksel_parent,
Benoit Cousson0e433272010-09-27 14:02:54 -06001686 .clksel_reg = OMAP4430_CM_GFX_GFX_CLKCTRL,
1687 .clksel_mask = OMAP4430_CLKSEL_SGX_FCLK_MASK,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001688 .ops = &clkops_omap2_dflt,
1689 .recalc = &omap2_clksel_recalc,
Benoit Cousson0e433272010-09-27 14:02:54 -06001690 .enable_reg = OMAP4430_CM_GFX_GFX_CLKCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001691 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
Benoit Cousson0e433272010-09-27 14:02:54 -06001692 .clkdm_name = "l3_gfx_clkdm",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001693};
1694
Rajendra Nayak54776052010-02-22 22:09:39 -07001695static struct clk hdq1w_fck = {
1696 .name = "hdq1w_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001697 .ops = &clkops_omap2_dflt,
1698 .enable_reg = OMAP4430_CM_L4PER_HDQ1W_CLKCTRL,
1699 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1700 .clkdm_name = "l4_per_clkdm",
1701 .parent = &func_12m_fclk,
1702 .recalc = &followparent_recalc,
1703};
1704
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001705static const struct clksel hsi_fclk_div[] = {
1706 { .parent = &dpll_per_m2x2_ck, .rates = div3_1to4_rates },
1707 { .parent = NULL },
1708};
1709
Rajendra Nayak54776052010-02-22 22:09:39 -07001710/* Merged hsi_fclk into hsi */
Benoit Cousson0e433272010-09-27 14:02:54 -06001711static struct clk hsi_fck = {
1712 .name = "hsi_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001713 .parent = &dpll_per_m2x2_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001714 .clksel = hsi_fclk_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001715 .clksel_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
1716 .clksel_mask = OMAP4430_CLKSEL_24_25_MASK,
1717 .ops = &clkops_omap2_dflt,
1718 .recalc = &omap2_clksel_recalc,
1719 .round_rate = &omap2_clksel_round_rate,
1720 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001721 .enable_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
1722 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1723 .clkdm_name = "l3_init_clkdm",
1724};
1725
Rajendra Nayak54776052010-02-22 22:09:39 -07001726static struct clk i2c1_fck = {
1727 .name = "i2c1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001728 .ops = &clkops_omap2_dflt,
1729 .enable_reg = OMAP4430_CM_L4PER_I2C1_CLKCTRL,
1730 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1731 .clkdm_name = "l4_per_clkdm",
1732 .parent = &func_96m_fclk,
1733 .recalc = &followparent_recalc,
1734};
1735
Rajendra Nayak54776052010-02-22 22:09:39 -07001736static struct clk i2c2_fck = {
1737 .name = "i2c2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001738 .ops = &clkops_omap2_dflt,
1739 .enable_reg = OMAP4430_CM_L4PER_I2C2_CLKCTRL,
1740 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1741 .clkdm_name = "l4_per_clkdm",
1742 .parent = &func_96m_fclk,
1743 .recalc = &followparent_recalc,
1744};
1745
Rajendra Nayak54776052010-02-22 22:09:39 -07001746static struct clk i2c3_fck = {
1747 .name = "i2c3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001748 .ops = &clkops_omap2_dflt,
1749 .enable_reg = OMAP4430_CM_L4PER_I2C3_CLKCTRL,
1750 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1751 .clkdm_name = "l4_per_clkdm",
1752 .parent = &func_96m_fclk,
1753 .recalc = &followparent_recalc,
1754};
1755
Rajendra Nayak54776052010-02-22 22:09:39 -07001756static struct clk i2c4_fck = {
1757 .name = "i2c4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001758 .ops = &clkops_omap2_dflt,
1759 .enable_reg = OMAP4430_CM_L4PER_I2C4_CLKCTRL,
1760 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1761 .clkdm_name = "l4_per_clkdm",
1762 .parent = &func_96m_fclk,
1763 .recalc = &followparent_recalc,
1764};
1765
Benoit Cousson0e433272010-09-27 14:02:54 -06001766static struct clk ipu_fck = {
1767 .name = "ipu_fck",
1768 .ops = &clkops_omap2_dflt,
1769 .enable_reg = OMAP4430_CM_DUCATI_DUCATI_CLKCTRL,
1770 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1771 .clkdm_name = "ducati_clkdm",
1772 .parent = &ducati_clk_mux_ck,
1773 .recalc = &followparent_recalc,
1774};
1775
Benoit Cousson1c03f422010-09-27 14:02:55 -06001776static struct clk iss_ctrlclk = {
1777 .name = "iss_ctrlclk",
1778 .ops = &clkops_omap2_dflt,
1779 .enable_reg = OMAP4430_CM_CAM_ISS_CLKCTRL,
1780 .enable_bit = OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT,
1781 .clkdm_name = "iss_clkdm",
1782 .parent = &func_96m_fclk,
1783 .recalc = &followparent_recalc,
1784};
1785
Rajendra Nayak54776052010-02-22 22:09:39 -07001786static struct clk iss_fck = {
1787 .name = "iss_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001788 .ops = &clkops_omap2_dflt,
1789 .enable_reg = OMAP4430_CM_CAM_ISS_CLKCTRL,
1790 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1791 .clkdm_name = "iss_clkdm",
1792 .parent = &ducati_clk_mux_ck,
1793 .recalc = &followparent_recalc,
1794};
1795
Benoit Cousson0e433272010-09-27 14:02:54 -06001796static struct clk iva_fck = {
1797 .name = "iva_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001798 .ops = &clkops_omap2_dflt,
1799 .enable_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL,
1800 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1801 .clkdm_name = "ivahd_clkdm",
Thara Gopinath032b5a72010-12-21 21:08:13 -07001802 .parent = &dpll_iva_m5x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001803 .recalc = &followparent_recalc,
1804};
1805
Benoit Cousson0e433272010-09-27 14:02:54 -06001806static struct clk kbd_fck = {
1807 .name = "kbd_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001808 .ops = &clkops_omap2_dflt,
1809 .enable_reg = OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL,
1810 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1811 .clkdm_name = "l4_wkup_clkdm",
1812 .parent = &sys_32k_ck,
1813 .recalc = &followparent_recalc,
1814};
1815
Benoit Cousson0e433272010-09-27 14:02:54 -06001816static struct clk l3_instr_ick = {
1817 .name = "l3_instr_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001818 .ops = &clkops_omap2_dflt,
1819 .enable_reg = OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL,
1820 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1821 .clkdm_name = "l3_instr_clkdm",
1822 .parent = &l3_div_ck,
1823 .recalc = &followparent_recalc,
1824};
1825
Benoit Cousson0e433272010-09-27 14:02:54 -06001826static struct clk l3_main_3_ick = {
1827 .name = "l3_main_3_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001828 .ops = &clkops_omap2_dflt,
1829 .enable_reg = OMAP4430_CM_L3INSTR_L3_3_CLKCTRL,
1830 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1831 .clkdm_name = "l3_instr_clkdm",
1832 .parent = &l3_div_ck,
1833 .recalc = &followparent_recalc,
1834};
1835
1836static struct clk mcasp_sync_mux_ck = {
1837 .name = "mcasp_sync_mux_ck",
1838 .parent = &abe_24m_fclk,
1839 .clksel = dmic_sync_mux_sel,
1840 .init = &omap2_init_clksel_parent,
1841 .clksel_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1842 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1843 .ops = &clkops_null,
1844 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001845};
1846
1847static const struct clksel func_mcasp_abe_gfclk_sel[] = {
1848 { .parent = &mcasp_sync_mux_ck, .rates = div_1_0_rates },
1849 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1850 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1851 { .parent = NULL },
1852};
1853
Rajendra Nayak54776052010-02-22 22:09:39 -07001854/* Merged func_mcasp_abe_gfclk into mcasp */
1855static struct clk mcasp_fck = {
1856 .name = "mcasp_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001857 .parent = &mcasp_sync_mux_ck,
1858 .clksel = func_mcasp_abe_gfclk_sel,
1859 .init = &omap2_init_clksel_parent,
1860 .clksel_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1861 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1862 .ops = &clkops_omap2_dflt,
1863 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001864 .enable_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1865 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1866 .clkdm_name = "abe_clkdm",
1867};
1868
1869static struct clk mcbsp1_sync_mux_ck = {
1870 .name = "mcbsp1_sync_mux_ck",
1871 .parent = &abe_24m_fclk,
1872 .clksel = dmic_sync_mux_sel,
1873 .init = &omap2_init_clksel_parent,
1874 .clksel_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1875 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1876 .ops = &clkops_null,
1877 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001878};
1879
1880static const struct clksel func_mcbsp1_gfclk_sel[] = {
1881 { .parent = &mcbsp1_sync_mux_ck, .rates = div_1_0_rates },
1882 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1883 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1884 { .parent = NULL },
1885};
1886
Rajendra Nayak54776052010-02-22 22:09:39 -07001887/* Merged func_mcbsp1_gfclk into mcbsp1 */
1888static struct clk mcbsp1_fck = {
1889 .name = "mcbsp1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001890 .parent = &mcbsp1_sync_mux_ck,
1891 .clksel = func_mcbsp1_gfclk_sel,
1892 .init = &omap2_init_clksel_parent,
1893 .clksel_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1894 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1895 .ops = &clkops_omap2_dflt,
1896 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001897 .enable_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1898 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1899 .clkdm_name = "abe_clkdm",
1900};
1901
1902static struct clk mcbsp2_sync_mux_ck = {
1903 .name = "mcbsp2_sync_mux_ck",
1904 .parent = &abe_24m_fclk,
1905 .clksel = dmic_sync_mux_sel,
1906 .init = &omap2_init_clksel_parent,
1907 .clksel_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1908 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1909 .ops = &clkops_null,
1910 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001911};
1912
1913static const struct clksel func_mcbsp2_gfclk_sel[] = {
1914 { .parent = &mcbsp2_sync_mux_ck, .rates = div_1_0_rates },
1915 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1916 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1917 { .parent = NULL },
1918};
1919
Rajendra Nayak54776052010-02-22 22:09:39 -07001920/* Merged func_mcbsp2_gfclk into mcbsp2 */
1921static struct clk mcbsp2_fck = {
1922 .name = "mcbsp2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001923 .parent = &mcbsp2_sync_mux_ck,
1924 .clksel = func_mcbsp2_gfclk_sel,
1925 .init = &omap2_init_clksel_parent,
1926 .clksel_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1927 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1928 .ops = &clkops_omap2_dflt,
1929 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001930 .enable_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1931 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1932 .clkdm_name = "abe_clkdm",
1933};
1934
1935static struct clk mcbsp3_sync_mux_ck = {
1936 .name = "mcbsp3_sync_mux_ck",
1937 .parent = &abe_24m_fclk,
1938 .clksel = dmic_sync_mux_sel,
1939 .init = &omap2_init_clksel_parent,
1940 .clksel_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1941 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1942 .ops = &clkops_null,
1943 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001944};
1945
1946static const struct clksel func_mcbsp3_gfclk_sel[] = {
1947 { .parent = &mcbsp3_sync_mux_ck, .rates = div_1_0_rates },
1948 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1949 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1950 { .parent = NULL },
1951};
1952
Rajendra Nayak54776052010-02-22 22:09:39 -07001953/* Merged func_mcbsp3_gfclk into mcbsp3 */
1954static struct clk mcbsp3_fck = {
1955 .name = "mcbsp3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001956 .parent = &mcbsp3_sync_mux_ck,
1957 .clksel = func_mcbsp3_gfclk_sel,
1958 .init = &omap2_init_clksel_parent,
1959 .clksel_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1960 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1961 .ops = &clkops_omap2_dflt,
1962 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001963 .enable_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1964 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1965 .clkdm_name = "abe_clkdm",
1966};
1967
1968static struct clk mcbsp4_sync_mux_ck = {
1969 .name = "mcbsp4_sync_mux_ck",
1970 .parent = &func_96m_fclk,
1971 .clksel = mcasp2_fclk_sel,
1972 .init = &omap2_init_clksel_parent,
1973 .clksel_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1974 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1975 .ops = &clkops_null,
1976 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001977};
1978
1979static const struct clksel per_mcbsp4_gfclk_sel[] = {
1980 { .parent = &mcbsp4_sync_mux_ck, .rates = div_1_0_rates },
1981 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1982 { .parent = NULL },
1983};
1984
Rajendra Nayak54776052010-02-22 22:09:39 -07001985/* Merged per_mcbsp4_gfclk into mcbsp4 */
1986static struct clk mcbsp4_fck = {
1987 .name = "mcbsp4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001988 .parent = &mcbsp4_sync_mux_ck,
1989 .clksel = per_mcbsp4_gfclk_sel,
1990 .init = &omap2_init_clksel_parent,
1991 .clksel_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1992 .clksel_mask = OMAP4430_CLKSEL_SOURCE_24_24_MASK,
1993 .ops = &clkops_omap2_dflt,
1994 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001995 .enable_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1996 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1997 .clkdm_name = "l4_per_clkdm",
1998};
1999
Benoit Cousson0e433272010-09-27 14:02:54 -06002000static struct clk mcpdm_fck = {
2001 .name = "mcpdm_fck",
2002 .ops = &clkops_omap2_dflt,
2003 .enable_reg = OMAP4430_CM1_ABE_PDM_CLKCTRL,
2004 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2005 .clkdm_name = "abe_clkdm",
2006 .parent = &pad_clks_ck,
2007 .recalc = &followparent_recalc,
2008};
2009
Rajendra Nayak54776052010-02-22 22:09:39 -07002010static struct clk mcspi1_fck = {
2011 .name = "mcspi1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002012 .ops = &clkops_omap2_dflt,
2013 .enable_reg = OMAP4430_CM_L4PER_MCSPI1_CLKCTRL,
2014 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2015 .clkdm_name = "l4_per_clkdm",
2016 .parent = &func_48m_fclk,
2017 .recalc = &followparent_recalc,
2018};
2019
Rajendra Nayak54776052010-02-22 22:09:39 -07002020static struct clk mcspi2_fck = {
2021 .name = "mcspi2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002022 .ops = &clkops_omap2_dflt,
2023 .enable_reg = OMAP4430_CM_L4PER_MCSPI2_CLKCTRL,
2024 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2025 .clkdm_name = "l4_per_clkdm",
2026 .parent = &func_48m_fclk,
2027 .recalc = &followparent_recalc,
2028};
2029
Rajendra Nayak54776052010-02-22 22:09:39 -07002030static struct clk mcspi3_fck = {
2031 .name = "mcspi3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002032 .ops = &clkops_omap2_dflt,
2033 .enable_reg = OMAP4430_CM_L4PER_MCSPI3_CLKCTRL,
2034 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2035 .clkdm_name = "l4_per_clkdm",
2036 .parent = &func_48m_fclk,
2037 .recalc = &followparent_recalc,
2038};
2039
Rajendra Nayak54776052010-02-22 22:09:39 -07002040static struct clk mcspi4_fck = {
2041 .name = "mcspi4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002042 .ops = &clkops_omap2_dflt,
2043 .enable_reg = OMAP4430_CM_L4PER_MCSPI4_CLKCTRL,
2044 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2045 .clkdm_name = "l4_per_clkdm",
2046 .parent = &func_48m_fclk,
2047 .recalc = &followparent_recalc,
2048};
2049
Rajendra Nayak54776052010-02-22 22:09:39 -07002050/* Merged hsmmc1_fclk into mmc1 */
2051static struct clk mmc1_fck = {
2052 .name = "mmc1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002053 .parent = &func_64m_fclk,
2054 .clksel = hsmmc6_fclk_sel,
2055 .init = &omap2_init_clksel_parent,
2056 .clksel_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
2057 .clksel_mask = OMAP4430_CLKSEL_MASK,
2058 .ops = &clkops_omap2_dflt,
2059 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002060 .enable_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
2061 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2062 .clkdm_name = "l3_init_clkdm",
2063};
2064
Rajendra Nayak54776052010-02-22 22:09:39 -07002065/* Merged hsmmc2_fclk into mmc2 */
2066static struct clk mmc2_fck = {
2067 .name = "mmc2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002068 .parent = &func_64m_fclk,
2069 .clksel = hsmmc6_fclk_sel,
2070 .init = &omap2_init_clksel_parent,
2071 .clksel_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL,
2072 .clksel_mask = OMAP4430_CLKSEL_MASK,
2073 .ops = &clkops_omap2_dflt,
2074 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002075 .enable_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL,
2076 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2077 .clkdm_name = "l3_init_clkdm",
2078};
2079
Rajendra Nayak54776052010-02-22 22:09:39 -07002080static struct clk mmc3_fck = {
2081 .name = "mmc3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002082 .ops = &clkops_omap2_dflt,
2083 .enable_reg = OMAP4430_CM_L4PER_MMCSD3_CLKCTRL,
2084 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2085 .clkdm_name = "l4_per_clkdm",
2086 .parent = &func_48m_fclk,
2087 .recalc = &followparent_recalc,
2088};
2089
Rajendra Nayak54776052010-02-22 22:09:39 -07002090static struct clk mmc4_fck = {
2091 .name = "mmc4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002092 .ops = &clkops_omap2_dflt,
2093 .enable_reg = OMAP4430_CM_L4PER_MMCSD4_CLKCTRL,
2094 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2095 .clkdm_name = "l4_per_clkdm",
2096 .parent = &func_48m_fclk,
2097 .recalc = &followparent_recalc,
2098};
2099
Rajendra Nayak54776052010-02-22 22:09:39 -07002100static struct clk mmc5_fck = {
2101 .name = "mmc5_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002102 .ops = &clkops_omap2_dflt,
2103 .enable_reg = OMAP4430_CM_L4PER_MMCSD5_CLKCTRL,
2104 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2105 .clkdm_name = "l4_per_clkdm",
2106 .parent = &func_48m_fclk,
2107 .recalc = &followparent_recalc,
2108};
2109
Benoit Cousson1c03f422010-09-27 14:02:55 -06002110static struct clk ocp2scp_usb_phy_phy_48m = {
2111 .name = "ocp2scp_usb_phy_phy_48m",
2112 .ops = &clkops_omap2_dflt,
2113 .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
2114 .enable_bit = OMAP4430_OPTFCLKEN_PHY_48M_SHIFT,
2115 .clkdm_name = "l3_init_clkdm",
2116 .parent = &func_48m_fclk,
2117 .recalc = &followparent_recalc,
2118};
2119
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002120static struct clk ocp2scp_usb_phy_ick = {
2121 .name = "ocp2scp_usb_phy_ick",
2122 .ops = &clkops_omap2_dflt,
2123 .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
2124 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2125 .clkdm_name = "l3_init_clkdm",
2126 .parent = &l4_div_ck,
2127 .recalc = &followparent_recalc,
2128};
2129
Benoit Cousson0e433272010-09-27 14:02:54 -06002130static struct clk ocp_wp_noc_ick = {
2131 .name = "ocp_wp_noc_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002132 .ops = &clkops_omap2_dflt,
2133 .enable_reg = OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL,
2134 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2135 .clkdm_name = "l3_instr_clkdm",
2136 .parent = &l3_div_ck,
2137 .recalc = &followparent_recalc,
2138};
2139
Rajendra Nayak54776052010-02-22 22:09:39 -07002140static struct clk rng_ick = {
2141 .name = "rng_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002142 .ops = &clkops_omap2_dflt,
2143 .enable_reg = OMAP4430_CM_L4SEC_RNG_CLKCTRL,
2144 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2145 .clkdm_name = "l4_secure_clkdm",
2146 .parent = &l4_div_ck,
2147 .recalc = &followparent_recalc,
2148};
2149
Benoit Cousson0e433272010-09-27 14:02:54 -06002150static struct clk sha2md5_fck = {
2151 .name = "sha2md5_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002152 .ops = &clkops_omap2_dflt,
2153 .enable_reg = OMAP4430_CM_L4SEC_SHA2MD51_CLKCTRL,
2154 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2155 .clkdm_name = "l4_secure_clkdm",
2156 .parent = &l3_div_ck,
2157 .recalc = &followparent_recalc,
2158};
2159
Benoit Cousson0e433272010-09-27 14:02:54 -06002160static struct clk sl2if_ick = {
2161 .name = "sl2if_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002162 .ops = &clkops_omap2_dflt,
2163 .enable_reg = OMAP4430_CM_IVAHD_SL2_CLKCTRL,
2164 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2165 .clkdm_name = "ivahd_clkdm",
Thara Gopinath032b5a72010-12-21 21:08:13 -07002166 .parent = &dpll_iva_m5x2_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002167 .recalc = &followparent_recalc,
2168};
2169
Benoit Cousson1c03f422010-09-27 14:02:55 -06002170static struct clk slimbus1_fclk_1 = {
2171 .name = "slimbus1_fclk_1",
2172 .ops = &clkops_omap2_dflt,
2173 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2174 .enable_bit = OMAP4430_OPTFCLKEN_FCLK1_SHIFT,
2175 .clkdm_name = "abe_clkdm",
2176 .parent = &func_24m_clk,
2177 .recalc = &followparent_recalc,
2178};
2179
2180static struct clk slimbus1_fclk_0 = {
2181 .name = "slimbus1_fclk_0",
2182 .ops = &clkops_omap2_dflt,
2183 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2184 .enable_bit = OMAP4430_OPTFCLKEN_FCLK0_SHIFT,
2185 .clkdm_name = "abe_clkdm",
2186 .parent = &abe_24m_fclk,
2187 .recalc = &followparent_recalc,
2188};
2189
2190static struct clk slimbus1_fclk_2 = {
2191 .name = "slimbus1_fclk_2",
2192 .ops = &clkops_omap2_dflt,
2193 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2194 .enable_bit = OMAP4430_OPTFCLKEN_FCLK2_SHIFT,
2195 .clkdm_name = "abe_clkdm",
2196 .parent = &pad_clks_ck,
2197 .recalc = &followparent_recalc,
2198};
2199
2200static struct clk slimbus1_slimbus_clk = {
2201 .name = "slimbus1_slimbus_clk",
2202 .ops = &clkops_omap2_dflt,
2203 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2204 .enable_bit = OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT,
2205 .clkdm_name = "abe_clkdm",
2206 .parent = &slimbus_clk,
2207 .recalc = &followparent_recalc,
2208};
2209
Rajendra Nayak54776052010-02-22 22:09:39 -07002210static struct clk slimbus1_fck = {
2211 .name = "slimbus1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002212 .ops = &clkops_omap2_dflt,
2213 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2214 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2215 .clkdm_name = "abe_clkdm",
2216 .parent = &ocp_abe_iclk,
2217 .recalc = &followparent_recalc,
2218};
2219
Benoit Cousson1c03f422010-09-27 14:02:55 -06002220static struct clk slimbus2_fclk_1 = {
2221 .name = "slimbus2_fclk_1",
2222 .ops = &clkops_omap2_dflt,
2223 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2224 .enable_bit = OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT,
2225 .clkdm_name = "l4_per_clkdm",
2226 .parent = &per_abe_24m_fclk,
2227 .recalc = &followparent_recalc,
2228};
2229
2230static struct clk slimbus2_fclk_0 = {
2231 .name = "slimbus2_fclk_0",
2232 .ops = &clkops_omap2_dflt,
2233 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2234 .enable_bit = OMAP4430_OPTFCLKEN_PER24MC_GFCLK_SHIFT,
2235 .clkdm_name = "l4_per_clkdm",
2236 .parent = &func_24mc_fclk,
2237 .recalc = &followparent_recalc,
2238};
2239
2240static struct clk slimbus2_slimbus_clk = {
2241 .name = "slimbus2_slimbus_clk",
2242 .ops = &clkops_omap2_dflt,
2243 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2244 .enable_bit = OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT,
2245 .clkdm_name = "l4_per_clkdm",
2246 .parent = &pad_slimbus_core_clks_ck,
2247 .recalc = &followparent_recalc,
2248};
2249
Rajendra Nayak54776052010-02-22 22:09:39 -07002250static struct clk slimbus2_fck = {
2251 .name = "slimbus2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002252 .ops = &clkops_omap2_dflt,
2253 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2254 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2255 .clkdm_name = "l4_per_clkdm",
2256 .parent = &l4_div_ck,
2257 .recalc = &followparent_recalc,
2258};
2259
Benoit Cousson0e433272010-09-27 14:02:54 -06002260static struct clk smartreflex_core_fck = {
2261 .name = "smartreflex_core_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002262 .ops = &clkops_omap2_dflt,
2263 .enable_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
2264 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2265 .clkdm_name = "l4_ao_clkdm",
2266 .parent = &l4_wkup_clk_mux_ck,
2267 .recalc = &followparent_recalc,
2268};
2269
Benoit Cousson0e433272010-09-27 14:02:54 -06002270static struct clk smartreflex_iva_fck = {
2271 .name = "smartreflex_iva_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002272 .ops = &clkops_omap2_dflt,
2273 .enable_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
2274 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2275 .clkdm_name = "l4_ao_clkdm",
2276 .parent = &l4_wkup_clk_mux_ck,
2277 .recalc = &followparent_recalc,
2278};
2279
Benoit Cousson0e433272010-09-27 14:02:54 -06002280static struct clk smartreflex_mpu_fck = {
2281 .name = "smartreflex_mpu_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002282 .ops = &clkops_omap2_dflt,
2283 .enable_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
2284 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2285 .clkdm_name = "l4_ao_clkdm",
2286 .parent = &l4_wkup_clk_mux_ck,
2287 .recalc = &followparent_recalc,
2288};
2289
Benoit Cousson0e433272010-09-27 14:02:54 -06002290/* Merged dmt1_clk_mux into timer1 */
2291static struct clk timer1_fck = {
2292 .name = "timer1_fck",
2293 .parent = &sys_clkin_ck,
2294 .clksel = abe_dpll_bypass_clk_mux_sel,
2295 .init = &omap2_init_clksel_parent,
2296 .clksel_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2297 .clksel_mask = OMAP4430_CLKSEL_MASK,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002298 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06002299 .recalc = &omap2_clksel_recalc,
2300 .enable_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2301 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2302 .clkdm_name = "l4_wkup_clkdm",
2303};
2304
2305/* Merged cm2_dm10_mux into timer10 */
2306static struct clk timer10_fck = {
2307 .name = "timer10_fck",
2308 .parent = &sys_clkin_ck,
2309 .clksel = abe_dpll_bypass_clk_mux_sel,
2310 .init = &omap2_init_clksel_parent,
2311 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
2312 .clksel_mask = OMAP4430_CLKSEL_MASK,
2313 .ops = &clkops_omap2_dflt,
2314 .recalc = &omap2_clksel_recalc,
2315 .enable_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
2316 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2317 .clkdm_name = "l4_per_clkdm",
2318};
2319
2320/* Merged cm2_dm11_mux into timer11 */
2321static struct clk timer11_fck = {
2322 .name = "timer11_fck",
2323 .parent = &sys_clkin_ck,
2324 .clksel = abe_dpll_bypass_clk_mux_sel,
2325 .init = &omap2_init_clksel_parent,
2326 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
2327 .clksel_mask = OMAP4430_CLKSEL_MASK,
2328 .ops = &clkops_omap2_dflt,
2329 .recalc = &omap2_clksel_recalc,
2330 .enable_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
2331 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2332 .clkdm_name = "l4_per_clkdm",
2333};
2334
2335/* Merged cm2_dm2_mux into timer2 */
2336static struct clk timer2_fck = {
2337 .name = "timer2_fck",
2338 .parent = &sys_clkin_ck,
2339 .clksel = abe_dpll_bypass_clk_mux_sel,
2340 .init = &omap2_init_clksel_parent,
2341 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2342 .clksel_mask = OMAP4430_CLKSEL_MASK,
2343 .ops = &clkops_omap2_dflt,
2344 .recalc = &omap2_clksel_recalc,
2345 .enable_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2346 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2347 .clkdm_name = "l4_per_clkdm",
2348};
2349
2350/* Merged cm2_dm3_mux into timer3 */
2351static struct clk timer3_fck = {
2352 .name = "timer3_fck",
2353 .parent = &sys_clkin_ck,
2354 .clksel = abe_dpll_bypass_clk_mux_sel,
2355 .init = &omap2_init_clksel_parent,
2356 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2357 .clksel_mask = OMAP4430_CLKSEL_MASK,
2358 .ops = &clkops_omap2_dflt,
2359 .recalc = &omap2_clksel_recalc,
2360 .enable_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2361 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2362 .clkdm_name = "l4_per_clkdm",
2363};
2364
2365/* Merged cm2_dm4_mux into timer4 */
2366static struct clk timer4_fck = {
2367 .name = "timer4_fck",
2368 .parent = &sys_clkin_ck,
2369 .clksel = abe_dpll_bypass_clk_mux_sel,
2370 .init = &omap2_init_clksel_parent,
2371 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2372 .clksel_mask = OMAP4430_CLKSEL_MASK,
2373 .ops = &clkops_omap2_dflt,
2374 .recalc = &omap2_clksel_recalc,
2375 .enable_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2376 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2377 .clkdm_name = "l4_per_clkdm",
2378};
2379
2380static const struct clksel timer5_sync_mux_sel[] = {
2381 { .parent = &syc_clk_div_ck, .rates = div_1_0_rates },
2382 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
2383 { .parent = NULL },
2384};
2385
2386/* Merged timer5_sync_mux into timer5 */
2387static struct clk timer5_fck = {
2388 .name = "timer5_fck",
2389 .parent = &syc_clk_div_ck,
2390 .clksel = timer5_sync_mux_sel,
2391 .init = &omap2_init_clksel_parent,
2392 .clksel_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2393 .clksel_mask = OMAP4430_CLKSEL_MASK,
2394 .ops = &clkops_omap2_dflt,
2395 .recalc = &omap2_clksel_recalc,
2396 .enable_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2397 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2398 .clkdm_name = "abe_clkdm",
2399};
2400
2401/* Merged timer6_sync_mux into timer6 */
2402static struct clk timer6_fck = {
2403 .name = "timer6_fck",
2404 .parent = &syc_clk_div_ck,
2405 .clksel = timer5_sync_mux_sel,
2406 .init = &omap2_init_clksel_parent,
2407 .clksel_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
2408 .clksel_mask = OMAP4430_CLKSEL_MASK,
2409 .ops = &clkops_omap2_dflt,
2410 .recalc = &omap2_clksel_recalc,
2411 .enable_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
2412 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2413 .clkdm_name = "abe_clkdm",
2414};
2415
2416/* Merged timer7_sync_mux into timer7 */
2417static struct clk timer7_fck = {
2418 .name = "timer7_fck",
2419 .parent = &syc_clk_div_ck,
2420 .clksel = timer5_sync_mux_sel,
2421 .init = &omap2_init_clksel_parent,
2422 .clksel_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
2423 .clksel_mask = OMAP4430_CLKSEL_MASK,
2424 .ops = &clkops_omap2_dflt,
2425 .recalc = &omap2_clksel_recalc,
2426 .enable_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
2427 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2428 .clkdm_name = "abe_clkdm",
2429};
2430
2431/* Merged timer8_sync_mux into timer8 */
2432static struct clk timer8_fck = {
2433 .name = "timer8_fck",
2434 .parent = &syc_clk_div_ck,
2435 .clksel = timer5_sync_mux_sel,
2436 .init = &omap2_init_clksel_parent,
2437 .clksel_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
2438 .clksel_mask = OMAP4430_CLKSEL_MASK,
2439 .ops = &clkops_omap2_dflt,
2440 .recalc = &omap2_clksel_recalc,
2441 .enable_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
2442 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2443 .clkdm_name = "abe_clkdm",
2444};
2445
2446/* Merged cm2_dm9_mux into timer9 */
2447static struct clk timer9_fck = {
2448 .name = "timer9_fck",
2449 .parent = &sys_clkin_ck,
2450 .clksel = abe_dpll_bypass_clk_mux_sel,
2451 .init = &omap2_init_clksel_parent,
2452 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
2453 .clksel_mask = OMAP4430_CLKSEL_MASK,
2454 .ops = &clkops_omap2_dflt,
2455 .recalc = &omap2_clksel_recalc,
2456 .enable_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
2457 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2458 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002459};
2460
Rajendra Nayak54776052010-02-22 22:09:39 -07002461static struct clk uart1_fck = {
2462 .name = "uart1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002463 .ops = &clkops_omap2_dflt,
2464 .enable_reg = OMAP4430_CM_L4PER_UART1_CLKCTRL,
2465 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2466 .clkdm_name = "l4_per_clkdm",
2467 .parent = &func_48m_fclk,
2468 .recalc = &followparent_recalc,
2469};
2470
Rajendra Nayak54776052010-02-22 22:09:39 -07002471static struct clk uart2_fck = {
2472 .name = "uart2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002473 .ops = &clkops_omap2_dflt,
2474 .enable_reg = OMAP4430_CM_L4PER_UART2_CLKCTRL,
2475 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2476 .clkdm_name = "l4_per_clkdm",
2477 .parent = &func_48m_fclk,
2478 .recalc = &followparent_recalc,
2479};
2480
Rajendra Nayak54776052010-02-22 22:09:39 -07002481static struct clk uart3_fck = {
2482 .name = "uart3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002483 .ops = &clkops_omap2_dflt,
2484 .enable_reg = OMAP4430_CM_L4PER_UART3_CLKCTRL,
2485 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2486 .clkdm_name = "l4_per_clkdm",
2487 .parent = &func_48m_fclk,
2488 .recalc = &followparent_recalc,
2489};
2490
Rajendra Nayak54776052010-02-22 22:09:39 -07002491static struct clk uart4_fck = {
2492 .name = "uart4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002493 .ops = &clkops_omap2_dflt,
2494 .enable_reg = OMAP4430_CM_L4PER_UART4_CLKCTRL,
2495 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2496 .clkdm_name = "l4_per_clkdm",
2497 .parent = &func_48m_fclk,
2498 .recalc = &followparent_recalc,
2499};
2500
Rajendra Nayak54776052010-02-22 22:09:39 -07002501static struct clk usb_host_fs_fck = {
2502 .name = "usb_host_fs_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002503 .ops = &clkops_omap2_dflt,
2504 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_FS_CLKCTRL,
2505 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2506 .clkdm_name = "l3_init_clkdm",
2507 .parent = &func_48mc_fclk,
2508 .recalc = &followparent_recalc,
2509};
2510
Benoit Cousson1c03f422010-09-27 14:02:55 -06002511static const struct clksel utmi_p1_gfclk_sel[] = {
2512 { .parent = &init_60m_fclk, .rates = div_1_0_rates },
2513 { .parent = &xclk60mhsp1_ck, .rates = div_1_1_rates },
2514 { .parent = NULL },
2515};
2516
2517static struct clk utmi_p1_gfclk = {
2518 .name = "utmi_p1_gfclk",
2519 .parent = &init_60m_fclk,
2520 .clksel = utmi_p1_gfclk_sel,
2521 .init = &omap2_init_clksel_parent,
2522 .clksel_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2523 .clksel_mask = OMAP4430_CLKSEL_UTMI_P1_MASK,
2524 .ops = &clkops_null,
2525 .recalc = &omap2_clksel_recalc,
2526};
2527
2528static struct clk usb_host_hs_utmi_p1_clk = {
2529 .name = "usb_host_hs_utmi_p1_clk",
2530 .ops = &clkops_omap2_dflt,
2531 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2532 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P1_CLK_SHIFT,
2533 .clkdm_name = "l3_init_clkdm",
2534 .parent = &utmi_p1_gfclk,
2535 .recalc = &followparent_recalc,
2536};
2537
2538static const struct clksel utmi_p2_gfclk_sel[] = {
2539 { .parent = &init_60m_fclk, .rates = div_1_0_rates },
2540 { .parent = &xclk60mhsp2_ck, .rates = div_1_1_rates },
2541 { .parent = NULL },
2542};
2543
2544static struct clk utmi_p2_gfclk = {
2545 .name = "utmi_p2_gfclk",
2546 .parent = &init_60m_fclk,
2547 .clksel = utmi_p2_gfclk_sel,
2548 .init = &omap2_init_clksel_parent,
2549 .clksel_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2550 .clksel_mask = OMAP4430_CLKSEL_UTMI_P2_MASK,
2551 .ops = &clkops_null,
2552 .recalc = &omap2_clksel_recalc,
2553};
2554
2555static struct clk usb_host_hs_utmi_p2_clk = {
2556 .name = "usb_host_hs_utmi_p2_clk",
2557 .ops = &clkops_omap2_dflt,
2558 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2559 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P2_CLK_SHIFT,
2560 .clkdm_name = "l3_init_clkdm",
2561 .parent = &utmi_p2_gfclk,
2562 .recalc = &followparent_recalc,
2563};
2564
Thara Gopinath032b5a72010-12-21 21:08:13 -07002565static struct clk usb_host_hs_utmi_p3_clk = {
2566 .name = "usb_host_hs_utmi_p3_clk",
2567 .ops = &clkops_omap2_dflt,
2568 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2569 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT,
2570 .clkdm_name = "l3_init_clkdm",
2571 .parent = &init_60m_fclk,
2572 .recalc = &followparent_recalc,
2573};
2574
Benoit Cousson1c03f422010-09-27 14:02:55 -06002575static struct clk usb_host_hs_hsic480m_p1_clk = {
2576 .name = "usb_host_hs_hsic480m_p1_clk",
2577 .ops = &clkops_omap2_dflt,
2578 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2579 .enable_bit = OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_SHIFT,
2580 .clkdm_name = "l3_init_clkdm",
2581 .parent = &dpll_usb_m2_ck,
2582 .recalc = &followparent_recalc,
2583};
2584
Thara Gopinath032b5a72010-12-21 21:08:13 -07002585static struct clk usb_host_hs_hsic60m_p1_clk = {
2586 .name = "usb_host_hs_hsic60m_p1_clk",
2587 .ops = &clkops_omap2_dflt,
2588 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2589 .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT,
2590 .clkdm_name = "l3_init_clkdm",
2591 .parent = &init_60m_fclk,
2592 .recalc = &followparent_recalc,
2593};
2594
2595static struct clk usb_host_hs_hsic60m_p2_clk = {
2596 .name = "usb_host_hs_hsic60m_p2_clk",
2597 .ops = &clkops_omap2_dflt,
2598 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2599 .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT,
2600 .clkdm_name = "l3_init_clkdm",
2601 .parent = &init_60m_fclk,
2602 .recalc = &followparent_recalc,
2603};
2604
Benoit Cousson1c03f422010-09-27 14:02:55 -06002605static struct clk usb_host_hs_hsic480m_p2_clk = {
2606 .name = "usb_host_hs_hsic480m_p2_clk",
2607 .ops = &clkops_omap2_dflt,
2608 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2609 .enable_bit = OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_SHIFT,
2610 .clkdm_name = "l3_init_clkdm",
2611 .parent = &dpll_usb_m2_ck,
2612 .recalc = &followparent_recalc,
2613};
2614
2615static struct clk usb_host_hs_func48mclk = {
2616 .name = "usb_host_hs_func48mclk",
2617 .ops = &clkops_omap2_dflt,
2618 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2619 .enable_bit = OMAP4430_OPTFCLKEN_FUNC48MCLK_SHIFT,
2620 .clkdm_name = "l3_init_clkdm",
2621 .parent = &func_48mc_fclk,
2622 .recalc = &followparent_recalc,
2623};
2624
Benoit Cousson0e433272010-09-27 14:02:54 -06002625static struct clk usb_host_hs_fck = {
2626 .name = "usb_host_hs_fck",
2627 .ops = &clkops_omap2_dflt,
2628 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2629 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2630 .clkdm_name = "l3_init_clkdm",
2631 .parent = &init_60m_fclk,
2632 .recalc = &followparent_recalc,
2633};
2634
Benoit Cousson1c03f422010-09-27 14:02:55 -06002635static const struct clksel otg_60m_gfclk_sel[] = {
2636 { .parent = &utmi_phy_clkout_ck, .rates = div_1_0_rates },
2637 { .parent = &xclk60motg_ck, .rates = div_1_1_rates },
2638 { .parent = NULL },
2639};
2640
2641static struct clk otg_60m_gfclk = {
2642 .name = "otg_60m_gfclk",
2643 .parent = &utmi_phy_clkout_ck,
2644 .clksel = otg_60m_gfclk_sel,
2645 .init = &omap2_init_clksel_parent,
2646 .clksel_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2647 .clksel_mask = OMAP4430_CLKSEL_60M_MASK,
2648 .ops = &clkops_null,
2649 .recalc = &omap2_clksel_recalc,
2650};
2651
2652static struct clk usb_otg_hs_xclk = {
2653 .name = "usb_otg_hs_xclk",
2654 .ops = &clkops_omap2_dflt,
2655 .enable_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2656 .enable_bit = OMAP4430_OPTFCLKEN_XCLK_SHIFT,
2657 .clkdm_name = "l3_init_clkdm",
2658 .parent = &otg_60m_gfclk,
2659 .recalc = &followparent_recalc,
2660};
2661
Benoit Cousson0e433272010-09-27 14:02:54 -06002662static struct clk usb_otg_hs_ick = {
2663 .name = "usb_otg_hs_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002664 .ops = &clkops_omap2_dflt,
2665 .enable_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2666 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2667 .clkdm_name = "l3_init_clkdm",
2668 .parent = &l3_div_ck,
2669 .recalc = &followparent_recalc,
2670};
2671
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002672static struct clk usb_phy_cm_clk32k = {
2673 .name = "usb_phy_cm_clk32k",
2674 .ops = &clkops_omap2_dflt,
2675 .enable_reg = OMAP4430_CM_ALWON_USBPHY_CLKCTRL,
2676 .enable_bit = OMAP4430_OPTFCLKEN_CLK32K_SHIFT,
2677 .clkdm_name = "l4_ao_clkdm",
2678 .parent = &sys_32k_ck,
2679 .recalc = &followparent_recalc,
2680};
2681
Benoit Cousson1c03f422010-09-27 14:02:55 -06002682static struct clk usb_tll_hs_usb_ch2_clk = {
2683 .name = "usb_tll_hs_usb_ch2_clk",
2684 .ops = &clkops_omap2_dflt,
2685 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2686 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH2_CLK_SHIFT,
2687 .clkdm_name = "l3_init_clkdm",
2688 .parent = &init_60m_fclk,
2689 .recalc = &followparent_recalc,
2690};
2691
2692static struct clk usb_tll_hs_usb_ch0_clk = {
2693 .name = "usb_tll_hs_usb_ch0_clk",
2694 .ops = &clkops_omap2_dflt,
2695 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2696 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH0_CLK_SHIFT,
2697 .clkdm_name = "l3_init_clkdm",
2698 .parent = &init_60m_fclk,
2699 .recalc = &followparent_recalc,
2700};
2701
2702static struct clk usb_tll_hs_usb_ch1_clk = {
2703 .name = "usb_tll_hs_usb_ch1_clk",
2704 .ops = &clkops_omap2_dflt,
2705 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2706 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH1_CLK_SHIFT,
2707 .clkdm_name = "l3_init_clkdm",
2708 .parent = &init_60m_fclk,
2709 .recalc = &followparent_recalc,
2710};
2711
Benoit Cousson0e433272010-09-27 14:02:54 -06002712static struct clk usb_tll_hs_ick = {
2713 .name = "usb_tll_hs_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002714 .ops = &clkops_omap2_dflt,
2715 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2716 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2717 .clkdm_name = "l3_init_clkdm",
2718 .parent = &l4_div_ck,
2719 .recalc = &followparent_recalc,
2720};
2721
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002722static const struct clksel_rate div2_14to18_rates[] = {
2723 { .div = 14, .val = 0, .flags = RATE_IN_4430 },
2724 { .div = 18, .val = 1, .flags = RATE_IN_4430 },
2725 { .div = 0 },
2726};
2727
2728static const struct clksel usim_fclk_div[] = {
Thara Gopinath032b5a72010-12-21 21:08:13 -07002729 { .parent = &dpll_per_m4x2_ck, .rates = div2_14to18_rates },
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002730 { .parent = NULL },
2731};
2732
2733static struct clk usim_ck = {
2734 .name = "usim_ck",
Thara Gopinath032b5a72010-12-21 21:08:13 -07002735 .parent = &dpll_per_m4x2_ck,
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002736 .clksel = usim_fclk_div,
2737 .clksel_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
2738 .clksel_mask = OMAP4430_CLKSEL_DIV_MASK,
2739 .ops = &clkops_null,
2740 .recalc = &omap2_clksel_recalc,
2741 .round_rate = &omap2_clksel_round_rate,
2742 .set_rate = &omap2_clksel_set_rate,
2743};
2744
2745static struct clk usim_fclk = {
2746 .name = "usim_fclk",
2747 .ops = &clkops_omap2_dflt,
2748 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
2749 .enable_bit = OMAP4430_OPTFCLKEN_FCLK_SHIFT,
2750 .clkdm_name = "l4_wkup_clkdm",
2751 .parent = &usim_ck,
2752 .recalc = &followparent_recalc,
2753};
2754
Benoit Cousson0e433272010-09-27 14:02:54 -06002755static struct clk usim_fck = {
2756 .name = "usim_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002757 .ops = &clkops_omap2_dflt,
2758 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002759 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002760 .clkdm_name = "l4_wkup_clkdm",
2761 .parent = &sys_32k_ck,
2762 .recalc = &followparent_recalc,
2763};
2764
Benoit Cousson0e433272010-09-27 14:02:54 -06002765static struct clk wd_timer2_fck = {
2766 .name = "wd_timer2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002767 .ops = &clkops_omap2_dflt,
2768 .enable_reg = OMAP4430_CM_WKUP_WDT2_CLKCTRL,
2769 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2770 .clkdm_name = "l4_wkup_clkdm",
2771 .parent = &sys_32k_ck,
2772 .recalc = &followparent_recalc,
2773};
2774
Benoit Cousson0e433272010-09-27 14:02:54 -06002775static struct clk wd_timer3_fck = {
2776 .name = "wd_timer3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002777 .ops = &clkops_omap2_dflt,
2778 .enable_reg = OMAP4430_CM1_ABE_WDT3_CLKCTRL,
2779 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2780 .clkdm_name = "abe_clkdm",
2781 .parent = &sys_32k_ck,
2782 .recalc = &followparent_recalc,
2783};
2784
2785/* Remaining optional clocks */
Rajendra Nayak972c5422009-12-08 18:46:28 -07002786static const struct clksel stm_clk_div_div[] = {
2787 { .parent = &pmd_stm_clock_mux_ck, .rates = div3_1to4_rates },
2788 { .parent = NULL },
2789};
2790
2791static struct clk stm_clk_div_ck = {
2792 .name = "stm_clk_div_ck",
2793 .parent = &pmd_stm_clock_mux_ck,
2794 .clksel = stm_clk_div_div,
2795 .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL,
2796 .clksel_mask = OMAP4430_CLKSEL_PMD_STM_CLK_MASK,
2797 .ops = &clkops_null,
2798 .recalc = &omap2_clksel_recalc,
2799 .round_rate = &omap2_clksel_round_rate,
2800 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002801};
2802
2803static const struct clksel trace_clk_div_div[] = {
2804 { .parent = &pmd_trace_clk_mux_ck, .rates = div3_1to4_rates },
2805 { .parent = NULL },
2806};
2807
2808static struct clk trace_clk_div_ck = {
2809 .name = "trace_clk_div_ck",
2810 .parent = &pmd_trace_clk_mux_ck,
2811 .clksel = trace_clk_div_div,
2812 .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL,
2813 .clksel_mask = OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK,
2814 .ops = &clkops_null,
2815 .recalc = &omap2_clksel_recalc,
2816 .round_rate = &omap2_clksel_round_rate,
2817 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002818};
2819
Rajendra Nayak972c5422009-12-08 18:46:28 -07002820/*
2821 * clkdev
2822 */
2823
2824static struct omap_clk omap44xx_clks[] = {
2825 CLK(NULL, "extalt_clkin_ck", &extalt_clkin_ck, CK_443X),
2826 CLK(NULL, "pad_clks_ck", &pad_clks_ck, CK_443X),
2827 CLK(NULL, "pad_slimbus_core_clks_ck", &pad_slimbus_core_clks_ck, CK_443X),
2828 CLK(NULL, "secure_32k_clk_src_ck", &secure_32k_clk_src_ck, CK_443X),
2829 CLK(NULL, "slimbus_clk", &slimbus_clk, CK_443X),
2830 CLK(NULL, "sys_32k_ck", &sys_32k_ck, CK_443X),
2831 CLK(NULL, "virt_12000000_ck", &virt_12000000_ck, CK_443X),
2832 CLK(NULL, "virt_13000000_ck", &virt_13000000_ck, CK_443X),
2833 CLK(NULL, "virt_16800000_ck", &virt_16800000_ck, CK_443X),
2834 CLK(NULL, "virt_19200000_ck", &virt_19200000_ck, CK_443X),
2835 CLK(NULL, "virt_26000000_ck", &virt_26000000_ck, CK_443X),
2836 CLK(NULL, "virt_27000000_ck", &virt_27000000_ck, CK_443X),
2837 CLK(NULL, "virt_38400000_ck", &virt_38400000_ck, CK_443X),
2838 CLK(NULL, "sys_clkin_ck", &sys_clkin_ck, CK_443X),
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002839 CLK(NULL, "tie_low_clock_ck", &tie_low_clock_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002840 CLK(NULL, "utmi_phy_clkout_ck", &utmi_phy_clkout_ck, CK_443X),
2841 CLK(NULL, "xclk60mhsp1_ck", &xclk60mhsp1_ck, CK_443X),
2842 CLK(NULL, "xclk60mhsp2_ck", &xclk60mhsp2_ck, CK_443X),
2843 CLK(NULL, "xclk60motg_ck", &xclk60motg_ck, CK_443X),
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002844 CLK(NULL, "abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002845 CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X),
2846 CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002847 CLK(NULL, "dpll_abe_x2_ck", &dpll_abe_x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002848 CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X),
2849 CLK(NULL, "abe_24m_fclk", &abe_24m_fclk, CK_443X),
2850 CLK(NULL, "abe_clk", &abe_clk, CK_443X),
2851 CLK(NULL, "aess_fclk", &aess_fclk, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002852 CLK(NULL, "dpll_abe_m3x2_ck", &dpll_abe_m3x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002853 CLK(NULL, "core_hsd_byp_clk_mux_ck", &core_hsd_byp_clk_mux_ck, CK_443X),
2854 CLK(NULL, "dpll_core_ck", &dpll_core_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002855 CLK(NULL, "dpll_core_x2_ck", &dpll_core_x2_ck, CK_443X),
2856 CLK(NULL, "dpll_core_m6x2_ck", &dpll_core_m6x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002857 CLK(NULL, "dbgclk_mux_ck", &dbgclk_mux_ck, CK_443X),
2858 CLK(NULL, "dpll_core_m2_ck", &dpll_core_m2_ck, CK_443X),
2859 CLK(NULL, "ddrphy_ck", &ddrphy_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002860 CLK(NULL, "dpll_core_m5x2_ck", &dpll_core_m5x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002861 CLK(NULL, "div_core_ck", &div_core_ck, CK_443X),
2862 CLK(NULL, "div_iva_hs_clk", &div_iva_hs_clk, CK_443X),
2863 CLK(NULL, "div_mpu_hs_clk", &div_mpu_hs_clk, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002864 CLK(NULL, "dpll_core_m4x2_ck", &dpll_core_m4x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002865 CLK(NULL, "dll_clk_div_ck", &dll_clk_div_ck, CK_443X),
2866 CLK(NULL, "dpll_abe_m2_ck", &dpll_abe_m2_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002867 CLK(NULL, "dpll_core_m3x2_ck", &dpll_core_m3x2_ck, CK_443X),
2868 CLK(NULL, "dpll_core_m7x2_ck", &dpll_core_m7x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002869 CLK(NULL, "iva_hsd_byp_clk_mux_ck", &iva_hsd_byp_clk_mux_ck, CK_443X),
2870 CLK(NULL, "dpll_iva_ck", &dpll_iva_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002871 CLK(NULL, "dpll_iva_x2_ck", &dpll_iva_x2_ck, CK_443X),
2872 CLK(NULL, "dpll_iva_m4x2_ck", &dpll_iva_m4x2_ck, CK_443X),
2873 CLK(NULL, "dpll_iva_m5x2_ck", &dpll_iva_m5x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002874 CLK(NULL, "dpll_mpu_ck", &dpll_mpu_ck, CK_443X),
2875 CLK(NULL, "dpll_mpu_m2_ck", &dpll_mpu_m2_ck, CK_443X),
2876 CLK(NULL, "per_hs_clk_div_ck", &per_hs_clk_div_ck, CK_443X),
2877 CLK(NULL, "per_hsd_byp_clk_mux_ck", &per_hsd_byp_clk_mux_ck, CK_443X),
2878 CLK(NULL, "dpll_per_ck", &dpll_per_ck, CK_443X),
2879 CLK(NULL, "dpll_per_m2_ck", &dpll_per_m2_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002880 CLK(NULL, "dpll_per_x2_ck", &dpll_per_x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002881 CLK(NULL, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002882 CLK(NULL, "dpll_per_m3x2_ck", &dpll_per_m3x2_ck, CK_443X),
2883 CLK(NULL, "dpll_per_m4x2_ck", &dpll_per_m4x2_ck, CK_443X),
2884 CLK(NULL, "dpll_per_m5x2_ck", &dpll_per_m5x2_ck, CK_443X),
2885 CLK(NULL, "dpll_per_m6x2_ck", &dpll_per_m6x2_ck, CK_443X),
2886 CLK(NULL, "dpll_per_m7x2_ck", &dpll_per_m7x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002887 CLK(NULL, "dpll_unipro_ck", &dpll_unipro_ck, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07002888 CLK(NULL, "dpll_unipro_x2_ck", &dpll_unipro_x2_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002889 CLK(NULL, "dpll_unipro_m2x2_ck", &dpll_unipro_m2x2_ck, CK_443X),
2890 CLK(NULL, "usb_hs_clk_div_ck", &usb_hs_clk_div_ck, CK_443X),
2891 CLK(NULL, "dpll_usb_ck", &dpll_usb_ck, CK_443X),
2892 CLK(NULL, "dpll_usb_clkdcoldo_ck", &dpll_usb_clkdcoldo_ck, CK_443X),
2893 CLK(NULL, "dpll_usb_m2_ck", &dpll_usb_m2_ck, CK_443X),
2894 CLK(NULL, "ducati_clk_mux_ck", &ducati_clk_mux_ck, CK_443X),
2895 CLK(NULL, "func_12m_fclk", &func_12m_fclk, CK_443X),
2896 CLK(NULL, "func_24m_clk", &func_24m_clk, CK_443X),
2897 CLK(NULL, "func_24mc_fclk", &func_24mc_fclk, CK_443X),
2898 CLK(NULL, "func_48m_fclk", &func_48m_fclk, CK_443X),
2899 CLK(NULL, "func_48mc_fclk", &func_48mc_fclk, CK_443X),
2900 CLK(NULL, "func_64m_fclk", &func_64m_fclk, CK_443X),
2901 CLK(NULL, "func_96m_fclk", &func_96m_fclk, CK_443X),
2902 CLK(NULL, "hsmmc6_fclk", &hsmmc6_fclk, CK_443X),
2903 CLK(NULL, "init_60m_fclk", &init_60m_fclk, CK_443X),
2904 CLK(NULL, "l3_div_ck", &l3_div_ck, CK_443X),
2905 CLK(NULL, "l4_div_ck", &l4_div_ck, CK_443X),
2906 CLK(NULL, "lp_clk_div_ck", &lp_clk_div_ck, CK_443X),
2907 CLK(NULL, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, CK_443X),
2908 CLK(NULL, "per_abe_nc_fclk", &per_abe_nc_fclk, CK_443X),
2909 CLK(NULL, "mcasp2_fclk", &mcasp2_fclk, CK_443X),
2910 CLK(NULL, "mcasp3_fclk", &mcasp3_fclk, CK_443X),
2911 CLK(NULL, "ocp_abe_iclk", &ocp_abe_iclk, CK_443X),
2912 CLK(NULL, "per_abe_24m_fclk", &per_abe_24m_fclk, CK_443X),
2913 CLK(NULL, "pmd_stm_clock_mux_ck", &pmd_stm_clock_mux_ck, CK_443X),
2914 CLK(NULL, "pmd_trace_clk_mux_ck", &pmd_trace_clk_mux_ck, CK_443X),
2915 CLK(NULL, "syc_clk_div_ck", &syc_clk_div_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002916 CLK(NULL, "aes1_fck", &aes1_fck, CK_443X),
2917 CLK(NULL, "aes2_fck", &aes2_fck, CK_443X),
2918 CLK(NULL, "aess_fck", &aess_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002919 CLK(NULL, "bandgap_fclk", &bandgap_fclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002920 CLK(NULL, "des3des_fck", &des3des_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002921 CLK(NULL, "dmic_sync_mux_ck", &dmic_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002922 CLK(NULL, "dmic_fck", &dmic_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002923 CLK(NULL, "dsp_fck", &dsp_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002924 CLK(NULL, "dss_sys_clk", &dss_sys_clk, CK_443X),
2925 CLK(NULL, "dss_tv_clk", &dss_tv_clk, CK_443X),
2926 CLK(NULL, "dss_dss_clk", &dss_dss_clk, CK_443X),
2927 CLK(NULL, "dss_48mhz_clk", &dss_48mhz_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002928 CLK(NULL, "dss_fck", &dss_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002929 CLK(NULL, "efuse_ctrl_cust_fck", &efuse_ctrl_cust_fck, CK_443X),
2930 CLK(NULL, "emif1_fck", &emif1_fck, CK_443X),
2931 CLK(NULL, "emif2_fck", &emif2_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002932 CLK(NULL, "fdif_fck", &fdif_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002933 CLK(NULL, "fpka_fck", &fpka_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002934 CLK(NULL, "gpio1_dbck", &gpio1_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002935 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002936 CLK(NULL, "gpio2_dbck", &gpio2_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002937 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002938 CLK(NULL, "gpio3_dbck", &gpio3_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002939 CLK(NULL, "gpio3_ick", &gpio3_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002940 CLK(NULL, "gpio4_dbck", &gpio4_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002941 CLK(NULL, "gpio4_ick", &gpio4_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002942 CLK(NULL, "gpio5_dbck", &gpio5_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002943 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002944 CLK(NULL, "gpio6_dbck", &gpio6_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002945 CLK(NULL, "gpio6_ick", &gpio6_ick, CK_443X),
2946 CLK(NULL, "gpmc_ick", &gpmc_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002947 CLK(NULL, "gpu_fck", &gpu_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002948 CLK("omap2_hdq.0", "fck", &hdq1w_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002949 CLK(NULL, "hsi_fck", &hsi_fck, CK_443X),
Benoit Coussonf7bb0d92010-12-09 14:24:16 +00002950 CLK("omap_i2c.1", "fck", &i2c1_fck, CK_443X),
2951 CLK("omap_i2c.2", "fck", &i2c2_fck, CK_443X),
2952 CLK("omap_i2c.3", "fck", &i2c3_fck, CK_443X),
2953 CLK("omap_i2c.4", "fck", &i2c4_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002954 CLK(NULL, "ipu_fck", &ipu_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002955 CLK(NULL, "iss_ctrlclk", &iss_ctrlclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002956 CLK(NULL, "iss_fck", &iss_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002957 CLK(NULL, "iva_fck", &iva_fck, CK_443X),
2958 CLK(NULL, "kbd_fck", &kbd_fck, CK_443X),
2959 CLK(NULL, "l3_instr_ick", &l3_instr_ick, CK_443X),
2960 CLK(NULL, "l3_main_3_ick", &l3_main_3_ick, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002961 CLK(NULL, "mcasp_sync_mux_ck", &mcasp_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002962 CLK(NULL, "mcasp_fck", &mcasp_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002963 CLK(NULL, "mcbsp1_sync_mux_ck", &mcbsp1_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002964 CLK("omap-mcbsp.1", "fck", &mcbsp1_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002965 CLK(NULL, "mcbsp2_sync_mux_ck", &mcbsp2_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002966 CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002967 CLK(NULL, "mcbsp3_sync_mux_ck", &mcbsp3_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002968 CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002969 CLK(NULL, "mcbsp4_sync_mux_ck", &mcbsp4_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002970 CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002971 CLK(NULL, "mcpdm_fck", &mcpdm_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002972 CLK("omap2_mcspi.1", "fck", &mcspi1_fck, CK_443X),
2973 CLK("omap2_mcspi.2", "fck", &mcspi2_fck, CK_443X),
2974 CLK("omap2_mcspi.3", "fck", &mcspi3_fck, CK_443X),
2975 CLK("omap2_mcspi.4", "fck", &mcspi4_fck, CK_443X),
2976 CLK("mmci-omap-hs.0", "fck", &mmc1_fck, CK_443X),
2977 CLK("mmci-omap-hs.1", "fck", &mmc2_fck, CK_443X),
2978 CLK("mmci-omap-hs.2", "fck", &mmc3_fck, CK_443X),
2979 CLK("mmci-omap-hs.3", "fck", &mmc4_fck, CK_443X),
2980 CLK("mmci-omap-hs.4", "fck", &mmc5_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002981 CLK(NULL, "ocp2scp_usb_phy_phy_48m", &ocp2scp_usb_phy_phy_48m, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002982 CLK(NULL, "ocp2scp_usb_phy_ick", &ocp2scp_usb_phy_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002983 CLK(NULL, "ocp_wp_noc_ick", &ocp_wp_noc_ick, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002984 CLK("omap_rng", "ick", &rng_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002985 CLK(NULL, "sha2md5_fck", &sha2md5_fck, CK_443X),
2986 CLK(NULL, "sl2if_ick", &sl2if_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002987 CLK(NULL, "slimbus1_fclk_1", &slimbus1_fclk_1, CK_443X),
2988 CLK(NULL, "slimbus1_fclk_0", &slimbus1_fclk_0, CK_443X),
2989 CLK(NULL, "slimbus1_fclk_2", &slimbus1_fclk_2, CK_443X),
2990 CLK(NULL, "slimbus1_slimbus_clk", &slimbus1_slimbus_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002991 CLK(NULL, "slimbus1_fck", &slimbus1_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002992 CLK(NULL, "slimbus2_fclk_1", &slimbus2_fclk_1, CK_443X),
2993 CLK(NULL, "slimbus2_fclk_0", &slimbus2_fclk_0, CK_443X),
2994 CLK(NULL, "slimbus2_slimbus_clk", &slimbus2_slimbus_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002995 CLK(NULL, "slimbus2_fck", &slimbus2_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002996 CLK(NULL, "smartreflex_core_fck", &smartreflex_core_fck, CK_443X),
2997 CLK(NULL, "smartreflex_iva_fck", &smartreflex_iva_fck, CK_443X),
2998 CLK(NULL, "smartreflex_mpu_fck", &smartreflex_mpu_fck, CK_443X),
2999 CLK(NULL, "gpt1_fck", &timer1_fck, CK_443X),
3000 CLK(NULL, "gpt10_fck", &timer10_fck, CK_443X),
3001 CLK(NULL, "gpt11_fck", &timer11_fck, CK_443X),
3002 CLK(NULL, "gpt2_fck", &timer2_fck, CK_443X),
3003 CLK(NULL, "gpt3_fck", &timer3_fck, CK_443X),
3004 CLK(NULL, "gpt4_fck", &timer4_fck, CK_443X),
3005 CLK(NULL, "gpt5_fck", &timer5_fck, CK_443X),
3006 CLK(NULL, "gpt6_fck", &timer6_fck, CK_443X),
3007 CLK(NULL, "gpt7_fck", &timer7_fck, CK_443X),
3008 CLK(NULL, "gpt8_fck", &timer8_fck, CK_443X),
3009 CLK(NULL, "gpt9_fck", &timer9_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07003010 CLK(NULL, "uart1_fck", &uart1_fck, CK_443X),
3011 CLK(NULL, "uart2_fck", &uart2_fck, CK_443X),
3012 CLK(NULL, "uart3_fck", &uart3_fck, CK_443X),
3013 CLK(NULL, "uart4_fck", &uart4_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07003014 CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06003015 CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X),
3016 CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X),
3017 CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X),
3018 CLK(NULL, "usb_host_hs_utmi_p2_clk", &usb_host_hs_utmi_p2_clk, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07003019 CLK(NULL, "usb_host_hs_utmi_p3_clk", &usb_host_hs_utmi_p3_clk, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06003020 CLK(NULL, "usb_host_hs_hsic480m_p1_clk", &usb_host_hs_hsic480m_p1_clk, CK_443X),
Thara Gopinath032b5a72010-12-21 21:08:13 -07003021 CLK(NULL, "usb_host_hs_hsic60m_p1_clk", &usb_host_hs_hsic60m_p1_clk, CK_443X),
3022 CLK(NULL, "usb_host_hs_hsic60m_p2_clk", &usb_host_hs_hsic60m_p2_clk, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06003023 CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X),
3024 CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003025 CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06003026 CLK(NULL, "otg_60m_gfclk", &otg_60m_gfclk, CK_443X),
3027 CLK(NULL, "usb_otg_hs_xclk", &usb_otg_hs_xclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003028 CLK("musb_hdrc", "ick", &usb_otg_hs_ick, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06003029 CLK(NULL, "usb_phy_cm_clk32k", &usb_phy_cm_clk32k, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06003030 CLK(NULL, "usb_tll_hs_usb_ch2_clk", &usb_tll_hs_usb_ch2_clk, CK_443X),
3031 CLK(NULL, "usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk, CK_443X),
3032 CLK(NULL, "usb_tll_hs_usb_ch1_clk", &usb_tll_hs_usb_ch1_clk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003033 CLK(NULL, "usb_tll_hs_ick", &usb_tll_hs_ick, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06003034 CLK(NULL, "usim_ck", &usim_ck, CK_443X),
3035 CLK(NULL, "usim_fclk", &usim_fclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003036 CLK(NULL, "usim_fck", &usim_fck, CK_443X),
3037 CLK("omap_wdt", "fck", &wd_timer2_fck, CK_443X),
3038 CLK(NULL, "wd_timer3_fck", &wd_timer3_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07003039 CLK(NULL, "stm_clk_div_ck", &stm_clk_div_ck, CK_443X),
3040 CLK(NULL, "trace_clk_div_ck", &trace_clk_div_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07003041 CLK(NULL, "gpmc_ck", &dummy_ck, CK_443X),
3042 CLK(NULL, "gpt1_ick", &dummy_ck, CK_443X),
3043 CLK(NULL, "gpt2_ick", &dummy_ck, CK_443X),
3044 CLK(NULL, "gpt3_ick", &dummy_ck, CK_443X),
3045 CLK(NULL, "gpt4_ick", &dummy_ck, CK_443X),
3046 CLK(NULL, "gpt5_ick", &dummy_ck, CK_443X),
3047 CLK(NULL, "gpt6_ick", &dummy_ck, CK_443X),
3048 CLK(NULL, "gpt7_ick", &dummy_ck, CK_443X),
3049 CLK(NULL, "gpt8_ick", &dummy_ck, CK_443X),
3050 CLK(NULL, "gpt9_ick", &dummy_ck, CK_443X),
3051 CLK(NULL, "gpt10_ick", &dummy_ck, CK_443X),
3052 CLK(NULL, "gpt11_ick", &dummy_ck, CK_443X),
Benoit Coussonf7bb0d92010-12-09 14:24:16 +00003053 CLK("omap_i2c.1", "ick", &dummy_ck, CK_443X),
3054 CLK("omap_i2c.2", "ick", &dummy_ck, CK_443X),
3055 CLK("omap_i2c.3", "ick", &dummy_ck, CK_443X),
3056 CLK("omap_i2c.4", "ick", &dummy_ck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003057 CLK("mmci-omap-hs.0", "ick", &dummy_ck, CK_443X),
3058 CLK("mmci-omap-hs.1", "ick", &dummy_ck, CK_443X),
3059 CLK("mmci-omap-hs.2", "ick", &dummy_ck, CK_443X),
3060 CLK("mmci-omap-hs.3", "ick", &dummy_ck, CK_443X),
3061 CLK("mmci-omap-hs.4", "ick", &dummy_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07003062 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_443X),
3063 CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X),
3064 CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X),
3065 CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06003066 CLK("omap2_mcspi.1", "ick", &dummy_ck, CK_443X),
3067 CLK("omap2_mcspi.2", "ick", &dummy_ck, CK_443X),
3068 CLK("omap2_mcspi.3", "ick", &dummy_ck, CK_443X),
3069 CLK("omap2_mcspi.4", "ick", &dummy_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07003070 CLK(NULL, "uart1_ick", &dummy_ck, CK_443X),
3071 CLK(NULL, "uart2_ick", &dummy_ck, CK_443X),
3072 CLK(NULL, "uart3_ick", &dummy_ck, CK_443X),
3073 CLK(NULL, "uart4_ick", &dummy_ck, CK_443X),
3074 CLK("omap_wdt", "ick", &dummy_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07003075};
3076
Paul Walmsleye80a9722010-01-26 20:13:12 -07003077int __init omap4xxx_clk_init(void)
Rajendra Nayak972c5422009-12-08 18:46:28 -07003078{
Rajendra Nayak972c5422009-12-08 18:46:28 -07003079 struct omap_clk *c;
Rajendra Nayak972c5422009-12-08 18:46:28 -07003080 u32 cpu_clkflg;
3081
3082 if (cpu_is_omap44xx()) {
3083 cpu_mask = RATE_IN_4430;
3084 cpu_clkflg = CK_443X;
3085 }
3086
3087 clk_init(&omap2_clk_functions);
3088
3089 for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks);
3090 c++)
3091 clk_preinit(c->lk.clk);
3092
3093 for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks);
3094 c++)
3095 if (c->cpu & cpu_clkflg) {
3096 clkdev_add(&c->lk);
3097 clk_register(c->lk.clk);
Rajendra Nayak972c5422009-12-08 18:46:28 -07003098 omap2_init_clk_clkdm(c->lk.clk);
Rajendra Nayak972c5422009-12-08 18:46:28 -07003099 }
3100
3101 recalculate_root_clocks();
3102
3103 /*
3104 * Only enable those clocks we will need, let the drivers
3105 * enable other clocks as necessary
3106 */
3107 clk_enable_init_clocks();
3108
3109 return 0;
3110}