summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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,