From ce28d601c947de8ff6af0ce632f1d1c685a1d3e2 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 28 Sep 2017 10:03:44 +0200 Subject: bsp/imx: Add imx_get_reg_of_node() Update #3090. --- c/src/lib/libbsp/arm/imx/console/console-config.c | 10 +--------- c/src/lib/libbsp/arm/imx/include/bsp.h | 2 ++ c/src/lib/libbsp/arm/imx/startup/bspstart.c | 13 +++++++++++++ 3 files changed, 16 insertions(+), 9 deletions(-) (limited to 'c/src/lib/libbsp/arm/imx') 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, -- cgit v1.2.3