summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-09-28 10:03:44 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-02 13:40:56 +0200
commitce28d601c947de8ff6af0ce632f1d1c685a1d3e2 (patch)
tree7559635f695e0747b97a8a224a34e467f1f0be4c
parentbsp/imx: Add imx_get_irq_of_node() (diff)
downloadrtems-ce28d601c947de8ff6af0ce632f1d1c685a1d3e2.tar.bz2
bsp/imx: Add imx_get_reg_of_node()
Update #3090.
-rw-r--r--c/src/lib/libbsp/arm/imx/console/console-config.c10
-rw-r--r--c/src/lib/libbsp/arm/imx/include/bsp.h2
-rw-r--r--c/src/lib/libbsp/arm/imx/startup/bspstart.c13
3 files changed, 16 insertions, 9 deletions
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 cdb4d12fae..a4c79a13b6 100644
--- a/c/src/lib/libbsp/arm/imx/console/console-config.c
+++ b/c/src/lib/libbsp/arm/imx/console/console-config.c
@@ -71,18 +71,10 @@ static void imx_uart_init_context(
)
{
int node;
- int len;
- const uint32_t *val;
rtems_termios_device_context_initialize(&ctx->base, "UART");
-
node = fdt_path_offset(fdt, serial);
-
- val = fdt_getprop(fdt, node, "reg", &len);
- if (val != NULL && len >= 4) {
- ctx->regs = (imx_uart *) fdt32_to_cpu(val[0]);
- }
-
+ ctx->regs = imx_get_reg_of_node(fdt, node);
#ifdef CONSOLE_USE_INTERRUPTS
ctx->irq = imx_get_irq_of_node(fdt, node, 0);
#endif
diff --git a/c/src/lib/libbsp/arm/imx/include/bsp.h b/c/src/lib/libbsp/arm/imx/include/bsp.h
index 3bde27547c..08b3127dba 100644
--- a/c/src/lib/libbsp/arm/imx/include/bsp.h
+++ b/c/src/lib/libbsp/arm/imx/include/bsp.h
@@ -41,6 +41,8 @@ extern "C" {
void arm_generic_timer_get_config(uint32_t *frequency, uint32_t *irq);
+void *imx_get_reg_of_node(const void *fdt, int node);
+
rtems_vector_number imx_get_irq_of_node(
const void *fdt,
int node,
diff --git a/c/src/lib/libbsp/arm/imx/startup/bspstart.c b/c/src/lib/libbsp/arm/imx/startup/bspstart.c
index 167dc9c8d5..046336655b 100644
--- a/c/src/lib/libbsp/arm/imx/startup/bspstart.c
+++ b/c/src/lib/libbsp/arm/imx/startup/bspstart.c
@@ -23,6 +23,19 @@
#define MAGIC_IRQ_OFFSET 32
+void *imx_get_reg_of_node(const void *fdt, int node)
+{
+ int len;
+ const uint32_t *val;
+
+ val = fdt_getprop(fdt, node, "reg", &len);
+ if (val == NULL || len < 4) {
+ return NULL;
+ }
+
+ return (void *) fdt32_to_cpu(val[0]);
+}
+
rtems_vector_number imx_get_irq_of_node(
const void *fdt,
int node,