Messages in this thread | | | Date | Wed, 7 Aug 2013 18:23:22 +0200 | Subject | Re: [PATCH] pinctrl: pinmux: Don't free pins requested by other devices | From | Linus Walleij <> |
| |
On Wed, Jul 17, 2013 at 7:31 AM, Sonic Zhang <sonic.adi@gmail.com> wrote:
I'd like Stephen and Axel to have a look at this as well...
> From: Sonic Zhang <sonic.zhang@analog.com> > > in pinmux_disable_setting after current device fails to request > the same pins. > > Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
I don't quite understand the patch. Can you provide more context?
> diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c > index 88cc509..9ebcf3b 100644 > --- a/drivers/pinctrl/pinmux.c > +++ b/drivers/pinctrl/pinmux.c > @@ -482,13 +482,14 @@ void pinmux_disable_setting(struct pinctrl_setting const *setting) > pins[i]); > continue; > } > + /* And release the pins */ > + if (desc->mux_usecount && > + !strcmp(desc->mux_owner, setting->dev_name)) > + pin_free(pctldev, pins[i], NULL); > + > desc->mux_setting = NULL; > } > > - /* And release the pins */ > - for (i = 0; i < num_pins; i++) > - pin_free(pctldev, pins[i], NULL); > -
For pinmux_disable_setting() to inspect desc->mux_usecount seems assymetric. This is something pin_free() should do, shouldn't it?
Should not this codepath be kept and a change made inside pin_free() for the check above instead?
Yours, Linus Walleij
| |