This prepares the implementation of pinctrl_select_state_locked() free code.

No functionnal change.

Signed-off-by: Richard Genoud <richard.gen...@gmail.com>
---
 drivers/pinctrl/core.c |   32 +++++++++++++++++++-------------
 1 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index b0de6e7..a28dcca 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -758,6 +758,24 @@ struct pinctrl *pinctrl_get(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(pinctrl_get);
 
+static void pinctrl_free_setting(bool disable_setting,
+                                struct pinctrl_setting *setting)
+{
+       switch (setting->type) {
+       case PIN_MAP_TYPE_MUX_GROUP:
+               if (disable_setting)
+                       pinmux_disable_setting(setting);
+               pinmux_free_setting(setting);
+               break;
+       case PIN_MAP_TYPE_CONFIGS_PIN:
+       case PIN_MAP_TYPE_CONFIGS_GROUP:
+               pinconf_free_setting(setting);
+               break;
+       default:
+               break;
+       }
+}
+
 static void pinctrl_put_locked(struct pinctrl *p, bool inlist)
 {
        struct pinctrl_state *state, *n1;
@@ -765,19 +783,7 @@ static void pinctrl_put_locked(struct pinctrl *p, bool 
inlist)
 
        list_for_each_entry_safe(state, n1, &p->states, node) {
                list_for_each_entry_safe(setting, n2, &state->settings, node) {
-                       switch (setting->type) {
-                       case PIN_MAP_TYPE_MUX_GROUP:
-                               if (state == p->state)
-                                       pinmux_disable_setting(setting);
-                               pinmux_free_setting(setting);
-                               break;
-                       case PIN_MAP_TYPE_CONFIGS_PIN:
-                       case PIN_MAP_TYPE_CONFIGS_GROUP:
-                               pinconf_free_setting(setting);
-                               break;
-                       default:
-                               break;
-                       }
+                       pinctrl_free_setting(state == p->state, setting);
                        list_del(&setting->node);
                        kfree(setting);
                }
-- 
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to