Hi,
On Mon, Sep 28, 2015 at 07:04:12AM -0500, Andreas Dannenberg wrote:
> On Sun, Sep 27, 2015 at 10:20:26PM +0200, Sebastian Reichel wrote:
> > On Fri, Sep 25, 2015 at 10:54:14AM -0500, Andreas Dannenberg wrote:
> > > @@ -651,15 +670,18 @@ static int bq24257_power_supply_init(struct
> > > bq24257_device *bq)
> > > return PTR_ERR_OR_ZERO(bq->charger);
> > > }
> > >
> > > -static int bq24257_pg_gpio_probe(struct bq24257_device *bq)
> > > +static void bq24257_pg_gpio_probe(struct bq24257_device *bq)
> > > {
> > > - bq->pg = devm_gpiod_get_index(bq->dev, BQ24257_PG_GPIO, 0, GPIOD_IN);
> > > + bq->pg = devm_gpiod_get_optional(bq->dev, BQ24257_PG_GPIO, GPIOD_IN);
> > > +
> > > if (IS_ERR(bq->pg)) {
> > > - dev_err(bq->dev, "could not probe PG pin\n");
> > > - return PTR_ERR(bq->pg);
> > > + dev_err(bq->dev, "error probing PG pin\n");
> > > + bq->pg = NULL;
> > > + return;
> > > }
> >
> > You should handle -EPROBE_DEFER here.
>
> Hi Sebastian. From having a quick look at the Kernel tree it seems like
> this error shouldn't get exposed to the user (which it doesn't since it
> would get zeroe'd out) and the error itself suggests that I should
> "retry" which none of the things I looked at in the Kernel through "git
> grep" seemed to do. So before making any assumptions I wanted to see if
> I'm missing something or you could give me any pointers how to proceed.If you return -EPROBE_DEFER from your driver's probe function, the driver probe will fail. In opposit to other error codes it will be marked for retry at a later point, though. You will get EPROBE_DEFER, if you try to access a GPIO from a not-yet initialized GPIO controller (e.g. if you load the charger driver before the gpio driver). Correct handling is simple: Just forward it, making sure, that all non-devm probed resources are correctly free'd. -- Sebastian
signature.asc
Description: PGP signature
