Messages in this thread | | | Date | Wed, 11 Jan 2017 10:31:06 -0800 | From | Tony Lindgren <> | Subject | Re: [PATCH 1/5] pinctrl: core: Use delayed work for hogs |
| |
* Tony Lindgren <tony@atomide.com> [170111 08:29]: > * Linus Walleij <linus.walleij@linaro.org> [170111 07:34]: > > On Tue, Jan 10, 2017 at 8:19 PM, Tony Lindgren <tony@atomide.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
| |