From 65ab1cda10f26935cad2ba01426077079cd96af3 Mon Sep 17 00:00:00 2001 From: Christian Mauderer Date: Thu, 4 Feb 2021 14:27:50 +0100 Subject: bsps/arm/imxrt: Add FDT and FDT helper for QTMR Makes it simpler to access the QTMR in an application via a FDT name or link in an application specific FDT entry. --- bsps/arm/imxrt/include/fsl_qtmr.h | 34 +++++++++++++++++++++++++++++ bsps/arm/imxrt/include/imxrt/imxrt1050.dtsi | 24 ++++++++++++++++++++ 2 files changed, 58 insertions(+) (limited to 'bsps/arm/imxrt/include') diff --git a/bsps/arm/imxrt/include/fsl_qtmr.h b/bsps/arm/imxrt/include/fsl_qtmr.h index 589b9c3597..a675413f8d 100644 --- a/bsps/arm/imxrt/include/fsl_qtmr.h +++ b/bsps/arm/imxrt/include/fsl_qtmr.h @@ -8,6 +8,9 @@ #define _FSL_QTMR_H_ #include "fsl_common.h" +#ifdef __rtems__ +#include +#endif /* __rtems__ */ /*! * @addtogroup qtmr @@ -177,6 +180,37 @@ extern "C" { * @name Initialization and deinitialization * @{ */ +#ifdef __rtems__ +/*! + * @brief Return the timer base based on a FDT node. + * + * @param fdt Pointer to the fdt + * @param node The FDT node + * + * @return Pointer to the timer. NULL on error (for example if node isn't + * compatible). + */ +TMR_Type *QTMR_get_regs_from_fdt(const void *fdt, int node); + +/*! + * @brief Return the timer IRQ vector based on a FDT node. + * + * @param fdt Pointer to the fdt + * @param node The FDT node + * + * @return IRQ vector number. BSP_INTERRUPT_VECTOR_INVALID on error. + */ +rtems_vector_number QTMR_get_IRQ_from_fdt(const void *fdt, int node); + +/*! + * @brief Return the clock source frequency of the quad timer. + * + * @param base Quad Timer peripheral base address. + * + * @return IRQ vector number. BSP_INTERRUPT_VECTOR_INVALID on error. + */ +uint32_t QTMR_get_src_clk(TMR_Type *base); +#endif /* __rtems__ */ /*! * @brief Ungates the Quad Timer clock and configures the peripheral for basic operation. diff --git a/bsps/arm/imxrt/include/imxrt/imxrt1050.dtsi b/bsps/arm/imxrt/include/imxrt/imxrt1050.dtsi index 78c7b1c68e..610aa37e33 100644 --- a/bsps/arm/imxrt/include/imxrt/imxrt1050.dtsi +++ b/bsps/arm/imxrt/include/imxrt/imxrt1050.dtsi @@ -101,6 +101,30 @@ reg = <0x40100000 0x00100000>; ranges; + qtimer4: timer@401e8000 { + compatible = "nxp,imxrt-qtimer"; + reg = <0x401e8000 0x4000>; + interrupts = <136>; + }; + + qtimer3: timer@401e4000 { + compatible = "nxp,imxrt-qtimer"; + reg = <0x401e4000 0x4000>; + interrupts = <135>; + }; + + qtimer2: timer@401e0000 { + compatible = "nxp,imxrt-qtimer"; + reg = <0x401e0000 0x4000>; + interrupts = <134>; + }; + + qtimer1: timer@401dc000 { + compatible = "nxp,imxrt-qtimer"; + reg = <0x401dc000 0x4000>; + interrupts = <133>; + }; + gpio4: gpio@401c4000 { compatible = "fsl,imxrt-gpio", "fsl,imx6ul-gpio", "fsl,imx35-gpio"; -- cgit v1.2.3