]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i3c: mipi-i3c-hci: Add PIO suspend and resume support
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 13 Jan 2026 07:26:54 +0000 (09:26 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 14 Jan 2026 16:21:10 +0000 (17:21 +0100)
Introduce helper functions to suspend and resume PIO operations.  These
are required to prepare for upcoming Runtime PM support, ensuring that
PIO state is properly managed during power transitions.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260113072702.16268-14-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/i3c/master/mipi-i3c-hci/pio.c

index 52d9f01d9ca9c24e713e713dd32a0898cf59a260..8e868e81acdaf424cbebe93acf57d0fe797ed42b 100644 (file)
@@ -190,6 +190,18 @@ static void __hci_pio_init(struct i3c_hci *hci, u32 *size_val_ptr)
        pio->enabled_irqs = STAT_ALL_ERRORS;
 }
 
+static void hci_pio_suspend(struct i3c_hci *hci)
+{
+       pio_reg_write(INTR_SIGNAL_ENABLE, 0);
+
+       i3c_hci_sync_irq_inactive(hci);
+}
+
+static void hci_pio_resume(struct i3c_hci *hci)
+{
+       __hci_pio_init(hci, NULL);
+}
+
 static int hci_pio_init(struct i3c_hci *hci)
 {
        struct hci_pio_data *pio;
@@ -1059,4 +1071,6 @@ const struct hci_io_ops mipi_i3c_hci_pio = {
        .request_ibi            = hci_pio_request_ibi,
        .free_ibi               = hci_pio_free_ibi,
        .recycle_ibi_slot       = hci_pio_recycle_ibi_slot,
+       .suspend                = hci_pio_suspend,
+       .resume                 = hci_pio_resume,
 };