Skip to content

Commit b115b74

Browse files
author
Paul Walmsley
committed
OMAP2430: clock: add MCBSP_CLKS node and clkdev aliases
Add the MCBSP_CLKS clock and the clksel structures needed to support clock framework-based source switching for McBSPs 1-5. Also, add clkdev aliases on the parent clocks for the McBSP source switching code, added in a subsequent patch. Signed-off-by: Paul Walmsley <[email protected]>
1 parent 1bccb34 commit b115b74

File tree

1 file changed

+59
-5
lines changed

1 file changed

+59
-5
lines changed

arch/arm/mach-omap2/clock2430_data.c

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <linux/list.h>
1919

2020
#include <plat/clkdev_omap.h>
21+
#include <plat/control.h>
2122

2223
#include "clock.h"
2324
#include "clock2xxx.h"
@@ -89,6 +90,12 @@ static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */
8990
.clkdm_name = "wkup_clkdm",
9091
};
9192

93+
/* Optional external clock input for McBSP CLKS */
94+
static struct clk mcbsp_clks = {
95+
.name = "mcbsp_clks",
96+
.ops = &clkops_null,
97+
};
98+
9299
/*
93100
* Analog domain root source clocks
94101
*/
@@ -1123,14 +1130,34 @@ static struct clk mcbsp1_ick = {
11231130
.recalc = &followparent_recalc,
11241131
};
11251132

1133+
static const struct clksel_rate common_mcbsp_96m_rates[] = {
1134+
{ .div = 1, .val = 0, .flags = RATE_IN_24XX },
1135+
{ .div = 0 }
1136+
};
1137+
1138+
static const struct clksel_rate common_mcbsp_mcbsp_rates[] = {
1139+
{ .div = 1, .val = 1, .flags = RATE_IN_24XX },
1140+
{ .div = 0 }
1141+
};
1142+
1143+
static const struct clksel mcbsp_fck_clksel[] = {
1144+
{ .parent = &func_96m_ck, .rates = common_mcbsp_96m_rates },
1145+
{ .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
1146+
{ .parent = NULL }
1147+
};
1148+
11261149
static struct clk mcbsp1_fck = {
11271150
.name = "mcbsp1_fck",
11281151
.ops = &clkops_omap2_dflt_wait,
11291152
.parent = &func_96m_ck,
1153+
.init = &omap2_init_clksel_parent,
11301154
.clkdm_name = "core_l4_clkdm",
11311155
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
11321156
.enable_bit = OMAP24XX_EN_MCBSP1_SHIFT,
1133-
.recalc = &followparent_recalc,
1157+
.clksel_reg = OMAP243X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1158+
.clksel_mask = OMAP2_MCBSP1_CLKS_MASK,
1159+
.clksel = mcbsp_fck_clksel,
1160+
.recalc = &omap2_clksel_recalc,
11341161
};
11351162

11361163
static struct clk mcbsp2_ick = {
@@ -1147,10 +1174,14 @@ static struct clk mcbsp2_fck = {
11471174
.name = "mcbsp2_fck",
11481175
.ops = &clkops_omap2_dflt_wait,
11491176
.parent = &func_96m_ck,
1177+
.init = &omap2_init_clksel_parent,
11501178
.clkdm_name = "core_l4_clkdm",
11511179
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
11521180
.enable_bit = OMAP24XX_EN_MCBSP2_SHIFT,
1153-
.recalc = &followparent_recalc,
1181+
.clksel_reg = OMAP243X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1182+
.clksel_mask = OMAP2_MCBSP2_CLKS_MASK,
1183+
.clksel = mcbsp_fck_clksel,
1184+
.recalc = &omap2_clksel_recalc,
11541185
};
11551186

11561187
static struct clk mcbsp3_ick = {
@@ -1167,10 +1198,14 @@ static struct clk mcbsp3_fck = {
11671198
.name = "mcbsp3_fck",
11681199
.ops = &clkops_omap2_dflt_wait,
11691200
.parent = &func_96m_ck,
1201+
.init = &omap2_init_clksel_parent,
11701202
.clkdm_name = "core_l4_clkdm",
11711203
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
11721204
.enable_bit = OMAP2430_EN_MCBSP3_SHIFT,
1173-
.recalc = &followparent_recalc,
1205+
.clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1206+
.clksel_mask = OMAP2_MCBSP3_CLKS_MASK,
1207+
.clksel = mcbsp_fck_clksel,
1208+
.recalc = &omap2_clksel_recalc,
11741209
};
11751210

11761211
static struct clk mcbsp4_ick = {
@@ -1187,10 +1222,14 @@ static struct clk mcbsp4_fck = {
11871222
.name = "mcbsp4_fck",
11881223
.ops = &clkops_omap2_dflt_wait,
11891224
.parent = &func_96m_ck,
1225+
.init = &omap2_init_clksel_parent,
11901226
.clkdm_name = "core_l4_clkdm",
11911227
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
11921228
.enable_bit = OMAP2430_EN_MCBSP4_SHIFT,
1193-
.recalc = &followparent_recalc,
1229+
.clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1230+
.clksel_mask = OMAP2_MCBSP4_CLKS_MASK,
1231+
.clksel = mcbsp_fck_clksel,
1232+
.recalc = &omap2_clksel_recalc,
11941233
};
11951234

11961235
static struct clk mcbsp5_ick = {
@@ -1207,10 +1246,14 @@ static struct clk mcbsp5_fck = {
12071246
.name = "mcbsp5_fck",
12081247
.ops = &clkops_omap2_dflt_wait,
12091248
.parent = &func_96m_ck,
1249+
.init = &omap2_init_clksel_parent,
12101250
.clkdm_name = "core_l4_clkdm",
12111251
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
12121252
.enable_bit = OMAP2430_EN_MCBSP5_SHIFT,
1213-
.recalc = &followparent_recalc,
1253+
.clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1254+
.clksel_mask = OMAP2_MCBSP5_CLKS_MASK,
1255+
.clksel = mcbsp_fck_clksel,
1256+
.recalc = &omap2_clksel_recalc,
12141257
};
12151258

12161259
static struct clk mcspi1_ick = {
@@ -1808,13 +1851,24 @@ static struct omap_clk omap2430_clks[] = {
18081851
CLK(NULL, "osc_ck", &osc_ck, CK_243X),
18091852
CLK(NULL, "sys_ck", &sys_ck, CK_243X),
18101853
CLK(NULL, "alt_ck", &alt_ck, CK_243X),
1854+
CLK("omap-mcbsp.1", "pad_fck", &mcbsp_clks, CK_243X),
1855+
CLK("omap-mcbsp.2", "pad_fck", &mcbsp_clks, CK_243X),
1856+
CLK("omap-mcbsp.3", "pad_fck", &mcbsp_clks, CK_243X),
1857+
CLK("omap-mcbsp.4", "pad_fck", &mcbsp_clks, CK_243X),
1858+
CLK("omap-mcbsp.5", "pad_fck", &mcbsp_clks, CK_243X),
1859+
CLK(NULL, "mcbsp_clks", &mcbsp_clks, CK_243X),
18111860
/* internal analog sources */
18121861
CLK(NULL, "dpll_ck", &dpll_ck, CK_243X),
18131862
CLK(NULL, "apll96_ck", &apll96_ck, CK_243X),
18141863
CLK(NULL, "apll54_ck", &apll54_ck, CK_243X),
18151864
/* internal prcm root sources */
18161865
CLK(NULL, "func_54m_ck", &func_54m_ck, CK_243X),
18171866
CLK(NULL, "core_ck", &core_ck, CK_243X),
1867+
CLK("omap-mcbsp.1", "prcm_fck", &func_96m_ck, CK_243X),
1868+
CLK("omap-mcbsp.2", "prcm_fck", &func_96m_ck, CK_243X),
1869+
CLK("omap-mcbsp.3", "prcm_fck", &func_96m_ck, CK_243X),
1870+
CLK("omap-mcbsp.4", "prcm_fck", &func_96m_ck, CK_243X),
1871+
CLK("omap-mcbsp.5", "prcm_fck", &func_96m_ck, CK_243X),
18181872
CLK(NULL, "func_96m_ck", &func_96m_ck, CK_243X),
18191873
CLK(NULL, "func_48m_ck", &func_48m_ck, CK_243X),
18201874
CLK(NULL, "func_12m_ck", &func_12m_ck, CK_243X),

0 commit comments

Comments
 (0)