From 99a0d8ba4c7c50245060dd2fcaff1327cfa31037 Mon Sep 17 00:00:00 2001 From: Richard Genoud Date: Mon, 25 Mar 2013 15:47:21 +0100 Subject: [PATCH] --- yaml --- r: 362988 b: refs/heads/master c: d3cee8305b48316ea416a73c763be3cb04bbc82b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/pinctrl/core.c | 32 +++++++++++++++++++------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index ad81fc7d3ea6..859fe5acb625 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2c9abf808a81e2b2b61f6e05ec1554669aab3b19 +refs/heads/master: d3cee8305b48316ea416a73c763be3cb04bbc82b diff --git a/trunk/drivers/pinctrl/core.c b/trunk/drivers/pinctrl/core.c index f8a632dc877b..971234599d72 100644 --- a/trunk/drivers/pinctrl/core.c +++ b/trunk/drivers/pinctrl/core.c @@ -794,6 +794,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; @@ -801,19 +819,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); }