1 /* 2 * Copyright (c) 2024 STMicroelectronics 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ 7 #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ 8 9 /** Define system & low-speed clocks */ 10 #include "stm32_common_clocks.h" 11 12 /** Other fixed clocks. 13 * - CLKSLOWMUX: used to query slow clock tree frequency 14 * - CLK16MHZ: secondary clock for LPUART, SPI3/I2S and BLE 15 * - CLK32MHZ: secondary clock for SPI3/I2S and BLE 16 */ 17 #define STM32_SRC_CLKSLOWMUX (STM32_SRC_LSI + 1) 18 #define STM32_SRC_CLK16MHZ (STM32_SRC_CLKSLOWMUX + 1) 19 #define STM32_SRC_CLK32MHZ (STM32_SRC_CLK16MHZ + 1) 20 21 /** Bus clocks */ 22 #define STM32_CLOCK_BUS_AHB0 0x50 23 #define STM32_CLOCK_BUS_APB0 0x54 24 #define STM32_CLOCK_BUS_APB1 0x58 25 #define STM32_CLOCK_BUS_APB2 0x60 26 27 #define STM32_PERIPH_BUS_MIN STM32_CLOCK_BUS_AHB0 28 #define STM32_PERIPH_BUS_MAX STM32_CLOCK_BUS_APB2 29 30 /** @brief RCC_CFGR register offset */ 31 #define CFGR_REG 0x08 32 33 /** @brief RCC_APB2ENR register offset */ 34 #define APB2ENR_REG 0x60 35 36 /** @brief Device clk sources selection helpers */ 37 38 /* WB05/WB09 only */ 39 #define LPUART1_SEL(val) STM32_DT_CLOCK_SELECT((val), 1, 13, CFGR_REG) 40 /* WB06/WB07 only */ 41 #define SPI2_I2S2_SEL(val) STM32_DT_CLOCK_SELECT((val), 1, 22, CFGR_REG) 42 /* `mask` is only 0x1 for WB06/WB07, but a single definition with mask=0x3 is acceptable */ 43 #define SPI3_I2S3_SEL(val) STM32_DT_CLOCK_SELECT((val), 3, 22, CFGR_REG) 44 45 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ */ 46