LCOV - code coverage report
Current view: top level - zephyr/dt-bindings/clock - stm32_common_clocks.h Coverage Total Hit
Test: new.info Lines: 41.2 % 17 7
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2023 STMicroelectronics
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32_COMMON_CLOCKS_H_
       7              : #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32_COMMON_CLOCKS_H_
       8              : 
       9              : /** System clock */
      10            1 : #define STM32_SRC_SYSCLK        0x001
      11              : /** Fixed clocks  */
      12            1 : #define STM32_SRC_LSE           0x002
      13            0 : #define STM32_SRC_LSI           0x003
      14              : 
      15              : /** Dummy: Add a specifier when no selection is possible */
      16            1 : #define NO_SEL                  0xFF
      17              : 
      18            0 : #define STM32_CLOCK_DIV_SHIFT   12
      19              : 
      20              : /** Clock divider */
      21            1 : #define STM32_CLOCK_DIV(div)    (((div) - 1) << STM32_CLOCK_DIV_SHIFT)
      22              : 
      23              : /** Helper macros to pack RCC clock source selection register info in the DT */
      24            1 : #define STM32_DT_CLKSEL_REG_MASK        0xFFFFU
      25            0 : #define STM32_DT_CLKSEL_REG_SHIFT       0U
      26            0 : #define STM32_DT_CLKSEL_SHIFT_MASK      0x3FU
      27            0 : #define STM32_DT_CLKSEL_SHIFT_SHIFT     16U
      28            0 : #define STM32_DT_CLKSEL_MASK_MASK       0x1FU
      29            0 : #define STM32_DT_CLKSEL_MASK_SHIFT      22U
      30            0 : #define STM32_DT_CLKSEL_VAL_MASK        0x1FU
      31            0 : #define STM32_DT_CLKSEL_VAL_SHIFT       27U
      32              : 
      33              : /**
      34              :  * @brief Pack STM32 source clock selection RCC register bit fields for the DT
      35              :  *
      36              :  * @param val    Clock configuration field value
      37              :  * @param mask   Mask of register field in RCC register
      38              :  * @param shift  Position of field within RCC register (= field LSB's index)
      39              :  * @param reg    Offset to target clock configuration register in RCC
      40              :  *
      41              :  * @note 'reg' range:    0x0~0xFFFF   [ 00 : 15 ]
      42              :  * @note 'shift' range:  0~63         [ 16 : 21 ]
      43              :  * @note 'mask' range:   0x00~0x1F    [ 22 : 26 ]
      44              :  * @note 'val' range:    0x00~0x1F    [ 27 : 31 ]
      45              :  */
      46            1 : #define STM32_DT_CLOCK_SELECT(val, mask, shift, reg)                                    \
      47              :         ((((reg) & STM32_DT_CLKSEL_REG_MASK) << STM32_DT_CLKSEL_REG_SHIFT) |          \
      48              :          (((shift) & STM32_DT_CLKSEL_SHIFT_MASK) << STM32_DT_CLKSEL_SHIFT_SHIFT) |    \
      49              :          (((mask) & STM32_DT_CLKSEL_MASK_MASK) << STM32_DT_CLKSEL_MASK_SHIFT) |               \
      50              :          (((val) & STM32_DT_CLKSEL_VAL_MASK) << STM32_DT_CLKSEL_VAL_SHIFT))
      51              : 
      52              : /**
      53              :  * Pack RCC clock register offset and bit in two 32-bit values
      54              :  * as expected for the Device Tree `clocks` property on STM32.
      55              :  *
      56              :  * @param bus STM32 bus name (expands to STM32_CLOCK_BUS_{bus})
      57              :  * @param bit Clock bit
      58              :  */
      59            1 : #define STM32_CLOCK(bus, bit) (STM32_CLOCK_BUS_##bus) (1 << bit)
      60              : 
      61              : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32_COMMON_CLOCKS_H_ */
        

Generated by: LCOV version 2.0-1