• Linus Walleij's avatar
    pinctrl/nomadik: implement pin multiplexing · dbfe8ca2
    Linus Walleij authored
    Implements basic pinmux for the Nomadik pin controller.
    
    The plan is to split the existing singular pin config interface
    nmk_config_pin(), nmk_config_pins(), that will configure muxing
    and other settings at the same time, into two interfaces
    by splitting the code in pinmux and pinctrl and eventually
    deleting the old interface and its helper functions when all
    users are gone.
    
    nmk_gpio_set_mode() and nmk_gpio_get_mode() are two older
    interfaces for just configuring muxing/altfunctions that
    will also be replaced in the end.
    
    We take some extra care to handle the glitch-avoidance here,
    but it is simpler now since there is only one altsetting per
    pingroup so we know immediately if we need to avoid altfunc
    C glitches for a certain group.
    
    As part of the makeover implement the .request() and .free()
    calls on the GPIO chips and have them call back into the
    pinctrl layer to reserve GPIOs.
    
    ChangeLog v1->v2:
    - Rebased on pinctrl-mergebase-20120418 so we get the latest
      driver infrastructure where function count is done by a fixed
      value and we can drop a few range checks since this is now
      handled by the core.
    - Include a GPIO muxing hunk erroneously part of the pin config
      patch.
    Acked-by: default avatarStephen Warren <swarren@wwwdotorg.org>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    dbfe8ca2
pinctrl-nomadik.c 40.9 KB