Skip to content
  • Rajendra Nayak's avatar
    ARM: omap: clk: add clk_prepare and clk_unprepare · 4d7cb45e
    Rajendra Nayak authored
    
    
    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: default avatarRajendra Nayak <rnayak@ti.com>
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    4d7cb45e