xref: /qemu/include/hw/misc/stm32l4x5_rcc_internals.h (revision ec7d83acbd1182d47df742745b43e6b16a3a4977)
1d6b55a0fSArnaud Minier /*
2d6b55a0fSArnaud Minier  * STM32L4X5 RCC (Reset and clock control)
3d6b55a0fSArnaud Minier  *
4d6b55a0fSArnaud Minier  * Copyright (c) 2023 Arnaud Minier <arnaud.minier@telecom-paris.fr>
5d6b55a0fSArnaud Minier  * Copyright (c) 2023 Inès Varhol <ines.varhol@telecom-paris.fr>
6d6b55a0fSArnaud Minier  *
7d6b55a0fSArnaud Minier  * SPDX-License-Identifier: GPL-2.0-or-later
8d6b55a0fSArnaud Minier  *
9d6b55a0fSArnaud Minier  * This work is licensed under the terms of the GNU GPL, version 2 or later.
10d6b55a0fSArnaud Minier  * See the COPYING file in the top-level directory.
11d6b55a0fSArnaud Minier  *
12d6b55a0fSArnaud Minier  * The reference used is the STMicroElectronics RM0351 Reference manual
13d6b55a0fSArnaud Minier  * for STM32L4x5 and STM32L4x6 advanced Arm ® -based 32-bit MCUs.
14d6b55a0fSArnaud Minier  *
15d6b55a0fSArnaud Minier  * Inspired by the BCM2835 CPRMAN clock manager implementation by Luc Michel.
16d6b55a0fSArnaud Minier  */
17d6b55a0fSArnaud Minier 
18d6b55a0fSArnaud Minier #ifndef HW_STM32L4X5_RCC_INTERNALS_H
19d6b55a0fSArnaud Minier #define HW_STM32L4X5_RCC_INTERNALS_H
20d6b55a0fSArnaud Minier 
21d6b55a0fSArnaud Minier #include "hw/registerfields.h"
22d6b55a0fSArnaud Minier #include "hw/misc/stm32l4x5_rcc.h"
23d6b55a0fSArnaud Minier 
24*ec7d83acSArnaud Minier #define TYPE_RCC_CLOCK_MUX "stm32l4x5-rcc-clock-mux"
25*ec7d83acSArnaud Minier OBJECT_DECLARE_SIMPLE_TYPE(RccClockMuxState, RCC_CLOCK_MUX)
26d6b55a0fSArnaud Minier 
27d6b55a0fSArnaud Minier /* Register map */
28d6b55a0fSArnaud Minier REG32(CR, 0x00)
29d6b55a0fSArnaud Minier     FIELD(CR, PLLSAI2RDY, 29, 1)
30d6b55a0fSArnaud Minier     FIELD(CR, PLLSAI2ON, 28, 1)
31d6b55a0fSArnaud Minier     FIELD(CR, PLLSAI1RDY, 27, 1)
32d6b55a0fSArnaud Minier     FIELD(CR, PLLSAI1ON, 26, 1)
33d6b55a0fSArnaud Minier     FIELD(CR, PLLRDY, 25, 1)
34d6b55a0fSArnaud Minier     FIELD(CR, PLLON, 24, 1)
35d6b55a0fSArnaud Minier     FIELD(CR, CSSON, 19, 1)
36d6b55a0fSArnaud Minier     FIELD(CR, HSEBYP, 18, 1)
37d6b55a0fSArnaud Minier     FIELD(CR, HSERDY, 17, 1)
38d6b55a0fSArnaud Minier     FIELD(CR, HSEON, 16, 1)
39d6b55a0fSArnaud Minier     FIELD(CR, HSIASFS, 11, 1)
40d6b55a0fSArnaud Minier     FIELD(CR, HSIRDY, 10, 1)
41d6b55a0fSArnaud Minier     FIELD(CR, HSIKERON, 9, 1)
42d6b55a0fSArnaud Minier     FIELD(CR, HSION, 8, 1)
43d6b55a0fSArnaud Minier     FIELD(CR, MSIRANGE, 4, 4)
44d6b55a0fSArnaud Minier     FIELD(CR, MSIRGSEL, 3, 1)
45d6b55a0fSArnaud Minier     FIELD(CR, MSIPLLEN, 2, 1)
46d6b55a0fSArnaud Minier     FIELD(CR, MSIRDY, 1, 1)
47d6b55a0fSArnaud Minier     FIELD(CR, MSION, 0, 1)
48d6b55a0fSArnaud Minier REG32(ICSCR, 0x04)
49d6b55a0fSArnaud Minier     FIELD(ICSCR, HSITRIM, 24, 7)
50d6b55a0fSArnaud Minier     FIELD(ICSCR, HSICAL, 16, 8)
51d6b55a0fSArnaud Minier     FIELD(ICSCR, MSITRIM, 8, 8)
52d6b55a0fSArnaud Minier     FIELD(ICSCR, MSICAL, 0, 8)
53d6b55a0fSArnaud Minier REG32(CFGR, 0x08)
54d6b55a0fSArnaud Minier     FIELD(CFGR, MCOPRE, 28, 3)
55d6b55a0fSArnaud Minier     /* MCOSEL[2:0] only for STM32L475xx/476xx/486xx devices */
56d6b55a0fSArnaud Minier     FIELD(CFGR, MCOSEL, 24, 3)
57d6b55a0fSArnaud Minier     FIELD(CFGR, STOPWUCK, 15, 1)
58d6b55a0fSArnaud Minier     FIELD(CFGR, PPRE2, 11, 3)
59d6b55a0fSArnaud Minier     FIELD(CFGR, PPRE1, 8, 3)
60d6b55a0fSArnaud Minier     FIELD(CFGR, HPRE, 4, 4)
61d6b55a0fSArnaud Minier     FIELD(CFGR, SWS, 2, 2)
62d6b55a0fSArnaud Minier     FIELD(CFGR, SW, 0, 2)
63d6b55a0fSArnaud Minier REG32(PLLCFGR, 0x0C)
64d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLPDIV, 27, 5)
65d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLR, 25, 2)
66d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLREN, 24, 1)
67d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLQ, 21, 2)
68d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLQEN, 20, 1)
69d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLP, 17, 1)
70d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLPEN, 16, 1)
71d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLN, 8, 7)
72d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLM, 4, 3)
73d6b55a0fSArnaud Minier     FIELD(PLLCFGR, PLLSRC, 0, 2)
74d6b55a0fSArnaud Minier REG32(PLLSAI1CFGR, 0x10)
75d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1PDIV, 27, 5)
76d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1R, 25, 2)
77d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1REN, 24, 1)
78d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1Q, 21, 2)
79d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1QEN, 20, 1)
80d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1P, 17, 1)
81d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1PEN, 16, 1)
82d6b55a0fSArnaud Minier     FIELD(PLLSAI1CFGR, PLLSAI1N, 8, 7)
83d6b55a0fSArnaud Minier REG32(PLLSAI2CFGR, 0x14)
84d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2PDIV, 27, 5)
85d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2R, 25, 2)
86d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2REN, 24, 1)
87d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2Q, 21, 2)
88d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2QEN, 20, 1)
89d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2P, 17, 1)
90d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2PEN, 16, 1)
91d6b55a0fSArnaud Minier     FIELD(PLLSAI2CFGR, PLLSAI2N, 8, 7)
92d6b55a0fSArnaud Minier REG32(CIER, 0x18)
93d6b55a0fSArnaud Minier     /* HSI48RDYIE: only on STM32L496xx/4A6xx devices */
94d6b55a0fSArnaud Minier     FIELD(CIER, LSECSSIE, 9, 1)
95d6b55a0fSArnaud Minier     FIELD(CIER, PLLSAI2RDYIE, 7, 1)
96d6b55a0fSArnaud Minier     FIELD(CIER, PLLSAI1RDYIE, 6, 1)
97d6b55a0fSArnaud Minier     FIELD(CIER, PLLRDYIE, 5, 1)
98d6b55a0fSArnaud Minier     FIELD(CIER, HSERDYIE, 4, 1)
99d6b55a0fSArnaud Minier     FIELD(CIER, HSIRDYIE, 3, 1)
100d6b55a0fSArnaud Minier     FIELD(CIER, MSIRDYIE, 2, 1)
101d6b55a0fSArnaud Minier     FIELD(CIER, LSERDYIE, 1, 1)
102d6b55a0fSArnaud Minier     FIELD(CIER, LSIRDYIE, 0, 1)
103d6b55a0fSArnaud Minier REG32(CIFR, 0x1C)
104d6b55a0fSArnaud Minier     /* HSI48RDYF: only on STM32L496xx/4A6xx devices */
105d6b55a0fSArnaud Minier     FIELD(CIFR, LSECSSF, 9, 1)
106d6b55a0fSArnaud Minier     FIELD(CIFR, CSSF, 8, 1)
107d6b55a0fSArnaud Minier     FIELD(CIFR, PLLSAI2RDYF, 7, 1)
108d6b55a0fSArnaud Minier     FIELD(CIFR, PLLSAI1RDYF, 6, 1)
109d6b55a0fSArnaud Minier     FIELD(CIFR, PLLRDYF, 5, 1)
110d6b55a0fSArnaud Minier     FIELD(CIFR, HSERDYF, 4, 1)
111d6b55a0fSArnaud Minier     FIELD(CIFR, HSIRDYF, 3, 1)
112d6b55a0fSArnaud Minier     FIELD(CIFR, MSIRDYF, 2, 1)
113d6b55a0fSArnaud Minier     FIELD(CIFR, LSERDYF, 1, 1)
114d6b55a0fSArnaud Minier     FIELD(CIFR, LSIRDYF, 0, 1)
115d6b55a0fSArnaud Minier REG32(CICR, 0x20)
116d6b55a0fSArnaud Minier     /* HSI48RDYC: only on STM32L496xx/4A6xx devices */
117d6b55a0fSArnaud Minier     FIELD(CICR, LSECSSC, 9, 1)
118d6b55a0fSArnaud Minier     FIELD(CICR, CSSC, 8, 1)
119d6b55a0fSArnaud Minier     FIELD(CICR, PLLSAI2RDYC, 7, 1)
120d6b55a0fSArnaud Minier     FIELD(CICR, PLLSAI1RDYC, 6, 1)
121d6b55a0fSArnaud Minier     FIELD(CICR, PLLRDYC, 5, 1)
122d6b55a0fSArnaud Minier     FIELD(CICR, HSERDYC, 4, 1)
123d6b55a0fSArnaud Minier     FIELD(CICR, HSIRDYC, 3, 1)
124d6b55a0fSArnaud Minier     FIELD(CICR, MSIRDYC, 2, 1)
125d6b55a0fSArnaud Minier     FIELD(CICR, LSERDYC, 1, 1)
126d6b55a0fSArnaud Minier     FIELD(CICR, LSIRDYC, 0, 1)
127d6b55a0fSArnaud Minier REG32(AHB1RSTR, 0x28)
128d6b55a0fSArnaud Minier REG32(AHB2RSTR, 0x2C)
129d6b55a0fSArnaud Minier REG32(AHB3RSTR, 0x30)
130d6b55a0fSArnaud Minier REG32(APB1RSTR1, 0x38)
131d6b55a0fSArnaud Minier REG32(APB1RSTR2, 0x3C)
132d6b55a0fSArnaud Minier REG32(APB2RSTR, 0x40)
133d6b55a0fSArnaud Minier REG32(AHB1ENR, 0x48)
134d6b55a0fSArnaud Minier     /* DMA2DEN: reserved for STM32L475xx */
135d6b55a0fSArnaud Minier     FIELD(AHB1ENR, TSCEN, 16, 1)
136d6b55a0fSArnaud Minier     FIELD(AHB1ENR, CRCEN, 12, 1)
137d6b55a0fSArnaud Minier     FIELD(AHB1ENR, FLASHEN, 8, 1)
138d6b55a0fSArnaud Minier     FIELD(AHB1ENR, DMA2EN, 1, 1)
139d6b55a0fSArnaud Minier     FIELD(AHB1ENR, DMA1EN, 0, 1)
140d6b55a0fSArnaud Minier REG32(AHB2ENR, 0x4C)
141d6b55a0fSArnaud Minier     FIELD(AHB2ENR, RNGEN, 18, 1)
142d6b55a0fSArnaud Minier     /* HASHEN: reserved for STM32L475xx */
143d6b55a0fSArnaud Minier     FIELD(AHB2ENR, AESEN, 16, 1)
144d6b55a0fSArnaud Minier     /* DCMIEN: reserved for STM32L475xx */
145d6b55a0fSArnaud Minier     FIELD(AHB2ENR, ADCEN, 13, 1)
146d6b55a0fSArnaud Minier     FIELD(AHB2ENR, OTGFSEN, 12, 1)
147d6b55a0fSArnaud Minier     /* GPIOIEN: reserved for STM32L475xx */
148d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOHEN, 7, 1)
149d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOGEN, 6, 1)
150d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOFEN, 5, 1)
151d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOEEN, 4, 1)
152d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIODEN, 3, 1)
153d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOCEN, 2, 1)
154d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOBEN, 1, 1)
155d6b55a0fSArnaud Minier     FIELD(AHB2ENR, GPIOAEN, 0, 1)
156d6b55a0fSArnaud Minier REG32(AHB3ENR, 0x50)
157d6b55a0fSArnaud Minier     FIELD(AHB3ENR, QSPIEN, 8, 1)
158d6b55a0fSArnaud Minier     FIELD(AHB3ENR, FMCEN, 0, 1)
159d6b55a0fSArnaud Minier REG32(APB1ENR1, 0x58)
160d6b55a0fSArnaud Minier     FIELD(APB1ENR1, LPTIM1EN, 31, 1)
161d6b55a0fSArnaud Minier     FIELD(APB1ENR1, OPAMPEN, 30, 1)
162d6b55a0fSArnaud Minier     FIELD(APB1ENR1, DAC1EN, 29, 1)
163d6b55a0fSArnaud Minier     FIELD(APB1ENR1, PWREN, 28, 1)
164d6b55a0fSArnaud Minier     FIELD(APB1ENR1, CAN2EN, 26, 1)
165d6b55a0fSArnaud Minier     FIELD(APB1ENR1, CAN1EN, 25, 1)
166d6b55a0fSArnaud Minier     /* CRSEN: reserved for STM32L475xx */
167d6b55a0fSArnaud Minier     FIELD(APB1ENR1, I2C3EN, 23, 1)
168d6b55a0fSArnaud Minier     FIELD(APB1ENR1, I2C2EN, 22, 1)
169d6b55a0fSArnaud Minier     FIELD(APB1ENR1, I2C1EN, 21, 1)
170d6b55a0fSArnaud Minier     FIELD(APB1ENR1, UART5EN, 20, 1)
171d6b55a0fSArnaud Minier     FIELD(APB1ENR1, UART4EN, 19, 1)
172d6b55a0fSArnaud Minier     FIELD(APB1ENR1, USART3EN, 18, 1)
173d6b55a0fSArnaud Minier     FIELD(APB1ENR1, USART2EN, 17, 1)
174d6b55a0fSArnaud Minier     FIELD(APB1ENR1, SPI3EN, 15, 1)
175d6b55a0fSArnaud Minier     FIELD(APB1ENR1, SPI2EN, 14, 1)
176d6b55a0fSArnaud Minier     FIELD(APB1ENR1, WWDGEN, 11, 1)
177d6b55a0fSArnaud Minier     /* RTCAPBEN: reserved for STM32L475xx */
178d6b55a0fSArnaud Minier     FIELD(APB1ENR1, LCDEN, 9, 1)
179d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM7EN, 5, 1)
180d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM6EN, 4, 1)
181d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM5EN, 3, 1)
182d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM4EN, 2, 1)
183d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM3EN, 1, 1)
184d6b55a0fSArnaud Minier     FIELD(APB1ENR1, TIM2EN, 0, 1)
185d6b55a0fSArnaud Minier REG32(APB1ENR2, 0x5C)
186d6b55a0fSArnaud Minier     FIELD(APB1ENR2, LPTIM2EN, 5, 1)
187d6b55a0fSArnaud Minier     FIELD(APB1ENR2, SWPMI1EN, 2, 1)
188d6b55a0fSArnaud Minier     /* I2C4EN: reserved for STM32L475xx */
189d6b55a0fSArnaud Minier     FIELD(APB1ENR2, LPUART1EN, 0, 1)
190d6b55a0fSArnaud Minier REG32(APB2ENR, 0x60)
191d6b55a0fSArnaud Minier     FIELD(APB2ENR, DFSDM1EN, 24, 1)
192d6b55a0fSArnaud Minier     FIELD(APB2ENR, SAI2EN, 22, 1)
193d6b55a0fSArnaud Minier     FIELD(APB2ENR, SAI1EN, 21, 1)
194d6b55a0fSArnaud Minier     FIELD(APB2ENR, TIM17EN, 18, 1)
195d6b55a0fSArnaud Minier     FIELD(APB2ENR, TIM16EN, 17, 1)
196d6b55a0fSArnaud Minier     FIELD(APB2ENR, TIM15EN, 16, 1)
197d6b55a0fSArnaud Minier     FIELD(APB2ENR, USART1EN, 14, 1)
198d6b55a0fSArnaud Minier     FIELD(APB2ENR, TIM8EN, 13, 1)
199d6b55a0fSArnaud Minier     FIELD(APB2ENR, SPI1EN, 12, 1)
200d6b55a0fSArnaud Minier     FIELD(APB2ENR, TIM1EN, 11, 1)
201d6b55a0fSArnaud Minier     FIELD(APB2ENR, SDMMC1EN, 10, 1)
202d6b55a0fSArnaud Minier     FIELD(APB2ENR, FWEN, 7, 1)
203d6b55a0fSArnaud Minier     FIELD(APB2ENR, SYSCFGEN, 0, 1)
204d6b55a0fSArnaud Minier REG32(AHB1SMENR, 0x68)
205d6b55a0fSArnaud Minier REG32(AHB2SMENR, 0x6C)
206d6b55a0fSArnaud Minier REG32(AHB3SMENR, 0x70)
207d6b55a0fSArnaud Minier REG32(APB1SMENR1, 0x78)
208d6b55a0fSArnaud Minier REG32(APB1SMENR2, 0x7C)
209d6b55a0fSArnaud Minier REG32(APB2SMENR, 0x80)
210d6b55a0fSArnaud Minier REG32(CCIPR, 0x88)
211d6b55a0fSArnaud Minier     FIELD(CCIPR, DFSDM1SEL, 31, 1)
212d6b55a0fSArnaud Minier     FIELD(CCIPR, SWPMI1SEL, 30, 1)
213d6b55a0fSArnaud Minier     FIELD(CCIPR, ADCSEL, 28, 2)
214d6b55a0fSArnaud Minier     FIELD(CCIPR, CLK48SEL, 26, 2)
215d6b55a0fSArnaud Minier     FIELD(CCIPR, SAI2SEL, 24, 2)
216d6b55a0fSArnaud Minier     FIELD(CCIPR, SAI1SEL, 22, 2)
217d6b55a0fSArnaud Minier     FIELD(CCIPR, LPTIM2SEL, 20, 2)
218d6b55a0fSArnaud Minier     FIELD(CCIPR, LPTIM1SEL, 18, 2)
219d6b55a0fSArnaud Minier     FIELD(CCIPR, I2C3SEL, 16, 2)
220d6b55a0fSArnaud Minier     FIELD(CCIPR, I2C2SEL, 14, 2)
221d6b55a0fSArnaud Minier     FIELD(CCIPR, I2C1SEL, 12, 2)
222d6b55a0fSArnaud Minier     FIELD(CCIPR, LPUART1SEL, 10, 2)
223d6b55a0fSArnaud Minier     FIELD(CCIPR, UART5SEL, 8, 2)
224d6b55a0fSArnaud Minier     FIELD(CCIPR, UART4SEL, 6, 2)
225d6b55a0fSArnaud Minier     FIELD(CCIPR, USART3SEL, 4, 2)
226d6b55a0fSArnaud Minier     FIELD(CCIPR, USART2SEL, 2, 2)
227d6b55a0fSArnaud Minier     FIELD(CCIPR, USART1SEL, 0, 2)
228d6b55a0fSArnaud Minier REG32(BDCR, 0x90)
229d6b55a0fSArnaud Minier     FIELD(BDCR, LSCOSEL, 25, 1)
230d6b55a0fSArnaud Minier     FIELD(BDCR, LSCOEN, 24, 1)
231d6b55a0fSArnaud Minier     FIELD(BDCR, BDRST, 16, 1)
232d6b55a0fSArnaud Minier     FIELD(BDCR, RTCEN, 15, 1)
233d6b55a0fSArnaud Minier     FIELD(BDCR, RTCSEL, 8, 2)
234d6b55a0fSArnaud Minier     FIELD(BDCR, LSECSSD, 6, 1)
235d6b55a0fSArnaud Minier     FIELD(BDCR, LSECSSON, 5, 1)
236d6b55a0fSArnaud Minier     FIELD(BDCR, LSEDRV, 3, 2)
237d6b55a0fSArnaud Minier     FIELD(BDCR, LSEBYP, 2, 1)
238d6b55a0fSArnaud Minier     FIELD(BDCR, LSERDY, 1, 1)
239d6b55a0fSArnaud Minier     FIELD(BDCR, LSEON, 0, 1)
240d6b55a0fSArnaud Minier REG32(CSR, 0x94)
241d6b55a0fSArnaud Minier     FIELD(CSR, LPWRRSTF, 31, 1)
242d6b55a0fSArnaud Minier     FIELD(CSR, WWDGRSTF, 30, 1)
243d6b55a0fSArnaud Minier     FIELD(CSR, IWWGRSTF, 29, 1)
244d6b55a0fSArnaud Minier     FIELD(CSR, SFTRSTF, 28, 1)
245d6b55a0fSArnaud Minier     FIELD(CSR, BORRSTF, 27, 1)
246d6b55a0fSArnaud Minier     FIELD(CSR, PINRSTF, 26, 1)
247d6b55a0fSArnaud Minier     FIELD(CSR, OBLRSTF, 25, 1)
248d6b55a0fSArnaud Minier     FIELD(CSR, FWRSTF, 24, 1)
249d6b55a0fSArnaud Minier     FIELD(CSR, RMVF, 23, 1)
250d6b55a0fSArnaud Minier     FIELD(CSR, MSISRANGE, 8, 4)
251d6b55a0fSArnaud Minier     FIELD(CSR, LSIRDY, 1, 1)
252d6b55a0fSArnaud Minier     FIELD(CSR, LSION, 0, 1)
253d6b55a0fSArnaud Minier /* CRRCR and CCIPR2 registers are present on L496/L4A6 devices only. */
254d6b55a0fSArnaud Minier 
255d6b55a0fSArnaud Minier /* Read Only masks to prevent writes in unauthorized bits */
256d6b55a0fSArnaud Minier #define CR_READ_ONLY_MASK (R_CR_PLLSAI2RDY_MASK | \
257d6b55a0fSArnaud Minier                            R_CR_PLLSAI1RDY_MASK | \
258d6b55a0fSArnaud Minier                            R_CR_PLLRDY_MASK     | \
259d6b55a0fSArnaud Minier                            R_CR_HSERDY_MASK     | \
260d6b55a0fSArnaud Minier                            R_CR_HSIRDY_MASK     | \
261d6b55a0fSArnaud Minier                            R_CR_MSIRDY_MASK)
262d6b55a0fSArnaud Minier #define CR_READ_SET_MASK (R_CR_CSSON_MASK | R_CR_MSIRGSEL_MASK)
263d6b55a0fSArnaud Minier #define ICSCR_READ_ONLY_MASK (R_ICSCR_HSICAL_MASK | R_ICSCR_MSICAL_MASK)
264d6b55a0fSArnaud Minier #define CFGR_READ_ONLY_MASK (R_CFGR_SWS_MASK)
265d6b55a0fSArnaud Minier #define CIFR_READ_ONLY_MASK (R_CIFR_LSECSSF_MASK     | \
266d6b55a0fSArnaud Minier                              R_CIFR_CSSF_MASK        | \
267d6b55a0fSArnaud Minier                              R_CIFR_PLLSAI2RDYF_MASK | \
268d6b55a0fSArnaud Minier                              R_CIFR_PLLSAI1RDYF_MASK | \
269d6b55a0fSArnaud Minier                              R_CIFR_PLLRDYF_MASK     | \
270d6b55a0fSArnaud Minier                              R_CIFR_HSERDYF_MASK     | \
271d6b55a0fSArnaud Minier                              R_CIFR_HSIRDYF_MASK     | \
272d6b55a0fSArnaud Minier                              R_CIFR_MSIRDYF_MASK     | \
273d6b55a0fSArnaud Minier                              R_CIFR_LSERDYF_MASK     | \
274d6b55a0fSArnaud Minier                              R_CIFR_LSIRDYF_MASK)
275d6b55a0fSArnaud Minier #define CIFR_IRQ_MASK CIFR_READ_ONLY_MASK
276d6b55a0fSArnaud Minier #define APB2ENR_READ_SET_MASK (R_APB2ENR_FWEN_MASK)
277d6b55a0fSArnaud Minier #define BDCR_READ_ONLY_MASK (R_BDCR_LSECSSD_MASK | R_BDCR_LSERDY_MASK)
278d6b55a0fSArnaud Minier #define CSR_READ_ONLY_MASK (R_CSR_LPWRRSTF_MASK | \
279d6b55a0fSArnaud Minier                             R_CSR_WWDGRSTF_MASK | \
280d6b55a0fSArnaud Minier                             R_CSR_IWWGRSTF_MASK | \
281d6b55a0fSArnaud Minier                             R_CSR_SFTRSTF_MASK  | \
282d6b55a0fSArnaud Minier                             R_CSR_BORRSTF_MASK  | \
283d6b55a0fSArnaud Minier                             R_CSR_PINRSTF_MASK  | \
284d6b55a0fSArnaud Minier                             R_CSR_OBLRSTF_MASK  | \
285d6b55a0fSArnaud Minier                             R_CSR_FWRSTF_MASK   | \
286d6b55a0fSArnaud Minier                             R_CSR_LSIRDY_MASK)
287d6b55a0fSArnaud Minier 
288*ec7d83acSArnaud Minier typedef enum RccClockMuxSource {
289*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_GND = 0,
290*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_HSI,
291*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_HSE,
292*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_MSI,
293*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_LSI,
294*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_LSE,
295*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_SAI1_EXTCLK,
296*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_SAI2_EXTCLK,
297*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLL,
298*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLLSAI1,
299*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLLSAI2,
300*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLLSAI3,
301*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLL48M1,
302*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLL48M2,
303*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLLADC1,
304*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PLLADC2,
305*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_SYSCLK,
306*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_HCLK,
307*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PCLK1,
308*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_PCLK2,
309*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_HSE_OVER_32,
310*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_LCD_AND_RTC_COMMON,
311*ec7d83acSArnaud Minier 
312*ec7d83acSArnaud Minier     RCC_CLOCK_MUX_SRC_NUMBER,
313*ec7d83acSArnaud Minier } RccClockMuxSource;
314*ec7d83acSArnaud Minier 
315d6b55a0fSArnaud Minier #endif /* HW_STM32L4X5_RCC_INTERNALS_H */
316