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