Skip to content

Commit 1bccb34

Browse files
author
Paul Walmsley
committed
OMAP2420: 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 McBSP 1 and 2. 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 54164bb commit 1bccb34

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

arch/arm/mach-omap2/clock2420_data.c

Lines changed: 38 additions & 2 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
*/
@@ -1135,14 +1142,34 @@ static struct clk mcbsp1_ick = {
11351142
.recalc = &followparent_recalc,
11361143
};
11371144

1145+
static const struct clksel_rate common_mcbsp_96m_rates[] = {
1146+
{ .div = 1, .val = 0, .flags = RATE_IN_24XX },
1147+
{ .div = 0 }
1148+
};
1149+
1150+
static const struct clksel_rate common_mcbsp_mcbsp_rates[] = {
1151+
{ .div = 1, .val = 1, .flags = RATE_IN_24XX },
1152+
{ .div = 0 }
1153+
};
1154+
1155+
static const struct clksel mcbsp_fck_clksel[] = {
1156+
{ .parent = &func_96m_ck, .rates = common_mcbsp_96m_rates },
1157+
{ .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
1158+
{ .parent = NULL }
1159+
};
1160+
11381161
static struct clk mcbsp1_fck = {
11391162
.name = "mcbsp1_fck",
11401163
.ops = &clkops_omap2_dflt_wait,
11411164
.parent = &func_96m_ck,
1165+
.init = &omap2_init_clksel_parent,
11421166
.clkdm_name = "core_l4_clkdm",
11431167
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
11441168
.enable_bit = OMAP24XX_EN_MCBSP1_SHIFT,
1145-
.recalc = &followparent_recalc,
1169+
.clksel_reg = OMAP242X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1170+
.clksel_mask = OMAP2_MCBSP1_CLKS_MASK,
1171+
.clksel = mcbsp_fck_clksel,
1172+
.recalc = &omap2_clksel_recalc,
11461173
};
11471174

11481175
static struct clk mcbsp2_ick = {
@@ -1159,10 +1186,14 @@ static struct clk mcbsp2_fck = {
11591186
.name = "mcbsp2_fck",
11601187
.ops = &clkops_omap2_dflt_wait,
11611188
.parent = &func_96m_ck,
1189+
.init = &omap2_init_clksel_parent,
11621190
.clkdm_name = "core_l4_clkdm",
11631191
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
11641192
.enable_bit = OMAP24XX_EN_MCBSP2_SHIFT,
1165-
.recalc = &followparent_recalc,
1193+
.clksel_reg = OMAP242X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1194+
.clksel_mask = OMAP2_MCBSP2_CLKS_MASK,
1195+
.clksel = mcbsp_fck_clksel,
1196+
.recalc = &omap2_clksel_recalc,
11661197
};
11671198

11681199
static struct clk mcspi1_ick = {
@@ -1721,13 +1752,18 @@ static struct omap_clk omap2420_clks[] = {
17211752
CLK(NULL, "osc_ck", &osc_ck, CK_242X),
17221753
CLK(NULL, "sys_ck", &sys_ck, CK_242X),
17231754
CLK(NULL, "alt_ck", &alt_ck, CK_242X),
1755+
CLK("omap-mcbsp.1", "pad_fck", &mcbsp_clks, CK_242X),
1756+
CLK("omap-mcbsp.2", "pad_fck", &mcbsp_clks, CK_242X),
1757+
CLK(NULL, "mcbsp_clks", &mcbsp_clks, CK_242X),
17241758
/* internal analog sources */
17251759
CLK(NULL, "dpll_ck", &dpll_ck, CK_242X),
17261760
CLK(NULL, "apll96_ck", &apll96_ck, CK_242X),
17271761
CLK(NULL, "apll54_ck", &apll54_ck, CK_242X),
17281762
/* internal prcm root sources */
17291763
CLK(NULL, "func_54m_ck", &func_54m_ck, CK_242X),
17301764
CLK(NULL, "core_ck", &core_ck, CK_242X),
1765+
CLK("omap-mcbsp.1", "prcm_fck", &func_96m_ck, CK_242X),
1766+
CLK("omap-mcbsp.2", "prcm_fck", &func_96m_ck, CK_242X),
17311767
CLK(NULL, "func_96m_ck", &func_96m_ck, CK_242X),
17321768
CLK(NULL, "func_48m_ck", &func_48m_ck, CK_242X),
17331769
CLK(NULL, "func_12m_ck", &func_12m_ck, CK_242X),

0 commit comments

Comments
 (0)