From 694c31f9900ad05ad349f4b7227150d9de6ab171 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 3 Aug 2017 08:53:13 +0200 Subject: bsp/imx: New BSP Update #3090. --- c/src/lib/libbsp/arm/imx/startup/bspstart.c | 60 +++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 c/src/lib/libbsp/arm/imx/startup/bspstart.c (limited to 'c/src/lib/libbsp/arm/imx/startup/bspstart.c') diff --git a/c/src/lib/libbsp/arm/imx/startup/bspstart.c b/c/src/lib/libbsp/arm/imx/startup/bspstart.c new file mode 100644 index 0000000000..eb2ba29a3e --- /dev/null +++ b/c/src/lib/libbsp/arm/imx/startup/bspstart.c @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#include +#include +#include +#include +#include + +#include + +uint32_t bsp_fdt_map_intr(uint32_t intr) +{ + return intr + 32; +} + +void arm_generic_timer_get_config( + uint32_t *frequency, + uint32_t *irq +) +{ + const void *fdt; + int node; + int len; + const uint32_t *val; + + fdt = bsp_fdt_get(); + node = fdt_path_offset(fdt, "/timer"); + + val = fdt_getprop(fdt, node, "clock-frequency", &len); + if (val != NULL && len >= 4) { + *frequency = fdt32_to_cpu(val[0]); + } else { + bsp_fatal(IMX_FATAL_GENERIC_TIMER_FREQUENCY); + } + + val = fdt_getprop(fdt, node, "interrupts", &len); + if (val != NULL && len >= 8) { + /* FIXME: Figure out how Linux gets a proper IRQ number */ + *irq = 16 + fdt32_to_cpu(val[1]); + } else { + bsp_fatal(IMX_FATAL_GENERIC_TIMER_IRQ); + } +} + +void bsp_start(void) +{ + bsp_interrupt_initialize(); +} -- cgit v1.2.3