Skip to content
  • Mika Westerberg's avatar
    gpiolib: Allow GPIO chips to request their own GPIOs · 77c2d792
    Mika Westerberg authored
    
    
    Sometimes it is useful to allow GPIO chips themselves to request GPIOs they
    own through gpiolib API. One use case is ACPI ASL code that should be able
    to toggle GPIOs through GPIO operation regions.
    
    We can't use gpio_request() because it will pin the module to the kernel
    forever (it calls try_module_get()). To solve this we move module refcount
    manipulation to gpiod_request() and let __gpiod_request() handle the actual
    request. This changes the sequence a bit as now try_module_get() is called
    outside of gpio_lock (I think this is safe, try_module_get() handles
    serialization it needs already).
    
    Then we provide gpiolib internal functions gpiochip_request/free_own_desc()
    that do the same as gpio_request() but don't manipulate module refrence
    count. This allows the GPIO chip driver to request and free descriptors it
    owns without being pinned to the kernel forever.
    
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    77c2d792