On Tue, Oct 20, 2015 at 09:15:06PM -0700, Douglas Anderson wrote: > For pinctrl the "default" state is applied to pins before the driver's > probe function is called. This is normally a sensible thing to do, > but in some cases can cause problems. That's because the pins will > change state before the driver is given a chance to program how those > pins should behave. > > As an example you might have a regulator that is controlled by a PWM > (output high = high voltage, output low = low voltage). The firmware > might leave this pin as driven high. If we allow the driver core to > reconfigure this pin as a PWM pin before the PWM's probe function runs > then you might end up running at too low of a voltage while we probe. > > Let's introudce a new "init" state. If this is defined we'll set > pinctrl to this state before probe and then "default" after probe > (unless the driver explicitly changed states already). > > An alternative idea that was thought of was to use the pre-existing > "sleep" or "idle" states and add a boolean property that we should > start in that mode. This was not done because the "init" state is > needed for correctness and those other states are only present (and > only transitioned in to and out of) when (optional) power management > is enabled. > > Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx> > Acked-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Tested-by: Caesar Wang <wxt@xxxxxxxxxxxxxx> > --- > Changes in v3: > - Moved declarations to pinctrl/devinfo.h > - Fixed author/SoB > > Changes in v2: > - Added comment to pinctrl_init_done() as per Linus W. > > As mentioned in v2 repost, reposted after 1 year of no activity since > Caesar Wang found a use for this. See > <https://patchwork.kernel.org/patch/7444161/>. I hope it's OK that I > left Greg KH's Ack... The ack from me is fine. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html