summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--linux/drivers/soc/fsl/qbman/bman.c16
-rw-r--r--linux/drivers/soc/fsl/qbman/qman.c16
2 files changed, 32 insertions, 0 deletions
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 */