linux/drivers/pinctrl
Stephen Warren 7ecdb16fe6 pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c
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: Stephen Warren <swarren@nvidia.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2012-03-05 11:20:50 +01:00
..
core.c pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c 2012-03-05 11:20:50 +01:00
core.h pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c 2012-03-05 11:20:50 +01:00
Kconfig pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
Makefile pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinconf.c pinctrl: fix and simplify locking 2012-03-05 11:19:49 +01:00
pinconf.h pinctrl: Re-order pinconf.[ch] to match each-other 2012-02-22 17:59:32 +01:00
pinctrl-coh901.c pinctrl: spawn U300 pinctrl from the COH901 GPIO 2012-02-22 17:59:33 +01:00
pinctrl-mmp2.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa3xx.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa3xx.h pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa168.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-pxa910.c pinctrl: enable pinmux for mmp series 2012-02-01 19:42:35 +01:00
pinctrl-sirf.c pinctrl: remove unnecessary max pin number 2012-01-03 09:10:09 +01:00
pinctrl-u300.c pinctrl: spawn U300 pinctrl from the COH901 GPIO 2012-02-22 17:59:33 +01:00
pinmux.c pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c 2012-03-05 11:20:50 +01:00
pinmux.h pinctrl: refactor struct pinctrl handling in core.c vs pinmux.c 2012-03-05 11:20:50 +01:00