]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: microchip: Add INTx and MSI event num to struct plda_event
authorMinda Chen <minda.chen@starfivetech.com>
Thu, 28 Mar 2024 09:18:26 +0000 (17:18 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 28 May 2024 16:15:29 +0000 (11:15 -0500)
The INTx and MSI interrupt event num is different across platforms, so
add two event num fields in struct plda_event.

Link: https://lore.kernel.org/linux-pci/20240328091835.14797-14-minda.chen@starfivetech.com
Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
Signed-off-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
drivers/pci/controller/plda/pcie-microchip-host.c
drivers/pci/controller/plda/pcie-plda.h

index d9205c8b38eb4c9b058eb9294d9ae2dc76e6d6c1..e4c58f5133d8bccb7ddebf3d7767ac2e75948140 100644 (file)
@@ -817,6 +817,8 @@ static int mc_request_event_irq(struct plda_pcie_rp *plda, int event_irq,
 
 static const struct plda_event mc_event = {
        .request_event_irq = mc_request_event_irq,
+       .intx_event        = EVENT_LOCAL_PM_MSI_INT_INTX,
+       .msi_event         = EVENT_LOCAL_PM_MSI_INT_MSI,
 };
 
 static int plda_pcie_init_irq_domains(struct plda_pcie_rp *port)
@@ -960,7 +962,7 @@ static int plda_init_interrupts(struct platform_device *pdev,
        }
 
        intx_irq = irq_create_mapping(port->event_domain,
-                                     EVENT_LOCAL_PM_MSI_INT_INTX);
+                                     event->intx_event);
        if (!intx_irq) {
                dev_err(dev, "failed to map INTx interrupt\n");
                return -ENXIO;
@@ -970,7 +972,7 @@ static int plda_init_interrupts(struct platform_device *pdev,
        irq_set_chained_handler_and_data(intx_irq, plda_handle_intx, port);
 
        msi_irq = irq_create_mapping(port->event_domain,
-                                    EVENT_LOCAL_PM_MSI_INT_MSI);
+                                    event->msi_event);
        if (!msi_irq)
                return -ENXIO;
 
index a1543f0725df9708be3c00ba5882b547f92627f0..ddfabcf4864793f7d84f58f9106a5a2d02c0761f 100644 (file)
@@ -130,6 +130,8 @@ struct plda_pcie_rp {
 struct plda_event {
        int (*request_event_irq)(struct plda_pcie_rp *pcie,
                                 int event_irq, int event);
+       int intx_event;
+       int msi_event;
 };
 
 void plda_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,