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?
Attachment:
signature.asc
Description: PGP signature