[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20170111183106.GY2630@atomide.com>
Date: Wed, 11 Jan 2017 10:31:06 -0800
From: Tony Lindgren <tony@...mide.com>
To: Linus Walleij <linus.walleij@...aro.org>
Cc: Geert Uytterhoeven <geert@...ux-m68k.org>,
Haojian Zhuang <haojian.zhuang@...aro.org>,
Masahiro Yamada <yamada.masahiro@...ionext.com>,
Grygorii Strashko <grygorii.strashko@...com>,
Nishanth Menon <nm@...com>,
"linux-gpio@...r.kernel.org" <linux-gpio@...r.kernel.org>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-omap@...r.kernel.org" <linux-omap@...r.kernel.org>,
Linux-Renesas <linux-renesas-soc@...r.kernel.org>
Subject: Re: [PATCH 1/5] pinctrl: core: Use delayed work for hogs
* Tony Lindgren <tony@...mide.com> [170111 08:29]:
> * Linus Walleij <linus.walleij@...aro.org> [170111 07:34]:
> > On Tue, Jan 10, 2017 at 8:19 PM, Tony Lindgren <tony@...mide.com> wrote:
> >
> > > Below is an experimental fix to intorduce pinctrl_start() that I've
> > > tested with pinctrl-single. Then we should probably make all pin controller
> > > drivers call pinctrl_start() to properly fix the issue of struct pinctrl_dev
> > > handle not being initialized before driver functions are called.
> >
> > Hm I guess that could work, but can we keep pinctrl_register() with the old
> > semantics and add a separate pinctrl_register_and_defer()
> > for those who just wanna start it later by a separate call?
> >
> > Then we don't need any special flags.
>
> OK I'll take a look.
>
> > > Or do you guys have any better ideas?
> >
> > Not really. So you mean revert the previous patch and apply something
> > like this instead?
>
> Let me first take a look to see if we can fix it by making drivers using
> GENERIC_PINCTRL_GROUPS or GENERIC_PINMUX_FUNCTIONS register with
> pinctrl_register_and_defer(). I'll post a patch for that today.
Yeah we can fix this by reverting the late_init parts of the earlier
attempt and introducing a new pinctrl_register_and_init() for controllers
to use:
extern int pinctrl_register_and_init(struct pinctrl_desc *pctldesc,
struct device *dev, void *driver_data,
struct pinctrl_dev **pctldev);
> Then maybe for v4.12 we can attempt to move all pin controller drivers
> to using it so we can fix the problem for good.
And that will also make converting existing drivers to use it later on
trivial.
Will post a patch shortly after some more testing.
Regards,
Tony
Powered by blists - more mailing lists