mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 02:09:42 +00:00
pinctrl: single: Move test PCS_HAS_PINCONF in pcs_parse_bits_in_pinctrl_entry() to the beginning
The value of pcs->flags is not overwritten in function pcs_parse_bits_in_pinctrl_entry() and its subfunctions, so moving this check to the beginning of the function eliminates unnecessary rollback operations. Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> Reviewed-by: Tony Lindgren <tony@atomide.com> Link: https://lore.kernel.org/r/20210722033930.4034-3-thunder.leizhen@huawei.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
d789a490d3
commit
2ac48d0d48
1 changed files with 8 additions and 14 deletions
|
@ -1115,7 +1115,7 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,
|
|||
{
|
||||
const char *name = "pinctrl-single,bits";
|
||||
struct pcs_func_vals *vals;
|
||||
int rows, *pins, found = 0, res = -ENOMEM, i, fsel, gsel;
|
||||
int rows, *pins, found = 0, res = -ENOMEM, i, fsel;
|
||||
int npins_in_row;
|
||||
struct pcs_function *function = NULL;
|
||||
|
||||
|
@ -1125,6 +1125,11 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (PCS_HAS_PINCONF) {
|
||||
dev_err(pcs->dev, "pinconf not supported\n");
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
|
||||
npins_in_row = pcs->width / pcs->bits_per_pin;
|
||||
|
||||
vals = devm_kzalloc(pcs->dev,
|
||||
|
@ -1212,30 +1217,19 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,
|
|||
goto free_pins;
|
||||
}
|
||||
|
||||
gsel = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs);
|
||||
if (gsel < 0) {
|
||||
res = gsel;
|
||||
res = pinctrl_generic_add_group(pcs->pctl, np->name, pins, found, pcs);
|
||||
if (res < 0)
|
||||
goto free_function;
|
||||
}
|
||||
|
||||
(*map)->type = PIN_MAP_TYPE_MUX_GROUP;
|
||||
(*map)->data.mux.group = np->name;
|
||||
(*map)->data.mux.function = np->name;
|
||||
|
||||
if (PCS_HAS_PINCONF) {
|
||||
dev_err(pcs->dev, "pinconf not supported\n");
|
||||
res = -ENOTSUPP;
|
||||
goto free_pingroups;
|
||||
}
|
||||
|
||||
*num_maps = 1;
|
||||
mutex_unlock(&pcs->mutex);
|
||||
|
||||
return 0;
|
||||
|
||||
free_pingroups:
|
||||
pinctrl_generic_remove_group(pcs->pctl, gsel);
|
||||
*num_maps = 1;
|
||||
free_function:
|
||||
pinmux_generic_remove_function(pcs->pctl, fsel);
|
||||
free_pins:
|
||||
|
|
Loading…
Reference in a new issue