]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
i3c: mipi-i3c-hci-pci: Enable MSI support
authorAdrian Hunter <adrian.hunter@intel.com>
Tue, 6 Jan 2026 16:44:10 +0000 (18:44 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Wed, 14 Jan 2026 14:53:33 +0000 (15:53 +0100)
Enable MSI support by using pci_alloc_irq_vectors() to request all
supported IRQ types.  Do not call pci_free_irq_vectors() because for
resource-managed devices (those initialized with pcim_enable_device()),
IRQ vector allocation is automatically managed. See
pci_setup_msi_context() and pcim_setup_msi_release() for details.

Note: The current documentation for pci_alloc_irq_vectors() does not
mention this behavior.

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

index 8ade911e3835876239e8ca51553f12084ba8ea0f..0fd3587671e13320959e8e46fb8af797a5733cb9 100644 (file)
@@ -203,6 +203,10 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci,
 
        pci_set_master(pci);
 
+       ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_ALL_TYPES);
+       if (ret < 0)
+               return ret;
+
        memset(&res, 0, sizeof(res));
 
        res[0].flags = IORESOURCE_MEM;
@@ -210,8 +214,8 @@ static int mipi_i3c_hci_pci_probe(struct pci_dev *pci,
        res[0].end = pci_resource_end(pci, 0);
 
        res[1].flags = IORESOURCE_IRQ;
-       res[1].start = pci->irq;
-       res[1].end = pci->irq;
+       res[1].start = pci_irq_vector(hci->pci, 0);
+       res[1].end = res[1].start;
 
        dev_id = ida_alloc(&mipi_i3c_hci_pci_ida, GFP_KERNEL);
        if (dev_id < 0)