Re: [PATCH v2 3/3] pinctrl / gpio: Introduce .set_config() callback for GPIO chips

From: Johan Hovold
Date: Tue Jan 24 2017 - 08:45:31 EST


On Tue, Jan 24, 2017 at 02:57:56PM +0200, Mika Westerberg wrote:
> On Tue, Jan 24, 2017 at 01:53:53PM +0100, Linus Walleij wrote:
> > On Tue, Jan 24, 2017 at 12:11 PM, Mika Westerberg
> > <mika.westerberg@xxxxxxxxxxxxxxx> wrote:
> > > On Mon, Jan 23, 2017 at 06:11:07PM +0100, Johan Hovold wrote:
> > >> On Mon, Jan 23, 2017 at 03:34:34PM +0300, Mika Westerberg wrote:
> > >> > Currently we already have two pin configuration related callbacks
> > >> > available for GPIO chips .set_single_ended() and .set_debounce(). In
> > >> > future we expect to have even more, which does not scale well if we need
> > >> > to add yet another callback to the GPIO chip structure for each possible
> > >> > configuration parameter.
> > >> >
> > >> > Better solution is to reuse what we already have available in the
> > >> > generic pinconf.
> > >> >
> > >> > To support this, we introduce a new .set_config() callback for GPIO
> > >> > chips. The callback takes a single packed pin configuration value as
> > >> > parameter. This can then be extended easily beyond what is currently
> > >> > supported by just adding new types to the generic pinconf enum.
> > >> >
> > >> > If the GPIO driver is backed up by a pinctrl driver the GPIO driver can
> > >> > just assign gpiochip_generic_config() (introduced in this patch) to
> > >> > .set_config and that will take care configuration requests are directed
> > >> > to the pinctrl driver.
> > >> >
> > >> > We then convert the existing drivers over .set_config() and finally
> > >> > remove the .set_single_ended() and .set_debounce() callbacks.
> > >> >
> > >> > Suggested-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> > >> > Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> > >> For greybus and USB serial:
> >
> > >>
> > >> Acked-by: Johan Hovold <johan@xxxxxxxxxx>
> > >
> > > Thanks!
> > >
> > >> Note however that this patch fails to apply to linux-next (conflicts in
> > >> pinctrl as well as staging).
> > >
> > > Indeed, it does. I did the series on top of v4.10-rc5 but looks like
> > > there are some changes in linux-next that I missed.
> > >
> > > I'll rebase the series on top of linux-next and resend.
> >
> > If the conflicts are just with the GPIO tree then the "devel" branch
> > in the GPIO tree is what you should base it on.
>
> OK.
>
> > If there are conflicts with other trees including pinctrl it should
> > probably be based on v4.10-rcN and end up in my face, in this case
> > maybe I should just make an immutable branch in the GPIO tree and
> > pull to both itself and pincontrol and resolve the conflicts if they are
> > clashing.
>
> The only conflict I noticed when rebased the series on top of today's
> linux-next was due to 7f2e9de736e7 ("staging: greybus: fix checkpatch
> unsigned warnings").

Good, that's the one I knew about. But I also got another conflict
against pinctrl when applying on top of f9dd6f6cc63c ("Add linux-next
specific files for 20170123"):

Applying: pinctrl / gpio: Introduce .set_config() callback for GPIO chips
error: patch failed: drivers/pinctrl/pinctrl-amd.c:756
error: drivers/pinctrl/pinctrl-amd.c: patch does not apply
error: patch failed: drivers/staging/greybus/gpio.c:474
error: drivers/staging/greybus/gpio.c: patch does not apply
Patch failed at 0001 pinctrl / gpio: Introduce .set_config() callback for GPIO chips

Johan