1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */ 2266fa4dfSPatrick Delaunay /* 3266fa4dfSPatrick Delaunay * Copyright (C) 2018, STMicroelectronics - All Rights Reserved 4266fa4dfSPatrick Delaunay * 5266fa4dfSPatrick Delaunay */ 6266fa4dfSPatrick Delaunay 7266fa4dfSPatrick Delaunay #ifndef _DT_BINDINGS_CLOCK_STM32MP1_CLKSRC_H_ 8266fa4dfSPatrick Delaunay #define _DT_BINDINGS_CLOCK_STM32MP1_CLKSRC_H_ 9266fa4dfSPatrick Delaunay 10266fa4dfSPatrick Delaunay /* PLL output is enable when x=1, with x=p,q or r */ 11266fa4dfSPatrick Delaunay #define PQR(p, q, r) (((p) & 1) | (((q) & 1) << 1) | (((r) & 1) << 2)) 12266fa4dfSPatrick Delaunay 13266fa4dfSPatrick Delaunay /* st,clksrc: mandatory clock source */ 14266fa4dfSPatrick Delaunay 15266fa4dfSPatrick Delaunay #define CLK_MPU_HSI 0x00000200 16266fa4dfSPatrick Delaunay #define CLK_MPU_HSE 0x00000201 17266fa4dfSPatrick Delaunay #define CLK_MPU_PLL1P 0x00000202 18266fa4dfSPatrick Delaunay #define CLK_MPU_PLL1P_DIV 0x00000203 19266fa4dfSPatrick Delaunay 20266fa4dfSPatrick Delaunay #define CLK_AXI_HSI 0x00000240 21266fa4dfSPatrick Delaunay #define CLK_AXI_HSE 0x00000241 22266fa4dfSPatrick Delaunay #define CLK_AXI_PLL2P 0x00000242 23266fa4dfSPatrick Delaunay 24266fa4dfSPatrick Delaunay #define CLK_MCU_HSI 0x00000480 25266fa4dfSPatrick Delaunay #define CLK_MCU_HSE 0x00000481 26266fa4dfSPatrick Delaunay #define CLK_MCU_CSI 0x00000482 27266fa4dfSPatrick Delaunay #define CLK_MCU_PLL3P 0x00000483 28266fa4dfSPatrick Delaunay 29266fa4dfSPatrick Delaunay #define CLK_PLL12_HSI 0x00000280 30266fa4dfSPatrick Delaunay #define CLK_PLL12_HSE 0x00000281 31266fa4dfSPatrick Delaunay 32266fa4dfSPatrick Delaunay #define CLK_PLL3_HSI 0x00008200 33266fa4dfSPatrick Delaunay #define CLK_PLL3_HSE 0x00008201 34266fa4dfSPatrick Delaunay #define CLK_PLL3_CSI 0x00008202 35266fa4dfSPatrick Delaunay 36266fa4dfSPatrick Delaunay #define CLK_PLL4_HSI 0x00008240 37266fa4dfSPatrick Delaunay #define CLK_PLL4_HSE 0x00008241 38266fa4dfSPatrick Delaunay #define CLK_PLL4_CSI 0x00008242 39266fa4dfSPatrick Delaunay #define CLK_PLL4_I2SCKIN 0x00008243 40266fa4dfSPatrick Delaunay 41266fa4dfSPatrick Delaunay #define CLK_RTC_DISABLED 0x00001400 42266fa4dfSPatrick Delaunay #define CLK_RTC_LSE 0x00001401 43266fa4dfSPatrick Delaunay #define CLK_RTC_LSI 0x00001402 44266fa4dfSPatrick Delaunay #define CLK_RTC_HSE 0x00001403 45266fa4dfSPatrick Delaunay 46266fa4dfSPatrick Delaunay #define CLK_MCO1_HSI 0x00008000 47266fa4dfSPatrick Delaunay #define CLK_MCO1_HSE 0x00008001 48266fa4dfSPatrick Delaunay #define CLK_MCO1_CSI 0x00008002 49266fa4dfSPatrick Delaunay #define CLK_MCO1_LSI 0x00008003 50266fa4dfSPatrick Delaunay #define CLK_MCO1_LSE 0x00008004 51266fa4dfSPatrick Delaunay #define CLK_MCO1_DISABLED 0x0000800F 52266fa4dfSPatrick Delaunay 53266fa4dfSPatrick Delaunay #define CLK_MCO2_MPU 0x00008040 54266fa4dfSPatrick Delaunay #define CLK_MCO2_AXI 0x00008041 55266fa4dfSPatrick Delaunay #define CLK_MCO2_MCU 0x00008042 56266fa4dfSPatrick Delaunay #define CLK_MCO2_PLL4P 0x00008043 57266fa4dfSPatrick Delaunay #define CLK_MCO2_HSE 0x00008044 58266fa4dfSPatrick Delaunay #define CLK_MCO2_HSI 0x00008045 59266fa4dfSPatrick Delaunay #define CLK_MCO2_DISABLED 0x0000804F 60266fa4dfSPatrick Delaunay 61266fa4dfSPatrick Delaunay /* st,pkcs: peripheral kernel clock source */ 62266fa4dfSPatrick Delaunay 63266fa4dfSPatrick Delaunay #define CLK_I2C12_PCLK1 0x00008C00 64266fa4dfSPatrick Delaunay #define CLK_I2C12_PLL4R 0x00008C01 65266fa4dfSPatrick Delaunay #define CLK_I2C12_HSI 0x00008C02 66266fa4dfSPatrick Delaunay #define CLK_I2C12_CSI 0x00008C03 67266fa4dfSPatrick Delaunay #define CLK_I2C12_DISABLED 0x00008C07 68266fa4dfSPatrick Delaunay 69266fa4dfSPatrick Delaunay #define CLK_I2C35_PCLK1 0x00008C40 70266fa4dfSPatrick Delaunay #define CLK_I2C35_PLL4R 0x00008C41 71266fa4dfSPatrick Delaunay #define CLK_I2C35_HSI 0x00008C42 72266fa4dfSPatrick Delaunay #define CLK_I2C35_CSI 0x00008C43 73266fa4dfSPatrick Delaunay #define CLK_I2C35_DISABLED 0x00008C47 74266fa4dfSPatrick Delaunay 75266fa4dfSPatrick Delaunay #define CLK_I2C46_PCLK5 0x00000C00 76266fa4dfSPatrick Delaunay #define CLK_I2C46_PLL3Q 0x00000C01 77266fa4dfSPatrick Delaunay #define CLK_I2C46_HSI 0x00000C02 78266fa4dfSPatrick Delaunay #define CLK_I2C46_CSI 0x00000C03 79266fa4dfSPatrick Delaunay #define CLK_I2C46_DISABLED 0x00000C07 80266fa4dfSPatrick Delaunay 81266fa4dfSPatrick Delaunay #define CLK_SAI1_PLL4Q 0x00008C80 82266fa4dfSPatrick Delaunay #define CLK_SAI1_PLL3Q 0x00008C81 83266fa4dfSPatrick Delaunay #define CLK_SAI1_I2SCKIN 0x00008C82 84266fa4dfSPatrick Delaunay #define CLK_SAI1_CKPER 0x00008C83 85266fa4dfSPatrick Delaunay #define CLK_SAI1_PLL3R 0x00008C84 86266fa4dfSPatrick Delaunay #define CLK_SAI1_DISABLED 0x00008C87 87266fa4dfSPatrick Delaunay 88266fa4dfSPatrick Delaunay #define CLK_SAI2_PLL4Q 0x00008CC0 89266fa4dfSPatrick Delaunay #define CLK_SAI2_PLL3Q 0x00008CC1 90266fa4dfSPatrick Delaunay #define CLK_SAI2_I2SCKIN 0x00008CC2 91266fa4dfSPatrick Delaunay #define CLK_SAI2_CKPER 0x00008CC3 92266fa4dfSPatrick Delaunay #define CLK_SAI2_SPDIF 0x00008CC4 93266fa4dfSPatrick Delaunay #define CLK_SAI2_PLL3R 0x00008CC5 94266fa4dfSPatrick Delaunay #define CLK_SAI2_DISABLED 0x00008CC7 95266fa4dfSPatrick Delaunay 96266fa4dfSPatrick Delaunay #define CLK_SAI3_PLL4Q 0x00008D00 97266fa4dfSPatrick Delaunay #define CLK_SAI3_PLL3Q 0x00008D01 98266fa4dfSPatrick Delaunay #define CLK_SAI3_I2SCKIN 0x00008D02 99266fa4dfSPatrick Delaunay #define CLK_SAI3_CKPER 0x00008D03 100266fa4dfSPatrick Delaunay #define CLK_SAI3_PLL3R 0x00008D04 101266fa4dfSPatrick Delaunay #define CLK_SAI3_DISABLED 0x00008D07 102266fa4dfSPatrick Delaunay 103266fa4dfSPatrick Delaunay #define CLK_SAI4_PLL4Q 0x00008D40 104266fa4dfSPatrick Delaunay #define CLK_SAI4_PLL3Q 0x00008D41 105266fa4dfSPatrick Delaunay #define CLK_SAI4_I2SCKIN 0x00008D42 106266fa4dfSPatrick Delaunay #define CLK_SAI4_CKPER 0x00008D43 107266fa4dfSPatrick Delaunay #define CLK_SAI4_PLL3R 0x00008D44 108266fa4dfSPatrick Delaunay #define CLK_SAI4_DISABLED 0x00008D47 109266fa4dfSPatrick Delaunay 110266fa4dfSPatrick Delaunay #define CLK_SPI2S1_PLL4P 0x00008D80 111266fa4dfSPatrick Delaunay #define CLK_SPI2S1_PLL3Q 0x00008D81 112266fa4dfSPatrick Delaunay #define CLK_SPI2S1_I2SCKIN 0x00008D82 113266fa4dfSPatrick Delaunay #define CLK_SPI2S1_CKPER 0x00008D83 114266fa4dfSPatrick Delaunay #define CLK_SPI2S1_PLL3R 0x00008D84 115266fa4dfSPatrick Delaunay #define CLK_SPI2S1_DISABLED 0x00008D87 116266fa4dfSPatrick Delaunay 117266fa4dfSPatrick Delaunay #define CLK_SPI2S23_PLL4P 0x00008DC0 118266fa4dfSPatrick Delaunay #define CLK_SPI2S23_PLL3Q 0x00008DC1 119266fa4dfSPatrick Delaunay #define CLK_SPI2S23_I2SCKIN 0x00008DC2 120266fa4dfSPatrick Delaunay #define CLK_SPI2S23_CKPER 0x00008DC3 121266fa4dfSPatrick Delaunay #define CLK_SPI2S23_PLL3R 0x00008DC4 122266fa4dfSPatrick Delaunay #define CLK_SPI2S23_DISABLED 0x00008DC7 123266fa4dfSPatrick Delaunay 124266fa4dfSPatrick Delaunay #define CLK_SPI45_PCLK2 0x00008E00 125266fa4dfSPatrick Delaunay #define CLK_SPI45_PLL4Q 0x00008E01 126266fa4dfSPatrick Delaunay #define CLK_SPI45_HSI 0x00008E02 127266fa4dfSPatrick Delaunay #define CLK_SPI45_CSI 0x00008E03 128266fa4dfSPatrick Delaunay #define CLK_SPI45_HSE 0x00008E04 129266fa4dfSPatrick Delaunay #define CLK_SPI45_DISABLED 0x00008E07 130266fa4dfSPatrick Delaunay 131266fa4dfSPatrick Delaunay #define CLK_SPI6_PCLK5 0x00000C40 132266fa4dfSPatrick Delaunay #define CLK_SPI6_PLL4Q 0x00000C41 133266fa4dfSPatrick Delaunay #define CLK_SPI6_HSI 0x00000C42 134266fa4dfSPatrick Delaunay #define CLK_SPI6_CSI 0x00000C43 135266fa4dfSPatrick Delaunay #define CLK_SPI6_HSE 0x00000C44 136266fa4dfSPatrick Delaunay #define CLK_SPI6_PLL3Q 0x00000C45 137266fa4dfSPatrick Delaunay #define CLK_SPI6_DISABLED 0x00000C47 138266fa4dfSPatrick Delaunay 139266fa4dfSPatrick Delaunay #define CLK_UART6_PCLK2 0x00008E40 140266fa4dfSPatrick Delaunay #define CLK_UART6_PLL4Q 0x00008E41 141266fa4dfSPatrick Delaunay #define CLK_UART6_HSI 0x00008E42 142266fa4dfSPatrick Delaunay #define CLK_UART6_CSI 0x00008E43 143266fa4dfSPatrick Delaunay #define CLK_UART6_HSE 0x00008E44 144266fa4dfSPatrick Delaunay #define CLK_UART6_DISABLED 0x00008E47 145266fa4dfSPatrick Delaunay 146266fa4dfSPatrick Delaunay #define CLK_UART24_PCLK1 0x00008E80 147266fa4dfSPatrick Delaunay #define CLK_UART24_PLL4Q 0x00008E81 148266fa4dfSPatrick Delaunay #define CLK_UART24_HSI 0x00008E82 149266fa4dfSPatrick Delaunay #define CLK_UART24_CSI 0x00008E83 150266fa4dfSPatrick Delaunay #define CLK_UART24_HSE 0x00008E84 151266fa4dfSPatrick Delaunay #define CLK_UART24_DISABLED 0x00008E87 152266fa4dfSPatrick Delaunay 153266fa4dfSPatrick Delaunay #define CLK_UART35_PCLK1 0x00008EC0 154266fa4dfSPatrick Delaunay #define CLK_UART35_PLL4Q 0x00008EC1 155266fa4dfSPatrick Delaunay #define CLK_UART35_HSI 0x00008EC2 156266fa4dfSPatrick Delaunay #define CLK_UART35_CSI 0x00008EC3 157266fa4dfSPatrick Delaunay #define CLK_UART35_HSE 0x00008EC4 158266fa4dfSPatrick Delaunay #define CLK_UART35_DISABLED 0x00008EC7 159266fa4dfSPatrick Delaunay 160266fa4dfSPatrick Delaunay #define CLK_UART78_PCLK1 0x00008F00 161266fa4dfSPatrick Delaunay #define CLK_UART78_PLL4Q 0x00008F01 162266fa4dfSPatrick Delaunay #define CLK_UART78_HSI 0x00008F02 163266fa4dfSPatrick Delaunay #define CLK_UART78_CSI 0x00008F03 164266fa4dfSPatrick Delaunay #define CLK_UART78_HSE 0x00008F04 165266fa4dfSPatrick Delaunay #define CLK_UART78_DISABLED 0x00008F07 166266fa4dfSPatrick Delaunay 167266fa4dfSPatrick Delaunay #define CLK_UART1_PCLK5 0x00000C80 168266fa4dfSPatrick Delaunay #define CLK_UART1_PLL3Q 0x00000C81 169266fa4dfSPatrick Delaunay #define CLK_UART1_HSI 0x00000C82 170266fa4dfSPatrick Delaunay #define CLK_UART1_CSI 0x00000C83 171266fa4dfSPatrick Delaunay #define CLK_UART1_PLL4Q 0x00000C84 172266fa4dfSPatrick Delaunay #define CLK_UART1_HSE 0x00000C85 173266fa4dfSPatrick Delaunay #define CLK_UART1_DISABLED 0x00000C87 174266fa4dfSPatrick Delaunay 175266fa4dfSPatrick Delaunay #define CLK_SDMMC12_HCLK6 0x00008F40 176266fa4dfSPatrick Delaunay #define CLK_SDMMC12_PLL3R 0x00008F41 177266fa4dfSPatrick Delaunay #define CLK_SDMMC12_PLL4P 0x00008F42 178266fa4dfSPatrick Delaunay #define CLK_SDMMC12_HSI 0x00008F43 179266fa4dfSPatrick Delaunay #define CLK_SDMMC12_DISABLED 0x00008F47 180266fa4dfSPatrick Delaunay 181266fa4dfSPatrick Delaunay #define CLK_SDMMC3_HCLK2 0x00008F80 182266fa4dfSPatrick Delaunay #define CLK_SDMMC3_PLL3R 0x00008F81 183266fa4dfSPatrick Delaunay #define CLK_SDMMC3_PLL4P 0x00008F82 184266fa4dfSPatrick Delaunay #define CLK_SDMMC3_HSI 0x00008F83 185266fa4dfSPatrick Delaunay #define CLK_SDMMC3_DISABLED 0x00008F87 186266fa4dfSPatrick Delaunay 187266fa4dfSPatrick Delaunay #define CLK_ETH_PLL4P 0x00008FC0 188266fa4dfSPatrick Delaunay #define CLK_ETH_PLL3Q 0x00008FC1 189266fa4dfSPatrick Delaunay #define CLK_ETH_DISABLED 0x00008FC3 190266fa4dfSPatrick Delaunay 191266fa4dfSPatrick Delaunay #define CLK_QSPI_ACLK 0x00009000 192266fa4dfSPatrick Delaunay #define CLK_QSPI_PLL3R 0x00009001 193266fa4dfSPatrick Delaunay #define CLK_QSPI_PLL4P 0x00009002 194266fa4dfSPatrick Delaunay #define CLK_QSPI_CKPER 0x00009003 195266fa4dfSPatrick Delaunay 196266fa4dfSPatrick Delaunay #define CLK_FMC_ACLK 0x00009040 197266fa4dfSPatrick Delaunay #define CLK_FMC_PLL3R 0x00009041 198266fa4dfSPatrick Delaunay #define CLK_FMC_PLL4P 0x00009042 199266fa4dfSPatrick Delaunay #define CLK_FMC_CKPER 0x00009043 200266fa4dfSPatrick Delaunay 201266fa4dfSPatrick Delaunay #define CLK_FDCAN_HSE 0x000090C0 202266fa4dfSPatrick Delaunay #define CLK_FDCAN_PLL3Q 0x000090C1 203266fa4dfSPatrick Delaunay #define CLK_FDCAN_PLL4Q 0x000090C2 204266fa4dfSPatrick Delaunay #define CLK_FDCAN_PLL4R 0x000090C3 205266fa4dfSPatrick Delaunay 206266fa4dfSPatrick Delaunay #define CLK_SPDIF_PLL4P 0x00009140 207266fa4dfSPatrick Delaunay #define CLK_SPDIF_PLL3Q 0x00009141 208266fa4dfSPatrick Delaunay #define CLK_SPDIF_HSI 0x00009142 209266fa4dfSPatrick Delaunay #define CLK_SPDIF_DISABLED 0x00009143 210266fa4dfSPatrick Delaunay 211266fa4dfSPatrick Delaunay #define CLK_CEC_LSE 0x00009180 212266fa4dfSPatrick Delaunay #define CLK_CEC_LSI 0x00009181 213266fa4dfSPatrick Delaunay #define CLK_CEC_CSI_DIV122 0x00009182 214266fa4dfSPatrick Delaunay #define CLK_CEC_DISABLED 0x00009183 215266fa4dfSPatrick Delaunay 216266fa4dfSPatrick Delaunay #define CLK_USBPHY_HSE 0x000091C0 217266fa4dfSPatrick Delaunay #define CLK_USBPHY_PLL4R 0x000091C1 218266fa4dfSPatrick Delaunay #define CLK_USBPHY_HSE_DIV2 0x000091C2 219266fa4dfSPatrick Delaunay #define CLK_USBPHY_DISABLED 0x000091C3 220266fa4dfSPatrick Delaunay 221266fa4dfSPatrick Delaunay #define CLK_USBO_PLL4R 0x800091C0 222266fa4dfSPatrick Delaunay #define CLK_USBO_USBPHY 0x800091C1 223266fa4dfSPatrick Delaunay 224266fa4dfSPatrick Delaunay #define CLK_RNG1_CSI 0x00000CC0 225266fa4dfSPatrick Delaunay #define CLK_RNG1_PLL4R 0x00000CC1 226266fa4dfSPatrick Delaunay #define CLK_RNG1_LSE 0x00000CC2 227266fa4dfSPatrick Delaunay #define CLK_RNG1_LSI 0x00000CC3 228266fa4dfSPatrick Delaunay 229266fa4dfSPatrick Delaunay #define CLK_RNG2_CSI 0x00009200 230266fa4dfSPatrick Delaunay #define CLK_RNG2_PLL4R 0x00009201 231266fa4dfSPatrick Delaunay #define CLK_RNG2_LSE 0x00009202 232266fa4dfSPatrick Delaunay #define CLK_RNG2_LSI 0x00009203 233266fa4dfSPatrick Delaunay 234266fa4dfSPatrick Delaunay #define CLK_CKPER_HSI 0x00000D00 235266fa4dfSPatrick Delaunay #define CLK_CKPER_CSI 0x00000D01 236266fa4dfSPatrick Delaunay #define CLK_CKPER_HSE 0x00000D02 237266fa4dfSPatrick Delaunay #define CLK_CKPER_DISABLED 0x00000D03 238266fa4dfSPatrick Delaunay 239266fa4dfSPatrick Delaunay #define CLK_STGEN_HSI 0x00000D40 240266fa4dfSPatrick Delaunay #define CLK_STGEN_HSE 0x00000D41 241266fa4dfSPatrick Delaunay #define CLK_STGEN_DISABLED 0x00000D43 242266fa4dfSPatrick Delaunay 243266fa4dfSPatrick Delaunay #define CLK_DSI_DSIPLL 0x00009240 244266fa4dfSPatrick Delaunay #define CLK_DSI_PLL4P 0x00009241 245266fa4dfSPatrick Delaunay 246266fa4dfSPatrick Delaunay #define CLK_ADC_PLL4R 0x00009280 247266fa4dfSPatrick Delaunay #define CLK_ADC_CKPER 0x00009281 248266fa4dfSPatrick Delaunay #define CLK_ADC_PLL3Q 0x00009282 249266fa4dfSPatrick Delaunay #define CLK_ADC_DISABLED 0x00009283 250266fa4dfSPatrick Delaunay 251266fa4dfSPatrick Delaunay #define CLK_LPTIM45_PCLK3 0x000092C0 252266fa4dfSPatrick Delaunay #define CLK_LPTIM45_PLL4P 0x000092C1 253266fa4dfSPatrick Delaunay #define CLK_LPTIM45_PLL3Q 0x000092C2 254266fa4dfSPatrick Delaunay #define CLK_LPTIM45_LSE 0x000092C3 255266fa4dfSPatrick Delaunay #define CLK_LPTIM45_LSI 0x000092C4 256266fa4dfSPatrick Delaunay #define CLK_LPTIM45_CKPER 0x000092C5 257266fa4dfSPatrick Delaunay #define CLK_LPTIM45_DISABLED 0x000092C7 258266fa4dfSPatrick Delaunay 259266fa4dfSPatrick Delaunay #define CLK_LPTIM23_PCLK3 0x00009300 260266fa4dfSPatrick Delaunay #define CLK_LPTIM23_PLL4Q 0x00009301 261266fa4dfSPatrick Delaunay #define CLK_LPTIM23_CKPER 0x00009302 262266fa4dfSPatrick Delaunay #define CLK_LPTIM23_LSE 0x00009303 263266fa4dfSPatrick Delaunay #define CLK_LPTIM23_LSI 0x00009304 264266fa4dfSPatrick Delaunay #define CLK_LPTIM23_DISABLED 0x00009307 265266fa4dfSPatrick Delaunay 266266fa4dfSPatrick Delaunay #define CLK_LPTIM1_PCLK1 0x00009340 267266fa4dfSPatrick Delaunay #define CLK_LPTIM1_PLL4P 0x00009341 268266fa4dfSPatrick Delaunay #define CLK_LPTIM1_PLL3Q 0x00009342 269266fa4dfSPatrick Delaunay #define CLK_LPTIM1_LSE 0x00009343 270266fa4dfSPatrick Delaunay #define CLK_LPTIM1_LSI 0x00009344 271266fa4dfSPatrick Delaunay #define CLK_LPTIM1_CKPER 0x00009345 272266fa4dfSPatrick Delaunay #define CLK_LPTIM1_DISABLED 0x00009347 273266fa4dfSPatrick Delaunay 274266fa4dfSPatrick Delaunay /* define for st,pll /csg */ 275266fa4dfSPatrick Delaunay #define SSCG_MODE_CENTER_SPREAD 0 276266fa4dfSPatrick Delaunay #define SSCG_MODE_DOWN_SPREAD 1 277266fa4dfSPatrick Delaunay 278266fa4dfSPatrick Delaunay /* define for st,drive */ 279266fa4dfSPatrick Delaunay #define LSEDRV_LOWEST 0 280266fa4dfSPatrick Delaunay #define LSEDRV_MEDIUM_LOW 1 281266fa4dfSPatrick Delaunay #define LSEDRV_MEDIUM_HIGH 2 282266fa4dfSPatrick Delaunay #define LSEDRV_HIGHEST 3 283266fa4dfSPatrick Delaunay 284266fa4dfSPatrick Delaunay #endif 285