OMAP2 clock: drop CONFIG_PARTICIPANT clock flag

It turns out that the only purpose of the CONFIG_PARTICIPANT clock
flag is to prevent omap2_clk_set_rate() and omap2_clk_set_parent()
from being executed on clocks with that flag set.  The rate-changing
component can be more directly accomplished by dropping the .set_rate
and .round_rate function pointers from those CONFIG_PARTICIPANT struct
clks.  As far as the parent-changing component is concerned, it turns
out that none of the CONFIG_PARTICIPANT clocks have multiple parent
choices, so all that is necessary is for omap2_clk_set_parent() to
bail out early if the new parent is equal to the old parent.
Implement this change and get rid of the flag, which has always had a
confusing name (it appears to be a Kconfig option, falsely).

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Richard Woodruff <r-woodruff2@ti.com>
This commit is contained in:
Paul Walmsley 2010-02-22 22:09:16 -07:00
parent 17d092733d
commit 1a3377176b
3 changed files with 12 additions and 36 deletions

View File

@ -318,11 +318,6 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
pr_debug("clock: set_rate for clock %s to rate %ld\n", clk->name, rate); pr_debug("clock: set_rate for clock %s to rate %ld\n", clk->name, rate);
/* CONFIG_PARTICIPANT clocks are changed only in sets via the
rate table mechanism, driven by mpu_speed */
if (clk->flags & CONFIG_PARTICIPANT)
return -EINVAL;
/* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */ /* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */
if (clk->set_rate) if (clk->set_rate)
ret = clk->set_rate(clk, rate); ret = clk->set_rate(clk, rate);
@ -332,12 +327,12 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
{ {
if (clk->flags & CONFIG_PARTICIPANT)
return -EINVAL;
if (!clk->clksel) if (!clk->clksel)
return -EINVAL; return -EINVAL;
if (clk->parent == new_parent)
return 0;
return omap2_clksel_set_parent(clk, new_parent); return omap2_clksel_set_parent(clk, new_parent);
} }

View File

@ -426,15 +426,13 @@ static struct clk mpu_ck = { /* Control cpu */
.name = "mpu_ck", .name = "mpu_ck",
.ops = &clkops_null, .ops = &clkops_null,
.parent = &core_ck, .parent = &core_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "mpu_clkdm", .clkdm_name = "mpu_clkdm",
.init = &omap2_init_clksel_parent, .init = &omap2_init_clksel_parent,
.clksel_reg = OMAP_CM_REGADDR(MPU_MOD, CM_CLKSEL), .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, CM_CLKSEL),
.clksel_mask = OMAP24XX_CLKSEL_MPU_MASK, .clksel_mask = OMAP24XX_CLKSEL_MPU_MASK,
.clksel = mpu_clksel, .clksel = mpu_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* /*
@ -468,7 +466,7 @@ static struct clk dsp_fck = {
.name = "dsp_fck", .name = "dsp_fck",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_ck, .parent = &core_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "dsp_clkdm", .clkdm_name = "dsp_clkdm",
.enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN),
.enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT,
@ -476,8 +474,6 @@ static struct clk dsp_fck = {
.clksel_mask = OMAP24XX_CLKSEL_DSP_MASK, .clksel_mask = OMAP24XX_CLKSEL_DSP_MASK,
.clksel = dsp_fck_clksel, .clksel = dsp_fck_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* DSP interface clock */ /* DSP interface clock */
@ -498,13 +494,11 @@ static struct clk dsp_irate_ick = {
.name = "dsp_irate_ick", .name = "dsp_irate_ick",
.ops = &clkops_null, .ops = &clkops_null,
.parent = &dsp_fck, .parent = &dsp_fck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL),
.clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK, .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK,
.clksel = dsp_irate_ick_clksel, .clksel = dsp_irate_ick_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* 2420 only */ /* 2420 only */
@ -512,7 +506,6 @@ static struct clk dsp_ick = {
.name = "dsp_ick", /* apparently ipi and isp */ .name = "dsp_ick", /* apparently ipi and isp */
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &dsp_irate_ick, .parent = &dsp_irate_ick,
.flags = CONFIG_PARTICIPANT,
.enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_ICLKEN), .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_ICLKEN),
.enable_bit = OMAP2420_EN_DSP_IPI_SHIFT, /* for ipi */ .enable_bit = OMAP2420_EN_DSP_IPI_SHIFT, /* for ipi */
}; };
@ -522,7 +515,6 @@ static struct clk iva2_1_ick = {
.name = "iva2_1_ick", .name = "iva2_1_ick",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &dsp_irate_ick, .parent = &dsp_irate_ick,
.flags = CONFIG_PARTICIPANT,
.enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN),
.enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT,
}; };
@ -536,7 +528,7 @@ static struct clk iva1_ifck = {
.name = "iva1_ifck", .name = "iva1_ifck",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_ck, .parent = &core_ck,
.flags = CONFIG_PARTICIPANT | DELAYED_APP, .flags = DELAYED_APP,
.clkdm_name = "iva1_clkdm", .clkdm_name = "iva1_clkdm",
.enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN),
.enable_bit = OMAP2420_EN_IVA_COP_SHIFT, .enable_bit = OMAP2420_EN_IVA_COP_SHIFT,
@ -544,8 +536,6 @@ static struct clk iva1_ifck = {
.clksel_mask = OMAP2420_CLKSEL_IVA_MASK, .clksel_mask = OMAP2420_CLKSEL_IVA_MASK,
.clksel = dsp_fck_clksel, .clksel = dsp_fck_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* IVA1 mpu/int/i/f clocks are /2 of parent */ /* IVA1 mpu/int/i/f clocks are /2 of parent */
@ -599,14 +589,12 @@ static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */
.name = "core_l3_ck", .name = "core_l3_ck",
.ops = &clkops_null, .ops = &clkops_null,
.parent = &core_ck, .parent = &core_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "core_l3_clkdm", .clkdm_name = "core_l3_clkdm",
.clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1),
.clksel_mask = OMAP24XX_CLKSEL_L3_MASK, .clksel_mask = OMAP24XX_CLKSEL_L3_MASK,
.clksel = core_l3_clksel, .clksel = core_l3_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* usb_l4_ick */ /* usb_l4_ick */
@ -627,7 +615,7 @@ static struct clk usb_l4_ick = { /* FS-USB interface clock */
.name = "usb_l4_ick", .name = "usb_l4_ick",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_l3_ck, .parent = &core_l3_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "core_l4_clkdm", .clkdm_name = "core_l4_clkdm",
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
.enable_bit = OMAP24XX_EN_USB_SHIFT, .enable_bit = OMAP24XX_EN_USB_SHIFT,
@ -635,8 +623,6 @@ static struct clk usb_l4_ick = { /* FS-USB interface clock */
.clksel_mask = OMAP24XX_CLKSEL_USB_MASK, .clksel_mask = OMAP24XX_CLKSEL_USB_MASK,
.clksel = usb_l4_ick_clksel, .clksel = usb_l4_ick_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
/* /*
@ -763,7 +749,7 @@ static struct clk gfx_2d_fck = {
.name = "gfx_2d_fck", .name = "gfx_2d_fck",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_l3_ck, .parent = &core_l3_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "gfx_clkdm", .clkdm_name = "gfx_clkdm",
.enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN), .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN),
.enable_bit = OMAP24XX_EN_2D_SHIFT, .enable_bit = OMAP24XX_EN_2D_SHIFT,
@ -771,15 +757,12 @@ static struct clk gfx_2d_fck = {
.clksel_mask = OMAP_CLKSEL_GFX_MASK, .clksel_mask = OMAP_CLKSEL_GFX_MASK,
.clksel = gfx_fck_clksel, .clksel = gfx_fck_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
static struct clk gfx_ick = { static struct clk gfx_ick = {
.name = "gfx_ick", /* From l3 */ .name = "gfx_ick", /* From l3 */
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_l3_ck, .parent = &core_l3_ck,
.flags = CONFIG_PARTICIPANT,
.clkdm_name = "gfx_clkdm", .clkdm_name = "gfx_clkdm",
.enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN),
.enable_bit = OMAP_EN_GFX_SHIFT, .enable_bit = OMAP_EN_GFX_SHIFT,
@ -810,7 +793,7 @@ static struct clk mdm_ick = { /* used both as a ick and fck */
.name = "mdm_ick", .name = "mdm_ick",
.ops = &clkops_omap2_dflt_wait, .ops = &clkops_omap2_dflt_wait,
.parent = &core_ck, .parent = &core_ck,
.flags = DELAYED_APP | CONFIG_PARTICIPANT, .flags = DELAYED_APP,
.clkdm_name = "mdm_clkdm", .clkdm_name = "mdm_clkdm",
.enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN), .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN),
.enable_bit = OMAP2430_CM_ICLKEN_MDM_EN_MDM_SHIFT, .enable_bit = OMAP2430_CM_ICLKEN_MDM_EN_MDM_SHIFT,
@ -818,8 +801,6 @@ static struct clk mdm_ick = { /* used both as a ick and fck */
.clksel_mask = OMAP2430_CLKSEL_MDM_MASK, .clksel_mask = OMAP2430_CLKSEL_MDM_MASK,
.clksel = mdm_ick_clksel, .clksel = mdm_ick_clksel,
.recalc = &omap2_clksel_recalc, .recalc = &omap2_clksel_recalc,
.round_rate = &omap2_clksel_round_rate,
.set_rate = &omap2_clksel_set_rate
}; };
static struct clk mdm_osc_ck = { static struct clk mdm_osc_ck = {

View File

@ -195,7 +195,7 @@ extern const struct clkops clkops_null;
#define CLOCK_IDLE_CONTROL (1 << 7) #define CLOCK_IDLE_CONTROL (1 << 7)
#define CLOCK_NO_IDLE_PARENT (1 << 8) #define CLOCK_NO_IDLE_PARENT (1 << 8)
#define DELAYED_APP (1 << 9) /* Delay application of clock */ #define DELAYED_APP (1 << 9) /* Delay application of clock */
#define CONFIG_PARTICIPANT (1 << 10) /* Fundamental clock */ /* bit 10 is currently free */
#define ENABLE_ON_INIT (1 << 11) /* Enable upon framework init */ #define ENABLE_ON_INIT (1 << 11) /* Enable upon framework init */
#define INVERT_ENABLE (1 << 12) /* 0 enables, 1 disables */ #define INVERT_ENABLE (1 << 12) /* 0 enables, 1 disables */
/* bit 13 is currently free */ /* bit 13 is currently free */