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

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2024 STMicroelectronics
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32N6_CLOCK_H_
       7              : #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32N6_CLOCK_H_
       8              : 
       9              : #include "stm32_common_clocks.h"
      10              : 
      11              : /** Domain clocks */
      12              : 
      13              : /* RM0486, Figures 37 and 45 on clock distribution description */
      14              : 
      15              : /** System clock */
      16              : /* defined in stm32_common_clocks.h */
      17              : /** Fixed clocks  */
      18            1 : #define STM32_SRC_HSE           (STM32_SRC_LSI + 1)
      19            0 : #define STM32_SRC_HSI           (STM32_SRC_HSE + 1)
      20            0 : #define STM32_SRC_MSI           (STM32_SRC_HSI + 1)
      21              : /** PLL outputs */
      22            1 : #define STM32_SRC_PLL1          (STM32_SRC_MSI + 1)
      23            0 : #define STM32_SRC_PLL2          (STM32_SRC_PLL1 + 1)
      24            0 : #define STM32_SRC_PLL3          (STM32_SRC_PLL2 + 1)
      25            0 : #define STM32_SRC_PLL4          (STM32_SRC_PLL3 + 1)
      26              : /** Clock muxes */
      27            1 : #define STM32_SRC_CKPER         (STM32_SRC_PLL4 + 1)
      28            0 : #define STM32_SRC_IC1           (STM32_SRC_CKPER + 1)
      29            0 : #define STM32_SRC_IC2           (STM32_SRC_IC1 + 1)
      30            0 : #define STM32_SRC_IC3           (STM32_SRC_IC2 + 1)
      31            0 : #define STM32_SRC_IC4           (STM32_SRC_IC3 + 1)
      32            0 : #define STM32_SRC_IC5           (STM32_SRC_IC4 + 1)
      33            0 : #define STM32_SRC_IC6           (STM32_SRC_IC5 + 1)
      34            0 : #define STM32_SRC_IC7           (STM32_SRC_IC6 + 1)
      35            0 : #define STM32_SRC_IC8           (STM32_SRC_IC7 + 1)
      36            0 : #define STM32_SRC_IC9           (STM32_SRC_IC8 + 1)
      37            0 : #define STM32_SRC_IC10          (STM32_SRC_IC9 + 1)
      38            0 : #define STM32_SRC_IC11          (STM32_SRC_IC10 + 1)
      39            0 : #define STM32_SRC_IC12          (STM32_SRC_IC11 + 1)
      40            0 : #define STM32_SRC_IC13          (STM32_SRC_IC12 + 1)
      41            0 : #define STM32_SRC_IC14          (STM32_SRC_IC13 + 1)
      42            0 : #define STM32_SRC_IC15          (STM32_SRC_IC14 + 1)
      43            0 : #define STM32_SRC_IC16          (STM32_SRC_IC15 + 1)
      44            0 : #define STM32_SRC_IC17          (STM32_SRC_IC16 + 1)
      45            0 : #define STM32_SRC_IC18          (STM32_SRC_IC17 + 1)
      46            0 : #define STM32_SRC_IC19          (STM32_SRC_IC18 + 1)
      47            0 : #define STM32_SRC_IC20          (STM32_SRC_IC19 + 1)
      48            0 : #define STM32_SRC_HSI_DIV       (STM32_SRC_IC20 + 1)
      49            0 : #define STM32_SRC_TIMG          (STM32_SRC_HSI_DIV + 1)
      50            0 : #define STM32_SRC_HCLK1         (STM32_SRC_TIMG + 1)
      51            0 : #define STM32_SRC_HCLK2         (STM32_SRC_HCLK1 + 1)
      52            0 : #define STM32_SRC_HCLK3         (STM32_SRC_HCLK2 + 1)
      53            0 : #define STM32_SRC_HCLK4         (STM32_SRC_HCLK3 + 1)
      54            0 : #define STM32_SRC_HCLK5         (STM32_SRC_HCLK4 + 1)
      55            0 : #define STM32_SRC_PCLK1         (STM32_SRC_HCLK5 + 1)
      56            0 : #define STM32_SRC_PCLK2         (STM32_SRC_PCLK1 + 1)
      57            0 : #define STM32_SRC_PCLK4         (STM32_SRC_PCLK2 + 1)
      58            0 : #define STM32_SRC_PCLK5         (STM32_SRC_PCLK4 + 1)
      59              : 
      60              : /** Others: Not yet supported */
      61              : /* #define STM32_SRC_I2SCKIN    TBD */
      62              : 
      63              : /** Bus clocks */
      64            1 : #define STM32_CLOCK_BUS_MEM     0x24C
      65            0 : #define STM32_CLOCK_BUS_AHB1    0x250
      66            0 : #define STM32_CLOCK_BUS_AHB2    0x254
      67            0 : #define STM32_CLOCK_BUS_AHB3    0x258
      68            0 : #define STM32_CLOCK_BUS_AHB4    0x25C
      69            0 : #define STM32_CLOCK_BUS_AHB5    0x260
      70            0 : #define STM32_CLOCK_BUS_APB1    0x264
      71            0 : #define STM32_CLOCK_BUS_APB1_2  0x268
      72            0 : #define STM32_CLOCK_BUS_APB2    0x26C
      73            0 : #define STM32_CLOCK_BUS_APB3    0x270
      74            0 : #define STM32_CLOCK_BUS_APB4    0x274
      75            0 : #define STM32_CLOCK_BUS_APB4_2  0x278
      76            0 : #define STM32_CLOCK_BUS_APB5    0x27C
      77              : 
      78            0 : #define STM32_CLOCK_LP_BUS_SHIFT        0x40
      79              : 
      80            0 : #define STM32_PERIPH_BUS_MIN    STM32_CLOCK_BUS_MEM
      81            0 : #define STM32_PERIPH_BUS_MAX    STM32_CLOCK_BUS_APB5
      82              : 
      83              : /** @brief RCC_CCIPRx register offset (RM0486.pdf) */
      84            1 : #define CCIPR1_REG              0x144
      85            0 : #define CCIPR2_REG              0x148
      86            0 : #define CCIPR3_REG              0x14C
      87            0 : #define CCIPR4_REG              0x150
      88            0 : #define CCIPR5_REG              0x154
      89            0 : #define CCIPR6_REG              0x158
      90            0 : #define CCIPR7_REG              0x15C
      91            0 : #define CCIPR8_REG              0x160
      92            0 : #define CCIPR9_REG              0x164
      93            0 : #define CCIPR12_REG             0x170
      94            0 : #define CCIPR13_REG             0x174
      95            0 : #define CCIPR14_REG             0x178
      96              : 
      97              : /** @brief Device domain clocks selection helpers */
      98              : /** CCIPR1 devices */
      99            1 : #define ADF1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR1_REG)
     100            0 : #define ADC12_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR1_REG)
     101            0 : #define DCMIPP_SEL(val)         STM32_DT_CLOCK_SELECT((val), 3, 20, CCIPR1_REG)
     102              : /** CCIPR2 devices */
     103            1 : #define ETH1PTP_SEL(val)        STM32_DT_CLOCK_SELECT((val), 3, 0, CCIPR2_REG)
     104            0 : #define ETH1CLK_SEL(val)        STM32_DT_CLOCK_SELECT((val), 3, 12, CCIPR2_REG)
     105            0 : #define ETH1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR2_REG)
     106            0 : #define ETH1REFCLK_SEL(val)     STM32_DT_CLOCK_SELECT((val), 1, 20, CCIPR2_REG)
     107            0 : #define ETH1GTXCLK_SEL(val)     STM32_DT_CLOCK_SELECT((val), 1, 24, CCIPR2_REG)
     108              : /** CCIPR3 devices */
     109            1 : #define FDCAN_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 0, CCIPR3_REG)
     110            0 : #define FMC_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR3_REG)
     111              : /** CCIPR4 devices */
     112            1 : #define I2C1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR4_REG)
     113            0 : #define I2C2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR4_REG)
     114            0 : #define I2C3_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR4_REG)
     115            0 : #define I2C4_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR4_REG)
     116            0 : #define I3C1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR4_REG)
     117            0 : #define I3C2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR4_REG)
     118            0 : #define LTDC_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 24, CCIPR4_REG)
     119              : /** CCIPR5 devices */
     120            1 : #define MCO1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR5_REG)
     121            0 : #define MCO2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR5_REG)
     122            0 : #define MDF1SEL(val)            STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR5_REG)
     123              : /** CCIPR6 devices */
     124            1 : #define XSPI1_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 0, CCIPR6_REG)
     125            0 : #define XSPI2_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR6_REG)
     126            0 : #define XSPI3_SEL(val)          STM32_DT_CLOCK_SELECT((val), 3, 8, CCIPR6_REG)
     127            0 : #define OTGPHY1_SEL(val)        STM32_DT_CLOCK_SELECT((val), 3, 12, CCIPR6_REG)
     128            0 : #define OTGPHY1CKREF_SEL(val)   STM32_DT_CLOCK_SELECT((val), 1, 16, CCIPR6_REG)
     129            0 : #define OTGPHY2_SEL(val)        STM32_DT_CLOCK_SELECT((val), 3, 20, CCIPR6_REG)
     130            0 : #define OTGPHY2CKREF_SEL(val)   STM32_DT_CLOCK_SELECT((val), 1, 24, CCIPR6_REG)
     131              : /** CCIPR7 devices */
     132            1 : #define PER_SEL(val)            STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR7_REG)
     133            0 : #define PSSI_SEL(val)           STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR7_REG)
     134            0 : #define RTC_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 8, CCIPR7_REG)
     135            0 : #define SAI1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR7_REG)
     136            0 : #define SAI2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR7_REG)
     137              : /** CCIPR8 devices */
     138            1 : #define SDMMC1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 3, 0, CCIPR8_REG)
     139            0 : #define SDMMC2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 3, 4, CCIPR8_REG)
     140              : /** CCIPR9 devices */
     141            1 : #define SPDIFRX1_SEL(val)       STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR9_REG)
     142            0 : #define SPI1_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR9_REG)
     143            0 : #define SPI2_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR9_REG)
     144            0 : #define SPI3_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR9_REG)
     145            0 : #define SPI4_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR9_REG)
     146            0 : #define SPI5_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR9_REG)
     147            0 : #define SPI6_SEL(val)           STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR9_REG)
     148              : /** CCIPR12 devices */
     149            1 : #define LPTIM1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR12_REG)
     150            0 : #define LPTIM2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR12_REG)
     151            0 : #define LPTIM3_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR12_REG)
     152            0 : #define LPTIM4_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR12_REG)
     153            0 : #define LPTIM5_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR12_REG)
     154              : /** CCIPR13 devices */
     155            1 : #define USART1_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR13_REG)
     156            0 : #define USART2_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR13_REG)
     157            0 : #define USART3_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR13_REG)
     158            0 : #define UART4_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 12, CCIPR13_REG)
     159            0 : #define UART5_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 16, CCIPR13_REG)
     160            0 : #define USART6_SEL(val)         STM32_DT_CLOCK_SELECT((val), 7, 20, CCIPR13_REG)
     161            0 : #define UART7_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 24, CCIPR13_REG)
     162            0 : #define UART8_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 28, CCIPR13_REG)
     163              : /** CCIPR14 devices */
     164            1 : #define UART9_SEL(val)          STM32_DT_CLOCK_SELECT((val), 7, 0, CCIPR14_REG)
     165            0 : #define USART10_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 4, CCIPR14_REG)
     166            0 : #define LPUART1_SEL(val)        STM32_DT_CLOCK_SELECT((val), 7, 8, CCIPR14_REG)
     167              : 
     168              : /** @brief RCC_ICxCFGR register offset (RM0486.pdf) */
     169            1 : #define ICxCFGR_REG(ic)         (0xC4 + ((ic) - 1) * 4)
     170              : 
     171              : /** @brief Divider ICx source selection */
     172            1 : #define ICx_PLLy_SEL(ic, pll)   STM32_DT_CLOCK_SELECT((pll) - 1, 3, 28, ICxCFGR_REG(ic))
     173              : 
     174              : /** @brief RCC_CFGR1 register offset (RM0486.pdf) */
     175            1 : #define CFGR1_REG               0x20
     176              : 
     177              : /** @brief CPU clock switch selection */
     178            1 : #define CPU_SEL(val)            STM32_DT_CLOCK_SELECT((val), 3, 16, CFGR1_REG)
     179              : 
     180              : #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32N6_CLOCK_H_ */
        

Generated by: LCOV version 2.0-1