bcm27xx: bcm2712: backport RP1 interrupt affinity
[openwrt/staging/stintel.git] / target / linux / bcm27xx / patches-6.1 / 961-1-mfd-rp1-Support-interrupt-CPU-affinity.patch
1 From 877cf6ae71c8eb9315014b3b379d9519ae6401b4 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Wed, 3 Apr 2024 23:15:28 +0100
4 Subject: [PATCH 1/5] mfd: rp1: Support interrupt CPU affinity
5
6 See: https://github.com/raspberrypi/linux/issues/6077
7
8 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
9 ---
10 drivers/mfd/rp1.c | 9 +++++++++
11 1 file changed, 9 insertions(+)
12
13 --- a/drivers/mfd/rp1.c
14 +++ b/drivers/mfd/rp1.c
15 @@ -141,11 +141,20 @@ static int rp1_irq_set_type(struct irq_d
16 return ret;
17 }
18
19 +static int rp1_irq_set_affinity(struct irq_data *irqd, const struct cpumask *dest, bool force)
20 +{
21 + struct rp1_dev *rp1 = irqd->domain->host_data;
22 + struct irq_data *pcie_irqd = rp1->pcie_irqds[irqd->hwirq];
23 +
24 + return msi_domain_set_affinity(pcie_irqd, dest, force);
25 +}
26 +
27 static struct irq_chip rp1_irq_chip = {
28 .name = "rp1_irq_chip",
29 .irq_mask = rp1_mask_irq,
30 .irq_unmask = rp1_unmask_irq,
31 .irq_set_type = rp1_irq_set_type,
32 + .irq_set_affinity = rp1_irq_set_affinity,
33 };
34
35 static void rp1_chained_handle_irq(struct irq_desc *desc)