• Stephen Warren's avatar
    pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c · 7ecdb16f
    Stephen Warren authored
    This change separates two aspects of struct pinctrl:
    
    a) The data representation of the parsed mapping table, into:
    
       1) The top-level struct pinctrl object, a single entity returned
          by pinctrl_get().
    
       2) The parsed version of each mapping table entry, struct
          pinctrl_setting, of which there is one per mapping table entry.
    
    b) The code that handles this; the code for (1) above is in core.c, and
       the code to parse/execute each entry in (2) above is in pinmux.c, while
       the iteration over multiple settings is lifted to core.c.
    
    This will allow the following future changes:
    
    1) pinctrl_get() API rework, so that struct pinctrl represents all states
       for the device, and the device can select between them without calling
       put()/get() again.
    
    2) To support that, a struct pinctrl_state object will be inserted into
       the data model between the struct pinctrl and struct pinctrl_setting.
    
    3) The mapping table will be extended to allow specification of pin config
       settings too. To support this, struct pinctrl_setting will be enhanced
       to store either mux settings or config settings, and functions will be
       added to pinconf.c to parse/execute pin configuration settings.
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Acked-by: default avatarDong Aisheng <dong.aisheng@linaro.org>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    7ecdb16f
pinmux.c 12.6 KB