On Mon, 26 Oct 2026, Navon John Lukose wrote: > Every runtime resume of an LPSS controller waits the default 10 ms > d3hot_delay in pci_power_up() for the D3hot->D0 transition. Nothing > misbehaves, but the wait adds latency. On Arrow Lake-H (Lenovo Yoga Pro 7 > 14IAH10) the touchpad's I2C controller autosuspends after 1 s idle, and > the i2c-hid interrupt handler for the first report afterwards takes > 12.6-14.4 ms. > > The PCI spec asks for those 10 ms, but Mika Westerberg pointed out that > the LPSS controllers are not really PCI-connected devices, so the delay > is likely not needed. intel-lpss-pci already clears d3cold_delay, > quirk_remove_d3hot_delay() drops d3hot_delay on several older Intel > chipsets, Cherry Trail among them, and commit 815b4448198f ("i3c: > mipi-i3c-hci-pci: Set d3hot_delay to 0 for Intel controllers") does the > same for the Intel I3C controllers. > > Set d3hot_delay to 0 as well. The handler above then takes 1.1-1.9 ms, > with no I2C errors. Only Arrow Lake-H was tested. The new text reads much better, thanks, Reviewed-by: Ilpo Järvinen -- i. > Acked-by: Mika Westerberg > Signed-off-by: Navon John Lukose > --- > > Notes: > Changes in v3: > - Describe the delay first, then why it is not needed (Ilpo). > - Give Mika's full name (Ilpo). > - Add Mika's Acked-by. > > Changes in v2: > - Drop RFC and add the review discussion to the changelog (Andy). > > v2: https://lore.kernel.org/r/20261022040453.45797-1-navonjohnlukose@gmail.com > RFC: https://lore.kernel.org/r/20261016114347.23633-1-navonjohnlukose@gmail.com > > drivers/mfd/intel-lpss-pci.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/mfd/intel-lpss-pci.c b/drivers/mfd/intel-lpss-pci.c > index 63a3fb58566..5672f033e5c 100644 > --- a/drivers/mfd/intel-lpss-pci.c > +++ b/drivers/mfd/intel-lpss-pci.c > @@ -70,6 +70,7 @@ static int intel_lpss_pci_probe(struct pci_dev *pdev, > info->quirks = quirk_pci_info->driver_data; > > pdev->d3cold_delay = 0; > + pdev->d3hot_delay = 0; > > /* Probably it is enough to set this for iDMA capable devices only */ > pci_set_master(pdev); >