xref: /openbmc/u-boot/include/stm32_rcc.h (revision d090cbab64c893e6c6122e468282750aeeeae840)
183d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2928954feSPatrice Chotard /*
3928954feSPatrice Chotard  * Copyright (C) STMicroelectronics SA 2017
4928954feSPatrice Chotard  * Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
5928954feSPatrice Chotard  */
6928954feSPatrice Chotard 
7928954feSPatrice Chotard #ifndef __STM32_RCC_H_
8928954feSPatrice Chotard #define __STM32_RCC_H_
9928954feSPatrice Chotard 
10928954feSPatrice Chotard #define AHB_PSC_1			0
11928954feSPatrice Chotard #define AHB_PSC_2			0x8
12928954feSPatrice Chotard #define AHB_PSC_4			0x9
13928954feSPatrice Chotard #define AHB_PSC_8			0xA
14928954feSPatrice Chotard #define AHB_PSC_16			0xB
15928954feSPatrice Chotard #define AHB_PSC_64			0xC
16928954feSPatrice Chotard #define AHB_PSC_128			0xD
17928954feSPatrice Chotard #define AHB_PSC_256			0xE
18928954feSPatrice Chotard #define AHB_PSC_512			0xF
19928954feSPatrice Chotard 
20928954feSPatrice Chotard #define APB_PSC_1			0
21928954feSPatrice Chotard #define APB_PSC_2			0x4
22928954feSPatrice Chotard #define APB_PSC_4			0x5
23928954feSPatrice Chotard #define APB_PSC_8			0x6
24928954feSPatrice Chotard #define APB_PSC_16			0x7
25928954feSPatrice Chotard 
26928954feSPatrice Chotard struct pll_psc {
27928954feSPatrice Chotard 	u8	pll_m;
28928954feSPatrice Chotard 	u16	pll_n;
29928954feSPatrice Chotard 	u8	pll_p;
30928954feSPatrice Chotard 	u8	pll_q;
31928954feSPatrice Chotard 	u8	ahb_psc;
32928954feSPatrice Chotard 	u8	apb1_psc;
33928954feSPatrice Chotard 	u8	apb2_psc;
34928954feSPatrice Chotard };
35928954feSPatrice Chotard 
36928954feSPatrice Chotard struct stm32_clk_info {
37928954feSPatrice Chotard 	struct pll_psc sys_pll_psc;
38928954feSPatrice Chotard 	bool has_overdrive;
394e97e257SPatrice Chotard 	bool v2;
40928954feSPatrice Chotard };
41928954feSPatrice Chotard 
42928954feSPatrice Chotard enum soc_family {
438b414645SPatrice Chotard 	STM32F42X,
448b414645SPatrice Chotard 	STM32F469,
45928954feSPatrice Chotard 	STM32F7,
46*d090cbabSPatrick Delaunay 	STM32MP1,
47928954feSPatrice Chotard };
48928954feSPatrice Chotard 
4961803a95SPatrice Chotard enum apb {
5061803a95SPatrice Chotard 	APB1,
5161803a95SPatrice Chotard 	APB2,
5261803a95SPatrice Chotard };
5361803a95SPatrice Chotard 
54928954feSPatrice Chotard struct stm32_rcc_clk {
55928954feSPatrice Chotard 	char *drv_name;
56928954feSPatrice Chotard 	enum soc_family soc;
57928954feSPatrice Chotard };
58928954feSPatrice Chotard 
59014a953cSPatrice Chotard struct stm32_rcc_regs {
60014a953cSPatrice Chotard 	u32 cr;		/* RCC clock control */
61014a953cSPatrice Chotard 	u32 pllcfgr;	/* RCC PLL configuration */
62014a953cSPatrice Chotard 	u32 cfgr;	/* RCC clock configuration */
63014a953cSPatrice Chotard 	u32 cir;	/* RCC clock interrupt */
64014a953cSPatrice Chotard 	u32 ahb1rstr;	/* RCC AHB1 peripheral reset */
65014a953cSPatrice Chotard 	u32 ahb2rstr;	/* RCC AHB2 peripheral reset */
66014a953cSPatrice Chotard 	u32 ahb3rstr;	/* RCC AHB3 peripheral reset */
67014a953cSPatrice Chotard 	u32 rsv0;
68014a953cSPatrice Chotard 	u32 apb1rstr;	/* RCC APB1 peripheral reset */
69014a953cSPatrice Chotard 	u32 apb2rstr;	/* RCC APB2 peripheral reset */
70014a953cSPatrice Chotard 	u32 rsv1[2];
71014a953cSPatrice Chotard 	u32 ahb1enr;	/* RCC AHB1 peripheral clock enable */
72014a953cSPatrice Chotard 	u32 ahb2enr;	/* RCC AHB2 peripheral clock enable */
73014a953cSPatrice Chotard 	u32 ahb3enr;	/* RCC AHB3 peripheral clock enable */
74014a953cSPatrice Chotard 	u32 rsv2;
75014a953cSPatrice Chotard 	u32 apb1enr;	/* RCC APB1 peripheral clock enable */
76014a953cSPatrice Chotard 	u32 apb2enr;	/* RCC APB2 peripheral clock enable */
77014a953cSPatrice Chotard 	u32 rsv3[2];
78014a953cSPatrice Chotard 	u32 ahb1lpenr;	/* RCC AHB1 periph clk enable in low pwr mode */
79014a953cSPatrice Chotard 	u32 ahb2lpenr;	/* RCC AHB2 periph clk enable in low pwr mode */
80014a953cSPatrice Chotard 	u32 ahb3lpenr;	/* RCC AHB3 periph clk enable in low pwr mode */
81014a953cSPatrice Chotard 	u32 rsv4;
82014a953cSPatrice Chotard 	u32 apb1lpenr;	/* RCC APB1 periph clk enable in low pwr mode */
83014a953cSPatrice Chotard 	u32 apb2lpenr;	/* RCC APB2 periph clk enable in low pwr mode */
84014a953cSPatrice Chotard 	u32 rsv5[2];
85014a953cSPatrice Chotard 	u32 bdcr;	/* RCC Backup domain control */
86014a953cSPatrice Chotard 	u32 csr;	/* RCC clock control & status */
87014a953cSPatrice Chotard 	u32 rsv6[2];
88014a953cSPatrice Chotard 	u32 sscgr;	/* RCC spread spectrum clock generation */
89014a953cSPatrice Chotard 	u32 plli2scfgr;	/* RCC PLLI2S configuration */
90014a953cSPatrice Chotard 	/* below registers are only available on STM32F46x and STM32F7 SoCs*/
91014a953cSPatrice Chotard 	u32 pllsaicfgr;	/* PLLSAI configuration */
92014a953cSPatrice Chotard 	u32 dckcfgr;	/* dedicated clocks configuration register */
93014a953cSPatrice Chotard 	/* Below registers are only available on STM32F7 SoCs */
94014a953cSPatrice Chotard 	u32 dckcfgr2;	/* dedicated clocks configuration register */
95014a953cSPatrice Chotard };
96014a953cSPatrice Chotard 
97928954feSPatrice Chotard #endif /* __STM32_RCC_H_ */
98