On 21/02/2018 17:02, Wolfram Sang wrote:
On Wed, Feb 21, 2018 at 04:56:36PM +0800, Phil Reid wrote:
On 21/02/2018 16:41, Wolfram Sang wrote:
On Wed, Feb 21, 2018 at 04:38:10PM +0800, Phil Reid wrote:
On 21/02/2018 16:31, Wolfram Sang wrote:
On Sat, Feb 17, 2018 at 10:58:43PM +0200, Andy Shevchenko wrote:
GPIO library can return -ENOSYS for the failed request.
Instead of failing ->probe() in this case override error code to 0.
I wonder if the code wouldn't be much easier if
i2c_dw_init_recovery_info() was simply returning void? Or just give a
warning in the log but not bail out of probe()?
You need to handle EPROBE_DEFER.
Right. Then we should probably encode that explicitly?
I think this will handle all cases correctly.
gpio = devm_gpiod_get_optional(dev->dev, "scl", GPIOD_OUT_HIGH);
if (IS_ERR_OR_NULL(gpio))
return PTR_ERR_OR_ZERO(gpio);
My logic at the time was that scl is not optional for the i2c recovery.
But it's optional form the driver point of view.
The core returns NULL for that call if GPIO is not selected.
And NULL if ENOENT was returned by the inner gpiod_get when GPIO is selected.
Let me know if you want a patch.
My preference would still be to encode that only for -EPROBE_DEFER we
bail out of probe and for every other error, we simply don't do bus
recovery. I think it's way more understandable to say what error we are
interested in instead of masking all those out we are not interested in.
Or?
I would think all the other errors are probably something that needs to be investigated.
eg: incorrect GPIO flags on the dt binding etc.
--
Regards
Phil Reid