i3c: mipi-i3c-hci: Advertise IBI wakeup capability

Set master->ibi_wakeup during probe when the associated system device
advertises wakeup capability, allowing the I3C core to mark IBI-capable
I3C devices as wakeup capable.

Tweak the comment for i3c_hci_sysdev() to mention the new usage.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260807145638.168865-15-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
Adrian Hunter 2026-08-07 17:56:38 +03:00 committed by Alexandre Belloni
parent 842e46925e
commit 1421e948a3

View File

@ -119,12 +119,13 @@ static inline struct i3c_hci *to_i3c_hci(struct i3c_master_controller *m)
}
/**
* i3c_hci_sysdev() - Get the device to use for DMA
* i3c_hci_sysdev() - Get the device to use for DMA and system PM
* @dev: Device the HCI controller is bound to
*
* When an IOMMU is enabled, DMA API calls must use the device that IOMMU
* setup was done for. Under PCI enumeration that is the PCI device, not
* the "mipi-i3c-hci" platform device below it.
* the "mipi-i3c-hci" platform device below it. The same device owns
* system PM and wakeup configuration.
*
* Return: @dev's parent if it is a PCI device, otherwise @dev.
*/
@ -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;
return i3c_master_register(&hci->master, &pdev->dev, &i3c_hci_ops, false);
}