Thread (17 messages) 17 messages, 2 authors, 2023-09-01

Re: [PATCH v4 08/11] PCI: microchip: Move IRQ init functions to pcie-plda-host.c

From: Conor Dooley <conor.dooley@microchip.com>
Date: 2023-08-25 12:11:26
Also in: linux-pci, linux-riscv, lkml

Daire, can you look at this one too please?

On Fri, Aug 25, 2023 at 05:01:26PM +0800, Minda Chen wrote:
Move IRQ init functions to pcie-plda-host.c.
mc_handle_event() is merged to plda_handle_event().
Set most of the IRQ functions to static in pcie-plda-host.c

Signed-off-by: Minda Chen <minda.chen@starfivetech.com>
quoted hunk ↗ jump to hunk
-void plda_handle_event(struct irq_desc *desc)
+static void plda_handle_event(struct irq_desc *desc)
 {
 	struct plda_pcie_rp *port = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
@@ -264,14 +268,18 @@ void plda_handle_event(struct irq_desc *desc)
 
 	chained_irq_enter(chip, desc);
 
-	val = readl_relaxed(port->bridge_addr + ISTATUS_LOCAL);
-	origin = val;
-	val = val >> A_ATR_EVT_POST_ERR_SHIFT;
-	events |= val & 0xff;
-	if (origin & PM_MSI_INT_INTX_MASK)
-		events |= BIT(EVENT_PM_MSI_INT_INTX);
-	val = (origin >> PM_MSI_INT_MSI_SHIFT) & 0xf;
-	events |= val << EVENT_PM_MSI_INT_MSI;
+	if (port->ops && port->ops->get_events) {
I still don't love the dancing here. Can you just always register a
callback?

Thanks,
Conor.
+		events = port->ops->get_events(port);
+	} else {
+		val = readl_relaxed(port->bridge_addr + ISTATUS_LOCAL);
+		origin = val;
+		val = val >> A_ATR_EVT_POST_ERR_SHIFT;
+		events |= val & 0xff;
+		if (origin & PM_MSI_INT_INTX_MASK)
+			events |= BIT(EVENT_PM_MSI_INT_INTX);
+		val = (origin >> PM_MSI_INT_MSI_SHIFT) & 0xf;
+		events |= val << EVENT_PM_MSI_INT_MSI;
+	}
 
 	for_each_set_bit(bit, &events, port->num_events)
 		generic_handle_domain_irq(port->event_domain, bit);

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help