From 3cfc31cb0c49218fa45b53867d38acf7cb60346d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 11 Jul 2017 14:53:42 +0200 Subject: dpaa: Set portal interrupt affinity --- linux/drivers/soc/fsl/qbman/bman.c | 16 ++++++++++++++++ linux/drivers/soc/fsl/qbman/qman.c | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'linux') diff --git a/linux/drivers/soc/fsl/qbman/bman.c b/linux/drivers/soc/fsl/qbman/bman.c index 29a30dcb..fec101c8 100644 --- a/linux/drivers/soc/fsl/qbman/bman.c +++ b/linux/drivers/soc/fsl/qbman/bman.c @@ -550,6 +550,22 @@ static int bman_create_portal(struct bman_portal *portal, dev_err(c->dev, "irq_set_affinity() failed\n"); goto fail_affinity; } +#else /* __rtems__ */ + { + rtems_status_code sc; + cpu_set_t cpu; + + sc = rtems_interrupt_server_move( + RTEMS_INTERRUPT_SERVER_DEFAULT, (uint32_t)c->irq, + (uint32_t)c->cpu); + BSD_ASSERT(sc == RTEMS_SUCCESSFUL); + + CPU_ZERO(&cpu); + CPU_SET(c->cpu, &cpu); + sc = rtems_interrupt_set_affinity((uint32_t)c->irq, + sizeof(cpu), &cpu); + BSD_ASSERT(sc == RTEMS_SUCCESSFUL); + } #endif /* __rtems__ */ /* Need RCR to be empty before continuing */ diff --git a/linux/drivers/soc/fsl/qbman/qman.c b/linux/drivers/soc/fsl/qbman/qman.c index bb6b6b86..acb3a1d9 100644 --- a/linux/drivers/soc/fsl/qbman/qman.c +++ b/linux/drivers/soc/fsl/qbman/qman.c @@ -1214,6 +1214,22 @@ static int qman_create_portal(struct qman_portal *portal, dev_err(c->dev, "irq_set_affinity() failed\n"); goto fail_affinity; } +#else /* __rtems__ */ + { + rtems_status_code sc; + cpu_set_t cpu; + + sc = rtems_interrupt_server_move( + RTEMS_INTERRUPT_SERVER_DEFAULT, (uint32_t)c->irq, + (uint32_t)c->cpu); + BSD_ASSERT(sc == RTEMS_SUCCESSFUL); + + CPU_ZERO(&cpu); + CPU_SET(c->cpu, &cpu); + sc = rtems_interrupt_set_affinity((uint32_t)c->irq, + sizeof(cpu), &cpu); + BSD_ASSERT(sc == RTEMS_SUCCESSFUL); + } #endif /* __rtems__ */ /* Need EQCR to be empty before continuing */ -- cgit v1.2.3