• Thierry Reding's avatar
    gpio: Add Avionic Design N-bit GPIO expander support · 5e969a40
    Thierry Reding authored
    This commit adds a driver for the Avionic Design N-bit GPIO expander.
    The expander provides a variable number of GPIO pins with interrupt
    support.
    
    Changes in v2:
    - allow building the driver as a module
    - assign of_node unconditionally
    - use linear mapping IRQ domain
    - properly cleanup IRQ domain
    - add OF device table and annotate device tables
    - emulate rising and falling edge triggers
    - increase #gpio-cells to 2
    - drop support for !OF
    - use IS_ENABLED to conditionalize DEBUG_FS code
    
    Changes in v3:
    - make IRQ support runtime configurable (interrupt-controller property)
    - drop interrupt-controller and #interrupt-cells from DT binding
    - add inline to_adnp() function to wrap container_of() macro
    - consistently use adnp as name for struct adnp variables
    - remove irq_mask_cur and rename irq_mask to irq_enable
    - fix a subtle deadlock in adnp_gpio_direction_output()
    - remove dynamic allocations from debugfs code
    - rename regs to num_regs to avoid confusion
    - annotate non-trivial code with comments
    - don't acquire mutex in adnp_gpio_get()
    - assume NO_IRQ == 0
    
    Cc: Grant Likely <grant.likely@secretlab.ca>
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: Linus Walleij <linus.walleij@stericsson.com>
    Cc: linux-kernel@vger.kernel.org
    Acked-by: default avatarRob Herring <rob.herring@calxeda.com>
    Signed-off-by: default avatarThierry Reding <thierry.reding@avionic-design.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    5e969a40
gpio-adnp.c 13.4 KB