summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-09-13 07:00:57 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-09-22 14:32:37 +0200
commit05f9858ffde4cb7e8593fd609bb4e7c5dbf3b8bc (patch)
tree388feeeaa15cdfbb12d3c70cd4ed9d4018b9f44f
parentbsp/imx: Add SMP support (diff)
downloadrtems-05f9858ffde4cb7e8593fd609bb4e7c5dbf3b8bc.tar.bz2
bsps: Generalize bsp_fdt_map_intr()
Pass all interrupt cells to bsp_fdt_map_intr() since some platforms use an array to describe an interrupt. Update #3090.
-rw-r--r--c/src/lib/libbsp/arm/beagle/startup/bspstart.c4
-rw-r--r--c/src/lib/libbsp/arm/imx/console/console-config.c4
-rw-r--r--c/src/lib/libbsp/arm/imx/startup/bspstart.c4
-rw-r--r--c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c4
-rw-r--r--c/src/lib/libbsp/shared/include/fdt.h5
5 files changed, 12 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/arm/beagle/startup/bspstart.c b/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
index 3cc6935474..292b576aef 100644
--- a/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/beagle/startup/bspstart.c
@@ -29,7 +29,7 @@ void bsp_start(void)
printk("\nRTEMS Beagleboard: %s\n", type);
}
-uint32_t bsp_fdt_map_intr(uint32_t intr)
+uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells)
{
- return intr;
+ return intr[0];
}
diff --git a/c/src/lib/libbsp/arm/imx/console/console-config.c b/c/src/lib/libbsp/arm/imx/console/console-config.c
index a5b3682dd7..c9654685ab 100644
--- a/c/src/lib/libbsp/arm/imx/console/console-config.c
+++ b/c/src/lib/libbsp/arm/imx/console/console-config.c
@@ -86,7 +86,9 @@ static void imx_uart_init_context(
#ifdef CONSOLE_USE_INTERRUPTS
val = fdt_getprop(fdt, node, "interrupts", &len);
if (val != NULL && len >= 8) {
- ctx->irq = bsp_fdt_map_intr(fdt32_to_cpu(val[1]));
+ uint32_t cpu_val[2];
+ cpu_val[1] = fdt32_to_cpu(val[1]);
+ ctx->irq = bsp_fdt_map_intr(cpu_val, 2);
}
#endif
}
diff --git a/c/src/lib/libbsp/arm/imx/startup/bspstart.c b/c/src/lib/libbsp/arm/imx/startup/bspstart.c
index eb2ba29a3e..e28fe2bc48 100644
--- a/c/src/lib/libbsp/arm/imx/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/imx/startup/bspstart.c
@@ -20,9 +20,9 @@
#include <libfdt.h>
-uint32_t bsp_fdt_map_intr(uint32_t intr)
+uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells)
{
- return intr + 32;
+ return intr[1] + 32;
}
void arm_generic_timer_get_config(
diff --git a/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c b/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
index ec9507680d..859171dd30 100644
--- a/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
+++ b/c/src/lib/libbsp/powerpc/qoriq/startup/bspstart.c
@@ -205,7 +205,7 @@ void bsp_start(void)
#endif
}
-uint32_t bsp_fdt_map_intr(uint32_t intr)
+uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells)
{
- return intr - 16;
+ return intr[0] - 16;
}
diff --git a/c/src/lib/libbsp/shared/include/fdt.h b/c/src/lib/libbsp/shared/include/fdt.h
index bb71f7d03b..4ed05b136c 100644
--- a/c/src/lib/libbsp/shared/include/fdt.h
+++ b/c/src/lib/libbsp/shared/include/fdt.h
@@ -53,11 +53,12 @@ const void *bsp_fdt_get(void);
* This function is used by the libbsd to implement the OFW_BUS_MAP_INTR bus
* method.
*
- * @param[in] intr The FDT interrupt number.
+ * @param[in] intr The FDT interrupt number cells.
+ * @param[in] icells The FDT interrupt cell count.
*
* @return The interrupt vector of the FDT interrupt number.
*/
-uint32_t bsp_fdt_map_intr(uint32_t intr);
+uint32_t bsp_fdt_map_intr(const uint32_t *intr, size_t icells);
#ifdef __cplusplus
}