LCOV - code coverage report
Current view: top level - zephyr/dt-bindings/clock - stm32h5_clock.h Coverage Total Hit
Test: new.info Lines: 14.9 % 101 15
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_STM32H5_CLOCK_H_
       7              : #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_
       8              : 
       9              : #include "stm32_common_clocks.h"
      10              : 
      11              : /** Domain clocks */
      12              : 
      13              : /* RM0481/0492, Table 47 Kernel clock distribution summary */
      14              : 
      15              : /** System clock */
      16              : /* defined in stm32_common_clocks.h */
      17              : /** Fixed clocks  */
      18              : /* Low speed clocks defined in stm32_common_clocks.h */
      19            1 : #define STM32_SRC_HSE           (STM32_SRC_LSI + 1)
      20            0 : #define STM32_SRC_CSI           (STM32_SRC_HSE + 1)
      21            0 : #define STM32_SRC_HSI           (STM32_SRC_CSI + 1)
      22            0 : #define STM32_SRC_HSI48         (STM32_SRC_HSI + 1)
      23              : /** Bus clock */
      24            1 : #define STM32_SRC_HCLK          (STM32_SRC_HSI48 + 1)
      25            0 : #define STM32_SRC_PCLK1         (STM32_SRC_HCLK + 1)
      26            0 : #define STM32_SRC_PCLK2         (STM32_SRC_PCLK1 + 1)
      27            0 : #define STM32_SRC_PCLK3         (STM32_SRC_PCLK2 + 1)
      28            0 : #define STM32_SRC_TIMPCLK1      (STM32_SRC_PCLK3 + 1)
      29            0 : #define STM32_SRC_TIMPCLK2      (STM32_SRC_TIMPCLK1 + 1)
      30              : /** PLL outputs */
      31            1 : #define STM32_SRC_PLL1_P        (STM32_SRC_TIMPCLK2 + 1)
      32            0 : #define STM32_SRC_PLL1_Q        (STM32_SRC_PLL1_P + 1)
      33            0 : #define STM32_SRC_PLL1_R        (STM32_SRC_PLL1_Q + 1)
      34            0 : #define STM32_SRC_PLL2_P        (STM32_SRC_PLL1_R + 1)
      35            0 : #define STM32_SRC_PLL2_Q        (STM32_SRC_PLL2_P + 1)
      36            0 : #define STM32_SRC_PLL2_R        (STM32_SRC_PLL2_Q + 1)
      37            0 : #define STM32_SRC_PLL3_P        (STM32_SRC_PLL2_R + 1)
      38            0 : #define STM32_SRC_PLL3_Q        (STM32_SRC_PLL3_P + 1)
      39            0 : #define STM32_SRC_PLL3_R        (STM32_SRC_PLL3_Q + 1)
      40              : /** Clock muxes */
      41            1 : #define STM32_SRC_CKPER         (STM32_SRC_PLL3_R + 1)
      42              : 
      43              : 
      44              : /** Bus clocks */
      45            1 : #define STM32_CLOCK_BUS_AHB1    0x088
      46            0 : #define STM32_CLOCK_BUS_AHB2    0x08C
      47            0 : #define STM32_CLOCK_BUS_AHB4    0x094
      48            0 : #define STM32_CLOCK_BUS_APB1    0x09c
      49            0 : #define STM32_CLOCK_BUS_APB1_2  0x0A0
      50            0 : #define STM32_CLOCK_BUS_APB2    0x0A4
      51            0 : #define STM32_CLOCK_BUS_APB3    0x0A8
      52              : 
      53            0 : #define STM32_PERIPH_BUS_MIN    STM32_CLOCK_BUS_AHB1
      54            0 : #define STM32_PERIPH_BUS_MAX    STM32_CLOCK_BUS_APB3
      55              : 
      56              : /** @brief RCC_CCIPRx register offset (RM0456.pdf) */
      57            1 : #define CCIPR1_REG              0xD8
      58            0 : #define CCIPR2_REG              0xDC
      59            0 : #define CCIPR3_REG              0xE0
      60            0 : #define CCIPR4_REG              0xE4
      61            0 : #define CCIPR5_REG              0xE8
      62              : 
      63              : /** @brief RCC_BDCR register offset */
      64            1 : #define BDCR_REG                0xF0
      65              : 
      66              : /** @brief RCC_CFGRx register offset */
      67            1 : #define CFGR1_REG               0x1C
      68              : 
      69              : /** @brief Device domain clocks selection helpers */
      70              : /** CCIPR1 devices */
      71            1 : #define USART1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR1_REG)
      72            0 : #define USART2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 3, CCIPR1_REG)
      73            0 : #define USART3_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 6, CCIPR1_REG)
      74            0 : #define USART4_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 9, CCIPR1_REG)
      75            0 : #define USART5_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR1_REG)
      76            0 : #define USART6_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 15, CCIPR1_REG)
      77            0 : #define USART7_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 18, CCIPR1_REG)
      78            0 : #define USART8_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 21, CCIPR1_REG)
      79            0 : #define USART9_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR1_REG)
      80            0 : #define USART10_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 27, CCIPR1_REG)
      81            0 : #define TIMIC_SEL(val)          STM32_DT_CLOCK_SELECT((val), 1, 31, CCIPR1_REG)
      82              : 
      83              : /** CCIPR2 devices */
      84            1 : #define USART11_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR2_REG)
      85            0 : #define USART12_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR2_REG)
      86            0 : #define LPTIM1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR2_REG)
      87            0 : #define LPTIM2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR2_REG)
      88            0 : #define LPTIM3_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR2_REG)
      89            0 : #define LPTIM4_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR2_REG)
      90            0 : #define LPTIM5_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR2_REG)
      91            0 : #define LPTIM6_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 28, CCIPR2_REG)
      92              : 
      93              : /** CCIPR3 devices */
      94            1 : #define SPI1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR3_REG)
      95            0 : #define SPI2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 3, CCIPR3_REG)
      96            0 : #define SPI3_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 6, CCIPR3_REG)
      97            0 : #define SPI4_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 9, CCIPR3_REG)
      98            0 : #define SPI5_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR3_REG)
      99            0 : #define SPI6_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 15, CCIPR2_REG)
     100            0 : #define LPUART1_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR3_REG)
     101              : 
     102              : /** CCIPR4 devices */
     103            1 : #define OCTOSPI1_SEL(val)       STM32_DT_CLOCK_SELECT((val), 3, 0, CCIPR4_REG)
     104            0 : #define SYSTICK_SEL(val)        STM32_DT_CLOCK_SELECT((val), 3, 2, CCIPR4_REG)
     105            0 : #define USB_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR4_REG)
     106            0 : #define SDMMC1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 1, 6, CCIPR4_REG)
     107            0 : #define SDMMC2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 1, 7, CCIPR4_REG)
     108            0 : #define I2C1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 16, CCIPR4_REG)
     109            0 : #define I2C2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 18, CCIPR4_REG)
     110            0 : #define I2C3_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 20, CCIPR4_REG)
     111            0 : #define I2C4_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 22, CCIPR4_REG)
     112            0 : #define I3C1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 24, CCIPR4_REG)
     113              : 
     114              : /** CCIPR5 devices */
     115            1 : #define ADCDAC_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR5_REG)
     116            0 : #define DAC_SEL(val)            STM32_DT_CLOCK_SELECT((val), 1, 3, CCIPR5_REG)
     117            0 : #define RNG_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR5_REG)
     118            0 : #define CEC_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 6, CCIPR5_REG)
     119            0 : #define FDCAN_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 8, CCIPR5_REG)
     120            0 : #define SAI1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR5_REG)
     121            0 : #define SAI2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 19, CCIPR5_REG)
     122            0 : #define CKPER_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 30, CCIPR5_REG)
     123              : 
     124              : /** BDCR devices */
     125            1 : #define RTC_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 8, BDCR_REG)
     126              : 
     127              : /** CFGR1 devices */
     128            1 : #define MCO1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 0x7, 22, CFGR1_REG)
     129            0 : #define MCO1_PRE(val)           STM32_DT_CLOCK_SELECT((val), 0xF, 18, CFGR1_REG)
     130            0 : #define MCO2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 0x7, 25, CFGR1_REG)
     131            0 : #define MCO2_PRE(val)           STM32_DT_CLOCK_SELECT((val), 0xF, 29, CFGR1_REG)
     132              : 
     133              : /* MCO prescaler : division factor */
     134            0 : #define MCO_PRE_DIV_1 1
     135            0 : #define MCO_PRE_DIV_2 2
     136            0 : #define MCO_PRE_DIV_3 3
     137            0 : #define MCO_PRE_DIV_4 4
     138            0 : #define MCO_PRE_DIV_5 5
     139            0 : #define MCO_PRE_DIV_6 6
     140            0 : #define MCO_PRE_DIV_7 7
     141            0 : #define MCO_PRE_DIV_8 8
     142            0 : #define MCO_PRE_DIV_9 9
     143            0 : #define MCO_PRE_DIV_10 10
     144            0 : #define MCO_PRE_DIV_11 11
     145            0 : #define MCO_PRE_DIV_12 12
     146            0 : #define MCO_PRE_DIV_13 13
     147            0 : #define MCO_PRE_DIV_14 14
     148            0 : #define MCO_PRE_DIV_15 15
     149              : 
     150              : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_ */
        

Generated by: LCOV version 2.0-1