• Linus Walleij's avatar
    gpiolib: separation of pin concerns · 1e63d7b9
    Linus Walleij authored
    The fact that of_gpiochip_add_pin_range() and
    gpiochip_add_pin_range() share too much code is fragile and
    will invariably mean that bugs need to be fixed in two places
    instead of one.
    
    So separate the concerns of gpiolib.c and gpiolib-of.c and
    have the latter call the former as back-end. This is necessary
    also when going forward with other device descriptions such
    as ACPI.
    
    This is done by:
    
    - Adding a return code to gpiochip_add_pin_range() so we can
      reliably check whether this succeeds.
    
    - Get rid of the custom of_pinctrl_add_gpio_range() from
      pinctrl. Instead create of_pinctrl_get() to just retrive the
      pin controller per se from an OF node. This composite
      function was just begging to be deleted, it was way to
      purpose-specific.
    
    - Use pinctrl_dev_get_name() to get the name of the retrieved
      pin controller and use that to call back into the generic
      gpiochip_add_pin_range().
    
    Now the pin range is only allocated and tied to a pin
    controller from the core implementation in gpiolib.c.
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    1e63d7b9
gpiolib.c 46.9 KB