blob: 254f341e4bd3020bb9d06934e0157fc9b564db77 [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"
36#include "prm.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
41/* Root clocks */
42
43static struct clk extalt_clkin_ck = {
44 .name = "extalt_clkin_ck",
45 .rate = 59000000,
46 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070047};
48
49static struct clk pad_clks_ck = {
50 .name = "pad_clks_ck",
51 .rate = 12000000,
52 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070053};
54
55static struct clk pad_slimbus_core_clks_ck = {
56 .name = "pad_slimbus_core_clks_ck",
57 .rate = 12000000,
58 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070059};
60
61static struct clk secure_32k_clk_src_ck = {
62 .name = "secure_32k_clk_src_ck",
63 .rate = 32768,
64 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070065};
66
67static struct clk slimbus_clk = {
68 .name = "slimbus_clk",
69 .rate = 12000000,
70 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070071};
72
73static struct clk sys_32k_ck = {
74 .name = "sys_32k_ck",
75 .rate = 32768,
76 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -070077};
78
79static struct clk virt_12000000_ck = {
80 .name = "virt_12000000_ck",
81 .ops = &clkops_null,
82 .rate = 12000000,
83};
84
85static struct clk virt_13000000_ck = {
86 .name = "virt_13000000_ck",
87 .ops = &clkops_null,
88 .rate = 13000000,
89};
90
91static struct clk virt_16800000_ck = {
92 .name = "virt_16800000_ck",
93 .ops = &clkops_null,
94 .rate = 16800000,
95};
96
97static struct clk virt_19200000_ck = {
98 .name = "virt_19200000_ck",
99 .ops = &clkops_null,
100 .rate = 19200000,
101};
102
103static struct clk virt_26000000_ck = {
104 .name = "virt_26000000_ck",
105 .ops = &clkops_null,
106 .rate = 26000000,
107};
108
109static struct clk virt_27000000_ck = {
110 .name = "virt_27000000_ck",
111 .ops = &clkops_null,
112 .rate = 27000000,
113};
114
115static struct clk virt_38400000_ck = {
116 .name = "virt_38400000_ck",
117 .ops = &clkops_null,
118 .rate = 38400000,
119};
120
121static const struct clksel_rate div_1_0_rates[] = {
122 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
123 { .div = 0 },
124};
125
126static const struct clksel_rate div_1_1_rates[] = {
127 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
128 { .div = 0 },
129};
130
131static const struct clksel_rate div_1_2_rates[] = {
132 { .div = 1, .val = 2, .flags = RATE_IN_4430 },
133 { .div = 0 },
134};
135
136static const struct clksel_rate div_1_3_rates[] = {
137 { .div = 1, .val = 3, .flags = RATE_IN_4430 },
138 { .div = 0 },
139};
140
141static const struct clksel_rate div_1_4_rates[] = {
142 { .div = 1, .val = 4, .flags = RATE_IN_4430 },
143 { .div = 0 },
144};
145
146static const struct clksel_rate div_1_5_rates[] = {
147 { .div = 1, .val = 5, .flags = RATE_IN_4430 },
148 { .div = 0 },
149};
150
151static const struct clksel_rate div_1_6_rates[] = {
152 { .div = 1, .val = 6, .flags = RATE_IN_4430 },
153 { .div = 0 },
154};
155
156static const struct clksel_rate div_1_7_rates[] = {
157 { .div = 1, .val = 7, .flags = RATE_IN_4430 },
158 { .div = 0 },
159};
160
161static const struct clksel sys_clkin_sel[] = {
162 { .parent = &virt_12000000_ck, .rates = div_1_1_rates },
163 { .parent = &virt_13000000_ck, .rates = div_1_2_rates },
164 { .parent = &virt_16800000_ck, .rates = div_1_3_rates },
165 { .parent = &virt_19200000_ck, .rates = div_1_4_rates },
166 { .parent = &virt_26000000_ck, .rates = div_1_5_rates },
167 { .parent = &virt_27000000_ck, .rates = div_1_6_rates },
168 { .parent = &virt_38400000_ck, .rates = div_1_7_rates },
169 { .parent = NULL },
170};
171
172static struct clk sys_clkin_ck = {
173 .name = "sys_clkin_ck",
174 .rate = 38400000,
175 .clksel = sys_clkin_sel,
176 .init = &omap2_init_clksel_parent,
177 .clksel_reg = OMAP4430_CM_SYS_CLKSEL,
178 .clksel_mask = OMAP4430_SYS_CLKSEL_MASK,
179 .ops = &clkops_null,
180 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700181};
182
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600183static struct clk tie_low_clock_ck = {
184 .name = "tie_low_clock_ck",
185 .rate = 0,
186 .ops = &clkops_null,
187};
188
Rajendra Nayak972c5422009-12-08 18:46:28 -0700189static struct clk utmi_phy_clkout_ck = {
190 .name = "utmi_phy_clkout_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600191 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700192 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700193};
194
195static struct clk xclk60mhsp1_ck = {
196 .name = "xclk60mhsp1_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600197 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700198 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700199};
200
201static struct clk xclk60mhsp2_ck = {
202 .name = "xclk60mhsp2_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600203 .rate = 60000000,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700204 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700205};
206
207static struct clk xclk60motg_ck = {
208 .name = "xclk60motg_ck",
209 .rate = 60000000,
210 .ops = &clkops_null,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700211};
212
213/* Module clocks and DPLL outputs */
214
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600215static const struct clksel abe_dpll_bypass_clk_mux_sel[] = {
216 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700217 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
218 { .parent = NULL },
219};
220
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600221static struct clk abe_dpll_bypass_clk_mux_ck = {
222 .name = "abe_dpll_bypass_clk_mux_ck",
223 .parent = &sys_clkin_ck,
224 .ops = &clkops_null,
225 .recalc = &followparent_recalc,
226};
227
Rajendra Nayak972c5422009-12-08 18:46:28 -0700228static struct clk abe_dpll_refclk_mux_ck = {
229 .name = "abe_dpll_refclk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600230 .parent = &sys_clkin_ck,
231 .clksel = abe_dpll_bypass_clk_mux_sel,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700232 .init = &omap2_init_clksel_parent,
233 .clksel_reg = OMAP4430_CM_ABE_PLL_REF_CLKSEL,
234 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
235 .ops = &clkops_null,
236 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700237};
238
239/* DPLL_ABE */
240static struct dpll_data dpll_abe_dd = {
241 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_ABE,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600242 .clk_bypass = &abe_dpll_bypass_clk_mux_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700243 .clk_ref = &abe_dpll_refclk_mux_ck,
244 .control_reg = OMAP4430_CM_CLKMODE_DPLL_ABE,
245 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
246 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_ABE,
247 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_ABE,
248 .mult_mask = OMAP4430_DPLL_MULT_MASK,
249 .div1_mask = OMAP4430_DPLL_DIV_MASK,
250 .enable_mask = OMAP4430_DPLL_EN_MASK,
251 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
252 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
253 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
254 .max_divider = OMAP4430_MAX_DPLL_DIV,
255 .min_divider = 1,
256};
257
258
259static struct clk dpll_abe_ck = {
260 .name = "dpll_abe_ck",
261 .parent = &abe_dpll_refclk_mux_ck,
262 .dpll_data = &dpll_abe_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700263 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700264 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700265 .recalc = &omap3_dpll_recalc,
266 .round_rate = &omap2_dpll_round_rate,
267 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700268};
269
270static struct clk dpll_abe_m2x2_ck = {
271 .name = "dpll_abe_m2x2_ck",
272 .parent = &dpll_abe_ck,
273 .ops = &clkops_null,
274 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700275};
276
277static struct clk abe_24m_fclk = {
278 .name = "abe_24m_fclk",
279 .parent = &dpll_abe_m2x2_ck,
280 .ops = &clkops_null,
281 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700282};
283
284static const struct clksel_rate div3_1to4_rates[] = {
285 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
286 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
287 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
288 { .div = 0 },
289};
290
291static const struct clksel abe_clk_div[] = {
292 { .parent = &dpll_abe_m2x2_ck, .rates = div3_1to4_rates },
293 { .parent = NULL },
294};
295
296static struct clk abe_clk = {
297 .name = "abe_clk",
298 .parent = &dpll_abe_m2x2_ck,
299 .clksel = abe_clk_div,
300 .clksel_reg = OMAP4430_CM_CLKSEL_ABE,
301 .clksel_mask = OMAP4430_CLKSEL_OPP_MASK,
302 .ops = &clkops_null,
303 .recalc = &omap2_clksel_recalc,
304 .round_rate = &omap2_clksel_round_rate,
305 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700306};
307
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600308static const struct clksel_rate div2_1to2_rates[] = {
309 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
310 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
311 { .div = 0 },
312};
313
Rajendra Nayak972c5422009-12-08 18:46:28 -0700314static const struct clksel aess_fclk_div[] = {
315 { .parent = &abe_clk, .rates = div2_1to2_rates },
316 { .parent = NULL },
317};
318
319static struct clk aess_fclk = {
320 .name = "aess_fclk",
321 .parent = &abe_clk,
322 .clksel = aess_fclk_div,
323 .clksel_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL,
324 .clksel_mask = OMAP4430_CLKSEL_AESS_FCLK_MASK,
325 .ops = &clkops_null,
326 .recalc = &omap2_clksel_recalc,
327 .round_rate = &omap2_clksel_round_rate,
328 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700329};
330
331static const struct clksel_rate div31_1to31_rates[] = {
Rajendra Nayakecbb0652010-01-19 17:30:55 -0700332 { .div = 1, .val = 1, .flags = RATE_IN_4430 },
333 { .div = 2, .val = 2, .flags = RATE_IN_4430 },
334 { .div = 3, .val = 3, .flags = RATE_IN_4430 },
335 { .div = 4, .val = 4, .flags = RATE_IN_4430 },
336 { .div = 5, .val = 5, .flags = RATE_IN_4430 },
337 { .div = 6, .val = 6, .flags = RATE_IN_4430 },
338 { .div = 7, .val = 7, .flags = RATE_IN_4430 },
339 { .div = 8, .val = 8, .flags = RATE_IN_4430 },
340 { .div = 9, .val = 9, .flags = RATE_IN_4430 },
341 { .div = 10, .val = 10, .flags = RATE_IN_4430 },
342 { .div = 11, .val = 11, .flags = RATE_IN_4430 },
343 { .div = 12, .val = 12, .flags = RATE_IN_4430 },
344 { .div = 13, .val = 13, .flags = RATE_IN_4430 },
345 { .div = 14, .val = 14, .flags = RATE_IN_4430 },
346 { .div = 15, .val = 15, .flags = RATE_IN_4430 },
347 { .div = 16, .val = 16, .flags = RATE_IN_4430 },
348 { .div = 17, .val = 17, .flags = RATE_IN_4430 },
349 { .div = 18, .val = 18, .flags = RATE_IN_4430 },
350 { .div = 19, .val = 19, .flags = RATE_IN_4430 },
351 { .div = 20, .val = 20, .flags = RATE_IN_4430 },
352 { .div = 21, .val = 21, .flags = RATE_IN_4430 },
353 { .div = 22, .val = 22, .flags = RATE_IN_4430 },
354 { .div = 23, .val = 23, .flags = RATE_IN_4430 },
355 { .div = 24, .val = 24, .flags = RATE_IN_4430 },
356 { .div = 25, .val = 25, .flags = RATE_IN_4430 },
357 { .div = 26, .val = 26, .flags = RATE_IN_4430 },
358 { .div = 27, .val = 27, .flags = RATE_IN_4430 },
359 { .div = 28, .val = 28, .flags = RATE_IN_4430 },
360 { .div = 29, .val = 29, .flags = RATE_IN_4430 },
361 { .div = 30, .val = 30, .flags = RATE_IN_4430 },
362 { .div = 31, .val = 31, .flags = RATE_IN_4430 },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700363 { .div = 0 },
364};
365
366static const struct clksel dpll_abe_m3_div[] = {
367 { .parent = &dpll_abe_ck, .rates = div31_1to31_rates },
368 { .parent = NULL },
369};
370
371static struct clk dpll_abe_m3_ck = {
372 .name = "dpll_abe_m3_ck",
373 .parent = &dpll_abe_ck,
374 .clksel = dpll_abe_m3_div,
375 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_ABE,
376 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
377 .ops = &clkops_null,
378 .recalc = &omap2_clksel_recalc,
379 .round_rate = &omap2_clksel_round_rate,
380 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700381};
382
383static const struct clksel core_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600384 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700385 { .parent = &dpll_abe_m3_ck, .rates = div_1_1_rates },
386 { .parent = NULL },
387};
388
389static struct clk core_hsd_byp_clk_mux_ck = {
390 .name = "core_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600391 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700392 .clksel = core_hsd_byp_clk_mux_sel,
393 .init = &omap2_init_clksel_parent,
394 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
395 .clksel_mask = OMAP4430_DPLL_BYP_CLKSEL_MASK,
396 .ops = &clkops_null,
397 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700398};
399
400/* DPLL_CORE */
401static struct dpll_data dpll_core_dd = {
402 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
403 .clk_bypass = &core_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600404 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700405 .control_reg = OMAP4430_CM_CLKMODE_DPLL_CORE,
406 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
407 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_CORE,
408 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_CORE,
409 .mult_mask = OMAP4430_DPLL_MULT_MASK,
410 .div1_mask = OMAP4430_DPLL_DIV_MASK,
411 .enable_mask = OMAP4430_DPLL_EN_MASK,
412 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
413 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
414 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
415 .max_divider = OMAP4430_MAX_DPLL_DIV,
416 .min_divider = 1,
417};
418
419
420static struct clk dpll_core_ck = {
421 .name = "dpll_core_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600422 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700423 .dpll_data = &dpll_core_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700424 .init = &omap2_init_dpll_parent,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700425 .ops = &clkops_null,
426 .recalc = &omap3_dpll_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700427};
428
429static const struct clksel dpll_core_m6_div[] = {
430 { .parent = &dpll_core_ck, .rates = div31_1to31_rates },
431 { .parent = NULL },
432};
433
434static struct clk dpll_core_m6_ck = {
435 .name = "dpll_core_m6_ck",
436 .parent = &dpll_core_ck,
437 .clksel = dpll_core_m6_div,
438 .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_CORE,
439 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
440 .ops = &clkops_null,
441 .recalc = &omap2_clksel_recalc,
442 .round_rate = &omap2_clksel_round_rate,
443 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700444};
445
446static const struct clksel dbgclk_mux_sel[] = {
447 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
448 { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates },
449 { .parent = NULL },
450};
451
452static struct clk dbgclk_mux_ck = {
453 .name = "dbgclk_mux_ck",
454 .parent = &sys_clkin_ck,
455 .ops = &clkops_null,
456 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700457};
458
459static struct clk dpll_core_m2_ck = {
460 .name = "dpll_core_m2_ck",
461 .parent = &dpll_core_ck,
462 .clksel = dpll_core_m6_div,
463 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_CORE,
464 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
465 .ops = &clkops_null,
466 .recalc = &omap2_clksel_recalc,
467 .round_rate = &omap2_clksel_round_rate,
468 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700469};
470
471static struct clk ddrphy_ck = {
472 .name = "ddrphy_ck",
473 .parent = &dpll_core_m2_ck,
474 .ops = &clkops_null,
475 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700476};
477
478static struct clk dpll_core_m5_ck = {
479 .name = "dpll_core_m5_ck",
480 .parent = &dpll_core_ck,
481 .clksel = dpll_core_m6_div,
482 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_CORE,
483 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
484 .ops = &clkops_null,
485 .recalc = &omap2_clksel_recalc,
486 .round_rate = &omap2_clksel_round_rate,
487 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700488};
489
490static const struct clksel div_core_div[] = {
491 { .parent = &dpll_core_m5_ck, .rates = div2_1to2_rates },
492 { .parent = NULL },
493};
494
495static struct clk div_core_ck = {
496 .name = "div_core_ck",
497 .parent = &dpll_core_m5_ck,
498 .clksel = div_core_div,
499 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
500 .clksel_mask = OMAP4430_CLKSEL_CORE_MASK,
501 .ops = &clkops_null,
502 .recalc = &omap2_clksel_recalc,
503 .round_rate = &omap2_clksel_round_rate,
504 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700505};
506
507static const struct clksel_rate div4_1to8_rates[] = {
508 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
509 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
510 { .div = 4, .val = 2, .flags = RATE_IN_4430 },
511 { .div = 8, .val = 3, .flags = RATE_IN_4430 },
512 { .div = 0 },
513};
514
515static const struct clksel div_iva_hs_clk_div[] = {
516 { .parent = &dpll_core_m5_ck, .rates = div4_1to8_rates },
517 { .parent = NULL },
518};
519
520static struct clk div_iva_hs_clk = {
521 .name = "div_iva_hs_clk",
522 .parent = &dpll_core_m5_ck,
523 .clksel = div_iva_hs_clk_div,
524 .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_IVA,
525 .clksel_mask = OMAP4430_CLKSEL_0_1_MASK,
526 .ops = &clkops_null,
527 .recalc = &omap2_clksel_recalc,
528 .round_rate = &omap2_clksel_round_rate,
529 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700530};
531
532static struct clk div_mpu_hs_clk = {
533 .name = "div_mpu_hs_clk",
534 .parent = &dpll_core_m5_ck,
535 .clksel = div_iva_hs_clk_div,
536 .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_MPU,
537 .clksel_mask = OMAP4430_CLKSEL_0_1_MASK,
538 .ops = &clkops_null,
539 .recalc = &omap2_clksel_recalc,
540 .round_rate = &omap2_clksel_round_rate,
541 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700542};
543
544static struct clk dpll_core_m4_ck = {
545 .name = "dpll_core_m4_ck",
546 .parent = &dpll_core_ck,
547 .clksel = dpll_core_m6_div,
548 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_CORE,
549 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
550 .ops = &clkops_null,
551 .recalc = &omap2_clksel_recalc,
552 .round_rate = &omap2_clksel_round_rate,
553 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700554};
555
556static struct clk dll_clk_div_ck = {
557 .name = "dll_clk_div_ck",
558 .parent = &dpll_core_m4_ck,
559 .ops = &clkops_null,
560 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700561};
562
563static struct clk dpll_abe_m2_ck = {
564 .name = "dpll_abe_m2_ck",
565 .parent = &dpll_abe_ck,
566 .clksel = dpll_abe_m3_div,
567 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE,
568 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
569 .ops = &clkops_null,
570 .recalc = &omap2_clksel_recalc,
571 .round_rate = &omap2_clksel_round_rate,
572 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700573};
574
575static struct clk dpll_core_m3_ck = {
576 .name = "dpll_core_m3_ck",
577 .parent = &dpll_core_ck,
578 .clksel = dpll_core_m6_div,
579 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_CORE,
580 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
581 .ops = &clkops_null,
582 .recalc = &omap2_clksel_recalc,
583 .round_rate = &omap2_clksel_round_rate,
584 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700585};
586
587static struct clk dpll_core_m7_ck = {
588 .name = "dpll_core_m7_ck",
589 .parent = &dpll_core_ck,
590 .clksel = dpll_core_m6_div,
591 .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_CORE,
592 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
593 .ops = &clkops_null,
594 .recalc = &omap2_clksel_recalc,
595 .round_rate = &omap2_clksel_round_rate,
596 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700597};
598
599static const struct clksel iva_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600600 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700601 { .parent = &div_iva_hs_clk, .rates = div_1_1_rates },
602 { .parent = NULL },
603};
604
605static struct clk iva_hsd_byp_clk_mux_ck = {
606 .name = "iva_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600607 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700608 .ops = &clkops_null,
609 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700610};
611
612/* DPLL_IVA */
613static struct dpll_data dpll_iva_dd = {
614 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_IVA,
615 .clk_bypass = &iva_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600616 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700617 .control_reg = OMAP4430_CM_CLKMODE_DPLL_IVA,
618 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
619 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_IVA,
620 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_IVA,
621 .mult_mask = OMAP4430_DPLL_MULT_MASK,
622 .div1_mask = OMAP4430_DPLL_DIV_MASK,
623 .enable_mask = OMAP4430_DPLL_EN_MASK,
624 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
625 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
626 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
627 .max_divider = OMAP4430_MAX_DPLL_DIV,
628 .min_divider = 1,
629};
630
631
632static struct clk dpll_iva_ck = {
633 .name = "dpll_iva_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600634 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700635 .dpll_data = &dpll_iva_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700636 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700637 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700638 .recalc = &omap3_dpll_recalc,
639 .round_rate = &omap2_dpll_round_rate,
640 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700641};
642
643static const struct clksel dpll_iva_m4_div[] = {
644 { .parent = &dpll_iva_ck, .rates = div31_1to31_rates },
645 { .parent = NULL },
646};
647
648static struct clk dpll_iva_m4_ck = {
649 .name = "dpll_iva_m4_ck",
650 .parent = &dpll_iva_ck,
651 .clksel = dpll_iva_m4_div,
652 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_IVA,
653 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
654 .ops = &clkops_null,
655 .recalc = &omap2_clksel_recalc,
656 .round_rate = &omap2_clksel_round_rate,
657 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700658};
659
660static struct clk dpll_iva_m5_ck = {
661 .name = "dpll_iva_m5_ck",
662 .parent = &dpll_iva_ck,
663 .clksel = dpll_iva_m4_div,
664 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_IVA,
665 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
666 .ops = &clkops_null,
667 .recalc = &omap2_clksel_recalc,
668 .round_rate = &omap2_clksel_round_rate,
669 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700670};
671
672/* DPLL_MPU */
673static struct dpll_data dpll_mpu_dd = {
674 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_MPU,
675 .clk_bypass = &div_mpu_hs_clk,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600676 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700677 .control_reg = OMAP4430_CM_CLKMODE_DPLL_MPU,
678 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
679 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_MPU,
680 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_MPU,
681 .mult_mask = OMAP4430_DPLL_MULT_MASK,
682 .div1_mask = OMAP4430_DPLL_DIV_MASK,
683 .enable_mask = OMAP4430_DPLL_EN_MASK,
684 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
685 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
686 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
687 .max_divider = OMAP4430_MAX_DPLL_DIV,
688 .min_divider = 1,
689};
690
691
692static struct clk dpll_mpu_ck = {
693 .name = "dpll_mpu_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600694 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700695 .dpll_data = &dpll_mpu_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700696 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700697 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700698 .recalc = &omap3_dpll_recalc,
699 .round_rate = &omap2_dpll_round_rate,
700 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700701};
702
703static const struct clksel dpll_mpu_m2_div[] = {
704 { .parent = &dpll_mpu_ck, .rates = div31_1to31_rates },
705 { .parent = NULL },
706};
707
708static struct clk dpll_mpu_m2_ck = {
709 .name = "dpll_mpu_m2_ck",
710 .parent = &dpll_mpu_ck,
711 .clksel = dpll_mpu_m2_div,
712 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_MPU,
713 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
714 .ops = &clkops_null,
715 .recalc = &omap2_clksel_recalc,
716 .round_rate = &omap2_clksel_round_rate,
717 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700718};
719
720static struct clk per_hs_clk_div_ck = {
721 .name = "per_hs_clk_div_ck",
722 .parent = &dpll_abe_m3_ck,
723 .ops = &clkops_null,
724 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700725};
726
727static const struct clksel per_hsd_byp_clk_mux_sel[] = {
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600728 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -0700729 { .parent = &per_hs_clk_div_ck, .rates = div_1_1_rates },
730 { .parent = NULL },
731};
732
733static struct clk per_hsd_byp_clk_mux_ck = {
734 .name = "per_hsd_byp_clk_mux_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600735 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700736 .clksel = per_hsd_byp_clk_mux_sel,
737 .init = &omap2_init_clksel_parent,
738 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
739 .clksel_mask = OMAP4430_DPLL_BYP_CLKSEL_MASK,
740 .ops = &clkops_null,
741 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700742};
743
744/* DPLL_PER */
745static struct dpll_data dpll_per_dd = {
746 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
747 .clk_bypass = &per_hsd_byp_clk_mux_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600748 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700749 .control_reg = OMAP4430_CM_CLKMODE_DPLL_PER,
750 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
751 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_PER,
752 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_PER,
753 .mult_mask = OMAP4430_DPLL_MULT_MASK,
754 .div1_mask = OMAP4430_DPLL_DIV_MASK,
755 .enable_mask = OMAP4430_DPLL_EN_MASK,
756 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
757 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
758 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
759 .max_divider = OMAP4430_MAX_DPLL_DIV,
760 .min_divider = 1,
761};
762
763
764static struct clk dpll_per_ck = {
765 .name = "dpll_per_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600766 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700767 .dpll_data = &dpll_per_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700768 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700769 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700770 .recalc = &omap3_dpll_recalc,
771 .round_rate = &omap2_dpll_round_rate,
772 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700773};
774
775static const struct clksel dpll_per_m2_div[] = {
776 { .parent = &dpll_per_ck, .rates = div31_1to31_rates },
777 { .parent = NULL },
778};
779
780static struct clk dpll_per_m2_ck = {
781 .name = "dpll_per_m2_ck",
782 .parent = &dpll_per_ck,
783 .clksel = dpll_per_m2_div,
784 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_PER,
785 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
786 .ops = &clkops_null,
787 .recalc = &omap2_clksel_recalc,
788 .round_rate = &omap2_clksel_round_rate,
789 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700790};
791
792static struct clk dpll_per_m2x2_ck = {
793 .name = "dpll_per_m2x2_ck",
794 .parent = &dpll_per_ck,
795 .ops = &clkops_null,
796 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700797};
798
799static struct clk dpll_per_m3_ck = {
800 .name = "dpll_per_m3_ck",
801 .parent = &dpll_per_ck,
802 .clksel = dpll_per_m2_div,
803 .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_PER,
804 .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
805 .ops = &clkops_null,
806 .recalc = &omap2_clksel_recalc,
807 .round_rate = &omap2_clksel_round_rate,
808 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700809};
810
811static struct clk dpll_per_m4_ck = {
812 .name = "dpll_per_m4_ck",
813 .parent = &dpll_per_ck,
814 .clksel = dpll_per_m2_div,
815 .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_PER,
816 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
817 .ops = &clkops_null,
818 .recalc = &omap2_clksel_recalc,
819 .round_rate = &omap2_clksel_round_rate,
820 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700821};
822
823static struct clk dpll_per_m5_ck = {
824 .name = "dpll_per_m5_ck",
825 .parent = &dpll_per_ck,
826 .clksel = dpll_per_m2_div,
827 .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_PER,
828 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
829 .ops = &clkops_null,
830 .recalc = &omap2_clksel_recalc,
831 .round_rate = &omap2_clksel_round_rate,
832 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700833};
834
835static struct clk dpll_per_m6_ck = {
836 .name = "dpll_per_m6_ck",
837 .parent = &dpll_per_ck,
838 .clksel = dpll_per_m2_div,
839 .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_PER,
840 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
841 .ops = &clkops_null,
842 .recalc = &omap2_clksel_recalc,
843 .round_rate = &omap2_clksel_round_rate,
844 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700845};
846
847static struct clk dpll_per_m7_ck = {
848 .name = "dpll_per_m7_ck",
849 .parent = &dpll_per_ck,
850 .clksel = dpll_per_m2_div,
851 .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_PER,
852 .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
853 .ops = &clkops_null,
854 .recalc = &omap2_clksel_recalc,
855 .round_rate = &omap2_clksel_round_rate,
856 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700857};
858
859/* DPLL_UNIPRO */
860static struct dpll_data dpll_unipro_dd = {
861 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_UNIPRO,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600862 .clk_bypass = &sys_clkin_ck,
863 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700864 .control_reg = OMAP4430_CM_CLKMODE_DPLL_UNIPRO,
865 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
866 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO,
867 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_UNIPRO,
868 .mult_mask = OMAP4430_DPLL_MULT_MASK,
869 .div1_mask = OMAP4430_DPLL_DIV_MASK,
870 .enable_mask = OMAP4430_DPLL_EN_MASK,
871 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
872 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
873 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
874 .max_divider = OMAP4430_MAX_DPLL_DIV,
875 .min_divider = 1,
876};
877
878
879static struct clk dpll_unipro_ck = {
880 .name = "dpll_unipro_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600881 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700882 .dpll_data = &dpll_unipro_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700883 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700884 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700885 .recalc = &omap3_dpll_recalc,
886 .round_rate = &omap2_dpll_round_rate,
887 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700888};
889
890static const struct clksel dpll_unipro_m2x2_div[] = {
891 { .parent = &dpll_unipro_ck, .rates = div31_1to31_rates },
892 { .parent = NULL },
893};
894
895static struct clk dpll_unipro_m2x2_ck = {
896 .name = "dpll_unipro_m2x2_ck",
897 .parent = &dpll_unipro_ck,
898 .clksel = dpll_unipro_m2x2_div,
899 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_UNIPRO,
900 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK,
901 .ops = &clkops_null,
902 .recalc = &omap2_clksel_recalc,
903 .round_rate = &omap2_clksel_round_rate,
904 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700905};
906
907static struct clk usb_hs_clk_div_ck = {
908 .name = "usb_hs_clk_div_ck",
909 .parent = &dpll_abe_m3_ck,
910 .ops = &clkops_null,
911 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700912};
913
914/* DPLL_USB */
915static struct dpll_data dpll_usb_dd = {
916 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_USB,
917 .clk_bypass = &usb_hs_clk_div_ck,
Benoit Cousson0e433272010-09-27 14:02:54 -0600918 .flags = DPLL_J_TYPE | DPLL_NO_DCO_SEL,
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600919 .clk_ref = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700920 .control_reg = OMAP4430_CM_CLKMODE_DPLL_USB,
921 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
922 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_USB,
923 .idlest_reg = OMAP4430_CM_IDLEST_DPLL_USB,
924 .mult_mask = OMAP4430_DPLL_MULT_MASK,
925 .div1_mask = OMAP4430_DPLL_DIV_MASK,
926 .enable_mask = OMAP4430_DPLL_EN_MASK,
927 .autoidle_mask = OMAP4430_AUTO_DPLL_MODE_MASK,
928 .idlest_mask = OMAP4430_ST_DPLL_CLK_MASK,
929 .max_multiplier = OMAP4430_MAX_DPLL_MULT,
930 .max_divider = OMAP4430_MAX_DPLL_DIV,
931 .min_divider = 1,
932};
933
934
935static struct clk dpll_usb_ck = {
936 .name = "dpll_usb_ck",
Rajendra Nayak76cf5292010-09-27 14:02:54 -0600937 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700938 .dpll_data = &dpll_usb_dd,
Rajendra Nayak911bd732009-12-08 18:47:17 -0700939 .init = &omap2_init_dpll_parent,
Paul Walmsley657ebfa2010-02-22 22:09:20 -0700940 .ops = &clkops_omap3_noncore_dpll_ops,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700941 .recalc = &omap3_dpll_recalc,
942 .round_rate = &omap2_dpll_round_rate,
943 .set_rate = &omap3_noncore_dpll_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700944};
945
946static struct clk dpll_usb_clkdcoldo_ck = {
947 .name = "dpll_usb_clkdcoldo_ck",
948 .parent = &dpll_usb_ck,
949 .ops = &clkops_null,
950 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700951};
952
953static const struct clksel dpll_usb_m2_div[] = {
954 { .parent = &dpll_usb_ck, .rates = div31_1to31_rates },
955 { .parent = NULL },
956};
957
958static struct clk dpll_usb_m2_ck = {
959 .name = "dpll_usb_m2_ck",
960 .parent = &dpll_usb_ck,
961 .clksel = dpll_usb_m2_div,
962 .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_USB,
963 .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK,
964 .ops = &clkops_null,
965 .recalc = &omap2_clksel_recalc,
966 .round_rate = &omap2_clksel_round_rate,
967 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700968};
969
970static const struct clksel ducati_clk_mux_sel[] = {
971 { .parent = &div_core_ck, .rates = div_1_0_rates },
972 { .parent = &dpll_per_m6_ck, .rates = div_1_1_rates },
973 { .parent = NULL },
974};
975
976static struct clk ducati_clk_mux_ck = {
977 .name = "ducati_clk_mux_ck",
978 .parent = &div_core_ck,
979 .clksel = ducati_clk_mux_sel,
980 .init = &omap2_init_clksel_parent,
981 .clksel_reg = OMAP4430_CM_CLKSEL_DUCATI_ISS_ROOT,
982 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
983 .ops = &clkops_null,
984 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700985};
986
987static struct clk func_12m_fclk = {
988 .name = "func_12m_fclk",
989 .parent = &dpll_per_m2x2_ck,
990 .ops = &clkops_null,
991 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700992};
993
994static struct clk func_24m_clk = {
995 .name = "func_24m_clk",
996 .parent = &dpll_per_m2_ck,
997 .ops = &clkops_null,
998 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -0700999};
1000
1001static struct clk func_24mc_fclk = {
1002 .name = "func_24mc_fclk",
1003 .parent = &dpll_per_m2x2_ck,
1004 .ops = &clkops_null,
1005 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001006};
1007
1008static const struct clksel_rate div2_4to8_rates[] = {
1009 { .div = 4, .val = 0, .flags = RATE_IN_4430 },
1010 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
1011 { .div = 0 },
1012};
1013
1014static const struct clksel func_48m_fclk_div[] = {
1015 { .parent = &dpll_per_m2x2_ck, .rates = div2_4to8_rates },
1016 { .parent = NULL },
1017};
1018
1019static struct clk func_48m_fclk = {
1020 .name = "func_48m_fclk",
1021 .parent = &dpll_per_m2x2_ck,
1022 .clksel = func_48m_fclk_div,
1023 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1024 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1025 .ops = &clkops_null,
1026 .recalc = &omap2_clksel_recalc,
1027 .round_rate = &omap2_clksel_round_rate,
1028 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001029};
1030
1031static struct clk func_48mc_fclk = {
1032 .name = "func_48mc_fclk",
1033 .parent = &dpll_per_m2x2_ck,
1034 .ops = &clkops_null,
1035 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001036};
1037
1038static const struct clksel_rate div2_2to4_rates[] = {
1039 { .div = 2, .val = 0, .flags = RATE_IN_4430 },
1040 { .div = 4, .val = 1, .flags = RATE_IN_4430 },
1041 { .div = 0 },
1042};
1043
1044static const struct clksel func_64m_fclk_div[] = {
1045 { .parent = &dpll_per_m4_ck, .rates = div2_2to4_rates },
1046 { .parent = NULL },
1047};
1048
1049static struct clk func_64m_fclk = {
1050 .name = "func_64m_fclk",
1051 .parent = &dpll_per_m4_ck,
1052 .clksel = func_64m_fclk_div,
1053 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1054 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1055 .ops = &clkops_null,
1056 .recalc = &omap2_clksel_recalc,
1057 .round_rate = &omap2_clksel_round_rate,
1058 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001059};
1060
1061static const struct clksel func_96m_fclk_div[] = {
1062 { .parent = &dpll_per_m2x2_ck, .rates = div2_2to4_rates },
1063 { .parent = NULL },
1064};
1065
1066static struct clk func_96m_fclk = {
1067 .name = "func_96m_fclk",
1068 .parent = &dpll_per_m2x2_ck,
1069 .clksel = func_96m_fclk_div,
1070 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1071 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1072 .ops = &clkops_null,
1073 .recalc = &omap2_clksel_recalc,
1074 .round_rate = &omap2_clksel_round_rate,
1075 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001076};
1077
1078static const struct clksel hsmmc6_fclk_sel[] = {
1079 { .parent = &func_64m_fclk, .rates = div_1_0_rates },
1080 { .parent = &func_96m_fclk, .rates = div_1_1_rates },
1081 { .parent = NULL },
1082};
1083
1084static struct clk hsmmc6_fclk = {
1085 .name = "hsmmc6_fclk",
1086 .parent = &func_64m_fclk,
1087 .ops = &clkops_null,
1088 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001089};
1090
1091static const struct clksel_rate div2_1to8_rates[] = {
1092 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
1093 { .div = 8, .val = 1, .flags = RATE_IN_4430 },
1094 { .div = 0 },
1095};
1096
1097static const struct clksel init_60m_fclk_div[] = {
1098 { .parent = &dpll_usb_m2_ck, .rates = div2_1to8_rates },
1099 { .parent = NULL },
1100};
1101
1102static struct clk init_60m_fclk = {
1103 .name = "init_60m_fclk",
1104 .parent = &dpll_usb_m2_ck,
1105 .clksel = init_60m_fclk_div,
1106 .clksel_reg = OMAP4430_CM_CLKSEL_USB_60MHZ,
1107 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1108 .ops = &clkops_null,
1109 .recalc = &omap2_clksel_recalc,
1110 .round_rate = &omap2_clksel_round_rate,
1111 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001112};
1113
1114static const struct clksel l3_div_div[] = {
1115 { .parent = &div_core_ck, .rates = div2_1to2_rates },
1116 { .parent = NULL },
1117};
1118
1119static struct clk l3_div_ck = {
1120 .name = "l3_div_ck",
1121 .parent = &div_core_ck,
1122 .clksel = l3_div_div,
1123 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
1124 .clksel_mask = OMAP4430_CLKSEL_L3_MASK,
1125 .ops = &clkops_null,
1126 .recalc = &omap2_clksel_recalc,
1127 .round_rate = &omap2_clksel_round_rate,
1128 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001129};
1130
1131static const struct clksel l4_div_div[] = {
1132 { .parent = &l3_div_ck, .rates = div2_1to2_rates },
1133 { .parent = NULL },
1134};
1135
1136static struct clk l4_div_ck = {
1137 .name = "l4_div_ck",
1138 .parent = &l3_div_ck,
1139 .clksel = l4_div_div,
1140 .clksel_reg = OMAP4430_CM_CLKSEL_CORE,
1141 .clksel_mask = OMAP4430_CLKSEL_L4_MASK,
1142 .ops = &clkops_null,
1143 .recalc = &omap2_clksel_recalc,
1144 .round_rate = &omap2_clksel_round_rate,
1145 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001146};
1147
1148static struct clk lp_clk_div_ck = {
1149 .name = "lp_clk_div_ck",
1150 .parent = &dpll_abe_m2x2_ck,
1151 .ops = &clkops_null,
1152 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001153};
1154
1155static const struct clksel l4_wkup_clk_mux_sel[] = {
1156 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
1157 { .parent = &lp_clk_div_ck, .rates = div_1_1_rates },
1158 { .parent = NULL },
1159};
1160
1161static struct clk l4_wkup_clk_mux_ck = {
1162 .name = "l4_wkup_clk_mux_ck",
1163 .parent = &sys_clkin_ck,
1164 .clksel = l4_wkup_clk_mux_sel,
1165 .init = &omap2_init_clksel_parent,
1166 .clksel_reg = OMAP4430_CM_L4_WKUP_CLKSEL,
1167 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1168 .ops = &clkops_null,
1169 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001170};
1171
1172static const struct clksel per_abe_nc_fclk_div[] = {
1173 { .parent = &dpll_abe_m2_ck, .rates = div2_1to2_rates },
1174 { .parent = NULL },
1175};
1176
1177static struct clk per_abe_nc_fclk = {
1178 .name = "per_abe_nc_fclk",
1179 .parent = &dpll_abe_m2_ck,
1180 .clksel = per_abe_nc_fclk_div,
1181 .clksel_reg = OMAP4430_CM_SCALE_FCLK,
1182 .clksel_mask = OMAP4430_SCALE_FCLK_MASK,
1183 .ops = &clkops_null,
1184 .recalc = &omap2_clksel_recalc,
1185 .round_rate = &omap2_clksel_round_rate,
1186 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001187};
1188
1189static const struct clksel mcasp2_fclk_sel[] = {
1190 { .parent = &func_96m_fclk, .rates = div_1_0_rates },
1191 { .parent = &per_abe_nc_fclk, .rates = div_1_1_rates },
1192 { .parent = NULL },
1193};
1194
1195static struct clk mcasp2_fclk = {
1196 .name = "mcasp2_fclk",
1197 .parent = &func_96m_fclk,
1198 .ops = &clkops_null,
1199 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001200};
1201
1202static struct clk mcasp3_fclk = {
1203 .name = "mcasp3_fclk",
1204 .parent = &func_96m_fclk,
1205 .ops = &clkops_null,
1206 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001207};
1208
1209static struct clk ocp_abe_iclk = {
1210 .name = "ocp_abe_iclk",
1211 .parent = &aess_fclk,
1212 .ops = &clkops_null,
1213 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001214};
1215
1216static struct clk per_abe_24m_fclk = {
1217 .name = "per_abe_24m_fclk",
1218 .parent = &dpll_abe_m2_ck,
1219 .ops = &clkops_null,
1220 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001221};
1222
1223static const struct clksel pmd_stm_clock_mux_sel[] = {
1224 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
1225 { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates },
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001226 { .parent = &tie_low_clock_ck, .rates = div_1_2_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001227 { .parent = NULL },
1228};
1229
1230static struct clk pmd_stm_clock_mux_ck = {
1231 .name = "pmd_stm_clock_mux_ck",
1232 .parent = &sys_clkin_ck,
1233 .ops = &clkops_null,
1234 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001235};
1236
1237static struct clk pmd_trace_clk_mux_ck = {
1238 .name = "pmd_trace_clk_mux_ck",
1239 .parent = &sys_clkin_ck,
1240 .ops = &clkops_null,
1241 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001242};
1243
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001244static const struct clksel syc_clk_div_div[] = {
1245 { .parent = &sys_clkin_ck, .rates = div2_1to2_rates },
1246 { .parent = NULL },
1247};
1248
Rajendra Nayak972c5422009-12-08 18:46:28 -07001249static struct clk syc_clk_div_ck = {
1250 .name = "syc_clk_div_ck",
1251 .parent = &sys_clkin_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001252 .clksel = syc_clk_div_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001253 .clksel_reg = OMAP4430_CM_ABE_DSS_SYS_CLKSEL,
1254 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1255 .ops = &clkops_null,
1256 .recalc = &omap2_clksel_recalc,
1257 .round_rate = &omap2_clksel_round_rate,
1258 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001259};
1260
1261/* Leaf clocks controlled by modules */
1262
Rajendra Nayak54776052010-02-22 22:09:39 -07001263static struct clk aes1_fck = {
1264 .name = "aes1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001265 .ops = &clkops_omap2_dflt,
1266 .enable_reg = OMAP4430_CM_L4SEC_AES1_CLKCTRL,
1267 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1268 .clkdm_name = "l4_secure_clkdm",
1269 .parent = &l3_div_ck,
1270 .recalc = &followparent_recalc,
1271};
1272
Rajendra Nayak54776052010-02-22 22:09:39 -07001273static struct clk aes2_fck = {
1274 .name = "aes2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001275 .ops = &clkops_omap2_dflt,
1276 .enable_reg = OMAP4430_CM_L4SEC_AES2_CLKCTRL,
1277 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1278 .clkdm_name = "l4_secure_clkdm",
1279 .parent = &l3_div_ck,
1280 .recalc = &followparent_recalc,
1281};
1282
Rajendra Nayak54776052010-02-22 22:09:39 -07001283static struct clk aess_fck = {
1284 .name = "aess_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001285 .ops = &clkops_omap2_dflt,
1286 .enable_reg = OMAP4430_CM1_ABE_AESS_CLKCTRL,
1287 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1288 .clkdm_name = "abe_clkdm",
1289 .parent = &aess_fclk,
1290 .recalc = &followparent_recalc,
1291};
1292
Benoit Cousson1c03f422010-09-27 14:02:55 -06001293static struct clk bandgap_fclk = {
1294 .name = "bandgap_fclk",
1295 .ops = &clkops_omap2_dflt,
1296 .enable_reg = OMAP4430_CM_WKUP_BANDGAP_CLKCTRL,
1297 .enable_bit = OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT,
1298 .clkdm_name = "l4_wkup_clkdm",
1299 .parent = &sys_32k_ck,
1300 .recalc = &followparent_recalc,
1301};
1302
Rajendra Nayak54776052010-02-22 22:09:39 -07001303static struct clk des3des_fck = {
1304 .name = "des3des_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001305 .ops = &clkops_omap2_dflt,
1306 .enable_reg = OMAP4430_CM_L4SEC_DES3DES_CLKCTRL,
1307 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1308 .clkdm_name = "l4_secure_clkdm",
1309 .parent = &l4_div_ck,
1310 .recalc = &followparent_recalc,
1311};
1312
1313static const struct clksel dmic_sync_mux_sel[] = {
1314 { .parent = &abe_24m_fclk, .rates = div_1_0_rates },
1315 { .parent = &syc_clk_div_ck, .rates = div_1_1_rates },
1316 { .parent = &func_24m_clk, .rates = div_1_2_rates },
1317 { .parent = NULL },
1318};
1319
1320static struct clk dmic_sync_mux_ck = {
1321 .name = "dmic_sync_mux_ck",
1322 .parent = &abe_24m_fclk,
1323 .clksel = dmic_sync_mux_sel,
1324 .init = &omap2_init_clksel_parent,
1325 .clksel_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1326 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1327 .ops = &clkops_null,
1328 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001329};
1330
1331static const struct clksel func_dmic_abe_gfclk_sel[] = {
1332 { .parent = &dmic_sync_mux_ck, .rates = div_1_0_rates },
1333 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1334 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1335 { .parent = NULL },
1336};
1337
Rajendra Nayak54776052010-02-22 22:09:39 -07001338/* Merged func_dmic_abe_gfclk into dmic */
1339static struct clk dmic_fck = {
1340 .name = "dmic_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001341 .parent = &dmic_sync_mux_ck,
1342 .clksel = func_dmic_abe_gfclk_sel,
1343 .init = &omap2_init_clksel_parent,
1344 .clksel_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1345 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1346 .ops = &clkops_omap2_dflt,
1347 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001348 .enable_reg = OMAP4430_CM1_ABE_DMIC_CLKCTRL,
1349 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1350 .clkdm_name = "abe_clkdm",
1351};
1352
Benoit Cousson0e433272010-09-27 14:02:54 -06001353static struct clk dsp_fck = {
1354 .name = "dsp_fck",
1355 .ops = &clkops_omap2_dflt,
1356 .enable_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL,
1357 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1358 .clkdm_name = "tesla_clkdm",
1359 .parent = &dpll_iva_m4_ck,
1360 .recalc = &followparent_recalc,
1361};
1362
Benoit Cousson1c03f422010-09-27 14:02:55 -06001363static struct clk dss_sys_clk = {
1364 .name = "dss_sys_clk",
1365 .ops = &clkops_omap2_dflt,
1366 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1367 .enable_bit = OMAP4430_OPTFCLKEN_SYS_CLK_SHIFT,
1368 .clkdm_name = "l3_dss_clkdm",
1369 .parent = &syc_clk_div_ck,
1370 .recalc = &followparent_recalc,
1371};
1372
1373static struct clk dss_tv_clk = {
1374 .name = "dss_tv_clk",
1375 .ops = &clkops_omap2_dflt,
1376 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1377 .enable_bit = OMAP4430_OPTFCLKEN_TV_CLK_SHIFT,
1378 .clkdm_name = "l3_dss_clkdm",
1379 .parent = &extalt_clkin_ck,
1380 .recalc = &followparent_recalc,
1381};
1382
1383static struct clk dss_dss_clk = {
1384 .name = "dss_dss_clk",
1385 .ops = &clkops_omap2_dflt,
1386 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1387 .enable_bit = OMAP4430_OPTFCLKEN_DSSCLK_SHIFT,
1388 .clkdm_name = "l3_dss_clkdm",
1389 .parent = &dpll_per_m5_ck,
1390 .recalc = &followparent_recalc,
1391};
1392
1393static struct clk dss_48mhz_clk = {
1394 .name = "dss_48mhz_clk",
1395 .ops = &clkops_omap2_dflt,
1396 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1397 .enable_bit = OMAP4430_OPTFCLKEN_48MHZ_CLK_SHIFT,
1398 .clkdm_name = "l3_dss_clkdm",
1399 .parent = &func_48mc_fclk,
1400 .recalc = &followparent_recalc,
1401};
1402
Rajendra Nayak54776052010-02-22 22:09:39 -07001403static struct clk dss_fck = {
1404 .name = "dss_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001405 .ops = &clkops_omap2_dflt,
1406 .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
1407 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1408 .clkdm_name = "l3_dss_clkdm",
1409 .parent = &l3_div_ck,
1410 .recalc = &followparent_recalc,
1411};
1412
Benoit Cousson0e433272010-09-27 14:02:54 -06001413static struct clk efuse_ctrl_cust_fck = {
1414 .name = "efuse_ctrl_cust_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001415 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06001416 .enable_reg = OMAP4430_CM_CEFUSE_CEFUSE_CLKCTRL,
1417 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1418 .clkdm_name = "l4_cefuse_clkdm",
1419 .parent = &sys_clkin_ck,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001420 .recalc = &followparent_recalc,
1421};
1422
Benoit Cousson0e433272010-09-27 14:02:54 -06001423static struct clk emif1_fck = {
1424 .name = "emif1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001425 .ops = &clkops_omap2_dflt,
1426 .enable_reg = OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL,
1427 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Santosh Shilimkar090830b2010-06-16 19:01:33 +03001428 .flags = ENABLE_ON_INIT,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001429 .clkdm_name = "l3_emif_clkdm",
1430 .parent = &ddrphy_ck,
1431 .recalc = &followparent_recalc,
1432};
1433
Benoit Cousson0e433272010-09-27 14:02:54 -06001434static struct clk emif2_fck = {
1435 .name = "emif2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001436 .ops = &clkops_omap2_dflt,
1437 .enable_reg = OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL,
1438 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Santosh Shilimkar090830b2010-06-16 19:01:33 +03001439 .flags = ENABLE_ON_INIT,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001440 .clkdm_name = "l3_emif_clkdm",
1441 .parent = &ddrphy_ck,
1442 .recalc = &followparent_recalc,
1443};
1444
1445static const struct clksel fdif_fclk_div[] = {
1446 { .parent = &dpll_per_m4_ck, .rates = div3_1to4_rates },
1447 { .parent = NULL },
1448};
1449
Rajendra Nayak54776052010-02-22 22:09:39 -07001450/* Merged fdif_fclk into fdif */
1451static struct clk fdif_fck = {
1452 .name = "fdif_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001453 .parent = &dpll_per_m4_ck,
1454 .clksel = fdif_fclk_div,
1455 .clksel_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL,
1456 .clksel_mask = OMAP4430_CLKSEL_FCLK_MASK,
1457 .ops = &clkops_omap2_dflt,
1458 .recalc = &omap2_clksel_recalc,
1459 .round_rate = &omap2_clksel_round_rate,
1460 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001461 .enable_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL,
1462 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1463 .clkdm_name = "iss_clkdm",
1464};
1465
Benoit Cousson0e433272010-09-27 14:02:54 -06001466static struct clk fpka_fck = {
1467 .name = "fpka_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001468 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06001469 .enable_reg = OMAP4430_CM_L4SEC_PKAEIP29_CLKCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001470 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
Benoit Cousson0e433272010-09-27 14:02:54 -06001471 .clkdm_name = "l4_secure_clkdm",
1472 .parent = &l4_div_ck,
1473 .recalc = &followparent_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001474};
1475
Benoit Cousson1c03f422010-09-27 14:02:55 -06001476static struct clk gpio1_dbclk = {
1477 .name = "gpio1_dbclk",
1478 .ops = &clkops_omap2_dflt,
1479 .enable_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1480 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1481 .clkdm_name = "l4_wkup_clkdm",
1482 .parent = &sys_32k_ck,
1483 .recalc = &followparent_recalc,
1484};
1485
Rajendra Nayak54776052010-02-22 22:09:39 -07001486static struct clk gpio1_ick = {
1487 .name = "gpio1_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001488 .ops = &clkops_omap2_dflt,
1489 .enable_reg = OMAP4430_CM_WKUP_GPIO1_CLKCTRL,
1490 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1491 .clkdm_name = "l4_wkup_clkdm",
1492 .parent = &l4_wkup_clk_mux_ck,
1493 .recalc = &followparent_recalc,
1494};
1495
Benoit Cousson1c03f422010-09-27 14:02:55 -06001496static struct clk gpio2_dbclk = {
1497 .name = "gpio2_dbclk",
1498 .ops = &clkops_omap2_dflt,
1499 .enable_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1500 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1501 .clkdm_name = "l4_per_clkdm",
1502 .parent = &sys_32k_ck,
1503 .recalc = &followparent_recalc,
1504};
1505
Rajendra Nayak54776052010-02-22 22:09:39 -07001506static struct clk gpio2_ick = {
1507 .name = "gpio2_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001508 .ops = &clkops_omap2_dflt,
1509 .enable_reg = OMAP4430_CM_L4PER_GPIO2_CLKCTRL,
1510 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1511 .clkdm_name = "l4_per_clkdm",
1512 .parent = &l4_div_ck,
1513 .recalc = &followparent_recalc,
1514};
1515
Benoit Cousson1c03f422010-09-27 14:02:55 -06001516static struct clk gpio3_dbclk = {
1517 .name = "gpio3_dbclk",
1518 .ops = &clkops_omap2_dflt,
1519 .enable_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1520 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1521 .clkdm_name = "l4_per_clkdm",
1522 .parent = &sys_32k_ck,
1523 .recalc = &followparent_recalc,
1524};
1525
Rajendra Nayak54776052010-02-22 22:09:39 -07001526static struct clk gpio3_ick = {
1527 .name = "gpio3_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001528 .ops = &clkops_omap2_dflt,
1529 .enable_reg = OMAP4430_CM_L4PER_GPIO3_CLKCTRL,
1530 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1531 .clkdm_name = "l4_per_clkdm",
1532 .parent = &l4_div_ck,
1533 .recalc = &followparent_recalc,
1534};
1535
Benoit Cousson1c03f422010-09-27 14:02:55 -06001536static struct clk gpio4_dbclk = {
1537 .name = "gpio4_dbclk",
1538 .ops = &clkops_omap2_dflt,
1539 .enable_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1540 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1541 .clkdm_name = "l4_per_clkdm",
1542 .parent = &sys_32k_ck,
1543 .recalc = &followparent_recalc,
1544};
1545
Rajendra Nayak54776052010-02-22 22:09:39 -07001546static struct clk gpio4_ick = {
1547 .name = "gpio4_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001548 .ops = &clkops_omap2_dflt,
1549 .enable_reg = OMAP4430_CM_L4PER_GPIO4_CLKCTRL,
1550 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1551 .clkdm_name = "l4_per_clkdm",
1552 .parent = &l4_div_ck,
1553 .recalc = &followparent_recalc,
1554};
1555
Benoit Cousson1c03f422010-09-27 14:02:55 -06001556static struct clk gpio5_dbclk = {
1557 .name = "gpio5_dbclk",
1558 .ops = &clkops_omap2_dflt,
1559 .enable_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
1560 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1561 .clkdm_name = "l4_per_clkdm",
1562 .parent = &sys_32k_ck,
1563 .recalc = &followparent_recalc,
1564};
1565
Rajendra Nayak54776052010-02-22 22:09:39 -07001566static struct clk gpio5_ick = {
1567 .name = "gpio5_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001568 .ops = &clkops_omap2_dflt,
1569 .enable_reg = OMAP4430_CM_L4PER_GPIO5_CLKCTRL,
1570 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1571 .clkdm_name = "l4_per_clkdm",
1572 .parent = &l4_div_ck,
1573 .recalc = &followparent_recalc,
1574};
1575
Benoit Cousson1c03f422010-09-27 14:02:55 -06001576static struct clk gpio6_dbclk = {
1577 .name = "gpio6_dbclk",
1578 .ops = &clkops_omap2_dflt,
1579 .enable_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
1580 .enable_bit = OMAP4430_OPTFCLKEN_DBCLK_SHIFT,
1581 .clkdm_name = "l4_per_clkdm",
1582 .parent = &sys_32k_ck,
1583 .recalc = &followparent_recalc,
1584};
1585
Rajendra Nayak54776052010-02-22 22:09:39 -07001586static struct clk gpio6_ick = {
1587 .name = "gpio6_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001588 .ops = &clkops_omap2_dflt,
1589 .enable_reg = OMAP4430_CM_L4PER_GPIO6_CLKCTRL,
1590 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1591 .clkdm_name = "l4_per_clkdm",
1592 .parent = &l4_div_ck,
1593 .recalc = &followparent_recalc,
1594};
1595
Rajendra Nayak54776052010-02-22 22:09:39 -07001596static struct clk gpmc_ick = {
1597 .name = "gpmc_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001598 .ops = &clkops_omap2_dflt,
1599 .enable_reg = OMAP4430_CM_L3_2_GPMC_CLKCTRL,
1600 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1601 .clkdm_name = "l3_2_clkdm",
1602 .parent = &l3_div_ck,
1603 .recalc = &followparent_recalc,
1604};
1605
Benoit Cousson0e433272010-09-27 14:02:54 -06001606static const struct clksel sgx_clk_mux_sel[] = {
1607 { .parent = &dpll_core_m7_ck, .rates = div_1_0_rates },
1608 { .parent = &dpll_per_m7_ck, .rates = div_1_1_rates },
Rajendra Nayak972c5422009-12-08 18:46:28 -07001609 { .parent = NULL },
1610};
1611
Benoit Cousson0e433272010-09-27 14:02:54 -06001612/* Merged sgx_clk_mux into gpu */
1613static struct clk gpu_fck = {
1614 .name = "gpu_fck",
1615 .parent = &dpll_core_m7_ck,
1616 .clksel = sgx_clk_mux_sel,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001617 .init = &omap2_init_clksel_parent,
Benoit Cousson0e433272010-09-27 14:02:54 -06001618 .clksel_reg = OMAP4430_CM_GFX_GFX_CLKCTRL,
1619 .clksel_mask = OMAP4430_CLKSEL_SGX_FCLK_MASK,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001620 .ops = &clkops_omap2_dflt,
1621 .recalc = &omap2_clksel_recalc,
Benoit Cousson0e433272010-09-27 14:02:54 -06001622 .enable_reg = OMAP4430_CM_GFX_GFX_CLKCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001623 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
Benoit Cousson0e433272010-09-27 14:02:54 -06001624 .clkdm_name = "l3_gfx_clkdm",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001625};
1626
Rajendra Nayak54776052010-02-22 22:09:39 -07001627static struct clk hdq1w_fck = {
1628 .name = "hdq1w_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001629 .ops = &clkops_omap2_dflt,
1630 .enable_reg = OMAP4430_CM_L4PER_HDQ1W_CLKCTRL,
1631 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1632 .clkdm_name = "l4_per_clkdm",
1633 .parent = &func_12m_fclk,
1634 .recalc = &followparent_recalc,
1635};
1636
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001637static const struct clksel hsi_fclk_div[] = {
1638 { .parent = &dpll_per_m2x2_ck, .rates = div3_1to4_rates },
1639 { .parent = NULL },
1640};
1641
Rajendra Nayak54776052010-02-22 22:09:39 -07001642/* Merged hsi_fclk into hsi */
Benoit Cousson0e433272010-09-27 14:02:54 -06001643static struct clk hsi_fck = {
1644 .name = "hsi_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001645 .parent = &dpll_per_m2x2_ck,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06001646 .clksel = hsi_fclk_div,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001647 .clksel_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
1648 .clksel_mask = OMAP4430_CLKSEL_24_25_MASK,
1649 .ops = &clkops_omap2_dflt,
1650 .recalc = &omap2_clksel_recalc,
1651 .round_rate = &omap2_clksel_round_rate,
1652 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001653 .enable_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
1654 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1655 .clkdm_name = "l3_init_clkdm",
1656};
1657
Rajendra Nayak54776052010-02-22 22:09:39 -07001658static struct clk i2c1_fck = {
1659 .name = "i2c1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001660 .ops = &clkops_omap2_dflt,
1661 .enable_reg = OMAP4430_CM_L4PER_I2C1_CLKCTRL,
1662 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1663 .clkdm_name = "l4_per_clkdm",
1664 .parent = &func_96m_fclk,
1665 .recalc = &followparent_recalc,
1666};
1667
Rajendra Nayak54776052010-02-22 22:09:39 -07001668static struct clk i2c2_fck = {
1669 .name = "i2c2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001670 .ops = &clkops_omap2_dflt,
1671 .enable_reg = OMAP4430_CM_L4PER_I2C2_CLKCTRL,
1672 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1673 .clkdm_name = "l4_per_clkdm",
1674 .parent = &func_96m_fclk,
1675 .recalc = &followparent_recalc,
1676};
1677
Rajendra Nayak54776052010-02-22 22:09:39 -07001678static struct clk i2c3_fck = {
1679 .name = "i2c3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001680 .ops = &clkops_omap2_dflt,
1681 .enable_reg = OMAP4430_CM_L4PER_I2C3_CLKCTRL,
1682 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1683 .clkdm_name = "l4_per_clkdm",
1684 .parent = &func_96m_fclk,
1685 .recalc = &followparent_recalc,
1686};
1687
Rajendra Nayak54776052010-02-22 22:09:39 -07001688static struct clk i2c4_fck = {
1689 .name = "i2c4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001690 .ops = &clkops_omap2_dflt,
1691 .enable_reg = OMAP4430_CM_L4PER_I2C4_CLKCTRL,
1692 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1693 .clkdm_name = "l4_per_clkdm",
1694 .parent = &func_96m_fclk,
1695 .recalc = &followparent_recalc,
1696};
1697
Benoit Cousson0e433272010-09-27 14:02:54 -06001698static struct clk ipu_fck = {
1699 .name = "ipu_fck",
1700 .ops = &clkops_omap2_dflt,
1701 .enable_reg = OMAP4430_CM_DUCATI_DUCATI_CLKCTRL,
1702 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1703 .clkdm_name = "ducati_clkdm",
1704 .parent = &ducati_clk_mux_ck,
1705 .recalc = &followparent_recalc,
1706};
1707
Benoit Cousson1c03f422010-09-27 14:02:55 -06001708static struct clk iss_ctrlclk = {
1709 .name = "iss_ctrlclk",
1710 .ops = &clkops_omap2_dflt,
1711 .enable_reg = OMAP4430_CM_CAM_ISS_CLKCTRL,
1712 .enable_bit = OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT,
1713 .clkdm_name = "iss_clkdm",
1714 .parent = &func_96m_fclk,
1715 .recalc = &followparent_recalc,
1716};
1717
Rajendra Nayak54776052010-02-22 22:09:39 -07001718static struct clk iss_fck = {
1719 .name = "iss_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001720 .ops = &clkops_omap2_dflt,
1721 .enable_reg = OMAP4430_CM_CAM_ISS_CLKCTRL,
1722 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1723 .clkdm_name = "iss_clkdm",
1724 .parent = &ducati_clk_mux_ck,
1725 .recalc = &followparent_recalc,
1726};
1727
Benoit Cousson0e433272010-09-27 14:02:54 -06001728static struct clk iva_fck = {
1729 .name = "iva_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001730 .ops = &clkops_omap2_dflt,
1731 .enable_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL,
1732 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1733 .clkdm_name = "ivahd_clkdm",
1734 .parent = &dpll_iva_m5_ck,
1735 .recalc = &followparent_recalc,
1736};
1737
Benoit Cousson0e433272010-09-27 14:02:54 -06001738static struct clk kbd_fck = {
1739 .name = "kbd_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001740 .ops = &clkops_omap2_dflt,
1741 .enable_reg = OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL,
1742 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1743 .clkdm_name = "l4_wkup_clkdm",
1744 .parent = &sys_32k_ck,
1745 .recalc = &followparent_recalc,
1746};
1747
Benoit Cousson0e433272010-09-27 14:02:54 -06001748static struct clk l3_instr_ick = {
1749 .name = "l3_instr_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001750 .ops = &clkops_omap2_dflt,
1751 .enable_reg = OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL,
1752 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1753 .clkdm_name = "l3_instr_clkdm",
1754 .parent = &l3_div_ck,
1755 .recalc = &followparent_recalc,
1756};
1757
Benoit Cousson0e433272010-09-27 14:02:54 -06001758static struct clk l3_main_3_ick = {
1759 .name = "l3_main_3_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001760 .ops = &clkops_omap2_dflt,
1761 .enable_reg = OMAP4430_CM_L3INSTR_L3_3_CLKCTRL,
1762 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
1763 .clkdm_name = "l3_instr_clkdm",
1764 .parent = &l3_div_ck,
1765 .recalc = &followparent_recalc,
1766};
1767
1768static struct clk mcasp_sync_mux_ck = {
1769 .name = "mcasp_sync_mux_ck",
1770 .parent = &abe_24m_fclk,
1771 .clksel = dmic_sync_mux_sel,
1772 .init = &omap2_init_clksel_parent,
1773 .clksel_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1774 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1775 .ops = &clkops_null,
1776 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001777};
1778
1779static const struct clksel func_mcasp_abe_gfclk_sel[] = {
1780 { .parent = &mcasp_sync_mux_ck, .rates = div_1_0_rates },
1781 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1782 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1783 { .parent = NULL },
1784};
1785
Rajendra Nayak54776052010-02-22 22:09:39 -07001786/* Merged func_mcasp_abe_gfclk into mcasp */
1787static struct clk mcasp_fck = {
1788 .name = "mcasp_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001789 .parent = &mcasp_sync_mux_ck,
1790 .clksel = func_mcasp_abe_gfclk_sel,
1791 .init = &omap2_init_clksel_parent,
1792 .clksel_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1793 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1794 .ops = &clkops_omap2_dflt,
1795 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001796 .enable_reg = OMAP4430_CM1_ABE_MCASP_CLKCTRL,
1797 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1798 .clkdm_name = "abe_clkdm",
1799};
1800
1801static struct clk mcbsp1_sync_mux_ck = {
1802 .name = "mcbsp1_sync_mux_ck",
1803 .parent = &abe_24m_fclk,
1804 .clksel = dmic_sync_mux_sel,
1805 .init = &omap2_init_clksel_parent,
1806 .clksel_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1807 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1808 .ops = &clkops_null,
1809 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001810};
1811
1812static const struct clksel func_mcbsp1_gfclk_sel[] = {
1813 { .parent = &mcbsp1_sync_mux_ck, .rates = div_1_0_rates },
1814 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1815 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1816 { .parent = NULL },
1817};
1818
Rajendra Nayak54776052010-02-22 22:09:39 -07001819/* Merged func_mcbsp1_gfclk into mcbsp1 */
1820static struct clk mcbsp1_fck = {
1821 .name = "mcbsp1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001822 .parent = &mcbsp1_sync_mux_ck,
1823 .clksel = func_mcbsp1_gfclk_sel,
1824 .init = &omap2_init_clksel_parent,
1825 .clksel_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1826 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1827 .ops = &clkops_omap2_dflt,
1828 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001829 .enable_reg = OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
1830 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1831 .clkdm_name = "abe_clkdm",
1832};
1833
1834static struct clk mcbsp2_sync_mux_ck = {
1835 .name = "mcbsp2_sync_mux_ck",
1836 .parent = &abe_24m_fclk,
1837 .clksel = dmic_sync_mux_sel,
1838 .init = &omap2_init_clksel_parent,
1839 .clksel_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1840 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1841 .ops = &clkops_null,
1842 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001843};
1844
1845static const struct clksel func_mcbsp2_gfclk_sel[] = {
1846 { .parent = &mcbsp2_sync_mux_ck, .rates = div_1_0_rates },
1847 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1848 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1849 { .parent = NULL },
1850};
1851
Rajendra Nayak54776052010-02-22 22:09:39 -07001852/* Merged func_mcbsp2_gfclk into mcbsp2 */
1853static struct clk mcbsp2_fck = {
1854 .name = "mcbsp2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001855 .parent = &mcbsp2_sync_mux_ck,
1856 .clksel = func_mcbsp2_gfclk_sel,
1857 .init = &omap2_init_clksel_parent,
1858 .clksel_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1859 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1860 .ops = &clkops_omap2_dflt,
1861 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001862 .enable_reg = OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
1863 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1864 .clkdm_name = "abe_clkdm",
1865};
1866
1867static struct clk mcbsp3_sync_mux_ck = {
1868 .name = "mcbsp3_sync_mux_ck",
1869 .parent = &abe_24m_fclk,
1870 .clksel = dmic_sync_mux_sel,
1871 .init = &omap2_init_clksel_parent,
1872 .clksel_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1873 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1874 .ops = &clkops_null,
1875 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001876};
1877
1878static const struct clksel func_mcbsp3_gfclk_sel[] = {
1879 { .parent = &mcbsp3_sync_mux_ck, .rates = div_1_0_rates },
1880 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1881 { .parent = &slimbus_clk, .rates = div_1_2_rates },
1882 { .parent = NULL },
1883};
1884
Rajendra Nayak54776052010-02-22 22:09:39 -07001885/* Merged func_mcbsp3_gfclk into mcbsp3 */
1886static struct clk mcbsp3_fck = {
1887 .name = "mcbsp3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001888 .parent = &mcbsp3_sync_mux_ck,
1889 .clksel = func_mcbsp3_gfclk_sel,
1890 .init = &omap2_init_clksel_parent,
1891 .clksel_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1892 .clksel_mask = OMAP4430_CLKSEL_SOURCE_MASK,
1893 .ops = &clkops_omap2_dflt,
1894 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001895 .enable_reg = OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
1896 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1897 .clkdm_name = "abe_clkdm",
1898};
1899
1900static struct clk mcbsp4_sync_mux_ck = {
1901 .name = "mcbsp4_sync_mux_ck",
1902 .parent = &func_96m_fclk,
1903 .clksel = mcasp2_fclk_sel,
1904 .init = &omap2_init_clksel_parent,
1905 .clksel_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1906 .clksel_mask = OMAP4430_CLKSEL_INTERNAL_SOURCE_MASK,
1907 .ops = &clkops_null,
1908 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001909};
1910
1911static const struct clksel per_mcbsp4_gfclk_sel[] = {
1912 { .parent = &mcbsp4_sync_mux_ck, .rates = div_1_0_rates },
1913 { .parent = &pad_clks_ck, .rates = div_1_1_rates },
1914 { .parent = NULL },
1915};
1916
Rajendra Nayak54776052010-02-22 22:09:39 -07001917/* Merged per_mcbsp4_gfclk into mcbsp4 */
1918static struct clk mcbsp4_fck = {
1919 .name = "mcbsp4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001920 .parent = &mcbsp4_sync_mux_ck,
1921 .clksel = per_mcbsp4_gfclk_sel,
1922 .init = &omap2_init_clksel_parent,
1923 .clksel_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1924 .clksel_mask = OMAP4430_CLKSEL_SOURCE_24_24_MASK,
1925 .ops = &clkops_omap2_dflt,
1926 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001927 .enable_reg = OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
1928 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1929 .clkdm_name = "l4_per_clkdm",
1930};
1931
Benoit Cousson0e433272010-09-27 14:02:54 -06001932static struct clk mcpdm_fck = {
1933 .name = "mcpdm_fck",
1934 .ops = &clkops_omap2_dflt,
1935 .enable_reg = OMAP4430_CM1_ABE_PDM_CLKCTRL,
1936 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1937 .clkdm_name = "abe_clkdm",
1938 .parent = &pad_clks_ck,
1939 .recalc = &followparent_recalc,
1940};
1941
Rajendra Nayak54776052010-02-22 22:09:39 -07001942static struct clk mcspi1_fck = {
1943 .name = "mcspi1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001944 .ops = &clkops_omap2_dflt,
1945 .enable_reg = OMAP4430_CM_L4PER_MCSPI1_CLKCTRL,
1946 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1947 .clkdm_name = "l4_per_clkdm",
1948 .parent = &func_48m_fclk,
1949 .recalc = &followparent_recalc,
1950};
1951
Rajendra Nayak54776052010-02-22 22:09:39 -07001952static struct clk mcspi2_fck = {
1953 .name = "mcspi2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001954 .ops = &clkops_omap2_dflt,
1955 .enable_reg = OMAP4430_CM_L4PER_MCSPI2_CLKCTRL,
1956 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1957 .clkdm_name = "l4_per_clkdm",
1958 .parent = &func_48m_fclk,
1959 .recalc = &followparent_recalc,
1960};
1961
Rajendra Nayak54776052010-02-22 22:09:39 -07001962static struct clk mcspi3_fck = {
1963 .name = "mcspi3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001964 .ops = &clkops_omap2_dflt,
1965 .enable_reg = OMAP4430_CM_L4PER_MCSPI3_CLKCTRL,
1966 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1967 .clkdm_name = "l4_per_clkdm",
1968 .parent = &func_48m_fclk,
1969 .recalc = &followparent_recalc,
1970};
1971
Rajendra Nayak54776052010-02-22 22:09:39 -07001972static struct clk mcspi4_fck = {
1973 .name = "mcspi4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001974 .ops = &clkops_omap2_dflt,
1975 .enable_reg = OMAP4430_CM_L4PER_MCSPI4_CLKCTRL,
1976 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1977 .clkdm_name = "l4_per_clkdm",
1978 .parent = &func_48m_fclk,
1979 .recalc = &followparent_recalc,
1980};
1981
Rajendra Nayak54776052010-02-22 22:09:39 -07001982/* Merged hsmmc1_fclk into mmc1 */
1983static struct clk mmc1_fck = {
1984 .name = "mmc1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07001985 .parent = &func_64m_fclk,
1986 .clksel = hsmmc6_fclk_sel,
1987 .init = &omap2_init_clksel_parent,
1988 .clksel_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
1989 .clksel_mask = OMAP4430_CLKSEL_MASK,
1990 .ops = &clkops_omap2_dflt,
1991 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07001992 .enable_reg = OMAP4430_CM_L3INIT_MMC1_CLKCTRL,
1993 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
1994 .clkdm_name = "l3_init_clkdm",
1995};
1996
Rajendra Nayak54776052010-02-22 22:09:39 -07001997/* Merged hsmmc2_fclk into mmc2 */
1998static struct clk mmc2_fck = {
1999 .name = "mmc2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002000 .parent = &func_64m_fclk,
2001 .clksel = hsmmc6_fclk_sel,
2002 .init = &omap2_init_clksel_parent,
2003 .clksel_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL,
2004 .clksel_mask = OMAP4430_CLKSEL_MASK,
2005 .ops = &clkops_omap2_dflt,
2006 .recalc = &omap2_clksel_recalc,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002007 .enable_reg = OMAP4430_CM_L3INIT_MMC2_CLKCTRL,
2008 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2009 .clkdm_name = "l3_init_clkdm",
2010};
2011
Rajendra Nayak54776052010-02-22 22:09:39 -07002012static struct clk mmc3_fck = {
2013 .name = "mmc3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002014 .ops = &clkops_omap2_dflt,
2015 .enable_reg = OMAP4430_CM_L4PER_MMCSD3_CLKCTRL,
2016 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2017 .clkdm_name = "l4_per_clkdm",
2018 .parent = &func_48m_fclk,
2019 .recalc = &followparent_recalc,
2020};
2021
Rajendra Nayak54776052010-02-22 22:09:39 -07002022static struct clk mmc4_fck = {
2023 .name = "mmc4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002024 .ops = &clkops_omap2_dflt,
2025 .enable_reg = OMAP4430_CM_L4PER_MMCSD4_CLKCTRL,
2026 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2027 .clkdm_name = "l4_per_clkdm",
2028 .parent = &func_48m_fclk,
2029 .recalc = &followparent_recalc,
2030};
2031
Rajendra Nayak54776052010-02-22 22:09:39 -07002032static struct clk mmc5_fck = {
2033 .name = "mmc5_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002034 .ops = &clkops_omap2_dflt,
2035 .enable_reg = OMAP4430_CM_L4PER_MMCSD5_CLKCTRL,
2036 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2037 .clkdm_name = "l4_per_clkdm",
2038 .parent = &func_48m_fclk,
2039 .recalc = &followparent_recalc,
2040};
2041
Benoit Cousson1c03f422010-09-27 14:02:55 -06002042static struct clk ocp2scp_usb_phy_phy_48m = {
2043 .name = "ocp2scp_usb_phy_phy_48m",
2044 .ops = &clkops_omap2_dflt,
2045 .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
2046 .enable_bit = OMAP4430_OPTFCLKEN_PHY_48M_SHIFT,
2047 .clkdm_name = "l3_init_clkdm",
2048 .parent = &func_48m_fclk,
2049 .recalc = &followparent_recalc,
2050};
2051
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002052static struct clk ocp2scp_usb_phy_ick = {
2053 .name = "ocp2scp_usb_phy_ick",
2054 .ops = &clkops_omap2_dflt,
2055 .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
2056 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2057 .clkdm_name = "l3_init_clkdm",
2058 .parent = &l4_div_ck,
2059 .recalc = &followparent_recalc,
2060};
2061
Benoit Cousson0e433272010-09-27 14:02:54 -06002062static struct clk ocp_wp_noc_ick = {
2063 .name = "ocp_wp_noc_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002064 .ops = &clkops_omap2_dflt,
2065 .enable_reg = OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL,
2066 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2067 .clkdm_name = "l3_instr_clkdm",
2068 .parent = &l3_div_ck,
2069 .recalc = &followparent_recalc,
2070};
2071
Rajendra Nayak54776052010-02-22 22:09:39 -07002072static struct clk rng_ick = {
2073 .name = "rng_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002074 .ops = &clkops_omap2_dflt,
2075 .enable_reg = OMAP4430_CM_L4SEC_RNG_CLKCTRL,
2076 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2077 .clkdm_name = "l4_secure_clkdm",
2078 .parent = &l4_div_ck,
2079 .recalc = &followparent_recalc,
2080};
2081
Benoit Cousson0e433272010-09-27 14:02:54 -06002082static struct clk sha2md5_fck = {
2083 .name = "sha2md5_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002084 .ops = &clkops_omap2_dflt,
2085 .enable_reg = OMAP4430_CM_L4SEC_SHA2MD51_CLKCTRL,
2086 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2087 .clkdm_name = "l4_secure_clkdm",
2088 .parent = &l3_div_ck,
2089 .recalc = &followparent_recalc,
2090};
2091
Benoit Cousson0e433272010-09-27 14:02:54 -06002092static struct clk sl2if_ick = {
2093 .name = "sl2if_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002094 .ops = &clkops_omap2_dflt,
2095 .enable_reg = OMAP4430_CM_IVAHD_SL2_CLKCTRL,
2096 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2097 .clkdm_name = "ivahd_clkdm",
2098 .parent = &dpll_iva_m5_ck,
2099 .recalc = &followparent_recalc,
2100};
2101
Benoit Cousson1c03f422010-09-27 14:02:55 -06002102static struct clk slimbus1_fclk_1 = {
2103 .name = "slimbus1_fclk_1",
2104 .ops = &clkops_omap2_dflt,
2105 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2106 .enable_bit = OMAP4430_OPTFCLKEN_FCLK1_SHIFT,
2107 .clkdm_name = "abe_clkdm",
2108 .parent = &func_24m_clk,
2109 .recalc = &followparent_recalc,
2110};
2111
2112static struct clk slimbus1_fclk_0 = {
2113 .name = "slimbus1_fclk_0",
2114 .ops = &clkops_omap2_dflt,
2115 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2116 .enable_bit = OMAP4430_OPTFCLKEN_FCLK0_SHIFT,
2117 .clkdm_name = "abe_clkdm",
2118 .parent = &abe_24m_fclk,
2119 .recalc = &followparent_recalc,
2120};
2121
2122static struct clk slimbus1_fclk_2 = {
2123 .name = "slimbus1_fclk_2",
2124 .ops = &clkops_omap2_dflt,
2125 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2126 .enable_bit = OMAP4430_OPTFCLKEN_FCLK2_SHIFT,
2127 .clkdm_name = "abe_clkdm",
2128 .parent = &pad_clks_ck,
2129 .recalc = &followparent_recalc,
2130};
2131
2132static struct clk slimbus1_slimbus_clk = {
2133 .name = "slimbus1_slimbus_clk",
2134 .ops = &clkops_omap2_dflt,
2135 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2136 .enable_bit = OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT,
2137 .clkdm_name = "abe_clkdm",
2138 .parent = &slimbus_clk,
2139 .recalc = &followparent_recalc,
2140};
2141
Rajendra Nayak54776052010-02-22 22:09:39 -07002142static struct clk slimbus1_fck = {
2143 .name = "slimbus1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002144 .ops = &clkops_omap2_dflt,
2145 .enable_reg = OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL,
2146 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2147 .clkdm_name = "abe_clkdm",
2148 .parent = &ocp_abe_iclk,
2149 .recalc = &followparent_recalc,
2150};
2151
Benoit Cousson1c03f422010-09-27 14:02:55 -06002152static struct clk slimbus2_fclk_1 = {
2153 .name = "slimbus2_fclk_1",
2154 .ops = &clkops_omap2_dflt,
2155 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2156 .enable_bit = OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT,
2157 .clkdm_name = "l4_per_clkdm",
2158 .parent = &per_abe_24m_fclk,
2159 .recalc = &followparent_recalc,
2160};
2161
2162static struct clk slimbus2_fclk_0 = {
2163 .name = "slimbus2_fclk_0",
2164 .ops = &clkops_omap2_dflt,
2165 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2166 .enable_bit = OMAP4430_OPTFCLKEN_PER24MC_GFCLK_SHIFT,
2167 .clkdm_name = "l4_per_clkdm",
2168 .parent = &func_24mc_fclk,
2169 .recalc = &followparent_recalc,
2170};
2171
2172static struct clk slimbus2_slimbus_clk = {
2173 .name = "slimbus2_slimbus_clk",
2174 .ops = &clkops_omap2_dflt,
2175 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2176 .enable_bit = OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT,
2177 .clkdm_name = "l4_per_clkdm",
2178 .parent = &pad_slimbus_core_clks_ck,
2179 .recalc = &followparent_recalc,
2180};
2181
Rajendra Nayak54776052010-02-22 22:09:39 -07002182static struct clk slimbus2_fck = {
2183 .name = "slimbus2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002184 .ops = &clkops_omap2_dflt,
2185 .enable_reg = OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL,
2186 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2187 .clkdm_name = "l4_per_clkdm",
2188 .parent = &l4_div_ck,
2189 .recalc = &followparent_recalc,
2190};
2191
Benoit Cousson0e433272010-09-27 14:02:54 -06002192static struct clk smartreflex_core_fck = {
2193 .name = "smartreflex_core_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002194 .ops = &clkops_omap2_dflt,
2195 .enable_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
2196 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2197 .clkdm_name = "l4_ao_clkdm",
2198 .parent = &l4_wkup_clk_mux_ck,
2199 .recalc = &followparent_recalc,
2200};
2201
Benoit Cousson0e433272010-09-27 14:02:54 -06002202static struct clk smartreflex_iva_fck = {
2203 .name = "smartreflex_iva_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002204 .ops = &clkops_omap2_dflt,
2205 .enable_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
2206 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2207 .clkdm_name = "l4_ao_clkdm",
2208 .parent = &l4_wkup_clk_mux_ck,
2209 .recalc = &followparent_recalc,
2210};
2211
Benoit Cousson0e433272010-09-27 14:02:54 -06002212static struct clk smartreflex_mpu_fck = {
2213 .name = "smartreflex_mpu_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002214 .ops = &clkops_omap2_dflt,
2215 .enable_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
2216 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2217 .clkdm_name = "l4_ao_clkdm",
2218 .parent = &l4_wkup_clk_mux_ck,
2219 .recalc = &followparent_recalc,
2220};
2221
Benoit Cousson0e433272010-09-27 14:02:54 -06002222/* Merged dmt1_clk_mux into timer1 */
2223static struct clk timer1_fck = {
2224 .name = "timer1_fck",
2225 .parent = &sys_clkin_ck,
2226 .clksel = abe_dpll_bypass_clk_mux_sel,
2227 .init = &omap2_init_clksel_parent,
2228 .clksel_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2229 .clksel_mask = OMAP4430_CLKSEL_MASK,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002230 .ops = &clkops_omap2_dflt,
Benoit Cousson0e433272010-09-27 14:02:54 -06002231 .recalc = &omap2_clksel_recalc,
2232 .enable_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
2233 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2234 .clkdm_name = "l4_wkup_clkdm",
2235};
2236
2237/* Merged cm2_dm10_mux into timer10 */
2238static struct clk timer10_fck = {
2239 .name = "timer10_fck",
2240 .parent = &sys_clkin_ck,
2241 .clksel = abe_dpll_bypass_clk_mux_sel,
2242 .init = &omap2_init_clksel_parent,
2243 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
2244 .clksel_mask = OMAP4430_CLKSEL_MASK,
2245 .ops = &clkops_omap2_dflt,
2246 .recalc = &omap2_clksel_recalc,
2247 .enable_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
2248 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2249 .clkdm_name = "l4_per_clkdm",
2250};
2251
2252/* Merged cm2_dm11_mux into timer11 */
2253static struct clk timer11_fck = {
2254 .name = "timer11_fck",
2255 .parent = &sys_clkin_ck,
2256 .clksel = abe_dpll_bypass_clk_mux_sel,
2257 .init = &omap2_init_clksel_parent,
2258 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
2259 .clksel_mask = OMAP4430_CLKSEL_MASK,
2260 .ops = &clkops_omap2_dflt,
2261 .recalc = &omap2_clksel_recalc,
2262 .enable_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
2263 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2264 .clkdm_name = "l4_per_clkdm",
2265};
2266
2267/* Merged cm2_dm2_mux into timer2 */
2268static struct clk timer2_fck = {
2269 .name = "timer2_fck",
2270 .parent = &sys_clkin_ck,
2271 .clksel = abe_dpll_bypass_clk_mux_sel,
2272 .init = &omap2_init_clksel_parent,
2273 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2274 .clksel_mask = OMAP4430_CLKSEL_MASK,
2275 .ops = &clkops_omap2_dflt,
2276 .recalc = &omap2_clksel_recalc,
2277 .enable_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
2278 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2279 .clkdm_name = "l4_per_clkdm",
2280};
2281
2282/* Merged cm2_dm3_mux into timer3 */
2283static struct clk timer3_fck = {
2284 .name = "timer3_fck",
2285 .parent = &sys_clkin_ck,
2286 .clksel = abe_dpll_bypass_clk_mux_sel,
2287 .init = &omap2_init_clksel_parent,
2288 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2289 .clksel_mask = OMAP4430_CLKSEL_MASK,
2290 .ops = &clkops_omap2_dflt,
2291 .recalc = &omap2_clksel_recalc,
2292 .enable_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
2293 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2294 .clkdm_name = "l4_per_clkdm",
2295};
2296
2297/* Merged cm2_dm4_mux into timer4 */
2298static struct clk timer4_fck = {
2299 .name = "timer4_fck",
2300 .parent = &sys_clkin_ck,
2301 .clksel = abe_dpll_bypass_clk_mux_sel,
2302 .init = &omap2_init_clksel_parent,
2303 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2304 .clksel_mask = OMAP4430_CLKSEL_MASK,
2305 .ops = &clkops_omap2_dflt,
2306 .recalc = &omap2_clksel_recalc,
2307 .enable_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
2308 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2309 .clkdm_name = "l4_per_clkdm",
2310};
2311
2312static const struct clksel timer5_sync_mux_sel[] = {
2313 { .parent = &syc_clk_div_ck, .rates = div_1_0_rates },
2314 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
2315 { .parent = NULL },
2316};
2317
2318/* Merged timer5_sync_mux into timer5 */
2319static struct clk timer5_fck = {
2320 .name = "timer5_fck",
2321 .parent = &syc_clk_div_ck,
2322 .clksel = timer5_sync_mux_sel,
2323 .init = &omap2_init_clksel_parent,
2324 .clksel_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2325 .clksel_mask = OMAP4430_CLKSEL_MASK,
2326 .ops = &clkops_omap2_dflt,
2327 .recalc = &omap2_clksel_recalc,
2328 .enable_reg = OMAP4430_CM1_ABE_TIMER5_CLKCTRL,
2329 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2330 .clkdm_name = "abe_clkdm",
2331};
2332
2333/* Merged timer6_sync_mux into timer6 */
2334static struct clk timer6_fck = {
2335 .name = "timer6_fck",
2336 .parent = &syc_clk_div_ck,
2337 .clksel = timer5_sync_mux_sel,
2338 .init = &omap2_init_clksel_parent,
2339 .clksel_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
2340 .clksel_mask = OMAP4430_CLKSEL_MASK,
2341 .ops = &clkops_omap2_dflt,
2342 .recalc = &omap2_clksel_recalc,
2343 .enable_reg = OMAP4430_CM1_ABE_TIMER6_CLKCTRL,
2344 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2345 .clkdm_name = "abe_clkdm",
2346};
2347
2348/* Merged timer7_sync_mux into timer7 */
2349static struct clk timer7_fck = {
2350 .name = "timer7_fck",
2351 .parent = &syc_clk_div_ck,
2352 .clksel = timer5_sync_mux_sel,
2353 .init = &omap2_init_clksel_parent,
2354 .clksel_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
2355 .clksel_mask = OMAP4430_CLKSEL_MASK,
2356 .ops = &clkops_omap2_dflt,
2357 .recalc = &omap2_clksel_recalc,
2358 .enable_reg = OMAP4430_CM1_ABE_TIMER7_CLKCTRL,
2359 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2360 .clkdm_name = "abe_clkdm",
2361};
2362
2363/* Merged timer8_sync_mux into timer8 */
2364static struct clk timer8_fck = {
2365 .name = "timer8_fck",
2366 .parent = &syc_clk_div_ck,
2367 .clksel = timer5_sync_mux_sel,
2368 .init = &omap2_init_clksel_parent,
2369 .clksel_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
2370 .clksel_mask = OMAP4430_CLKSEL_MASK,
2371 .ops = &clkops_omap2_dflt,
2372 .recalc = &omap2_clksel_recalc,
2373 .enable_reg = OMAP4430_CM1_ABE_TIMER8_CLKCTRL,
2374 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2375 .clkdm_name = "abe_clkdm",
2376};
2377
2378/* Merged cm2_dm9_mux into timer9 */
2379static struct clk timer9_fck = {
2380 .name = "timer9_fck",
2381 .parent = &sys_clkin_ck,
2382 .clksel = abe_dpll_bypass_clk_mux_sel,
2383 .init = &omap2_init_clksel_parent,
2384 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
2385 .clksel_mask = OMAP4430_CLKSEL_MASK,
2386 .ops = &clkops_omap2_dflt,
2387 .recalc = &omap2_clksel_recalc,
2388 .enable_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
2389 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2390 .clkdm_name = "l4_per_clkdm",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002391};
2392
Rajendra Nayak54776052010-02-22 22:09:39 -07002393static struct clk uart1_fck = {
2394 .name = "uart1_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002395 .ops = &clkops_omap2_dflt,
2396 .enable_reg = OMAP4430_CM_L4PER_UART1_CLKCTRL,
2397 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2398 .clkdm_name = "l4_per_clkdm",
2399 .parent = &func_48m_fclk,
2400 .recalc = &followparent_recalc,
2401};
2402
Rajendra Nayak54776052010-02-22 22:09:39 -07002403static struct clk uart2_fck = {
2404 .name = "uart2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002405 .ops = &clkops_omap2_dflt,
2406 .enable_reg = OMAP4430_CM_L4PER_UART2_CLKCTRL,
2407 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2408 .clkdm_name = "l4_per_clkdm",
2409 .parent = &func_48m_fclk,
2410 .recalc = &followparent_recalc,
2411};
2412
Rajendra Nayak54776052010-02-22 22:09:39 -07002413static struct clk uart3_fck = {
2414 .name = "uart3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002415 .ops = &clkops_omap2_dflt,
2416 .enable_reg = OMAP4430_CM_L4PER_UART3_CLKCTRL,
2417 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2418 .clkdm_name = "l4_per_clkdm",
2419 .parent = &func_48m_fclk,
2420 .recalc = &followparent_recalc,
2421};
2422
Rajendra Nayak54776052010-02-22 22:09:39 -07002423static struct clk uart4_fck = {
2424 .name = "uart4_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002425 .ops = &clkops_omap2_dflt,
2426 .enable_reg = OMAP4430_CM_L4PER_UART4_CLKCTRL,
2427 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2428 .clkdm_name = "l4_per_clkdm",
2429 .parent = &func_48m_fclk,
2430 .recalc = &followparent_recalc,
2431};
2432
Rajendra Nayak54776052010-02-22 22:09:39 -07002433static struct clk usb_host_fs_fck = {
2434 .name = "usb_host_fs_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002435 .ops = &clkops_omap2_dflt,
2436 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_FS_CLKCTRL,
2437 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2438 .clkdm_name = "l3_init_clkdm",
2439 .parent = &func_48mc_fclk,
2440 .recalc = &followparent_recalc,
2441};
2442
Benoit Cousson1c03f422010-09-27 14:02:55 -06002443static struct clk usb_host_hs_utmi_p3_clk = {
2444 .name = "usb_host_hs_utmi_p3_clk",
2445 .ops = &clkops_omap2_dflt,
2446 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2447 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT,
2448 .clkdm_name = "l3_init_clkdm",
2449 .parent = &init_60m_fclk,
2450 .recalc = &followparent_recalc,
2451};
2452
2453static struct clk usb_host_hs_hsic60m_p1_clk = {
2454 .name = "usb_host_hs_hsic60m_p1_clk",
2455 .ops = &clkops_omap2_dflt,
2456 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2457 .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT,
2458 .clkdm_name = "l3_init_clkdm",
2459 .parent = &init_60m_fclk,
2460 .recalc = &followparent_recalc,
2461};
2462
2463static struct clk usb_host_hs_hsic60m_p2_clk = {
2464 .name = "usb_host_hs_hsic60m_p2_clk",
2465 .ops = &clkops_omap2_dflt,
2466 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2467 .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT,
2468 .clkdm_name = "l3_init_clkdm",
2469 .parent = &init_60m_fclk,
2470 .recalc = &followparent_recalc,
2471};
2472
2473static const struct clksel utmi_p1_gfclk_sel[] = {
2474 { .parent = &init_60m_fclk, .rates = div_1_0_rates },
2475 { .parent = &xclk60mhsp1_ck, .rates = div_1_1_rates },
2476 { .parent = NULL },
2477};
2478
2479static struct clk utmi_p1_gfclk = {
2480 .name = "utmi_p1_gfclk",
2481 .parent = &init_60m_fclk,
2482 .clksel = utmi_p1_gfclk_sel,
2483 .init = &omap2_init_clksel_parent,
2484 .clksel_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2485 .clksel_mask = OMAP4430_CLKSEL_UTMI_P1_MASK,
2486 .ops = &clkops_null,
2487 .recalc = &omap2_clksel_recalc,
2488};
2489
2490static struct clk usb_host_hs_utmi_p1_clk = {
2491 .name = "usb_host_hs_utmi_p1_clk",
2492 .ops = &clkops_omap2_dflt,
2493 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2494 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P1_CLK_SHIFT,
2495 .clkdm_name = "l3_init_clkdm",
2496 .parent = &utmi_p1_gfclk,
2497 .recalc = &followparent_recalc,
2498};
2499
2500static const struct clksel utmi_p2_gfclk_sel[] = {
2501 { .parent = &init_60m_fclk, .rates = div_1_0_rates },
2502 { .parent = &xclk60mhsp2_ck, .rates = div_1_1_rates },
2503 { .parent = NULL },
2504};
2505
2506static struct clk utmi_p2_gfclk = {
2507 .name = "utmi_p2_gfclk",
2508 .parent = &init_60m_fclk,
2509 .clksel = utmi_p2_gfclk_sel,
2510 .init = &omap2_init_clksel_parent,
2511 .clksel_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2512 .clksel_mask = OMAP4430_CLKSEL_UTMI_P2_MASK,
2513 .ops = &clkops_null,
2514 .recalc = &omap2_clksel_recalc,
2515};
2516
2517static struct clk usb_host_hs_utmi_p2_clk = {
2518 .name = "usb_host_hs_utmi_p2_clk",
2519 .ops = &clkops_omap2_dflt,
2520 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2521 .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P2_CLK_SHIFT,
2522 .clkdm_name = "l3_init_clkdm",
2523 .parent = &utmi_p2_gfclk,
2524 .recalc = &followparent_recalc,
2525};
2526
2527static struct clk usb_host_hs_hsic480m_p1_clk = {
2528 .name = "usb_host_hs_hsic480m_p1_clk",
2529 .ops = &clkops_omap2_dflt,
2530 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2531 .enable_bit = OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_SHIFT,
2532 .clkdm_name = "l3_init_clkdm",
2533 .parent = &dpll_usb_m2_ck,
2534 .recalc = &followparent_recalc,
2535};
2536
2537static struct clk usb_host_hs_hsic480m_p2_clk = {
2538 .name = "usb_host_hs_hsic480m_p2_clk",
2539 .ops = &clkops_omap2_dflt,
2540 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2541 .enable_bit = OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_SHIFT,
2542 .clkdm_name = "l3_init_clkdm",
2543 .parent = &dpll_usb_m2_ck,
2544 .recalc = &followparent_recalc,
2545};
2546
2547static struct clk usb_host_hs_func48mclk = {
2548 .name = "usb_host_hs_func48mclk",
2549 .ops = &clkops_omap2_dflt,
2550 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2551 .enable_bit = OMAP4430_OPTFCLKEN_FUNC48MCLK_SHIFT,
2552 .clkdm_name = "l3_init_clkdm",
2553 .parent = &func_48mc_fclk,
2554 .recalc = &followparent_recalc,
2555};
2556
Benoit Cousson0e433272010-09-27 14:02:54 -06002557static struct clk usb_host_hs_fck = {
2558 .name = "usb_host_hs_fck",
2559 .ops = &clkops_omap2_dflt,
2560 .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL,
2561 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2562 .clkdm_name = "l3_init_clkdm",
2563 .parent = &init_60m_fclk,
2564 .recalc = &followparent_recalc,
2565};
2566
Benoit Cousson1c03f422010-09-27 14:02:55 -06002567static const struct clksel otg_60m_gfclk_sel[] = {
2568 { .parent = &utmi_phy_clkout_ck, .rates = div_1_0_rates },
2569 { .parent = &xclk60motg_ck, .rates = div_1_1_rates },
2570 { .parent = NULL },
2571};
2572
2573static struct clk otg_60m_gfclk = {
2574 .name = "otg_60m_gfclk",
2575 .parent = &utmi_phy_clkout_ck,
2576 .clksel = otg_60m_gfclk_sel,
2577 .init = &omap2_init_clksel_parent,
2578 .clksel_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2579 .clksel_mask = OMAP4430_CLKSEL_60M_MASK,
2580 .ops = &clkops_null,
2581 .recalc = &omap2_clksel_recalc,
2582};
2583
2584static struct clk usb_otg_hs_xclk = {
2585 .name = "usb_otg_hs_xclk",
2586 .ops = &clkops_omap2_dflt,
2587 .enable_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2588 .enable_bit = OMAP4430_OPTFCLKEN_XCLK_SHIFT,
2589 .clkdm_name = "l3_init_clkdm",
2590 .parent = &otg_60m_gfclk,
2591 .recalc = &followparent_recalc,
2592};
2593
Benoit Cousson0e433272010-09-27 14:02:54 -06002594static struct clk usb_otg_hs_ick = {
2595 .name = "usb_otg_hs_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002596 .ops = &clkops_omap2_dflt,
2597 .enable_reg = OMAP4430_CM_L3INIT_USB_OTG_CLKCTRL,
2598 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2599 .clkdm_name = "l3_init_clkdm",
2600 .parent = &l3_div_ck,
2601 .recalc = &followparent_recalc,
2602};
2603
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002604static struct clk usb_phy_cm_clk32k = {
2605 .name = "usb_phy_cm_clk32k",
2606 .ops = &clkops_omap2_dflt,
2607 .enable_reg = OMAP4430_CM_ALWON_USBPHY_CLKCTRL,
2608 .enable_bit = OMAP4430_OPTFCLKEN_CLK32K_SHIFT,
2609 .clkdm_name = "l4_ao_clkdm",
2610 .parent = &sys_32k_ck,
2611 .recalc = &followparent_recalc,
2612};
2613
Benoit Cousson1c03f422010-09-27 14:02:55 -06002614static struct clk usb_tll_hs_usb_ch2_clk = {
2615 .name = "usb_tll_hs_usb_ch2_clk",
2616 .ops = &clkops_omap2_dflt,
2617 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2618 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH2_CLK_SHIFT,
2619 .clkdm_name = "l3_init_clkdm",
2620 .parent = &init_60m_fclk,
2621 .recalc = &followparent_recalc,
2622};
2623
2624static struct clk usb_tll_hs_usb_ch0_clk = {
2625 .name = "usb_tll_hs_usb_ch0_clk",
2626 .ops = &clkops_omap2_dflt,
2627 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2628 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH0_CLK_SHIFT,
2629 .clkdm_name = "l3_init_clkdm",
2630 .parent = &init_60m_fclk,
2631 .recalc = &followparent_recalc,
2632};
2633
2634static struct clk usb_tll_hs_usb_ch1_clk = {
2635 .name = "usb_tll_hs_usb_ch1_clk",
2636 .ops = &clkops_omap2_dflt,
2637 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2638 .enable_bit = OMAP4430_OPTFCLKEN_USB_CH1_CLK_SHIFT,
2639 .clkdm_name = "l3_init_clkdm",
2640 .parent = &init_60m_fclk,
2641 .recalc = &followparent_recalc,
2642};
2643
Benoit Cousson0e433272010-09-27 14:02:54 -06002644static struct clk usb_tll_hs_ick = {
2645 .name = "usb_tll_hs_ick",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002646 .ops = &clkops_omap2_dflt,
2647 .enable_reg = OMAP4430_CM_L3INIT_USB_TLL_CLKCTRL,
2648 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2649 .clkdm_name = "l3_init_clkdm",
2650 .parent = &l4_div_ck,
2651 .recalc = &followparent_recalc,
2652};
2653
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002654static const struct clksel_rate div2_14to18_rates[] = {
2655 { .div = 14, .val = 0, .flags = RATE_IN_4430 },
2656 { .div = 18, .val = 1, .flags = RATE_IN_4430 },
2657 { .div = 0 },
2658};
2659
2660static const struct clksel usim_fclk_div[] = {
2661 { .parent = &dpll_per_m4_ck, .rates = div2_14to18_rates },
2662 { .parent = NULL },
2663};
2664
2665static struct clk usim_ck = {
2666 .name = "usim_ck",
2667 .parent = &dpll_per_m4_ck,
2668 .clksel = usim_fclk_div,
2669 .clksel_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
2670 .clksel_mask = OMAP4430_CLKSEL_DIV_MASK,
2671 .ops = &clkops_null,
2672 .recalc = &omap2_clksel_recalc,
2673 .round_rate = &omap2_clksel_round_rate,
2674 .set_rate = &omap2_clksel_set_rate,
2675};
2676
2677static struct clk usim_fclk = {
2678 .name = "usim_fclk",
2679 .ops = &clkops_omap2_dflt,
2680 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
2681 .enable_bit = OMAP4430_OPTFCLKEN_FCLK_SHIFT,
2682 .clkdm_name = "l4_wkup_clkdm",
2683 .parent = &usim_ck,
2684 .recalc = &followparent_recalc,
2685};
2686
Benoit Cousson0e433272010-09-27 14:02:54 -06002687static struct clk usim_fck = {
2688 .name = "usim_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002689 .ops = &clkops_omap2_dflt,
2690 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002691 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002692 .clkdm_name = "l4_wkup_clkdm",
2693 .parent = &sys_32k_ck,
2694 .recalc = &followparent_recalc,
2695};
2696
Benoit Cousson0e433272010-09-27 14:02:54 -06002697static struct clk wd_timer2_fck = {
2698 .name = "wd_timer2_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002699 .ops = &clkops_omap2_dflt,
2700 .enable_reg = OMAP4430_CM_WKUP_WDT2_CLKCTRL,
2701 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2702 .clkdm_name = "l4_wkup_clkdm",
2703 .parent = &sys_32k_ck,
2704 .recalc = &followparent_recalc,
2705};
2706
Benoit Cousson0e433272010-09-27 14:02:54 -06002707static struct clk wd_timer3_fck = {
2708 .name = "wd_timer3_fck",
Rajendra Nayak972c5422009-12-08 18:46:28 -07002709 .ops = &clkops_omap2_dflt,
2710 .enable_reg = OMAP4430_CM1_ABE_WDT3_CLKCTRL,
2711 .enable_bit = OMAP4430_MODULEMODE_SWCTRL,
2712 .clkdm_name = "abe_clkdm",
2713 .parent = &sys_32k_ck,
2714 .recalc = &followparent_recalc,
2715};
2716
2717/* Remaining optional clocks */
Rajendra Nayak972c5422009-12-08 18:46:28 -07002718static const struct clksel stm_clk_div_div[] = {
2719 { .parent = &pmd_stm_clock_mux_ck, .rates = div3_1to4_rates },
2720 { .parent = NULL },
2721};
2722
2723static struct clk stm_clk_div_ck = {
2724 .name = "stm_clk_div_ck",
2725 .parent = &pmd_stm_clock_mux_ck,
2726 .clksel = stm_clk_div_div,
2727 .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL,
2728 .clksel_mask = OMAP4430_CLKSEL_PMD_STM_CLK_MASK,
2729 .ops = &clkops_null,
2730 .recalc = &omap2_clksel_recalc,
2731 .round_rate = &omap2_clksel_round_rate,
2732 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002733};
2734
2735static const struct clksel trace_clk_div_div[] = {
2736 { .parent = &pmd_trace_clk_mux_ck, .rates = div3_1to4_rates },
2737 { .parent = NULL },
2738};
2739
2740static struct clk trace_clk_div_ck = {
2741 .name = "trace_clk_div_ck",
2742 .parent = &pmd_trace_clk_mux_ck,
2743 .clksel = trace_clk_div_div,
2744 .clksel_reg = OMAP4430_CM_EMU_DEBUGSS_CLKCTRL,
2745 .clksel_mask = OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK,
2746 .ops = &clkops_null,
2747 .recalc = &omap2_clksel_recalc,
2748 .round_rate = &omap2_clksel_round_rate,
2749 .set_rate = &omap2_clksel_set_rate,
Rajendra Nayak972c5422009-12-08 18:46:28 -07002750};
2751
Rajendra Nayak972c5422009-12-08 18:46:28 -07002752/*
2753 * clkdev
2754 */
2755
2756static struct omap_clk omap44xx_clks[] = {
2757 CLK(NULL, "extalt_clkin_ck", &extalt_clkin_ck, CK_443X),
2758 CLK(NULL, "pad_clks_ck", &pad_clks_ck, CK_443X),
2759 CLK(NULL, "pad_slimbus_core_clks_ck", &pad_slimbus_core_clks_ck, CK_443X),
2760 CLK(NULL, "secure_32k_clk_src_ck", &secure_32k_clk_src_ck, CK_443X),
2761 CLK(NULL, "slimbus_clk", &slimbus_clk, CK_443X),
2762 CLK(NULL, "sys_32k_ck", &sys_32k_ck, CK_443X),
2763 CLK(NULL, "virt_12000000_ck", &virt_12000000_ck, CK_443X),
2764 CLK(NULL, "virt_13000000_ck", &virt_13000000_ck, CK_443X),
2765 CLK(NULL, "virt_16800000_ck", &virt_16800000_ck, CK_443X),
2766 CLK(NULL, "virt_19200000_ck", &virt_19200000_ck, CK_443X),
2767 CLK(NULL, "virt_26000000_ck", &virt_26000000_ck, CK_443X),
2768 CLK(NULL, "virt_27000000_ck", &virt_27000000_ck, CK_443X),
2769 CLK(NULL, "virt_38400000_ck", &virt_38400000_ck, CK_443X),
2770 CLK(NULL, "sys_clkin_ck", &sys_clkin_ck, CK_443X),
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002771 CLK(NULL, "tie_low_clock_ck", &tie_low_clock_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002772 CLK(NULL, "utmi_phy_clkout_ck", &utmi_phy_clkout_ck, CK_443X),
2773 CLK(NULL, "xclk60mhsp1_ck", &xclk60mhsp1_ck, CK_443X),
2774 CLK(NULL, "xclk60mhsp2_ck", &xclk60mhsp2_ck, CK_443X),
2775 CLK(NULL, "xclk60motg_ck", &xclk60motg_ck, CK_443X),
Rajendra Nayak76cf5292010-09-27 14:02:54 -06002776 CLK(NULL, "abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002777 CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X),
2778 CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X),
2779 CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X),
2780 CLK(NULL, "abe_24m_fclk", &abe_24m_fclk, CK_443X),
2781 CLK(NULL, "abe_clk", &abe_clk, CK_443X),
2782 CLK(NULL, "aess_fclk", &aess_fclk, CK_443X),
2783 CLK(NULL, "dpll_abe_m3_ck", &dpll_abe_m3_ck, CK_443X),
2784 CLK(NULL, "core_hsd_byp_clk_mux_ck", &core_hsd_byp_clk_mux_ck, CK_443X),
2785 CLK(NULL, "dpll_core_ck", &dpll_core_ck, CK_443X),
2786 CLK(NULL, "dpll_core_m6_ck", &dpll_core_m6_ck, CK_443X),
2787 CLK(NULL, "dbgclk_mux_ck", &dbgclk_mux_ck, CK_443X),
2788 CLK(NULL, "dpll_core_m2_ck", &dpll_core_m2_ck, CK_443X),
2789 CLK(NULL, "ddrphy_ck", &ddrphy_ck, CK_443X),
2790 CLK(NULL, "dpll_core_m5_ck", &dpll_core_m5_ck, CK_443X),
2791 CLK(NULL, "div_core_ck", &div_core_ck, CK_443X),
2792 CLK(NULL, "div_iva_hs_clk", &div_iva_hs_clk, CK_443X),
2793 CLK(NULL, "div_mpu_hs_clk", &div_mpu_hs_clk, CK_443X),
2794 CLK(NULL, "dpll_core_m4_ck", &dpll_core_m4_ck, CK_443X),
2795 CLK(NULL, "dll_clk_div_ck", &dll_clk_div_ck, CK_443X),
2796 CLK(NULL, "dpll_abe_m2_ck", &dpll_abe_m2_ck, CK_443X),
2797 CLK(NULL, "dpll_core_m3_ck", &dpll_core_m3_ck, CK_443X),
2798 CLK(NULL, "dpll_core_m7_ck", &dpll_core_m7_ck, CK_443X),
2799 CLK(NULL, "iva_hsd_byp_clk_mux_ck", &iva_hsd_byp_clk_mux_ck, CK_443X),
2800 CLK(NULL, "dpll_iva_ck", &dpll_iva_ck, CK_443X),
2801 CLK(NULL, "dpll_iva_m4_ck", &dpll_iva_m4_ck, CK_443X),
2802 CLK(NULL, "dpll_iva_m5_ck", &dpll_iva_m5_ck, CK_443X),
2803 CLK(NULL, "dpll_mpu_ck", &dpll_mpu_ck, CK_443X),
2804 CLK(NULL, "dpll_mpu_m2_ck", &dpll_mpu_m2_ck, CK_443X),
2805 CLK(NULL, "per_hs_clk_div_ck", &per_hs_clk_div_ck, CK_443X),
2806 CLK(NULL, "per_hsd_byp_clk_mux_ck", &per_hsd_byp_clk_mux_ck, CK_443X),
2807 CLK(NULL, "dpll_per_ck", &dpll_per_ck, CK_443X),
2808 CLK(NULL, "dpll_per_m2_ck", &dpll_per_m2_ck, CK_443X),
2809 CLK(NULL, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, CK_443X),
2810 CLK(NULL, "dpll_per_m3_ck", &dpll_per_m3_ck, CK_443X),
2811 CLK(NULL, "dpll_per_m4_ck", &dpll_per_m4_ck, CK_443X),
2812 CLK(NULL, "dpll_per_m5_ck", &dpll_per_m5_ck, CK_443X),
2813 CLK(NULL, "dpll_per_m6_ck", &dpll_per_m6_ck, CK_443X),
2814 CLK(NULL, "dpll_per_m7_ck", &dpll_per_m7_ck, CK_443X),
2815 CLK(NULL, "dpll_unipro_ck", &dpll_unipro_ck, CK_443X),
2816 CLK(NULL, "dpll_unipro_m2x2_ck", &dpll_unipro_m2x2_ck, CK_443X),
2817 CLK(NULL, "usb_hs_clk_div_ck", &usb_hs_clk_div_ck, CK_443X),
2818 CLK(NULL, "dpll_usb_ck", &dpll_usb_ck, CK_443X),
2819 CLK(NULL, "dpll_usb_clkdcoldo_ck", &dpll_usb_clkdcoldo_ck, CK_443X),
2820 CLK(NULL, "dpll_usb_m2_ck", &dpll_usb_m2_ck, CK_443X),
2821 CLK(NULL, "ducati_clk_mux_ck", &ducati_clk_mux_ck, CK_443X),
2822 CLK(NULL, "func_12m_fclk", &func_12m_fclk, CK_443X),
2823 CLK(NULL, "func_24m_clk", &func_24m_clk, CK_443X),
2824 CLK(NULL, "func_24mc_fclk", &func_24mc_fclk, CK_443X),
2825 CLK(NULL, "func_48m_fclk", &func_48m_fclk, CK_443X),
2826 CLK(NULL, "func_48mc_fclk", &func_48mc_fclk, CK_443X),
2827 CLK(NULL, "func_64m_fclk", &func_64m_fclk, CK_443X),
2828 CLK(NULL, "func_96m_fclk", &func_96m_fclk, CK_443X),
2829 CLK(NULL, "hsmmc6_fclk", &hsmmc6_fclk, CK_443X),
2830 CLK(NULL, "init_60m_fclk", &init_60m_fclk, CK_443X),
2831 CLK(NULL, "l3_div_ck", &l3_div_ck, CK_443X),
2832 CLK(NULL, "l4_div_ck", &l4_div_ck, CK_443X),
2833 CLK(NULL, "lp_clk_div_ck", &lp_clk_div_ck, CK_443X),
2834 CLK(NULL, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, CK_443X),
2835 CLK(NULL, "per_abe_nc_fclk", &per_abe_nc_fclk, CK_443X),
2836 CLK(NULL, "mcasp2_fclk", &mcasp2_fclk, CK_443X),
2837 CLK(NULL, "mcasp3_fclk", &mcasp3_fclk, CK_443X),
2838 CLK(NULL, "ocp_abe_iclk", &ocp_abe_iclk, CK_443X),
2839 CLK(NULL, "per_abe_24m_fclk", &per_abe_24m_fclk, CK_443X),
2840 CLK(NULL, "pmd_stm_clock_mux_ck", &pmd_stm_clock_mux_ck, CK_443X),
2841 CLK(NULL, "pmd_trace_clk_mux_ck", &pmd_trace_clk_mux_ck, CK_443X),
2842 CLK(NULL, "syc_clk_div_ck", &syc_clk_div_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002843 CLK(NULL, "aes1_fck", &aes1_fck, CK_443X),
2844 CLK(NULL, "aes2_fck", &aes2_fck, CK_443X),
2845 CLK(NULL, "aess_fck", &aess_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002846 CLK(NULL, "bandgap_fclk", &bandgap_fclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002847 CLK(NULL, "des3des_fck", &des3des_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002848 CLK(NULL, "dmic_sync_mux_ck", &dmic_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002849 CLK(NULL, "dmic_fck", &dmic_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002850 CLK(NULL, "dsp_fck", &dsp_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002851 CLK(NULL, "dss_sys_clk", &dss_sys_clk, CK_443X),
2852 CLK(NULL, "dss_tv_clk", &dss_tv_clk, CK_443X),
2853 CLK(NULL, "dss_dss_clk", &dss_dss_clk, CK_443X),
2854 CLK(NULL, "dss_48mhz_clk", &dss_48mhz_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002855 CLK(NULL, "dss_fck", &dss_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002856 CLK(NULL, "efuse_ctrl_cust_fck", &efuse_ctrl_cust_fck, CK_443X),
2857 CLK(NULL, "emif1_fck", &emif1_fck, CK_443X),
2858 CLK(NULL, "emif2_fck", &emif2_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002859 CLK(NULL, "fdif_fck", &fdif_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002860 CLK(NULL, "fpka_fck", &fpka_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002861 CLK(NULL, "gpio1_dbck", &gpio1_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002862 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002863 CLK(NULL, "gpio2_dbck", &gpio2_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002864 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002865 CLK(NULL, "gpio3_dbck", &gpio3_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002866 CLK(NULL, "gpio3_ick", &gpio3_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002867 CLK(NULL, "gpio4_dbck", &gpio4_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002868 CLK(NULL, "gpio4_ick", &gpio4_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002869 CLK(NULL, "gpio5_dbck", &gpio5_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002870 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002871 CLK(NULL, "gpio6_dbck", &gpio6_dbclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002872 CLK(NULL, "gpio6_ick", &gpio6_ick, CK_443X),
2873 CLK(NULL, "gpmc_ick", &gpmc_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002874 CLK(NULL, "gpu_fck", &gpu_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002875 CLK("omap2_hdq.0", "fck", &hdq1w_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002876 CLK(NULL, "hsi_fck", &hsi_fck, CK_443X),
Benoit Coussonf7bb0d92010-12-09 14:24:16 +00002877 CLK("omap_i2c.1", "fck", &i2c1_fck, CK_443X),
2878 CLK("omap_i2c.2", "fck", &i2c2_fck, CK_443X),
2879 CLK("omap_i2c.3", "fck", &i2c3_fck, CK_443X),
2880 CLK("omap_i2c.4", "fck", &i2c4_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002881 CLK(NULL, "ipu_fck", &ipu_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002882 CLK(NULL, "iss_ctrlclk", &iss_ctrlclk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002883 CLK(NULL, "iss_fck", &iss_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002884 CLK(NULL, "iva_fck", &iva_fck, CK_443X),
2885 CLK(NULL, "kbd_fck", &kbd_fck, CK_443X),
2886 CLK(NULL, "l3_instr_ick", &l3_instr_ick, CK_443X),
2887 CLK(NULL, "l3_main_3_ick", &l3_main_3_ick, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002888 CLK(NULL, "mcasp_sync_mux_ck", &mcasp_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002889 CLK(NULL, "mcasp_fck", &mcasp_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002890 CLK(NULL, "mcbsp1_sync_mux_ck", &mcbsp1_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002891 CLK("omap-mcbsp.1", "fck", &mcbsp1_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002892 CLK(NULL, "mcbsp2_sync_mux_ck", &mcbsp2_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002893 CLK("omap-mcbsp.2", "fck", &mcbsp2_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002894 CLK(NULL, "mcbsp3_sync_mux_ck", &mcbsp3_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002895 CLK("omap-mcbsp.3", "fck", &mcbsp3_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002896 CLK(NULL, "mcbsp4_sync_mux_ck", &mcbsp4_sync_mux_ck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002897 CLK("omap-mcbsp.4", "fck", &mcbsp4_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002898 CLK(NULL, "mcpdm_fck", &mcpdm_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002899 CLK("omap2_mcspi.1", "fck", &mcspi1_fck, CK_443X),
2900 CLK("omap2_mcspi.2", "fck", &mcspi2_fck, CK_443X),
2901 CLK("omap2_mcspi.3", "fck", &mcspi3_fck, CK_443X),
2902 CLK("omap2_mcspi.4", "fck", &mcspi4_fck, CK_443X),
2903 CLK("mmci-omap-hs.0", "fck", &mmc1_fck, CK_443X),
2904 CLK("mmci-omap-hs.1", "fck", &mmc2_fck, CK_443X),
2905 CLK("mmci-omap-hs.2", "fck", &mmc3_fck, CK_443X),
2906 CLK("mmci-omap-hs.3", "fck", &mmc4_fck, CK_443X),
2907 CLK("mmci-omap-hs.4", "fck", &mmc5_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002908 CLK(NULL, "ocp2scp_usb_phy_phy_48m", &ocp2scp_usb_phy_phy_48m, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002909 CLK(NULL, "ocp2scp_usb_phy_ick", &ocp2scp_usb_phy_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002910 CLK(NULL, "ocp_wp_noc_ick", &ocp_wp_noc_ick, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002911 CLK("omap_rng", "ick", &rng_ick, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002912 CLK(NULL, "sha2md5_fck", &sha2md5_fck, CK_443X),
2913 CLK(NULL, "sl2if_ick", &sl2if_ick, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002914 CLK(NULL, "slimbus1_fclk_1", &slimbus1_fclk_1, CK_443X),
2915 CLK(NULL, "slimbus1_fclk_0", &slimbus1_fclk_0, CK_443X),
2916 CLK(NULL, "slimbus1_fclk_2", &slimbus1_fclk_2, CK_443X),
2917 CLK(NULL, "slimbus1_slimbus_clk", &slimbus1_slimbus_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002918 CLK(NULL, "slimbus1_fck", &slimbus1_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002919 CLK(NULL, "slimbus2_fclk_1", &slimbus2_fclk_1, CK_443X),
2920 CLK(NULL, "slimbus2_fclk_0", &slimbus2_fclk_0, CK_443X),
2921 CLK(NULL, "slimbus2_slimbus_clk", &slimbus2_slimbus_clk, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002922 CLK(NULL, "slimbus2_fck", &slimbus2_fck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002923 CLK(NULL, "smartreflex_core_fck", &smartreflex_core_fck, CK_443X),
2924 CLK(NULL, "smartreflex_iva_fck", &smartreflex_iva_fck, CK_443X),
2925 CLK(NULL, "smartreflex_mpu_fck", &smartreflex_mpu_fck, CK_443X),
2926 CLK(NULL, "gpt1_fck", &timer1_fck, CK_443X),
2927 CLK(NULL, "gpt10_fck", &timer10_fck, CK_443X),
2928 CLK(NULL, "gpt11_fck", &timer11_fck, CK_443X),
2929 CLK(NULL, "gpt2_fck", &timer2_fck, CK_443X),
2930 CLK(NULL, "gpt3_fck", &timer3_fck, CK_443X),
2931 CLK(NULL, "gpt4_fck", &timer4_fck, CK_443X),
2932 CLK(NULL, "gpt5_fck", &timer5_fck, CK_443X),
2933 CLK(NULL, "gpt6_fck", &timer6_fck, CK_443X),
2934 CLK(NULL, "gpt7_fck", &timer7_fck, CK_443X),
2935 CLK(NULL, "gpt8_fck", &timer8_fck, CK_443X),
2936 CLK(NULL, "gpt9_fck", &timer9_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002937 CLK(NULL, "uart1_fck", &uart1_fck, CK_443X),
2938 CLK(NULL, "uart2_fck", &uart2_fck, CK_443X),
2939 CLK(NULL, "uart3_fck", &uart3_fck, CK_443X),
2940 CLK(NULL, "uart4_fck", &uart4_fck, CK_443X),
Rajendra Nayak54776052010-02-22 22:09:39 -07002941 CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002942 CLK(NULL, "usb_host_hs_utmi_p3_clk", &usb_host_hs_utmi_p3_clk, CK_443X),
2943 CLK(NULL, "usb_host_hs_hsic60m_p1_clk", &usb_host_hs_hsic60m_p1_clk, CK_443X),
2944 CLK(NULL, "usb_host_hs_hsic60m_p2_clk", &usb_host_hs_hsic60m_p2_clk, CK_443X),
2945 CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X),
2946 CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X),
2947 CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X),
2948 CLK(NULL, "usb_host_hs_utmi_p2_clk", &usb_host_hs_utmi_p2_clk, CK_443X),
2949 CLK(NULL, "usb_host_hs_hsic480m_p1_clk", &usb_host_hs_hsic480m_p1_clk, CK_443X),
2950 CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X),
2951 CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002952 CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002953 CLK(NULL, "otg_60m_gfclk", &otg_60m_gfclk, CK_443X),
2954 CLK(NULL, "usb_otg_hs_xclk", &usb_otg_hs_xclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002955 CLK("musb_hdrc", "ick", &usb_otg_hs_ick, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002956 CLK(NULL, "usb_phy_cm_clk32k", &usb_phy_cm_clk32k, CK_443X),
Benoit Cousson1c03f422010-09-27 14:02:55 -06002957 CLK(NULL, "usb_tll_hs_usb_ch2_clk", &usb_tll_hs_usb_ch2_clk, CK_443X),
2958 CLK(NULL, "usb_tll_hs_usb_ch0_clk", &usb_tll_hs_usb_ch0_clk, CK_443X),
2959 CLK(NULL, "usb_tll_hs_usb_ch1_clk", &usb_tll_hs_usb_ch1_clk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002960 CLK(NULL, "usb_tll_hs_ick", &usb_tll_hs_ick, CK_443X),
Benoit Cousson0edc9e82010-09-27 14:02:56 -06002961 CLK(NULL, "usim_ck", &usim_ck, CK_443X),
2962 CLK(NULL, "usim_fclk", &usim_fclk, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002963 CLK(NULL, "usim_fck", &usim_fck, CK_443X),
2964 CLK("omap_wdt", "fck", &wd_timer2_fck, CK_443X),
2965 CLK(NULL, "wd_timer3_fck", &wd_timer3_fck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07002966 CLK(NULL, "stm_clk_div_ck", &stm_clk_div_ck, CK_443X),
2967 CLK(NULL, "trace_clk_div_ck", &trace_clk_div_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07002968 CLK(NULL, "gpmc_ck", &dummy_ck, CK_443X),
2969 CLK(NULL, "gpt1_ick", &dummy_ck, CK_443X),
2970 CLK(NULL, "gpt2_ick", &dummy_ck, CK_443X),
2971 CLK(NULL, "gpt3_ick", &dummy_ck, CK_443X),
2972 CLK(NULL, "gpt4_ick", &dummy_ck, CK_443X),
2973 CLK(NULL, "gpt5_ick", &dummy_ck, CK_443X),
2974 CLK(NULL, "gpt6_ick", &dummy_ck, CK_443X),
2975 CLK(NULL, "gpt7_ick", &dummy_ck, CK_443X),
2976 CLK(NULL, "gpt8_ick", &dummy_ck, CK_443X),
2977 CLK(NULL, "gpt9_ick", &dummy_ck, CK_443X),
2978 CLK(NULL, "gpt10_ick", &dummy_ck, CK_443X),
2979 CLK(NULL, "gpt11_ick", &dummy_ck, CK_443X),
Benoit Coussonf7bb0d92010-12-09 14:24:16 +00002980 CLK("omap_i2c.1", "ick", &dummy_ck, CK_443X),
2981 CLK("omap_i2c.2", "ick", &dummy_ck, CK_443X),
2982 CLK("omap_i2c.3", "ick", &dummy_ck, CK_443X),
2983 CLK("omap_i2c.4", "ick", &dummy_ck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002984 CLK("mmci-omap-hs.0", "ick", &dummy_ck, CK_443X),
2985 CLK("mmci-omap-hs.1", "ick", &dummy_ck, CK_443X),
2986 CLK("mmci-omap-hs.2", "ick", &dummy_ck, CK_443X),
2987 CLK("mmci-omap-hs.3", "ick", &dummy_ck, CK_443X),
2988 CLK("mmci-omap-hs.4", "ick", &dummy_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07002989 CLK("omap-mcbsp.1", "ick", &dummy_ck, CK_443X),
2990 CLK("omap-mcbsp.2", "ick", &dummy_ck, CK_443X),
2991 CLK("omap-mcbsp.3", "ick", &dummy_ck, CK_443X),
2992 CLK("omap-mcbsp.4", "ick", &dummy_ck, CK_443X),
Benoit Cousson0e433272010-09-27 14:02:54 -06002993 CLK("omap2_mcspi.1", "ick", &dummy_ck, CK_443X),
2994 CLK("omap2_mcspi.2", "ick", &dummy_ck, CK_443X),
2995 CLK("omap2_mcspi.3", "ick", &dummy_ck, CK_443X),
2996 CLK("omap2_mcspi.4", "ick", &dummy_ck, CK_443X),
Santosh Shilimkar7c43d542010-02-22 22:09:40 -07002997 CLK(NULL, "uart1_ick", &dummy_ck, CK_443X),
2998 CLK(NULL, "uart2_ick", &dummy_ck, CK_443X),
2999 CLK(NULL, "uart3_ick", &dummy_ck, CK_443X),
3000 CLK(NULL, "uart4_ick", &dummy_ck, CK_443X),
3001 CLK("omap_wdt", "ick", &dummy_ck, CK_443X),
Rajendra Nayak972c5422009-12-08 18:46:28 -07003002};
3003
Paul Walmsleye80a9722010-01-26 20:13:12 -07003004int __init omap4xxx_clk_init(void)
Rajendra Nayak972c5422009-12-08 18:46:28 -07003005{
Rajendra Nayak972c5422009-12-08 18:46:28 -07003006 struct omap_clk *c;
Rajendra Nayak972c5422009-12-08 18:46:28 -07003007 u32 cpu_clkflg;
3008
3009 if (cpu_is_omap44xx()) {
3010 cpu_mask = RATE_IN_4430;
3011 cpu_clkflg = CK_443X;
3012 }
3013
3014 clk_init(&omap2_clk_functions);
3015
3016 for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks);
3017 c++)
3018 clk_preinit(c->lk.clk);
3019
3020 for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks);
3021 c++)
3022 if (c->cpu & cpu_clkflg) {
3023 clkdev_add(&c->lk);
3024 clk_register(c->lk.clk);
Rajendra Nayak972c5422009-12-08 18:46:28 -07003025 omap2_init_clk_clkdm(c->lk.clk);
Rajendra Nayak972c5422009-12-08 18:46:28 -07003026 }
3027
3028 recalculate_root_clocks();
3029
3030 /*
3031 * Only enable those clocks we will need, let the drivers
3032 * enable other clocks as necessary
3033 */
3034 clk_enable_init_clocks();
3035
3036 return 0;
3037}