• Linus Walleij's avatar
    gpio: add a data pointer to gpio_chip · b08ea35a
    Linus Walleij authored
    This adds a void * pointer to gpio_chip so that driver can
    assign and retrieve some states. This is done to get rid of
    container_of() calls for gpio_chips embedded inside state
    containers, so we can remove the need to have the gpio_chip
    or later (planned) struct gpio_device be dynamically allocated
    at registration time, so that its struct device can be properly
    reference counted and not bound to its parent device (e.g.
    a platform_device) but instead live on after unregistration
    if it is opened by e.g. a char device or sysfs.
    
    The data is added with the new function gpiochip_add_data()
    and for compatibility we add static inline wrapper function
    gpiochip_add() that will call gpiochip_add_data() with
    NULL as argument. The latter will be removed once we have
    exorcised gpiochip_add() from the kernel.
    
    gpiochip_get_data() is added as a static inline accessor
    for drivers to quickly get their data out.
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    b08ea35a
gpiolib.c 68.7 KB