Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3cee830 authored by Richard Genoud's avatar Richard Genoud Committed by Linus Walleij
Browse files

pinctrl: create pinctrl_free_setting function



This prepares the implementation of pinctrl_select_state_locked() free code.

No functionnal change.

Signed-off-by: default avatarRichard Genoud <richard.genoud@gmail.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 2c9abf80
Loading
Loading
Loading
Loading
+19 −13
Original line number Original line Diff line number Diff line
@@ -794,16 +794,12 @@ struct pinctrl *pinctrl_get(struct device *dev)
}
}
EXPORT_SYMBOL_GPL(pinctrl_get);
EXPORT_SYMBOL_GPL(pinctrl_get);


static void pinctrl_put_locked(struct pinctrl *p, bool inlist)
static void pinctrl_free_setting(bool disable_setting,
				 struct pinctrl_setting *setting)
{
{
	struct pinctrl_state *state, *n1;
	struct pinctrl_setting *setting, *n2;

	list_for_each_entry_safe(state, n1, &p->states, node) {
		list_for_each_entry_safe(setting, n2, &state->settings, node) {
	switch (setting->type) {
	switch (setting->type) {
	case PIN_MAP_TYPE_MUX_GROUP:
	case PIN_MAP_TYPE_MUX_GROUP:
				if (state == p->state)
		if (disable_setting)
			pinmux_disable_setting(setting);
			pinmux_disable_setting(setting);
		pinmux_free_setting(setting);
		pinmux_free_setting(setting);
		break;
		break;
@@ -814,6 +810,16 @@ static void pinctrl_put_locked(struct pinctrl *p, bool inlist)
	default:
	default:
		break;
		break;
	}
	}
}

static void pinctrl_put_locked(struct pinctrl *p, bool inlist)
{
	struct pinctrl_state *state, *n1;
	struct pinctrl_setting *setting, *n2;

	list_for_each_entry_safe(state, n1, &p->states, node) {
		list_for_each_entry_safe(setting, n2, &state->settings, node) {
			pinctrl_free_setting(state == p->state, setting);
			list_del(&setting->node);
			list_del(&setting->node);
			kfree(setting);
			kfree(setting);
		}
		}