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. 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 > >