• Charulatha V's avatar
    omap: GPIO module enable/disable · 058af1ea
    Charulatha V authored
    This patch disables a GPIO module when all pins of a GPIO
    module are inactive (clock gating forced at module level) and
    enables the module when any gpio in the module is requested.
    
    The module is enabled only when "mod_usage" indicates that no GPIO
    in that  module is currently active and the GPIO being requested
    is the 1st one to be active in that module.
    
    Each module would be disabled in omap_gpio_free() API when all
    GPIOs in a particular module becomes inactive. The module is
    re-enabled in omap_gpio_request() API when a GPIO is requested
    from the module that was previously disabled.
    
    Since individual GPIO's bookkeeping is added in this patch
    via "mod_usage", the same is used in omap_set_gpio_debounce()
    & omap_set_gpio_debounce_time() APIs to ensure that the gpio being
    used is actually "requested" prior to being used (Nishant Menon's
    <nm@ti.comSuggestion)
    
    GPIO module level details are specific to hardware and hence
    introducing this patch in low level layer (plat-omap/gpio.c)
    Signed-off-by: default avatarCharulatha V <charu@ti.com>
    Acked-by: default avatarNishanth Menon <nm@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    058af1ea
gpio.c 59 KB