On Tue, Sep 13, 2016 at 9:13 AM, Deepak <deepak_das@xxxxxxxxxx> wrote: > strict pin controller returns -EINVAL in case of pin request which > is already claimed by somebody else. > Following is the sequence of calling pin_request() from > pinctrl_bind_pins():- > pinctrl_bind_pins()->pinctrl_select_state()->pinmux_enable_setting()-> > pin_request() > > But pinctrl_bind_pins() only returns -EPROBE_DEFER which makes device > driver probe successful even if the pin request is rejected by the pin > controller subsystem. > > This commit modifies pinctrl_bind_pins() to return error if the pin is > rejected by pin control subsystem. > > Signed-off-by: Deepak Das <deepak_das@xxxxxxxxxx> Aha > /* Only return deferrals */ > - if (ret != -EPROBE_DEFER) > + if ((ret != -EPROBE_DEFER) && (ret != -EINVAL)) > ret = 0; I rewrote this when applying, like this: - /* Only return deferrals */ - if (ret != -EPROBE_DEFER) - ret = 0; + /* Return deferrals */ + if (ret == -EPROBE_DEFER) + return ret; + if (ret == -EINVAL) { + dev_err(dev, "could not initialize pin control state\n"); + return ret; + } + /* We ignore errors like -ENOENT meaning no pinctrl state */ - return ret; + return 0; Can you confim that this works for you too? Yours, Linus Walleij -- 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