1*54d254feSAndy Yan /* 2*54d254feSAndy Yan * Copyright (c) 2017 Rockchip Electronics Co. Ltd. 3*54d254feSAndy Yan * Author: Finley Xiao <finley.xiao@rock-chips.com> 4*54d254feSAndy Yan * 5*54d254feSAndy Yan * This program is free software; you can redistribute it and/or modify 6*54d254feSAndy Yan * it under the terms of the GNU General Public License as published by 7*54d254feSAndy Yan * the Free Software Foundation; either version 2 of the License, or 8*54d254feSAndy Yan * (at your option) any later version. 9*54d254feSAndy Yan * 10*54d254feSAndy Yan * This program is distributed in the hope that it will be useful, 11*54d254feSAndy Yan * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*54d254feSAndy Yan * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*54d254feSAndy Yan * GNU General Public License for more details. 14*54d254feSAndy Yan */ 15*54d254feSAndy Yan 16*54d254feSAndy Yan #ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3308_H 17*54d254feSAndy Yan #define _DT_BINDINGS_CLK_ROCKCHIP_RK3308_H 18*54d254feSAndy Yan 19*54d254feSAndy Yan /* core clocks */ 20*54d254feSAndy Yan #define PLL_APLL 1 21*54d254feSAndy Yan #define PLL_DPLL 2 22*54d254feSAndy Yan #define PLL_VPLL0 3 23*54d254feSAndy Yan #define PLL_VPLL1 4 24*54d254feSAndy Yan #define ARMCLK 5 25*54d254feSAndy Yan 26*54d254feSAndy Yan /* sclk (special clocks) */ 27*54d254feSAndy Yan #define USB480M 14 28*54d254feSAndy Yan #define SCLK_RTC32K 15 29*54d254feSAndy Yan #define SCLK_PVTM_CORE 16 30*54d254feSAndy Yan #define SCLK_UART0 17 31*54d254feSAndy Yan #define SCLK_UART1 18 32*54d254feSAndy Yan #define SCLK_UART2 19 33*54d254feSAndy Yan #define SCLK_UART3 20 34*54d254feSAndy Yan #define SCLK_UART4 21 35*54d254feSAndy Yan #define SCLK_I2C0 22 36*54d254feSAndy Yan #define SCLK_I2C1 23 37*54d254feSAndy Yan #define SCLK_I2C2 24 38*54d254feSAndy Yan #define SCLK_I2C3 25 39*54d254feSAndy Yan #define SCLK_PWM 26 40*54d254feSAndy Yan #define SCLK_SPI0 27 41*54d254feSAndy Yan #define SCLK_SPI1 28 42*54d254feSAndy Yan #define SCLK_SPI2 29 43*54d254feSAndy Yan #define SCLK_TIMER0 30 44*54d254feSAndy Yan #define SCLK_TIMER1 31 45*54d254feSAndy Yan #define SCLK_TIMER2 32 46*54d254feSAndy Yan #define SCLK_TIMER3 33 47*54d254feSAndy Yan #define SCLK_TIMER4 34 48*54d254feSAndy Yan #define SCLK_TIMER5 35 49*54d254feSAndy Yan #define SCLK_TSADC 36 50*54d254feSAndy Yan #define SCLK_SARADC 37 51*54d254feSAndy Yan #define SCLK_OTP 38 52*54d254feSAndy Yan #define SCLK_OTP_USR 39 53*54d254feSAndy Yan #define SCLK_CPU_BOOST 40 54*54d254feSAndy Yan #define SCLK_CRYPTO 41 55*54d254feSAndy Yan #define SCLK_CRYPTO_APK 42 56*54d254feSAndy Yan #define SCLK_NANDC_DIV 43 57*54d254feSAndy Yan #define SCLK_NANDC_DIV50 44 58*54d254feSAndy Yan #define SCLK_NANDC 45 59*54d254feSAndy Yan #define SCLK_SDMMC_DIV 46 60*54d254feSAndy Yan #define SCLK_SDMMC_DIV50 47 61*54d254feSAndy Yan #define SCLK_SDMMC 48 62*54d254feSAndy Yan #define SCLK_SDMMC_DRV 49 63*54d254feSAndy Yan #define SCLK_SDMMC_SAMPLE 50 64*54d254feSAndy Yan #define SCLK_SDIO_DIV 51 65*54d254feSAndy Yan #define SCLK_SDIO_DIV50 52 66*54d254feSAndy Yan #define SCLK_SDIO 53 67*54d254feSAndy Yan #define SCLK_SDIO_DRV 54 68*54d254feSAndy Yan #define SCLK_SDIO_SAMPLE 55 69*54d254feSAndy Yan #define SCLK_EMMC_DIV 56 70*54d254feSAndy Yan #define SCLK_EMMC_DIV50 57 71*54d254feSAndy Yan #define SCLK_EMMC 58 72*54d254feSAndy Yan #define SCLK_EMMC_DRV 59 73*54d254feSAndy Yan #define SCLK_EMMC_SAMPLE 60 74*54d254feSAndy Yan #define SCLK_SFC 61 75*54d254feSAndy Yan #define SCLK_OTG_ADP 62 76*54d254feSAndy Yan #define SCLK_GMAC_SRC 63 77*54d254feSAndy Yan #define SCLK_GMAC 64 78*54d254feSAndy Yan #define SCLK_MAC_REF 65 79*54d254feSAndy Yan #define SCLK_GMAC_RX_TX 66 80*54d254feSAndy Yan #define SCLK_GMAC_RMII 67 81*54d254feSAndy Yan #define SCLK_DDR_MON_TIMER 68 82*54d254feSAndy Yan #define SCLK_DDR_MON 69 83*54d254feSAndy Yan #define SCLK_DDRCLK 70 84*54d254feSAndy Yan #define SCLK_PMU 71 85*54d254feSAndy Yan #define SCLK_USBPHY_REF 72 86*54d254feSAndy Yan #define SCLK_WIFI 73 87*54d254feSAndy Yan #define SCLK_PVTM_PMU 74 88*54d254feSAndy Yan #define SCLK_PDM 75 89*54d254feSAndy Yan #define SCLK_I2S0_8CH_TX 76 90*54d254feSAndy Yan #define SCLK_I2S0_8CH_TX_OUT 77 91*54d254feSAndy Yan #define SCLK_I2S0_8CH_RX 78 92*54d254feSAndy Yan #define SCLK_I2S0_8CH_RX_OUT 79 93*54d254feSAndy Yan #define SCLK_I2S1_8CH_TX 80 94*54d254feSAndy Yan #define SCLK_I2S1_8CH_TX_OUT 81 95*54d254feSAndy Yan #define SCLK_I2S1_8CH_RX 82 96*54d254feSAndy Yan #define SCLK_I2S1_8CH_RX_OUT 83 97*54d254feSAndy Yan #define SCLK_I2S2_8CH_TX 84 98*54d254feSAndy Yan #define SCLK_I2S2_8CH_TX_OUT 85 99*54d254feSAndy Yan #define SCLK_I2S2_8CH_RX 86 100*54d254feSAndy Yan #define SCLK_I2S2_8CH_RX_OUT 87 101*54d254feSAndy Yan #define SCLK_I2S3_8CH_TX 88 102*54d254feSAndy Yan #define SCLK_I2S3_8CH_TX_OUT 89 103*54d254feSAndy Yan #define SCLK_I2S3_8CH_RX 90 104*54d254feSAndy Yan #define SCLK_I2S3_8CH_RX_OUT 91 105*54d254feSAndy Yan #define SCLK_I2S0_2CH 92 106*54d254feSAndy Yan #define SCLK_I2S0_2CH_OUT 93 107*54d254feSAndy Yan #define SCLK_I2S1_2CH 94 108*54d254feSAndy Yan #define SCLK_I2S1_2CH_OUT 95 109*54d254feSAndy Yan #define SCLK_SPDIF_TX_DIV 96 110*54d254feSAndy Yan #define SCLK_SPDIF_TX_DIV50 97 111*54d254feSAndy Yan #define SCLK_SPDIF_TX 98 112*54d254feSAndy Yan #define SCLK_SPDIF_RX_DIV 99 113*54d254feSAndy Yan #define SCLK_SPDIF_RX_DIV50 100 114*54d254feSAndy Yan #define SCLK_SPDIF_RX 101 115*54d254feSAndy Yan 116*54d254feSAndy Yan /* dclk */ 117*54d254feSAndy Yan #define DCLK_VOP 120 118*54d254feSAndy Yan 119*54d254feSAndy Yan /* aclk */ 120*54d254feSAndy Yan #define ACLK_CORE 130 121*54d254feSAndy Yan #define ACLK_BUS 131 122*54d254feSAndy Yan #define ACLK_PERI 132 123*54d254feSAndy Yan #define ACLK_GMAC 133 124*54d254feSAndy Yan #define ACLK_CRYPTO 134 125*54d254feSAndy Yan #define ACLK_VOP 135 126*54d254feSAndy Yan #define ACLK_GIC 136 127*54d254feSAndy Yan 128*54d254feSAndy Yan /* hclk */ 129*54d254feSAndy Yan #define HCLK_BUS 150 130*54d254feSAndy Yan #define HCLK_PERI 151 131*54d254feSAndy Yan #define HCLK_AUDIO 152 132*54d254feSAndy Yan #define HCLK_NANDC 153 133*54d254feSAndy Yan #define HCLK_SDMMC 154 134*54d254feSAndy Yan #define HCLK_SDIO 155 135*54d254feSAndy Yan #define HCLK_EMMC 156 136*54d254feSAndy Yan #define HCLK_SFC 157 137*54d254feSAndy Yan #define HCLK_OTG 158 138*54d254feSAndy Yan #define HCLK_HOST 159 139*54d254feSAndy Yan #define HCLK_HOST_ARB 160 140*54d254feSAndy Yan #define HCLK_PDM 161 141*54d254feSAndy Yan #define HCLK_SPDIFTX 162 142*54d254feSAndy Yan #define HCLK_SPDIFRX 163 143*54d254feSAndy Yan #define HCLK_I2S0_8CH 164 144*54d254feSAndy Yan #define HCLK_I2S1_8CH 165 145*54d254feSAndy Yan #define HCLK_I2S2_8CH 166 146*54d254feSAndy Yan #define HCLK_I2S3_8CH 167 147*54d254feSAndy Yan #define HCLK_I2S0_2CH 168 148*54d254feSAndy Yan #define HCLK_I2S1_2CH 169 149*54d254feSAndy Yan #define HCLK_VAD 170 150*54d254feSAndy Yan #define HCLK_CRYPTO 171 151*54d254feSAndy Yan #define HCLK_VOP 172 152*54d254feSAndy Yan 153*54d254feSAndy Yan /* pclk */ 154*54d254feSAndy Yan #define PCLK_BUS 190 155*54d254feSAndy Yan #define PCLK_DDR 191 156*54d254feSAndy Yan #define PCLK_PERI 192 157*54d254feSAndy Yan #define PCLK_PMU 193 158*54d254feSAndy Yan #define PCLK_AUDIO 194 159*54d254feSAndy Yan #define PCLK_GMAC 195 160*54d254feSAndy Yan #define PCLK_ACODEC 196 161*54d254feSAndy Yan #define PCLK_UART0 197 162*54d254feSAndy Yan #define PCLK_UART1 198 163*54d254feSAndy Yan #define PCLK_UART2 199 164*54d254feSAndy Yan #define PCLK_UART3 200 165*54d254feSAndy Yan #define PCLK_UART4 201 166*54d254feSAndy Yan #define PCLK_I2C0 202 167*54d254feSAndy Yan #define PCLK_I2C1 203 168*54d254feSAndy Yan #define PCLK_I2C2 204 169*54d254feSAndy Yan #define PCLK_I2C3 205 170*54d254feSAndy Yan #define PCLK_PWM 206 171*54d254feSAndy Yan #define PCLK_SPI0 207 172*54d254feSAndy Yan #define PCLK_SPI1 208 173*54d254feSAndy Yan #define PCLK_SPI2 209 174*54d254feSAndy Yan #define PCLK_SARADC 210 175*54d254feSAndy Yan #define PCLK_TSADC 211 176*54d254feSAndy Yan #define PCLK_TIMER 212 177*54d254feSAndy Yan #define PCLK_OTP_NS 213 178*54d254feSAndy Yan #define PCLK_WDT_NS 214 179*54d254feSAndy Yan #define PCLK_GPIO0 215 180*54d254feSAndy Yan #define PCLK_GPIO1 216 181*54d254feSAndy Yan #define PCLK_GPIO2 217 182*54d254feSAndy Yan #define PCLK_GPIO3 218 183*54d254feSAndy Yan #define PCLK_GPIO4 219 184*54d254feSAndy Yan #define PCLK_SGRF 220 185*54d254feSAndy Yan #define PCLK_GRF 221 186*54d254feSAndy Yan #define PCLK_USBSD_DET 222 187*54d254feSAndy Yan #define PCLK_DDR_UPCTL 223 188*54d254feSAndy Yan #define PCLK_DDR_MON 224 189*54d254feSAndy Yan #define PCLK_DDRPHY 225 190*54d254feSAndy Yan #define PCLK_DDR_STDBY 226 191*54d254feSAndy Yan #define PCLK_USB_GRF 227 192*54d254feSAndy Yan #define PCLK_CRU 228 193*54d254feSAndy Yan #define PCLK_OTP_PHY 229 194*54d254feSAndy Yan #define PCLK_CPU_BOOST 230 195*54d254feSAndy Yan 196*54d254feSAndy Yan #define CLK_NR_CLKS (PCLK_CPU_BOOST + 1) 197*54d254feSAndy Yan 198*54d254feSAndy Yan /* soft-reset indices */ 199*54d254feSAndy Yan 200*54d254feSAndy Yan /* cru_softrst_con0 */ 201*54d254feSAndy Yan #define SRST_CORE0_PO 0 202*54d254feSAndy Yan #define SRST_CORE1_PO 1 203*54d254feSAndy Yan #define SRST_CORE2_PO 2 204*54d254feSAndy Yan #define SRST_CORE3_PO 3 205*54d254feSAndy Yan #define SRST_CORE0 4 206*54d254feSAndy Yan #define SRST_CORE1 5 207*54d254feSAndy Yan #define SRST_CORE2 6 208*54d254feSAndy Yan #define SRST_CORE3 7 209*54d254feSAndy Yan #define SRST_CORE0_DBG 8 210*54d254feSAndy Yan #define SRST_CORE1_DBG 9 211*54d254feSAndy Yan #define SRST_CORE2_DBG 10 212*54d254feSAndy Yan #define SRST_CORE3_DBG 11 213*54d254feSAndy Yan #define SRST_TOPDBG 12 214*54d254feSAndy Yan #define SRST_CORE_NOC 13 215*54d254feSAndy Yan #define SRST_STRC_A 14 216*54d254feSAndy Yan #define SRST_L2C 15 217*54d254feSAndy Yan 218*54d254feSAndy Yan /* cru_softrst_con1 */ 219*54d254feSAndy Yan #define SRST_DAP 16 220*54d254feSAndy Yan #define SRST_CORE_PVTM 17 221*54d254feSAndy Yan #define SRST_CORE_PRF 18 222*54d254feSAndy Yan #define SRST_CORE_GRF 19 223*54d254feSAndy Yan #define SRST_DDRUPCTL 20 224*54d254feSAndy Yan #define SRST_DDRUPCTL_P 22 225*54d254feSAndy Yan #define SRST_MSCH 23 226*54d254feSAndy Yan #define SRST_DDRMON_P 25 227*54d254feSAndy Yan #define SRST_DDRSTDBY_P 26 228*54d254feSAndy Yan #define SRST_DDRSTDBY 27 229*54d254feSAndy Yan #define SRST_DDRPHY 28 230*54d254feSAndy Yan #define SRST_DDRPHY_DIV 29 231*54d254feSAndy Yan #define SRST_DDRPHY_P 30 232*54d254feSAndy Yan 233*54d254feSAndy Yan /* cru_softrst_con2 */ 234*54d254feSAndy Yan #define SRST_BUS_NIU_H 32 235*54d254feSAndy Yan #define SRST_USB_NIU_P 33 236*54d254feSAndy Yan #define SRST_CRYPTO_A 34 237*54d254feSAndy Yan #define SRST_CRYPTO_H 35 238*54d254feSAndy Yan #define SRST_CRYPTO 36 239*54d254feSAndy Yan #define SRST_CRYPTO_APK 37 240*54d254feSAndy Yan #define SRST_VOP_A 38 241*54d254feSAndy Yan #define SRST_VOP_H 39 242*54d254feSAndy Yan #define SRST_VOP_D 40 243*54d254feSAndy Yan #define SRST_INTMEM_A 41 244*54d254feSAndy Yan #define SRST_ROM_H 42 245*54d254feSAndy Yan #define SRST_GIC_A 43 246*54d254feSAndy Yan #define SRST_UART0_P 44 247*54d254feSAndy Yan #define SRST_UART0 45 248*54d254feSAndy Yan #define SRST_UART1_P 46 249*54d254feSAndy Yan #define SRST_UART1 47 250*54d254feSAndy Yan 251*54d254feSAndy Yan /* cru_softrst_con3 */ 252*54d254feSAndy Yan #define SRST_UART2_P 48 253*54d254feSAndy Yan #define SRST_UART2 49 254*54d254feSAndy Yan #define SRST_UART3_P 50 255*54d254feSAndy Yan #define SRST_UART3 51 256*54d254feSAndy Yan #define SRST_UART4_P 52 257*54d254feSAndy Yan #define SRST_UART4 53 258*54d254feSAndy Yan #define SRST_I2C0_P 54 259*54d254feSAndy Yan #define SRST_I2C0 55 260*54d254feSAndy Yan #define SRST_I2C1_P 56 261*54d254feSAndy Yan #define SRST_I2C1 57 262*54d254feSAndy Yan #define SRST_I2C2_P 58 263*54d254feSAndy Yan #define SRST_I2C2 59 264*54d254feSAndy Yan #define SRST_I2C3_P 60 265*54d254feSAndy Yan #define SRST_I2C3 61 266*54d254feSAndy Yan #define SRST_PWM_P 62 267*54d254feSAndy Yan #define SRST_PWM 63 268*54d254feSAndy Yan 269*54d254feSAndy Yan /* cru_softrst_con4 */ 270*54d254feSAndy Yan #define SRST_SPI0_P 64 271*54d254feSAndy Yan #define SRST_SPI0 65 272*54d254feSAndy Yan #define SRST_SPI1_P 66 273*54d254feSAndy Yan #define SRST_SPI1 67 274*54d254feSAndy Yan #define SRST_SPI2_P 68 275*54d254feSAndy Yan #define SRST_SPI2 69 276*54d254feSAndy Yan #define SRST_SARADC_P 70 277*54d254feSAndy Yan #define SRST_TSADC_P 71 278*54d254feSAndy Yan #define SRST_TSADC 72 279*54d254feSAndy Yan #define SRST_TIMER0_P 73 280*54d254feSAndy Yan #define SRST_TIMER0 74 281*54d254feSAndy Yan #define SRST_TIMER1 75 282*54d254feSAndy Yan #define SRST_TIMER2 76 283*54d254feSAndy Yan #define SRST_TIMER3 77 284*54d254feSAndy Yan #define SRST_TIMER4 78 285*54d254feSAndy Yan #define SRST_TIMER5 79 286*54d254feSAndy Yan 287*54d254feSAndy Yan /* cru_softrst_con5 */ 288*54d254feSAndy Yan #define SRST_OTP_NS_P 80 289*54d254feSAndy Yan #define SRST_OTP_NS_SBPI 81 290*54d254feSAndy Yan #define SRST_OTP_NS_USR 82 291*54d254feSAndy Yan #define SRST_OTP_PHY_P 83 292*54d254feSAndy Yan #define SRST_OTP_PHY 84 293*54d254feSAndy Yan #define SRST_GPIO0_P 86 294*54d254feSAndy Yan #define SRST_GPIO1_P 87 295*54d254feSAndy Yan #define SRST_GPIO2_P 88 296*54d254feSAndy Yan #define SRST_GPIO3_P 89 297*54d254feSAndy Yan #define SRST_GPIO4_P 90 298*54d254feSAndy Yan #define SRST_GRF_P 91 299*54d254feSAndy Yan #define SRST_USBSD_DET_P 92 300*54d254feSAndy Yan #define SRST_PMU 93 301*54d254feSAndy Yan #define SRST_PMU_PVTM 94 302*54d254feSAndy Yan #define SRST_USB_GRF_P 95 303*54d254feSAndy Yan 304*54d254feSAndy Yan /* cru_softrst_con6 */ 305*54d254feSAndy Yan #define SRST_CPU_BOOST 96 306*54d254feSAndy Yan #define SRST_CPU_BOOST_P 97 307*54d254feSAndy Yan #define SRST_PERI_NIU_A 104 308*54d254feSAndy Yan #define SRST_PERI_NIU_H 105 309*54d254feSAndy Yan #define SRST_PERI_NIU_p 106 310*54d254feSAndy Yan #define SRST_USB2OTG_H 107 311*54d254feSAndy Yan #define SRST_USB2OTG 108 312*54d254feSAndy Yan #define SRST_USB2OTG_ADP 109 313*54d254feSAndy Yan #define SRST_USB2HOST_H 110 314*54d254feSAndy Yan #define SRST_USB2HOST_ARB_H 111 315*54d254feSAndy Yan 316*54d254feSAndy Yan /* cru_softrst_con7 */ 317*54d254feSAndy Yan #define SRST_USB2HOST_AUX_H 112 318*54d254feSAndy Yan #define SRST_USB2HOST_EHCI 113 319*54d254feSAndy Yan #define SRST_USB2HOST 114 320*54d254feSAndy Yan #define SRST_USBPHYPOR 115 321*54d254feSAndy Yan #define SRST_UTMI0 116 322*54d254feSAndy Yan #define SRST_UTMI1 117 323*54d254feSAndy Yan #define SRST_SDIO_H 118 324*54d254feSAndy Yan #define SRST_EMMC_H 119 325*54d254feSAndy Yan #define SRST_SFC_H 120 326*54d254feSAndy Yan #define SRST_SFC 121 327*54d254feSAndy Yan #define SRST_SD_H 122 328*54d254feSAndy Yan #define SRST_NANDC_H 123 329*54d254feSAndy Yan #define SRST_NANDC_N 124 330*54d254feSAndy Yan #define SRST_GMAC_A 125 331*54d254feSAndy Yan 332*54d254feSAndy Yan /* cru_softrst_con8 */ 333*54d254feSAndy Yan #define SRST_AUDIO_NIU_H 128 334*54d254feSAndy Yan #define SRST_AUDIO_NIU_P 129 335*54d254feSAndy Yan #define SRST_PDM_H 130 336*54d254feSAndy Yan #define SRST_PDM_M 131 337*54d254feSAndy Yan #define SRST_SPDIFTX_H 132 338*54d254feSAndy Yan #define SRST_SPDIFTX_M 133 339*54d254feSAndy Yan #define SRST_SPDIFRX_H 134 340*54d254feSAndy Yan #define SRST_SPDIFRX_M 135 341*54d254feSAndy Yan #define SRST_I2S0_8CH_H 136 342*54d254feSAndy Yan #define SRST_I2S0_8CH_TX_M 137 343*54d254feSAndy Yan #define SRST_I2S0_8CH_RX_M 138 344*54d254feSAndy Yan #define SRST_I2S1_8CH_H 139 345*54d254feSAndy Yan #define SRST_I2S1_8CH_TX_M 140 346*54d254feSAndy Yan #define SRST_I2S1_8CH_RX_M 141 347*54d254feSAndy Yan #define SRST_I2S2_8CH_H 142 348*54d254feSAndy Yan #define SRST_I2S2_8CH_TX_M 143 349*54d254feSAndy Yan 350*54d254feSAndy Yan /* cru_softrst_con9 */ 351*54d254feSAndy Yan #define SRST_I2S2_8CH_RX_M 144 352*54d254feSAndy Yan #define SRST_I2S3_8CH_H 145 353*54d254feSAndy Yan #define SRST_I2S3_8CH_TX_M 146 354*54d254feSAndy Yan #define SRST_I2S3_8CH_RX_M 147 355*54d254feSAndy Yan #define SRST_I2S0_2CH_H 148 356*54d254feSAndy Yan #define SRST_I2S0_2CH_M 149 357*54d254feSAndy Yan #define SRST_I2S1_2CH_H 150 358*54d254feSAndy Yan #define SRST_I2S1_2CH_M 151 359*54d254feSAndy Yan #define SRST_VAD_H 152 360*54d254feSAndy Yan #define SRST_ACODEC_P 153 361*54d254feSAndy Yan 362*54d254feSAndy Yan #endif 363