Commit 046b7c31 authored by Tero Kristo's avatar Tero Kristo

ARM: OMAP2+: clock: remove clkdm_control static boolean from code

clkdm_control is used to determine, whether clocks should trigger a
clockdomain transition when they are enabled/disabled. Keep this
functionality intact, but replace this with a clk_features flag
which can be initialized during boot if needed.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
parent 6f0051da
...@@ -61,14 +61,6 @@ u16 cpu_mask; ...@@ -61,14 +61,6 @@ u16 cpu_mask;
#define OMAP3PLUS_DPLL_FINT_MIN 32000 #define OMAP3PLUS_DPLL_FINT_MIN 32000
#define OMAP3PLUS_DPLL_FINT_MAX 52000000 #define OMAP3PLUS_DPLL_FINT_MAX 52000000
/*
* clkdm_control: if true, then when a clock is enabled in the
* hardware, its clockdomain will first be enabled; and when a clock
* is disabled in the hardware, its clockdomain will be disabled
* afterwards.
*/
static bool clkdm_control = true;
struct clk_iomap { struct clk_iomap {
struct regmap *regmap; struct regmap *regmap;
void __iomem *mem; void __iomem *mem;
...@@ -287,19 +279,6 @@ void omap2_init_clk_clkdm(struct clk_hw *hw) ...@@ -287,19 +279,6 @@ void omap2_init_clk_clkdm(struct clk_hw *hw)
} }
} }
/**
* omap2_clk_disable_clkdm_control - disable clkdm control on clk enable/disable
*
* Prevent the OMAP clock code from calling into the clockdomain code
* when a hardware clock in that clockdomain is enabled or disabled.
* Intended to be called at init time from omap*_clk_init(). No
* return value.
*/
void __init omap2_clk_disable_clkdm_control(void)
{
clkdm_control = false;
}
/** /**
* omap2_clk_dflt_find_companion - find companion clock to @clk * omap2_clk_dflt_find_companion - find companion clock to @clk
* @clk: struct clk * to find the companion clock of * @clk: struct clk * to find the companion clock of
...@@ -384,6 +363,12 @@ int omap2_dflt_clk_enable(struct clk_hw *hw) ...@@ -384,6 +363,12 @@ int omap2_dflt_clk_enable(struct clk_hw *hw)
struct clk_hw_omap *clk; struct clk_hw_omap *clk;
u32 v; u32 v;
int ret = 0; int ret = 0;
bool clkdm_control;
if (ti_clk_get_features()->flags & TI_CLK_DISABLE_CLKDM_CONTROL)
clkdm_control = false;
else
clkdm_control = true;
clk = to_clk_hw_omap(hw); clk = to_clk_hw_omap(hw);
...@@ -457,7 +442,8 @@ void omap2_dflt_clk_disable(struct clk_hw *hw) ...@@ -457,7 +442,8 @@ void omap2_dflt_clk_disable(struct clk_hw *hw)
omap2_clk_writel(v, clk, clk->enable_reg); omap2_clk_writel(v, clk, clk->enable_reg);
/* No OCP barrier needed here since it is a disable operation */ /* No OCP barrier needed here since it is a disable operation */
if (clkdm_control && clk->clkdm) if (!(ti_clk_get_features()->flags & TI_CLK_DISABLE_CLKDM_CONTROL) &&
clk->clkdm)
clkdm_clk_disable(clk->clkdm, hw->clk); clkdm_clk_disable(clk->clkdm, hw->clk);
} }
...@@ -490,7 +476,7 @@ int omap2_clkops_enable_clkdm(struct clk_hw *hw) ...@@ -490,7 +476,7 @@ int omap2_clkops_enable_clkdm(struct clk_hw *hw)
pr_err("%s: %s: should use dflt_clk_enable ?!\n", __func__, pr_err("%s: %s: should use dflt_clk_enable ?!\n", __func__,
__clk_get_name(hw->clk)); __clk_get_name(hw->clk));
if (!clkdm_control) { if (ti_clk_get_features()->flags & TI_CLK_DISABLE_CLKDM_CONTROL) {
pr_err("%s: %s: clkfw-based clockdomain control disabled ?!\n", pr_err("%s: %s: clkfw-based clockdomain control disabled ?!\n",
__func__, __clk_get_name(hw->clk)); __func__, __clk_get_name(hw->clk));
return 0; return 0;
...@@ -528,7 +514,7 @@ void omap2_clkops_disable_clkdm(struct clk_hw *hw) ...@@ -528,7 +514,7 @@ void omap2_clkops_disable_clkdm(struct clk_hw *hw)
pr_err("%s: %s: should use dflt_clk_disable ?!\n", __func__, pr_err("%s: %s: should use dflt_clk_disable ?!\n", __func__,
__clk_get_name(hw->clk)); __clk_get_name(hw->clk));
if (!clkdm_control) { if (ti_clk_get_features()->flags & TI_CLK_DISABLE_CLKDM_CONTROL) {
pr_err("%s: %s: clkfw-based clockdomain control disabled ?!\n", pr_err("%s: %s: clkfw-based clockdomain control disabled ?!\n",
__func__, __clk_get_name(hw->clk)); __func__, __clk_get_name(hw->clk));
return; return;
......
...@@ -180,8 +180,6 @@ struct clksel { ...@@ -180,8 +180,6 @@ struct clksel {
#define OMAP4XXX_EN_DPLL_FRBYPASS 0x6 #define OMAP4XXX_EN_DPLL_FRBYPASS 0x6
#define OMAP4XXX_EN_DPLL_LOCKED 0x7 #define OMAP4XXX_EN_DPLL_LOCKED 0x7
void __init omap2_clk_disable_clkdm_control(void);
void omap2_clk_print_new_rates(const char *hfclkin_ck_name, void omap2_clk_print_new_rates(const char *hfclkin_ck_name,
const char *core_ck_name, const char *core_ck_name,
const char *mpu_ck_name); const char *mpu_ck_name);
......
...@@ -330,6 +330,7 @@ struct ti_clk_features { ...@@ -330,6 +330,7 @@ struct ti_clk_features {
#define TI_CLK_DPLL_HAS_FREQSEL BIT(0) #define TI_CLK_DPLL_HAS_FREQSEL BIT(0)
#define TI_CLK_DPLL4_DENY_REPROGRAM BIT(1) #define TI_CLK_DPLL4_DENY_REPROGRAM BIT(1)
#define TI_CLK_DISABLE_CLKDM_CONTROL BIT(2)
void ti_clk_setup_features(struct ti_clk_features *features); void ti_clk_setup_features(struct ti_clk_features *features);
const struct ti_clk_features *ti_clk_get_features(void); const struct ti_clk_features *ti_clk_get_features(void);
......
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