Commit fde0fd49 authored by Tony Lindgren's avatar Tony Lindgren

ARM: OMAP: 3/4 Fix clock framework to use clk_enable/disable for omap2

This patch fixes OMAP clock framework to use clk_enable/disable
instead of clk_use/unuse as specified in include/linux/clk.h.
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 10b55794
...@@ -111,7 +111,7 @@ static void omap2_clk_fixed_enable(struct clk *clk) ...@@ -111,7 +111,7 @@ static void omap2_clk_fixed_enable(struct clk *clk)
/* Enables clock without considering parent dependencies or use count /* Enables clock without considering parent dependencies or use count
* REVISIT: Maybe change this to use clk->enable like on omap1? * REVISIT: Maybe change this to use clk->enable like on omap1?
*/ */
static int omap2_clk_enable(struct clk * clk) static int _omap2_clk_enable(struct clk * clk)
{ {
u32 regval32; u32 regval32;
...@@ -150,7 +150,7 @@ static void omap2_clk_fixed_disable(struct clk *clk) ...@@ -150,7 +150,7 @@ static void omap2_clk_fixed_disable(struct clk *clk)
} }
/* Disables clock without considering parent dependencies or use count */ /* Disables clock without considering parent dependencies or use count */
static void omap2_clk_disable(struct clk *clk) static void _omap2_clk_disable(struct clk *clk)
{ {
u32 regval32; u32 regval32;
...@@ -167,23 +167,23 @@ static void omap2_clk_disable(struct clk *clk) ...@@ -167,23 +167,23 @@ static void omap2_clk_disable(struct clk *clk)
__raw_writel(regval32, clk->enable_reg); __raw_writel(regval32, clk->enable_reg);
} }
static int omap2_clk_use(struct clk *clk) static int omap2_clk_enable(struct clk *clk)
{ {
int ret = 0; int ret = 0;
if (clk->usecount++ == 0) { if (clk->usecount++ == 0) {
if (likely((u32)clk->parent)) if (likely((u32)clk->parent))
ret = omap2_clk_use(clk->parent); ret = omap2_clk_enable(clk->parent);
if (unlikely(ret != 0)) { if (unlikely(ret != 0)) {
clk->usecount--; clk->usecount--;
return ret; return ret;
} }
ret = omap2_clk_enable(clk); ret = _omap2_clk_enable(clk);
if (unlikely(ret != 0) && clk->parent) { if (unlikely(ret != 0) && clk->parent) {
omap2_clk_unuse(clk->parent); omap2_clk_disable(clk->parent);
clk->usecount--; clk->usecount--;
} }
} }
...@@ -191,12 +191,12 @@ static int omap2_clk_use(struct clk *clk) ...@@ -191,12 +191,12 @@ static int omap2_clk_use(struct clk *clk)
return ret; return ret;
} }
static void omap2_clk_unuse(struct clk *clk) static void omap2_clk_disable(struct clk *clk)
{ {
if (clk->usecount > 0 && !(--clk->usecount)) { if (clk->usecount > 0 && !(--clk->usecount)) {
omap2_clk_disable(clk); _omap2_clk_disable(clk);
if (likely((u32)clk->parent)) if (likely((u32)clk->parent))
omap2_clk_unuse(clk->parent); omap2_clk_disable(clk->parent);
} }
} }
...@@ -873,7 +873,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) ...@@ -873,7 +873,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
reg = (void __iomem *)src_sel; reg = (void __iomem *)src_sel;
if (clk->usecount > 0) if (clk->usecount > 0)
omap2_clk_disable(clk); _omap2_clk_disable(clk);
/* Set new source value (previous dividers if any in effect) */ /* Set new source value (previous dividers if any in effect) */
reg_val = __raw_readl(reg) & ~(field_mask << src_off); reg_val = __raw_readl(reg) & ~(field_mask << src_off);
...@@ -884,7 +884,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) ...@@ -884,7 +884,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
__raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL); __raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL);
if (clk->usecount > 0) if (clk->usecount > 0)
omap2_clk_enable(clk); _omap2_clk_enable(clk);
clk->parent = new_parent; clk->parent = new_parent;
...@@ -999,8 +999,6 @@ static int omap2_select_table_rate(struct clk * clk, unsigned long rate) ...@@ -999,8 +999,6 @@ static int omap2_select_table_rate(struct clk * clk, unsigned long rate)
static struct clk_functions omap2_clk_functions = { static struct clk_functions omap2_clk_functions = {
.clk_enable = omap2_clk_enable, .clk_enable = omap2_clk_enable,
.clk_disable = omap2_clk_disable, .clk_disable = omap2_clk_disable,
.clk_use = omap2_clk_use,
.clk_unuse = omap2_clk_unuse,
.clk_round_rate = omap2_clk_round_rate, .clk_round_rate = omap2_clk_round_rate,
.clk_set_rate = omap2_clk_set_rate, .clk_set_rate = omap2_clk_set_rate,
.clk_set_parent = omap2_clk_set_parent, .clk_set_parent = omap2_clk_set_parent,
...@@ -1045,7 +1043,7 @@ static void __init omap2_disable_unused_clocks(void) ...@@ -1045,7 +1043,7 @@ static void __init omap2_disable_unused_clocks(void)
continue; continue;
printk(KERN_INFO "Disabling unused clock \"%s\"\n", ck->name); printk(KERN_INFO "Disabling unused clock \"%s\"\n", ck->name);
omap2_clk_disable(ck); _omap2_clk_disable(ck);
} }
} }
late_initcall(omap2_disable_unused_clocks); late_initcall(omap2_disable_unused_clocks);
...@@ -1120,10 +1118,10 @@ int __init omap2_clk_init(void) ...@@ -1120,10 +1118,10 @@ int __init omap2_clk_init(void)
* Only enable those clocks we will need, let the drivers * Only enable those clocks we will need, let the drivers
* enable other clocks as necessary * enable other clocks as necessary
*/ */
clk_use(&sync_32k_ick); clk_enable(&sync_32k_ick);
clk_use(&omapctrl_ick); clk_enable(&omapctrl_ick);
if (cpu_is_omap2430()) if (cpu_is_omap2430())
clk_use(&sdrc_ick); clk_enable(&sdrc_ick);
return 0; return 0;
} }
...@@ -24,7 +24,7 @@ static void omap2_propagate_rate(struct clk * clk); ...@@ -24,7 +24,7 @@ static void omap2_propagate_rate(struct clk * clk);
static void omap2_mpu_recalc(struct clk * clk); static void omap2_mpu_recalc(struct clk * clk);
static int omap2_select_table_rate(struct clk * clk, unsigned long rate); static int omap2_select_table_rate(struct clk * clk, unsigned long rate);
static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate); static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate);
static void omap2_clk_unuse(struct clk *clk); static void omap2_clk_disable(struct clk *clk);
static void omap2_sys_clk_recalc(struct clk * clk); static void omap2_sys_clk_recalc(struct clk * clk);
static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val); static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val);
static u32 omap2_clksel_get_divisor(struct clk *clk); static u32 omap2_clksel_get_divisor(struct clk *clk);
...@@ -859,7 +859,7 @@ static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */ ...@@ -859,7 +859,7 @@ static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */
static struct clk usb_l4_ick = { /* FS-USB interface clock */ static struct clk usb_l4_ick = { /* FS-USB interface clock */
.name = "usb_l4_ick", .name = "usb_l4_ick",
.parent = &core_ck, .parent = &core_l3_ck,
.flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP |
CONFIG_PARTICIPANT, CONFIG_PARTICIPANT,
...@@ -1045,7 +1045,7 @@ static struct clk gpt1_ick = { ...@@ -1045,7 +1045,7 @@ static struct clk gpt1_ick = {
.name = "gpt1_ick", .name = "gpt1_ick",
.parent = &l4_ck, .parent = &l4_ck,
.flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
.enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, /* Bit4 */ .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, /* Bit0 */
.enable_bit = 0, .enable_bit = 0,
.recalc = &omap2_followparent_recalc, .recalc = &omap2_followparent_recalc,
}; };
...@@ -1055,7 +1055,7 @@ static struct clk gpt1_fck = { ...@@ -1055,7 +1055,7 @@ static struct clk gpt1_fck = {
.parent = &func_32k_ck, .parent = &func_32k_ck,
.flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
CM_WKUP_SEL1, CM_WKUP_SEL1,
.enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, /* Bit0 */
.enable_bit = 0, .enable_bit = 0,
.src_offset = 0, .src_offset = 0,
.recalc = &omap2_followparent_recalc, .recalc = &omap2_followparent_recalc,
...@@ -1065,7 +1065,7 @@ static struct clk gpt2_ick = { ...@@ -1065,7 +1065,7 @@ static struct clk gpt2_ick = {
.name = "gpt2_ick", .name = "gpt2_ick",
.parent = &l4_ck, .parent = &l4_ck,
.flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X,
.enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit4 */ .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit4 */
.enable_bit = 0, .enable_bit = 0,
.recalc = &omap2_followparent_recalc, .recalc = &omap2_followparent_recalc,
}; };
...@@ -1839,7 +1839,7 @@ static struct clk usb_fck = { ...@@ -1839,7 +1839,7 @@ static struct clk usb_fck = {
static struct clk usbhs_ick = { static struct clk usbhs_ick = {
.name = "usbhs_ick", .name = "usbhs_ick",
.parent = &l4_ck, .parent = &core_l3_ck,
.flags = CLOCK_IN_OMAP243X, .flags = CLOCK_IN_OMAP243X,
.enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE,
.enable_bit = 6, .enable_bit = 6,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment