pinctrl: Pass all configs to driver on pin_config_set()
authorMark Brown <broonie@linaro.org>
Fri, 4 Apr 2014 16:16:57 +0000 (17:16 +0100)
committerMark Brown <broonie@linaro.org>
Fri, 4 Apr 2014 19:20:07 +0000 (20:20 +0100)
commitbaeae2041e14d5b7a272b9941b88fb56d716f643
tree8a2bd88c14b481c8b255d77f35cfbc74152eef36
parentedfee6033b566c1985b1d56129140733a1c599d1
pinctrl: Pass all configs to driver on pin_config_set()

When setting pin configuration in the pinctrl framework, pin_config_set() or
pin_config_group_set() is called in a loop to set one configuration at a time
for the specified pin or group.

This patch 1) removes the loop and 2) changes the API to pass the whole pin
config array to the driver.  It is now up to the driver to loop through the
configs.  This allows the driver to potentially combine configs and reduce the
number of writes to pin config registers.

All c files changed have been build-tested to verify the change compiles and
that the corresponding .o is successfully generated.

[For LSK this has been modified such that the old API is still present and
instead a new pinconf_set_bulk() callback has been added in order to avoid
breaking other users in the stable kernel -- broonie]

Signed-off-by: Sherman Yin <syin@broadcom.com>
Reviewed-by: Christian Daudt <csd@broadcom.com>
Reviewed-by: Matt Porter <matt.porter@linaro.org>
Tested-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
(cherry picked from commit 03b054e9696c3cbd3d5905ec96da15acd0a2fe8d)
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/pinctrl/pinconf.c
include/linux/pinctrl/pinconf.h