提交 0a179eaa 编写于 作者: K Kevin Hilman 提交者: Paul Walmsley

ARM: OMAP2+: hwmod: use init-time function pointer for _init_clkdm

Rather than use runtime cpu_is* checking inside _init_clkdm, initialize
SoC specific function pointer at init time.
Signed-off-by: NKevin Hilman <khilman@ti.com>
[paul@pwsan.com: convert to use soc_ops function pointers; remove second para
 from commit message since soc_ops function pointers are now set during hwmod
 layer init]
Signed-off-by: NPaul Walmsley <paul@pwsan.com>
上级 b8249cf2
...@@ -185,6 +185,7 @@ struct omap_hwmod_soc_ops { ...@@ -185,6 +185,7 @@ struct omap_hwmod_soc_ops {
struct omap_hwmod_rst_info *ohri); struct omap_hwmod_rst_info *ohri);
int (*is_hardreset_asserted)(struct omap_hwmod *oh, int (*is_hardreset_asserted)(struct omap_hwmod *oh,
struct omap_hwmod_rst_info *ohri); struct omap_hwmod_rst_info *ohri);
int (*init_clkdm)(struct omap_hwmod *oh);
}; };
/* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */ /* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */
...@@ -1315,9 +1316,6 @@ static struct omap_hwmod *_lookup(const char *name) ...@@ -1315,9 +1316,6 @@ static struct omap_hwmod *_lookup(const char *name)
*/ */
static int _init_clkdm(struct omap_hwmod *oh) static int _init_clkdm(struct omap_hwmod *oh)
{ {
if (cpu_is_omap24xx() || cpu_is_omap34xx())
return 0;
if (!oh->clkdm_name) { if (!oh->clkdm_name) {
pr_warning("omap_hwmod: %s: no clkdm_name\n", oh->name); pr_warning("omap_hwmod: %s: no clkdm_name\n", oh->name);
return -EINVAL; return -EINVAL;
...@@ -1358,7 +1356,8 @@ static int _init_clocks(struct omap_hwmod *oh, void *data) ...@@ -1358,7 +1356,8 @@ static int _init_clocks(struct omap_hwmod *oh, void *data)
ret |= _init_main_clk(oh); ret |= _init_main_clk(oh);
ret |= _init_interface_clks(oh); ret |= _init_interface_clks(oh);
ret |= _init_opt_clks(oh); ret |= _init_opt_clks(oh);
ret |= _init_clkdm(oh); if (soc_ops.init_clkdm)
ret |= soc_ops.init_clkdm(oh);
if (!ret) if (!ret)
oh->_state = _HWMOD_STATE_CLKS_INITED; oh->_state = _HWMOD_STATE_CLKS_INITED;
...@@ -3569,6 +3568,7 @@ void __init omap_hwmod_init(void) ...@@ -3569,6 +3568,7 @@ void __init omap_hwmod_init(void)
soc_ops.assert_hardreset = _omap4_assert_hardreset; soc_ops.assert_hardreset = _omap4_assert_hardreset;
soc_ops.deassert_hardreset = _omap4_deassert_hardreset; soc_ops.deassert_hardreset = _omap4_deassert_hardreset;
soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted;
soc_ops.init_clkdm = _init_clkdm;
} else { } else {
WARN(1, "omap_hwmod: unknown SoC type\n"); WARN(1, "omap_hwmod: unknown SoC type\n");
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册