1*5f62a964SEmmanuel Vadot /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2*5f62a964SEmmanuel Vadot /* 3*5f62a964SEmmanuel Vadot * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. 4*5f62a964SEmmanuel Vadot */ 5*5f62a964SEmmanuel Vadot 6*5f62a964SEmmanuel Vadot #ifndef _DT_BINDINGS_CLK_QCOM_GCC_QCS8300_H 7*5f62a964SEmmanuel Vadot #define _DT_BINDINGS_CLK_QCOM_GCC_QCS8300_H 8*5f62a964SEmmanuel Vadot 9*5f62a964SEmmanuel Vadot /* GCC clocks */ 10*5f62a964SEmmanuel Vadot #define GCC_GPLL0 0 11*5f62a964SEmmanuel Vadot #define GCC_GPLL0_OUT_EVEN 1 12*5f62a964SEmmanuel Vadot #define GCC_GPLL1 2 13*5f62a964SEmmanuel Vadot #define GCC_GPLL4 3 14*5f62a964SEmmanuel Vadot #define GCC_GPLL7 4 15*5f62a964SEmmanuel Vadot #define GCC_GPLL9 5 16*5f62a964SEmmanuel Vadot #define GCC_AGGRE_NOC_QUPV3_AXI_CLK 6 17*5f62a964SEmmanuel Vadot #define GCC_AGGRE_UFS_PHY_AXI_CLK 7 18*5f62a964SEmmanuel Vadot #define GCC_AGGRE_USB2_PRIM_AXI_CLK 8 19*5f62a964SEmmanuel Vadot #define GCC_AGGRE_USB3_PRIM_AXI_CLK 9 20*5f62a964SEmmanuel Vadot #define GCC_AHB2PHY0_CLK 10 21*5f62a964SEmmanuel Vadot #define GCC_AHB2PHY2_CLK 11 22*5f62a964SEmmanuel Vadot #define GCC_AHB2PHY3_CLK 12 23*5f62a964SEmmanuel Vadot #define GCC_BOOT_ROM_AHB_CLK 13 24*5f62a964SEmmanuel Vadot #define GCC_CAMERA_AHB_CLK 14 25*5f62a964SEmmanuel Vadot #define GCC_CAMERA_HF_AXI_CLK 15 26*5f62a964SEmmanuel Vadot #define GCC_CAMERA_SF_AXI_CLK 16 27*5f62a964SEmmanuel Vadot #define GCC_CAMERA_THROTTLE_XO_CLK 17 28*5f62a964SEmmanuel Vadot #define GCC_CAMERA_XO_CLK 18 29*5f62a964SEmmanuel Vadot #define GCC_CFG_NOC_USB2_PRIM_AXI_CLK 19 30*5f62a964SEmmanuel Vadot #define GCC_CFG_NOC_USB3_PRIM_AXI_CLK 20 31*5f62a964SEmmanuel Vadot #define GCC_DDRSS_GPU_AXI_CLK 21 32*5f62a964SEmmanuel Vadot #define GCC_DISP_AHB_CLK 22 33*5f62a964SEmmanuel Vadot #define GCC_DISP_HF_AXI_CLK 23 34*5f62a964SEmmanuel Vadot #define GCC_DISP_XO_CLK 24 35*5f62a964SEmmanuel Vadot #define GCC_EDP_REF_CLKREF_EN 25 36*5f62a964SEmmanuel Vadot #define GCC_EMAC0_AXI_CLK 26 37*5f62a964SEmmanuel Vadot #define GCC_EMAC0_PHY_AUX_CLK 27 38*5f62a964SEmmanuel Vadot #define GCC_EMAC0_PHY_AUX_CLK_SRC 28 39*5f62a964SEmmanuel Vadot #define GCC_EMAC0_PTP_CLK 29 40*5f62a964SEmmanuel Vadot #define GCC_EMAC0_PTP_CLK_SRC 30 41*5f62a964SEmmanuel Vadot #define GCC_EMAC0_RGMII_CLK 31 42*5f62a964SEmmanuel Vadot #define GCC_EMAC0_RGMII_CLK_SRC 32 43*5f62a964SEmmanuel Vadot #define GCC_EMAC0_SLV_AHB_CLK 33 44*5f62a964SEmmanuel Vadot #define GCC_GP1_CLK 34 45*5f62a964SEmmanuel Vadot #define GCC_GP1_CLK_SRC 35 46*5f62a964SEmmanuel Vadot #define GCC_GP2_CLK 36 47*5f62a964SEmmanuel Vadot #define GCC_GP2_CLK_SRC 37 48*5f62a964SEmmanuel Vadot #define GCC_GP3_CLK 38 49*5f62a964SEmmanuel Vadot #define GCC_GP3_CLK_SRC 39 50*5f62a964SEmmanuel Vadot #define GCC_GP4_CLK 40 51*5f62a964SEmmanuel Vadot #define GCC_GP4_CLK_SRC 41 52*5f62a964SEmmanuel Vadot #define GCC_GP5_CLK 42 53*5f62a964SEmmanuel Vadot #define GCC_GP5_CLK_SRC 43 54*5f62a964SEmmanuel Vadot #define GCC_GPU_CFG_AHB_CLK 44 55*5f62a964SEmmanuel Vadot #define GCC_GPU_GPLL0_CLK_SRC 45 56*5f62a964SEmmanuel Vadot #define GCC_GPU_GPLL0_DIV_CLK_SRC 46 57*5f62a964SEmmanuel Vadot #define GCC_GPU_MEMNOC_GFX_CENTER_PIPELINE_CLK 47 58*5f62a964SEmmanuel Vadot #define GCC_GPU_MEMNOC_GFX_CLK 48 59*5f62a964SEmmanuel Vadot #define GCC_GPU_SNOC_DVM_GFX_CLK 49 60*5f62a964SEmmanuel Vadot #define GCC_GPU_TCU_THROTTLE_AHB_CLK 50 61*5f62a964SEmmanuel Vadot #define GCC_GPU_TCU_THROTTLE_CLK 51 62*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_AUX_CLK 52 63*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_AUX_CLK_SRC 53 64*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_CFG_AHB_CLK 54 65*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_MSTR_AXI_CLK 55 66*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_AUX_CLK 56 67*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_AUX_CLK_SRC 57 68*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_RCHNG_CLK 58 69*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_RCHNG_CLK_SRC 59 70*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PIPE_CLK 60 71*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PIPE_CLK_SRC 61 72*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PIPE_DIV_CLK_SRC 62 73*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PIPEDIV2_CLK 63 74*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_SLV_AXI_CLK 64 75*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_SLV_Q2A_AXI_CLK 65 76*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_AUX_CLK 66 77*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_AUX_CLK_SRC 67 78*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_CFG_AHB_CLK 68 79*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_MSTR_AXI_CLK 69 80*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_AUX_CLK 70 81*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_AUX_CLK_SRC 71 82*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_RCHNG_CLK 72 83*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_RCHNG_CLK_SRC 73 84*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PIPE_CLK 74 85*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PIPE_CLK_SRC 75 86*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PIPE_DIV_CLK_SRC 76 87*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PIPEDIV2_CLK 77 88*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_SLV_AXI_CLK 78 89*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_SLV_Q2A_AXI_CLK 79 90*5f62a964SEmmanuel Vadot #define GCC_PCIE_CLKREF_EN 80 91*5f62a964SEmmanuel Vadot #define GCC_PCIE_THROTTLE_CFG_CLK 81 92*5f62a964SEmmanuel Vadot #define GCC_PDM2_CLK 82 93*5f62a964SEmmanuel Vadot #define GCC_PDM2_CLK_SRC 83 94*5f62a964SEmmanuel Vadot #define GCC_PDM_AHB_CLK 84 95*5f62a964SEmmanuel Vadot #define GCC_PDM_XO4_CLK 85 96*5f62a964SEmmanuel Vadot #define GCC_QMIP_CAMERA_NRT_AHB_CLK 86 97*5f62a964SEmmanuel Vadot #define GCC_QMIP_CAMERA_RT_AHB_CLK 87 98*5f62a964SEmmanuel Vadot #define GCC_QMIP_DISP_AHB_CLK 88 99*5f62a964SEmmanuel Vadot #define GCC_QMIP_DISP_ROT_AHB_CLK 89 100*5f62a964SEmmanuel Vadot #define GCC_QMIP_VIDEO_CVP_AHB_CLK 90 101*5f62a964SEmmanuel Vadot #define GCC_QMIP_VIDEO_VCODEC_AHB_CLK 91 102*5f62a964SEmmanuel Vadot #define GCC_QMIP_VIDEO_VCPU_AHB_CLK 92 103*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_CORE_2X_CLK 93 104*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_CORE_CLK 94 105*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S0_CLK 95 106*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S0_CLK_SRC 96 107*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S1_CLK 97 108*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S1_CLK_SRC 98 109*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S2_CLK 99 110*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S2_CLK_SRC 100 111*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S3_CLK 101 112*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S3_CLK_SRC 102 113*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S4_CLK 103 114*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S4_CLK_SRC 104 115*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S5_CLK 105 116*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S5_CLK_SRC 106 117*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S6_CLK 107 118*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S6_CLK_SRC 108 119*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S7_CLK 109 120*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP0_S7_CLK_SRC 110 121*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_CORE_2X_CLK 111 122*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_CORE_CLK 112 123*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S0_CLK 113 124*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S0_CLK_SRC 114 125*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S1_CLK 115 126*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S1_CLK_SRC 116 127*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S2_CLK 117 128*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S2_CLK_SRC 118 129*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S3_CLK 119 130*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S3_CLK_SRC 120 131*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S4_CLK 121 132*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S4_CLK_SRC 122 133*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S5_CLK 123 134*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S5_CLK_SRC 124 135*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S6_CLK 125 136*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S6_CLK_SRC 126 137*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S7_CLK 127 138*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP1_S7_CLK_SRC 128 139*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_CORE_2X_CLK 129 140*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_CORE_CLK 130 141*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_QSPI_CLK 131 142*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_S0_CLK 132 143*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_S0_CLK_SRC 133 144*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP3_S0_DIV_CLK_SRC 134 145*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_0_M_AHB_CLK 135 146*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_0_S_AHB_CLK 136 147*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_1_M_AHB_CLK 137 148*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_1_S_AHB_CLK 138 149*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_3_M_AHB_CLK 139 150*5f62a964SEmmanuel Vadot #define GCC_QUPV3_WRAP_3_S_AHB_CLK 140 151*5f62a964SEmmanuel Vadot #define GCC_SDCC1_AHB_CLK 141 152*5f62a964SEmmanuel Vadot #define GCC_SDCC1_APPS_CLK 142 153*5f62a964SEmmanuel Vadot #define GCC_SDCC1_APPS_CLK_SRC 143 154*5f62a964SEmmanuel Vadot #define GCC_SDCC1_ICE_CORE_CLK 144 155*5f62a964SEmmanuel Vadot #define GCC_SDCC1_ICE_CORE_CLK_SRC 145 156*5f62a964SEmmanuel Vadot #define GCC_SGMI_CLKREF_EN 146 157*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_AHB_CLK 147 158*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_AXI_CLK 148 159*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_AXI_CLK_SRC 149 160*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_ICE_CORE_CLK 150 161*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_ICE_CORE_CLK_SRC 151 162*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_PHY_AUX_CLK 152 163*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_PHY_AUX_CLK_SRC 153 164*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_RX_SYMBOL_0_CLK 154 165*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_RX_SYMBOL_0_CLK_SRC 155 166*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_RX_SYMBOL_1_CLK 156 167*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_RX_SYMBOL_1_CLK_SRC 157 168*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_TX_SYMBOL_0_CLK 158 169*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_TX_SYMBOL_0_CLK_SRC 159 170*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_UNIPRO_CORE_CLK 160 171*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_UNIPRO_CORE_CLK_SRC 161 172*5f62a964SEmmanuel Vadot #define GCC_USB20_MASTER_CLK 162 173*5f62a964SEmmanuel Vadot #define GCC_USB20_MASTER_CLK_SRC 163 174*5f62a964SEmmanuel Vadot #define GCC_USB20_MOCK_UTMI_CLK 164 175*5f62a964SEmmanuel Vadot #define GCC_USB20_MOCK_UTMI_CLK_SRC 165 176*5f62a964SEmmanuel Vadot #define GCC_USB20_MOCK_UTMI_POSTDIV_CLK_SRC 166 177*5f62a964SEmmanuel Vadot #define GCC_USB20_SLEEP_CLK 167 178*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_MASTER_CLK 168 179*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_MASTER_CLK_SRC 169 180*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_MOCK_UTMI_CLK 170 181*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_MOCK_UTMI_CLK_SRC 171 182*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_MOCK_UTMI_POSTDIV_CLK_SRC 172 183*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_SLEEP_CLK 173 184*5f62a964SEmmanuel Vadot #define GCC_USB3_PRIM_PHY_AUX_CLK 174 185*5f62a964SEmmanuel Vadot #define GCC_USB3_PRIM_PHY_AUX_CLK_SRC 175 186*5f62a964SEmmanuel Vadot #define GCC_USB3_PRIM_PHY_COM_AUX_CLK 176 187*5f62a964SEmmanuel Vadot #define GCC_USB3_PRIM_PHY_PIPE_CLK 177 188*5f62a964SEmmanuel Vadot #define GCC_USB3_PRIM_PHY_PIPE_CLK_SRC 178 189*5f62a964SEmmanuel Vadot #define GCC_USB_CLKREF_EN 179 190*5f62a964SEmmanuel Vadot #define GCC_VIDEO_AHB_CLK 180 191*5f62a964SEmmanuel Vadot #define GCC_VIDEO_AXI0_CLK 181 192*5f62a964SEmmanuel Vadot #define GCC_VIDEO_AXI1_CLK 182 193*5f62a964SEmmanuel Vadot #define GCC_VIDEO_XO_CLK 183 194*5f62a964SEmmanuel Vadot 195*5f62a964SEmmanuel Vadot /* GCC power domains */ 196*5f62a964SEmmanuel Vadot #define GCC_EMAC0_GDSC 0 197*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_GDSC 1 198*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_GDSC 2 199*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_GDSC 3 200*5f62a964SEmmanuel Vadot #define GCC_USB20_PRIM_GDSC 4 201*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_GDSC 5 202*5f62a964SEmmanuel Vadot 203*5f62a964SEmmanuel Vadot /* GCC resets */ 204*5f62a964SEmmanuel Vadot #define GCC_EMAC0_BCR 0 205*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_BCR 1 206*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_LINK_DOWN_BCR 2 207*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_NOCSR_COM_PHY_BCR 3 208*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_BCR 4 209*5f62a964SEmmanuel Vadot #define GCC_PCIE_0_PHY_NOCSR_COM_PHY_BCR 5 210*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_BCR 6 211*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_LINK_DOWN_BCR 7 212*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_NOCSR_COM_PHY_BCR 8 213*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_BCR 9 214*5f62a964SEmmanuel Vadot #define GCC_PCIE_1_PHY_NOCSR_COM_PHY_BCR 10 215*5f62a964SEmmanuel Vadot #define GCC_SDCC1_BCR 11 216*5f62a964SEmmanuel Vadot #define GCC_UFS_PHY_BCR 12 217*5f62a964SEmmanuel Vadot #define GCC_USB20_PRIM_BCR 13 218*5f62a964SEmmanuel Vadot #define GCC_USB2_PHY_PRIM_BCR 14 219*5f62a964SEmmanuel Vadot #define GCC_USB2_PHY_SEC_BCR 15 220*5f62a964SEmmanuel Vadot #define GCC_USB30_PRIM_BCR 16 221*5f62a964SEmmanuel Vadot #define GCC_USB3_DP_PHY_PRIM_BCR 17 222*5f62a964SEmmanuel Vadot #define GCC_USB3_PHY_PRIM_BCR 18 223*5f62a964SEmmanuel Vadot #define GCC_USB3_PHY_TERT_BCR 19 224*5f62a964SEmmanuel Vadot #define GCC_USB3_UNIPHY_MP0_BCR 20 225*5f62a964SEmmanuel Vadot #define GCC_USB3_UNIPHY_MP1_BCR 21 226*5f62a964SEmmanuel Vadot #define GCC_USB3PHY_PHY_PRIM_BCR 22 227*5f62a964SEmmanuel Vadot #define GCC_USB3UNIPHY_PHY_MP0_BCR 23 228*5f62a964SEmmanuel Vadot #define GCC_USB3UNIPHY_PHY_MP1_BCR 24 229*5f62a964SEmmanuel Vadot #define GCC_USB_PHY_CFG_AHB2PHY_BCR 25 230*5f62a964SEmmanuel Vadot #define GCC_VIDEO_BCR 26 231*5f62a964SEmmanuel Vadot #define GCC_VIDEO_AXI0_CLK_ARES 27 232*5f62a964SEmmanuel Vadot #define GCC_VIDEO_AXI1_CLK_ARES 28 233*5f62a964SEmmanuel Vadot 234*5f62a964SEmmanuel Vadot #endif 235