pinctrl: API changes to support multiple states per device
authorStephen Warren <swarren@nvidia.com>
Fri, 2 Mar 2012 20:05:47 +0000 (13:05 -0700)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 5 Mar 2012 10:22:59 +0000 (11:22 +0100)
commit6e5e959dde0d92d177f035652aeaa77f9330c9c6
treec2d874df6a1c591b558a17591a1c8fbc2ba7a1e1
parent0e3db173e2b9fd3b82246516e72c17763eb5f98d
pinctrl: API changes to support multiple states per device

The API model is changed from:

p = pinctrl_get(dev, "state1");
pinctrl_enable(p);
...
pinctrl_disable(p);
pinctrl_put(p);
p = pinctrl_get(dev, "state2");
pinctrl_enable(p);
...
pinctrl_disable(p);
pinctrl_put(p);

to this:

p = pinctrl_get(dev);
s1 = pinctrl_lookup_state(p, "state1");
s2 = pinctrl_lookup_state(p, "state2");
pinctrl_select_state(p, s1);
...
pinctrl_select_state(p, s2);
...
pinctrl_put(p);

This allows devices to directly transition between states without
disabling the pin controller programming and put()/get()ing the
configuration data each time. This model will also better suit pinconf
programming, which doesn't have a concept of "disable".

The special-case hogging feature of pin controllers is re-written to use
the regular APIs instead of special-case code. Hence, the pinmux-hogs
debugfs file is removed; see the top-level pinctrl-handles files for
equivalent data.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Dong Aisheng <dong.aisheng@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/pinctrl.txt
arch/arm/mach-u300/core.c
drivers/pinctrl/core.c
drivers/pinctrl/core.h
drivers/tty/serial/sirfsoc_uart.c
include/linux/pinctrl/consumer.h
include/linux/pinctrl/machine.h