• Paul Walmsley's avatar
    OMAP2+: hwmod: upgrade per-hwmod mutex to a spinlock · dc6d1cda
    Paul Walmsley authored
    Change the per-hwmod mutex to a spinlock.  (The per-hwmod lock
    serializes most post-initialization hwmod operations such as enable,
    idle, and shutdown.)  Spinlocks are needed, because in some cases,
    hwmods must be enabled from timer interrupt disabled-context, such as
    an ISR.  The current use-case that is driving this is the OMAP GPIO
    block ISR: it can trigger interrupts even with its clocks disabled,
    but these clocks are needed for register accesses in the ISR to succeed.
    
    This patch also effectively reverts commit
    84824022 - this patch makes
    _omap_hwmod_enable() and _omap_hwmod_init() static, renames them back
    to _enable() and _idle(), and changes their callers to call the
    spinlocking versions.  Previously, since omap_hwmod_{enable,init}()
    attempted to take mutexes, these functions could not be called while
    the timer interrupt was disabled; but now that the functions use
    spinlocks and save and restore the IRQ state, it is appropriate to
    call them directly.
    
    Kevin Hilman <khilman@deeprootsystems.com> originally proposed this
    patch - thanks Kevin.
    Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
    Cc: Kevin Hilman <khilman@deeprootsystems.com>
    Cc: Benoît Cousson <b-cousson@ti.com>
    dc6d1cda
omap_hwmod.h 20.6 KB