Re: [PATCH v12] i2c: designware: defer probe if child GpioInt controllers are not bound
Hardik Prakash <[email protected]>
| Newsgroups | org.kernel.vger.linux-i2c,org.kernel.vger.linux-gpio |
|---|---|
| Message-ID | <CANTFpSVGQikgNUgwPW6hCEvCP+FWRJ3Me1jg-Uea=K2JZ4tc9Q@mail.gmail.com> |
On Fri, 17 Jul 2026, Andy Shevchenko wrote: > It's utterly wrong patch. Actually this whole saga shows how AI wastes > more time than gains a productivity. > ... > So, make sure v13 is a real patch. I am sorry for the bad patch. I will take some time to ensure all of the feedback from v10, v11, v12 is properly incorporated and that v13 is a proper patch. On Fri, 17 Jul 2026, Andy Shevchenko wrote: > But this is wrong. It's a patch over v11 (basically it's a diff v11..v12). For the next patch, should I carry the Ack over, given the underlying content didn't change? Thanks, Hardik On Fri, 17 Jul 2026 at 00:25, Andy Shevchenko <[email protected]> wrote: > > On Thu, Jul 16, 2026 at 05:00:55PM +0530, Hardik Prakash wrote: > > I2C controllers may have child devices with GpioInt resources that > > depend on GPIO controllers being fully initialized. If the I2C > > controller probes and enumerates children before the referenced GPIO > > controller has completed probe, GPIO interrupts may not be properly > > configured, leading to device failures. > > > > On Lenovo Yoga 7 14AGP11, the WACF2200 touchscreen (child of > > AMDI0010:02) has a GpioInt resource pointing to GPIO 157 on the > > pinctrl-amd controller (AMDI0030:00). When i2c-designware probes > > AMDI0010:02 before pinctrl-amd finishes initializing, I2C transactions > > fail with lost arbitration errors: > > > > 0.285952 amd_gpio_probe: registering gpiochip <- GPIO chip visible > > 0.287121 amd_gpio_probe: requesting parent IRQ <- probe still running > > 0.301454 AMDI0010:02 dw_i2c_plat_probe: start <- races here > > 2.348157 lost arbitration > > > > Add a dependency check that walks ACPI child devices and defers probe > > until any referenced GPIO controller is bound. > > It's utterly wrong patch. Actually this whole saga shows how AI wastes > more time than gains a productivity. > > ... > > > gpio_dev = gpio_device_to_device(gdev)->parent; > > - scoped_guard(device, gpio_dev) { > > - if (!device_is_bound(gpio_dev)) > > - return -EPROBE_DEFER; /* controller not bound yet: abort walk */ > > - } > > > + guard(device)(gpio_dev); > > When use guard()(), make sure it has a blank lines before and after, so it's > visible as a separate entity. > > > + if (!device_is_bound(gpio_dev)) > > + return -EPROBE_DEFER; /* controller not bound yet: abort walk */ > > > > ... > > So, make sure v13 is a real patch. > > -- > With Best Regards, > Andy Shevchenko > >