Re: [PATCH V4 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability
Adrian Hunter <[email protected]>
| Newsgroups | dev.linux.lists.sashiko-reviews,org.infradead.lists.linux-i3c,org.kernel.vger.linux-pci |
|---|---|
| Organization | Intel Finland Oy, Registered Address: c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo, Business Identity Code: 0357606 - 4, Domiciled in Helsinki |
| Message-ID | <[email protected]> |
On 06/08/2026 16:54, [email protected] wrote: > Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: > - [Medium] The platform driver sets the I3C master `ibi_wakeup` flag but fails to propagate the wakeup state during system suspend for non-PCI platform devices, breaking IBI wakeup functionality. > -- > > --- Patch [14]: [PATCH V4 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability --- > commit 443a5c0d5859df8fbad91b6e456865274a7f7ca9 > Author: Adrian Hunter <[email protected]> > > i3c: mipi-i3c-hci: Advertise IBI wakeup capability > > This commit sets master->ibi_wakeup during probe when the associated system > device advertises wakeup capability. This allows the I3C core to mark > IBI-capable I3C devices as wakeup capable. > >> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c >> index f95da427d7a9e..06acf6cf5a0db 100644 >> --- a/drivers/i3c/master/mipi-i3c-hci/core.c >> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c > [ ... ] >> @@ -1180,6 +1181,9 @@ static int i3c_hci_probe(struct platform_device *pdev) >> if (hci->quirks & HCI_QUIRK_RPM_IBI_ALLOWED) >> hci->master.rpm_ibi_allowed = true; >> >> + if (device_can_wakeup(i3c_hci_sysdev(&pdev->dev))) >> + hci->master.ibi_wakeup = true; >> + > > [Severity: Medium] > If we advertise ibi_wakeup here for non-PCI platform devices, how does the > suspend path know to actually arm the system wakeup? > > While the PCI glue driver aggregates wakeup states by checking > i3c_master_has_wakeup_enabled_devs() during suspend, the native platform > suspend routine i3c_hci_suspend() does not appear to check this or enable > wakeups: > > drivers/i3c/master/mipi-i3c-hci/core.c:i3c_hci_suspend() { > struct i3c_hci *hci = dev_get_drvdata(dev); > > if (!(hci->quirks & HCI_QUIRK_RPM_ALLOWED)) > return 0; > > return pm_runtime_force_suspend(dev); > } > > Does this mean IBI wakeups will silently fail to wake the system for non-PCI > platform devices, or is there another mechanism handling the wakeup > propagation for them? It is assumed that platform firmware will not be amended to advertise controller wakeup capability before that is supported. > >> return i3c_master_register(&hci->master, &pdev->dev, &i3c_hci_ops, false); >> } >