diff options
author | Rajendra Nayak <rnayak@ti.com> | 2012-09-22 02:24:16 -0600 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-09-22 10:50:01 -0600 |
commit | 4d7cb45ee823541632a3d50f57031ce9fd60e13f (patch) | |
tree | 8d5dbefa5d4140a26fa830b4985ae5e2d3d4d4db /arch/arm/mach-omap2/board-apollon.c | |
parent | a04bcc231c1bcfe7602bcb3e8d742ef796142275 (diff) | |
download | kernel_goldelico_gta04-4d7cb45ee823541632a3d50f57031ce9fd60e13f.zip kernel_goldelico_gta04-4d7cb45ee823541632a3d50f57031ce9fd60e13f.tar.gz kernel_goldelico_gta04-4d7cb45ee823541632a3d50f57031ce9fd60e13f.tar.bz2 |
ARM: omap: clk: add clk_prepare and clk_unprepare
As part of Common Clk Framework (CCF) the clk_enable() operation
was split into a clk_prepare() which could sleep, and a clk_enable()
which should never sleep. Similarly the clk_disable() was
split into clk_disable() and clk_unprepare(). This was
needed to handle complex cases where in a clk gate/ungate
would require a slow and a fast part to be implemented.
None of the clocks below seem to be in the 'complex' clocks
category and are just simple clocks which are enabled/disabled
through simple register writes.
Most of the instances also seem to be called in non-atomic
context which means its safe to move all of those from
using a clk_enable() to clk_prepare_enable() and clk_disable() to
clk_disable_unprepare().
For some others, mainly the ones handled through the hwmod framework
there is a possibility that they get called in either an atomic
or a non-atomic context.
The way these get handled below work only as long as clk_prepare
is implemented as a no-op (which is the case today) since this gets
called very early at boot while most subsystems are unavailable.
Hence these are marked with a *HACK* comment, which says we need
to re-visit these once we start doing something meaningful with
clk_prepare/clk_unprepare like doing voltage scaling or something
that involves i2c.
This is in preparation of OMAP moving to CCF.
Based on initial changes from Mike Turquette.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-apollon.c')
-rw-r--r-- | arch/arm/mach-omap2/board-apollon.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 3e2d76f..cea3aba 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c @@ -202,7 +202,7 @@ static inline void __init apollon_init_smc91x(void) return; } - clk_enable(gpmc_fck); + clk_prepare_enable(gpmc_fck); rate = clk_get_rate(gpmc_fck); eth_cs = APOLLON_ETH_CS; @@ -246,7 +246,7 @@ static inline void __init apollon_init_smc91x(void) gpmc_cs_free(APOLLON_ETH_CS); } out: - clk_disable(gpmc_fck); + clk_disable_unprepare(gpmc_fck); clk_put(gpmc_fck); } |