summaryrefslogtreecommitdiff
path: root/arch/arm/mach-omap2/prm_common.c
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2014-10-22 16:15:36 +0400
committerTero Kristo <t-kristo@ti.com>2015-03-27 11:53:30 +0300
commit9f029b1579b2dfe291006e5bfe8e7d0c4ef20828 (patch)
treeba0f8c8e987ebf637a8f87df83c38606e018365f /arch/arm/mach-omap2/prm_common.c
parent3a3e1c88362429ca3a6ef84d232e56b197294ce0 (diff)
downloadlinux-9f029b1579b2dfe291006e5bfe8e7d0c4ef20828.tar.xz
ARM: OMAP2+: clock: move clock provider infrastructure to clock driver
Splits the clock provider init out of the PRM driver and moves it to clock driver. This is needed so that once the PRCM drivers are separated, they can logically just access the clock driver not needing to go through common PRM code. This would be wrong in the case of control module for example. Signed-off-by: Tero Kristo <t-kristo@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2/prm_common.c')
-rw-r--r--arch/arm/mach-omap2/prm_common.c36
1 files changed, 8 insertions, 28 deletions
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 8ec52012f85d..1bfd00e10f76 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -677,25 +677,6 @@ static const struct of_device_id omap_prcm_dt_match_table[] = {
{ }
};
-static struct clk_hw_omap memmap_dummy_ck = {
- .flags = MEMMAP_ADDRESSING,
-};
-
-static u32 prm_clk_readl(void __iomem *reg)
-{
- return omap2_clk_readl(&memmap_dummy_ck, reg);
-}
-
-static void prm_clk_writel(u32 val, void __iomem *reg)
-{
- omap2_clk_writel(val, &memmap_dummy_ck, reg);
-}
-
-static struct ti_clk_ll_ops omap_clk_ll_ops = {
- .clk_readl = prm_clk_readl,
- .clk_writel = prm_clk_writel,
-};
-
/**
* omap_prcm_init - low level init for the PRCM drivers
*
@@ -708,8 +689,7 @@ int __init omap_prcm_init(void)
void __iomem *mem;
const struct of_device_id *match;
const struct omap_prcm_init_data *data;
-
- ti_clk_ll_ops = &omap_clk_ll_ops;
+ int ret;
for_each_matching_node_and_match(np, omap_prcm_dt_match_table, &match) {
data = match->data;
@@ -718,8 +698,9 @@ int __init omap_prcm_init(void)
if (!mem)
return -ENOMEM;
- clk_memmaps[data->index] = mem;
- ti_dt_clk_init_provider(np, data->index);
+ ret = omap2_clk_provider_init(np, data->index, mem);
+ if (ret)
+ return ret;
}
return 0;
@@ -727,11 +708,10 @@ int __init omap_prcm_init(void)
void __init omap3_prcm_legacy_iomaps_init(void)
{
- ti_clk_ll_ops = &omap_clk_ll_ops;
-
- clk_memmaps[TI_CLKM_CM] = cm_base + OMAP3430_IVA2_MOD;
- clk_memmaps[TI_CLKM_PRM] = prm_base + OMAP3430_IVA2_MOD;
- clk_memmaps[TI_CLKM_SCRM] = omap_ctrl_base_get();
+ omap2_clk_legacy_provider_init(TI_CLKM_CM, cm_base + OMAP3430_IVA2_MOD);
+ omap2_clk_legacy_provider_init(TI_CLKM_PRM,
+ prm_base + OMAP3430_IVA2_MOD);
+ omap2_clk_legacy_provider_init(TI_CLKM_SCRM, omap_ctrl_base_get());
}
static int __init prm_late_init(void)