On Tue, Apr 23, 2024 at 04:16:36PM -0400, Frank Li wrote: > On Tue, Apr 23, 2024 at 11:03:59PM +0300, Andy Shevchenko wrote: > > On Tue, Apr 23, 2024 at 03:56:56PM -0400, Frank Li wrote: > > > On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote: > > > > ... > > > > > > + imx6_pcie->reset_gpiod = > > > > + devm_gpiod_get_optional(dev, "reset", > > > > + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW); > > > > + if (IS_ERR(imx6_pcie->reset_gpiod)) > > > > + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod), > > > > + "unable to get reset gpio\n"); > > > > > > Small problem here. err message "unable to get reset gpio\n" will print > > > when -EPROBE_DEFER happen. EPROBE_DEFER is quite common when use i2c > > > expand gpio chip. > > > > I'm not sure how you come to this conclusion. Can you elaborate, please? > > P.S> I do not see a problem as described. > > If i2c gpio-expander driver have not load when imx6_pcie probe, I supposed > devm_gpiod_get_optional() will return -EPROBE_DEFER, > > if (IS_ERR(imx6_pcie->reset_gpiod)) should be true. then dev_err_probe() > will run and print "unable to get reset gpio\n" with error code > -EPROBE_DEFER. Sorry for that. dev_err_probe() already consider this. Please forget my comments. dev_err_probe() { if (err != -EPROBE_DEFER) { dev_err(dev, "error %pe: %pV", ERR_PTR(err), &vaf); } } So: Reviewed-by: Frank Li <Frank.Li@xxxxxxx> > > driver framework will retry imx6_pcie probe again when a new device appear. > it may retry sevial times utill i2c gpio-expander driver probe success or > timeout. > > Frank > > > > > -- > > With Best Regards, > > Andy Shevchenko > > > >