/*
 * Copyright (c) 2023 STMicroelectronics
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_

/** Domain clocks */

/* RM0481/0492, Table 47 Kernel clock distribution summary */

/** PLL outputs */
#define STM32_SRC_PLL1_P	0x001
#define STM32_SRC_PLL1_Q	0x002
#define STM32_SRC_PLL1_R	0x003
#define STM32_SRC_PLL2_P	0x004
#define STM32_SRC_PLL2_Q	0x005
#define STM32_SRC_PLL2_R	0x006
#define STM32_SRC_PLL3_P	0x007
#define STM32_SRC_PLL3_Q	0x008
#define STM32_SRC_PLL3_R	0x009
/** Fixed clocks  */
#define STM32_SRC_HSE		0x00A
#define STM32_SRC_LSE		0x00B
#define STM32_SRC_LSI		0x00C
#define STM32_SRC_CSI		0x00D
#define STM32_SRC_HSI		0x00E
#define STM32_SRC_HSI48		0x00F

/** Core clock */
#define STM32_SRC_SYSCLK	0x011

/** Clock muxes */
#define STM32_SRC_CKPER		0x012

/** Bus clocks */
#define STM32_CLOCK_BUS_AHB1    0x088
#define STM32_CLOCK_BUS_AHB2    0x08C
#define STM32_CLOCK_BUS_AHB4    0x094
#define STM32_CLOCK_BUS_APB1    0x09c
#define STM32_CLOCK_BUS_APB1_2  0x0A0
#define STM32_CLOCK_BUS_APB2    0x0A4
#define STM32_CLOCK_BUS_APB3    0x0A8

#define STM32_PERIPH_BUS_MIN	STM32_CLOCK_BUS_AHB1
#define STM32_PERIPH_BUS_MAX	STM32_CLOCK_BUS_APB3

#define STM32_CLOCK_REG_MASK    0xFFU
#define STM32_CLOCK_REG_SHIFT   0U
#define STM32_CLOCK_SHIFT_MASK  0x1FU
#define STM32_CLOCK_SHIFT_SHIFT 8U
#define STM32_CLOCK_MASK_MASK   0x7U
#define STM32_CLOCK_MASK_SHIFT  13U
#define STM32_CLOCK_VAL_MASK    0x7U
#define STM32_CLOCK_VAL_SHIFT   16U

/**
 * @brief STM32H5 clock configuration bit field.
 *
 * - reg   (1/2/3/4/5)     [ 0 : 7 ]
 * - shift (0..31)         [ 8 : 12 ]
 * - mask  (0x1, 0x3, 0x7) [ 13 : 15 ]
 * - val   (0..7)          [ 16 : 18 ]
 *
 * @param reg RCC_CCIPRx register offset
 * @param shift Position within RCC_CCIPRx.
 * @param mask Mask for the RCC_CCIPRx field.
 * @param val Clock value (0, 1, ... 7).
 */
#define STM32_CLOCK(val, mask, shift, reg)					\
	((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) |	\
	 (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) |	\
	 (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) |	\
	 (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT))

/** @brief RCC_CCIPRx register offset (RM0456.pdf) */
#define CCIPR1_REG		0xD8
#define CCIPR2_REG		0xDC
#define CCIPR3_REG		0xE0
#define CCIPR4_REG		0xE4
#define CCIPR5_REG		0xE8

/** @brief RCC_BDCR register offset */
#define BDCR_REG		0xF0

/** @brief Device domain clocks selection helpers */
/** CCIPR1 devices */
#define USART1_SEL(val)		STM32_CLOCK(val, 7, 0, CCIPR1_REG)
#define USART2_SEL(val)		STM32_CLOCK(val, 7, 3, CCIPR1_REG)
#define USART3_SEL(val)		STM32_CLOCK(val, 7, 6, CCIPR1_REG)
#define USART4_SEL(val)		STM32_CLOCK(val, 7, 9, CCIPR1_REG)
#define USART5_SEL(val)		STM32_CLOCK(val, 7, 12, CCIPR1_REG)
#define USART6_SEL(val)		STM32_CLOCK(val, 7, 15, CCIPR1_REG)
#define USART7_SEL(val)		STM32_CLOCK(val, 7, 18, CCIPR1_REG)
#define USART8_SEL(val)		STM32_CLOCK(val, 7, 21, CCIPR1_REG)
#define USART9_SEL(val)		STM32_CLOCK(val, 7, 24, CCIPR1_REG)
#define USART10_SEL(val)	STM32_CLOCK(val, 7, 27, CCIPR1_REG)
#define TIMIC_SEL(val)		STM32_CLOCK(val, 1, 31, CCIPR1_REG)

/** CCIPR2 devices */
#define USART11_SEL(val)	STM32_CLOCK(val, 7, 0, CCIPR2_REG)
#define USART12_SEL(val)	STM32_CLOCK(val, 7, 4, CCIPR2_REG)
#define LPTIM1_SEL(val)		STM32_CLOCK(val, 7, 8, CCIPR2_REG)
#define LPTIM2_SEL(val)		STM32_CLOCK(val, 7, 12, CCIPR2_REG)
#define LPTIM3_SEL(val)		STM32_CLOCK(val, 7, 16, CCIPR2_REG)
#define LPTIM4_SEL(val)		STM32_CLOCK(val, 7, 20, CCIPR2_REG)
#define LPTIM5_SEL(val)		STM32_CLOCK(val, 7, 24, CCIPR2_REG)
#define LPTIM6_SEL(val)		STM32_CLOCK(val, 7, 28, CCIPR2_REG)

/** CCIPR3 devices */
#define SPI1_SEL(val)		STM32_CLOCK(val, 7, 0, CCIPR3_REG)
#define SPI2_SEL(val)		STM32_CLOCK(val, 7, 3, CCIPR3_REG)
#define SPI3_SEL(val)		STM32_CLOCK(val, 7, 6, CCIPR3_REG)
#define SPI4_SEL(val)		STM32_CLOCK(val, 7, 9, CCIPR3_REG)
#define SPI5_SEL(val)		STM32_CLOCK(val, 7, 12, CCIPR3_REG)
#define SPI6_SEL(val)		STM32_CLOCK(val, 7, 15, CCIPR2_REG)
#define LPUART1_SEL(val)	STM32_CLOCK(val, 7, 24, CCIPR3_REG)

/** CCIPR4 devices */
#define OCTOSPI1_SEL(val)	STM32_CLOCK(val, 3, 0, CCIPR4_REG)
#define SYSTICK_SEL(val)	STM32_CLOCK(val, 3, 2, CCIPR4_REG)
#define USB_SEL(val)		STM32_CLOCK(val, 3, 4, CCIPR4_REG)
#define SDMMC1_SEL(val)		STM32_CLOCK(val, 1, 6, CCIPR4_REG)
#define SDMMC2_SEL(val)		STM32_CLOCK(val, 1, 7, CCIPR4_REG)
#define I2C1_SEL(val)		STM32_CLOCK(val, 3, 16, CCIPR4_REG)
#define I2C2_SEL(val)		STM32_CLOCK(val, 3, 18, CCIPR4_REG)
#define I2C3_SEL(val)		STM32_CLOCK(val, 3, 20, CCIPR4_REG)
#define I2C4_SEL(val)		STM32_CLOCK(val, 3, 22, CCIPR4_REG)
#define I3C1_SEL(val)		STM32_CLOCK(val, 3, 24, CCIPR4_REG)

/** CCIPR5 devices */
#define ADCDAC_SEL(val)		STM32_CLOCK(val, 7, 0, CCIPR5_REG)
#define DAC_SEL(val)		STM32_CLOCK(val, 1, 3, CCIPR5_REG)
#define RNG_SEL(val)		STM32_CLOCK(val, 3, 4, CCIPR5_REG)
#define CEC_SEL(val)		STM32_CLOCK(val, 3, 6, CCIPR5_REG)
#define FDCAN_SEL(val)		STM32_CLOCK(val, 3, 8, CCIPR5_REG)
#define SAI1_SEL(val)		STM32_CLOCK(val, 7, 16, CCIPR5_REG)
#define SAI2_SEL(val)		STM32_CLOCK(val, 7, 19, CCIPR5_REG)
#define CKPER_SEL(val)		STM32_CLOCK(val, 3, 30, CCIPR5_REG)

/** BDCR devices */
#define RTC_SEL(val)		STM32_CLOCK(val, 3, 8, BDCR_REG)

#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_ */
