Message ID | 20180703221819.1825-1-jmkrzyszt@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2] gpiolib: Defer on non-DT find_chip_by_name() failure | expand |
On Wed, 4 Jul 2018 00:18:19 +0200 Janusz Krzysztofik <jmkrzyszt@gmail.com> wrote: > Avoid replication of error code conversion in non-DT GPIO consumers' > code by returning -EPROBE_DEFER from gpiod_find() in case a chip > identified by its label in a registered lookup table is not ready. > > See https://lkml.org/lkml/2018/5/30/176 for example case. > > Suggested-by: Boris Brezillon <boris.brezillon@bootlin.com> > Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> > Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com> > --- > Changelog > v2: fix typo (latar -> later) - thanks Boris and Andy for catching this > > I'm not sure if adding both Suggested-by: and Reviewed-by: heades both > with the same person name is in line with good practices, please remove > one if not. I don't think that's a problem. Suggesting a solution and agreeing on the implementation are 2 different things, so both are not mutually exclusive IMO. -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Jul 4, 2018 at 12:18 AM Janusz Krzysztofik <jmkrzyszt@gmail.com> wrote: > Avoid replication of error code conversion in non-DT GPIO consumers' > code by returning -EPROBE_DEFER from gpiod_find() in case a chip > identified by its label in a registered lookup table is not ready. > > See https://lkml.org/lkml/2018/5/30/176 for example case. > > Suggested-by: Boris Brezillon <boris.brezillon@bootlin.com> > Signed-off-by: Janusz Krzysztofik <jmkrzyszt@gmail.com> > Reviewed-by: Boris Brezillon <boris.brezillon@bootlin.com> > --- > Changelog > v2: fix typo (latar -> later) - thanks Boris and Andy for catching this Patch applied as the discussion seems to conclude this should work fine, I hope we will notice if it doesn't! Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e11a3bb03820..01295c03b315 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -3639,9 +3639,16 @@ static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id, chip = find_chip_by_name(p->chip_label); if (!chip) { - dev_err(dev, "cannot find GPIO chip %s\n", - p->chip_label); - return ERR_PTR(-ENODEV); + /* + * As the lookup table indicates a chip with + * p->chip_label should exist, assume it may + * still appear later and let the interested + * consumer be probed again or let the Deferred + * Probe infrastructure handle the error. + */ + dev_warn(dev, "cannot find GPIO chip %s, deferring\n", + p->chip_label); + return ERR_PTR(-EPROBE_DEFER); } if (chip->ngpio <= p->chip_hwnum) {