1 1.1 jmcneill /* $NetBSD: rk3399-cru.h,v 1.1.1.3 2020/01/03 14:33:05 skrll Exp $ */ 2 1.1 jmcneill 3 1.1.1.3 skrll /* SPDX-License-Identifier: GPL-2.0-or-later */ 4 1.1 jmcneill /* 5 1.1 jmcneill * Copyright (c) 2016 Rockchip Electronics Co. Ltd. 6 1.1 jmcneill * Author: Xing Zheng <zhengxing (at) rock-chips.com> 7 1.1 jmcneill */ 8 1.1 jmcneill 9 1.1 jmcneill #ifndef _DT_BINDINGS_CLK_ROCKCHIP_RK3399_H 10 1.1 jmcneill #define _DT_BINDINGS_CLK_ROCKCHIP_RK3399_H 11 1.1 jmcneill 12 1.1 jmcneill /* core clocks */ 13 1.1 jmcneill #define PLL_APLLL 1 14 1.1 jmcneill #define PLL_APLLB 2 15 1.1 jmcneill #define PLL_DPLL 3 16 1.1 jmcneill #define PLL_CPLL 4 17 1.1 jmcneill #define PLL_GPLL 5 18 1.1 jmcneill #define PLL_NPLL 6 19 1.1 jmcneill #define PLL_VPLL 7 20 1.1 jmcneill #define ARMCLKL 8 21 1.1 jmcneill #define ARMCLKB 9 22 1.1 jmcneill 23 1.1 jmcneill /* sclk gates (special clocks) */ 24 1.1 jmcneill #define SCLK_I2C1 65 25 1.1 jmcneill #define SCLK_I2C2 66 26 1.1 jmcneill #define SCLK_I2C3 67 27 1.1 jmcneill #define SCLK_I2C5 68 28 1.1 jmcneill #define SCLK_I2C6 69 29 1.1 jmcneill #define SCLK_I2C7 70 30 1.1 jmcneill #define SCLK_SPI0 71 31 1.1 jmcneill #define SCLK_SPI1 72 32 1.1 jmcneill #define SCLK_SPI2 73 33 1.1 jmcneill #define SCLK_SPI4 74 34 1.1 jmcneill #define SCLK_SPI5 75 35 1.1 jmcneill #define SCLK_SDMMC 76 36 1.1 jmcneill #define SCLK_SDIO 77 37 1.1 jmcneill #define SCLK_EMMC 78 38 1.1 jmcneill #define SCLK_TSADC 79 39 1.1 jmcneill #define SCLK_SARADC 80 40 1.1 jmcneill #define SCLK_UART0 81 41 1.1 jmcneill #define SCLK_UART1 82 42 1.1 jmcneill #define SCLK_UART2 83 43 1.1 jmcneill #define SCLK_UART3 84 44 1.1 jmcneill #define SCLK_SPDIF_8CH 85 45 1.1 jmcneill #define SCLK_I2S0_8CH 86 46 1.1 jmcneill #define SCLK_I2S1_8CH 87 47 1.1 jmcneill #define SCLK_I2S2_8CH 88 48 1.1 jmcneill #define SCLK_I2S_8CH_OUT 89 49 1.1 jmcneill #define SCLK_TIMER00 90 50 1.1 jmcneill #define SCLK_TIMER01 91 51 1.1 jmcneill #define SCLK_TIMER02 92 52 1.1 jmcneill #define SCLK_TIMER03 93 53 1.1 jmcneill #define SCLK_TIMER04 94 54 1.1 jmcneill #define SCLK_TIMER05 95 55 1.1 jmcneill #define SCLK_TIMER06 96 56 1.1 jmcneill #define SCLK_TIMER07 97 57 1.1 jmcneill #define SCLK_TIMER08 98 58 1.1 jmcneill #define SCLK_TIMER09 99 59 1.1 jmcneill #define SCLK_TIMER10 100 60 1.1 jmcneill #define SCLK_TIMER11 101 61 1.1 jmcneill #define SCLK_MACREF 102 62 1.1 jmcneill #define SCLK_MAC_RX 103 63 1.1 jmcneill #define SCLK_MAC_TX 104 64 1.1 jmcneill #define SCLK_MAC 105 65 1.1 jmcneill #define SCLK_MACREF_OUT 106 66 1.1 jmcneill #define SCLK_VOP0_PWM 107 67 1.1 jmcneill #define SCLK_VOP1_PWM 108 68 1.1 jmcneill #define SCLK_RGA_CORE 109 69 1.1 jmcneill #define SCLK_ISP0 110 70 1.1 jmcneill #define SCLK_ISP1 111 71 1.1 jmcneill #define SCLK_HDMI_CEC 112 72 1.1 jmcneill #define SCLK_HDMI_SFR 113 73 1.1 jmcneill #define SCLK_DP_CORE 114 74 1.1 jmcneill #define SCLK_PVTM_CORE_L 115 75 1.1 jmcneill #define SCLK_PVTM_CORE_B 116 76 1.1 jmcneill #define SCLK_PVTM_GPU 117 77 1.1 jmcneill #define SCLK_PVTM_DDR 118 78 1.1 jmcneill #define SCLK_MIPIDPHY_REF 119 79 1.1 jmcneill #define SCLK_MIPIDPHY_CFG 120 80 1.1 jmcneill #define SCLK_HSICPHY 121 81 1.1 jmcneill #define SCLK_USBPHY480M 122 82 1.1 jmcneill #define SCLK_USB2PHY0_REF 123 83 1.1 jmcneill #define SCLK_USB2PHY1_REF 124 84 1.1 jmcneill #define SCLK_UPHY0_TCPDPHY_REF 125 85 1.1 jmcneill #define SCLK_UPHY0_TCPDCORE 126 86 1.1 jmcneill #define SCLK_UPHY1_TCPDPHY_REF 127 87 1.1 jmcneill #define SCLK_UPHY1_TCPDCORE 128 88 1.1 jmcneill #define SCLK_USB3OTG0_REF 129 89 1.1 jmcneill #define SCLK_USB3OTG1_REF 130 90 1.1 jmcneill #define SCLK_USB3OTG0_SUSPEND 131 91 1.1 jmcneill #define SCLK_USB3OTG1_SUSPEND 132 92 1.1 jmcneill #define SCLK_CRYPTO0 133 93 1.1 jmcneill #define SCLK_CRYPTO1 134 94 1.1 jmcneill #define SCLK_CCI_TRACE 135 95 1.1 jmcneill #define SCLK_CS 136 96 1.1 jmcneill #define SCLK_CIF_OUT 137 97 1.1 jmcneill #define SCLK_PCIEPHY_REF 138 98 1.1 jmcneill #define SCLK_PCIE_CORE 139 99 1.1 jmcneill #define SCLK_M0_PERILP 140 100 1.1 jmcneill #define SCLK_M0_PERILP_DEC 141 101 1.1 jmcneill #define SCLK_CM0S 142 102 1.1 jmcneill #define SCLK_DBG_NOC 143 103 1.1 jmcneill #define SCLK_DBG_PD_CORE_B 144 104 1.1 jmcneill #define SCLK_DBG_PD_CORE_L 145 105 1.1 jmcneill #define SCLK_DFIMON0_TIMER 146 106 1.1 jmcneill #define SCLK_DFIMON1_TIMER 147 107 1.1 jmcneill #define SCLK_INTMEM0 148 108 1.1 jmcneill #define SCLK_INTMEM1 149 109 1.1 jmcneill #define SCLK_INTMEM2 150 110 1.1 jmcneill #define SCLK_INTMEM3 151 111 1.1 jmcneill #define SCLK_INTMEM4 152 112 1.1 jmcneill #define SCLK_INTMEM5 153 113 1.1 jmcneill #define SCLK_SDMMC_DRV 154 114 1.1 jmcneill #define SCLK_SDMMC_SAMPLE 155 115 1.1 jmcneill #define SCLK_SDIO_DRV 156 116 1.1 jmcneill #define SCLK_SDIO_SAMPLE 157 117 1.1 jmcneill #define SCLK_VDU_CORE 158 118 1.1 jmcneill #define SCLK_VDU_CA 159 119 1.1 jmcneill #define SCLK_PCIE_PM 160 120 1.1 jmcneill #define SCLK_SPDIF_REC_DPTX 161 121 1.1 jmcneill #define SCLK_DPHY_PLL 162 122 1.1 jmcneill #define SCLK_DPHY_TX0_CFG 163 123 1.1 jmcneill #define SCLK_DPHY_TX1RX1_CFG 164 124 1.1 jmcneill #define SCLK_DPHY_RX0_CFG 165 125 1.1 jmcneill #define SCLK_RMII_SRC 166 126 1.1 jmcneill #define SCLK_PCIEPHY_REF100M 167 127 1.1 jmcneill #define SCLK_DDRC 168 128 1.1.1.2 jmcneill #define SCLK_TESTCLKOUT1 169 129 1.1.1.2 jmcneill #define SCLK_TESTCLKOUT2 170 130 1.1 jmcneill 131 1.1 jmcneill #define DCLK_VOP0 180 132 1.1 jmcneill #define DCLK_VOP1 181 133 1.1 jmcneill #define DCLK_VOP0_DIV 182 134 1.1 jmcneill #define DCLK_VOP1_DIV 183 135 1.1 jmcneill #define DCLK_M0_PERILP 184 136 1.1 jmcneill #define DCLK_VOP0_FRAC 185 137 1.1 jmcneill #define DCLK_VOP1_FRAC 186 138 1.1 jmcneill 139 1.1 jmcneill #define FCLK_CM0S 190 140 1.1 jmcneill 141 1.1 jmcneill /* aclk gates */ 142 1.1 jmcneill #define ACLK_PERIHP 192 143 1.1 jmcneill #define ACLK_PERIHP_NOC 193 144 1.1 jmcneill #define ACLK_PERILP0 194 145 1.1 jmcneill #define ACLK_PERILP0_NOC 195 146 1.1 jmcneill #define ACLK_PERF_PCIE 196 147 1.1 jmcneill #define ACLK_PCIE 197 148 1.1 jmcneill #define ACLK_INTMEM 198 149 1.1 jmcneill #define ACLK_TZMA 199 150 1.1 jmcneill #define ACLK_DCF 200 151 1.1 jmcneill #define ACLK_CCI 201 152 1.1 jmcneill #define ACLK_CCI_NOC0 202 153 1.1 jmcneill #define ACLK_CCI_NOC1 203 154 1.1 jmcneill #define ACLK_CCI_GRF 204 155 1.1 jmcneill #define ACLK_CENTER 205 156 1.1 jmcneill #define ACLK_CENTER_MAIN_NOC 206 157 1.1 jmcneill #define ACLK_CENTER_PERI_NOC 207 158 1.1 jmcneill #define ACLK_GPU 208 159 1.1 jmcneill #define ACLK_PERF_GPU 209 160 1.1 jmcneill #define ACLK_GPU_GRF 210 161 1.1 jmcneill #define ACLK_DMAC0_PERILP 211 162 1.1 jmcneill #define ACLK_DMAC1_PERILP 212 163 1.1 jmcneill #define ACLK_GMAC 213 164 1.1 jmcneill #define ACLK_GMAC_NOC 214 165 1.1 jmcneill #define ACLK_PERF_GMAC 215 166 1.1 jmcneill #define ACLK_VOP0_NOC 216 167 1.1 jmcneill #define ACLK_VOP0 217 168 1.1 jmcneill #define ACLK_VOP1_NOC 218 169 1.1 jmcneill #define ACLK_VOP1 219 170 1.1 jmcneill #define ACLK_RGA 220 171 1.1 jmcneill #define ACLK_RGA_NOC 221 172 1.1 jmcneill #define ACLK_HDCP 222 173 1.1 jmcneill #define ACLK_HDCP_NOC 223 174 1.1 jmcneill #define ACLK_HDCP22 224 175 1.1 jmcneill #define ACLK_IEP 225 176 1.1 jmcneill #define ACLK_IEP_NOC 226 177 1.1 jmcneill #define ACLK_VIO 227 178 1.1 jmcneill #define ACLK_VIO_NOC 228 179 1.1 jmcneill #define ACLK_ISP0 229 180 1.1 jmcneill #define ACLK_ISP1 230 181 1.1 jmcneill #define ACLK_ISP0_NOC 231 182 1.1 jmcneill #define ACLK_ISP1_NOC 232 183 1.1 jmcneill #define ACLK_ISP0_WRAPPER 233 184 1.1 jmcneill #define ACLK_ISP1_WRAPPER 234 185 1.1 jmcneill #define ACLK_VCODEC 235 186 1.1 jmcneill #define ACLK_VCODEC_NOC 236 187 1.1 jmcneill #define ACLK_VDU 237 188 1.1 jmcneill #define ACLK_VDU_NOC 238 189 1.1 jmcneill #define ACLK_PERI 239 190 1.1 jmcneill #define ACLK_EMMC 240 191 1.1 jmcneill #define ACLK_EMMC_CORE 241 192 1.1 jmcneill #define ACLK_EMMC_NOC 242 193 1.1 jmcneill #define ACLK_EMMC_GRF 243 194 1.1 jmcneill #define ACLK_USB3 244 195 1.1 jmcneill #define ACLK_USB3_NOC 245 196 1.1 jmcneill #define ACLK_USB3OTG0 246 197 1.1 jmcneill #define ACLK_USB3OTG1 247 198 1.1 jmcneill #define ACLK_USB3_RKSOC_AXI_PERF 248 199 1.1 jmcneill #define ACLK_USB3_GRF 249 200 1.1 jmcneill #define ACLK_GIC 250 201 1.1 jmcneill #define ACLK_GIC_NOC 251 202 1.1 jmcneill #define ACLK_GIC_ADB400_CORE_L_2_GIC 252 203 1.1 jmcneill #define ACLK_GIC_ADB400_CORE_B_2_GIC 253 204 1.1 jmcneill #define ACLK_GIC_ADB400_GIC_2_CORE_L 254 205 1.1 jmcneill #define ACLK_GIC_ADB400_GIC_2_CORE_B 255 206 1.1 jmcneill #define ACLK_CORE_ADB400_CORE_L_2_CCI500 256 207 1.1 jmcneill #define ACLK_CORE_ADB400_CORE_B_2_CCI500 257 208 1.1 jmcneill #define ACLK_ADB400M_PD_CORE_L 258 209 1.1 jmcneill #define ACLK_ADB400M_PD_CORE_B 259 210 1.1 jmcneill #define ACLK_PERF_CORE_L 260 211 1.1 jmcneill #define ACLK_PERF_CORE_B 261 212 1.1 jmcneill #define ACLK_GIC_PRE 262 213 1.1 jmcneill #define ACLK_VOP0_PRE 263 214 1.1 jmcneill #define ACLK_VOP1_PRE 264 215 1.1 jmcneill 216 1.1 jmcneill /* pclk gates */ 217 1.1 jmcneill #define PCLK_PERIHP 320 218 1.1 jmcneill #define PCLK_PERIHP_NOC 321 219 1.1 jmcneill #define PCLK_PERILP0 322 220 1.1 jmcneill #define PCLK_PERILP1 323 221 1.1 jmcneill #define PCLK_PERILP1_NOC 324 222 1.1 jmcneill #define PCLK_PERILP_SGRF 325 223 1.1 jmcneill #define PCLK_PERIHP_GRF 326 224 1.1 jmcneill #define PCLK_PCIE 327 225 1.1 jmcneill #define PCLK_SGRF 328 226 1.1 jmcneill #define PCLK_INTR_ARB 329 227 1.1 jmcneill #define PCLK_CENTER_MAIN_NOC 330 228 1.1 jmcneill #define PCLK_CIC 331 229 1.1 jmcneill #define PCLK_COREDBG_B 332 230 1.1 jmcneill #define PCLK_COREDBG_L 333 231 1.1 jmcneill #define PCLK_DBG_CXCS_PD_CORE_B 334 232 1.1 jmcneill #define PCLK_DCF 335 233 1.1 jmcneill #define PCLK_GPIO2 336 234 1.1 jmcneill #define PCLK_GPIO3 337 235 1.1 jmcneill #define PCLK_GPIO4 338 236 1.1 jmcneill #define PCLK_GRF 339 237 1.1 jmcneill #define PCLK_HSICPHY 340 238 1.1 jmcneill #define PCLK_I2C1 341 239 1.1 jmcneill #define PCLK_I2C2 342 240 1.1 jmcneill #define PCLK_I2C3 343 241 1.1 jmcneill #define PCLK_I2C5 344 242 1.1 jmcneill #define PCLK_I2C6 345 243 1.1 jmcneill #define PCLK_I2C7 346 244 1.1 jmcneill #define PCLK_SPI0 347 245 1.1 jmcneill #define PCLK_SPI1 348 246 1.1 jmcneill #define PCLK_SPI2 349 247 1.1 jmcneill #define PCLK_SPI4 350 248 1.1 jmcneill #define PCLK_SPI5 351 249 1.1 jmcneill #define PCLK_UART0 352 250 1.1 jmcneill #define PCLK_UART1 353 251 1.1 jmcneill #define PCLK_UART2 354 252 1.1 jmcneill #define PCLK_UART3 355 253 1.1 jmcneill #define PCLK_TSADC 356 254 1.1 jmcneill #define PCLK_SARADC 357 255 1.1 jmcneill #define PCLK_GMAC 358 256 1.1 jmcneill #define PCLK_GMAC_NOC 359 257 1.1 jmcneill #define PCLK_TIMER0 360 258 1.1 jmcneill #define PCLK_TIMER1 361 259 1.1 jmcneill #define PCLK_EDP 362 260 1.1 jmcneill #define PCLK_EDP_NOC 363 261 1.1 jmcneill #define PCLK_EDP_CTRL 364 262 1.1 jmcneill #define PCLK_VIO 365 263 1.1 jmcneill #define PCLK_VIO_NOC 366 264 1.1 jmcneill #define PCLK_VIO_GRF 367 265 1.1 jmcneill #define PCLK_MIPI_DSI0 368 266 1.1 jmcneill #define PCLK_MIPI_DSI1 369 267 1.1 jmcneill #define PCLK_HDCP 370 268 1.1 jmcneill #define PCLK_HDCP_NOC 371 269 1.1 jmcneill #define PCLK_HDMI_CTRL 372 270 1.1 jmcneill #define PCLK_DP_CTRL 373 271 1.1 jmcneill #define PCLK_HDCP22 374 272 1.1 jmcneill #define PCLK_GASKET 375 273 1.1 jmcneill #define PCLK_DDR 376 274 1.1 jmcneill #define PCLK_DDR_MON 377 275 1.1 jmcneill #define PCLK_DDR_SGRF 378 276 1.1 jmcneill #define PCLK_ISP1_WRAPPER 379 277 1.1 jmcneill #define PCLK_WDT 380 278 1.1 jmcneill #define PCLK_EFUSE1024NS 381 279 1.1 jmcneill #define PCLK_EFUSE1024S 382 280 1.1 jmcneill #define PCLK_PMU_INTR_ARB 383 281 1.1 jmcneill #define PCLK_MAILBOX0 384 282 1.1 jmcneill #define PCLK_USBPHY_MUX_G 385 283 1.1 jmcneill #define PCLK_UPHY0_TCPHY_G 386 284 1.1 jmcneill #define PCLK_UPHY0_TCPD_G 387 285 1.1 jmcneill #define PCLK_UPHY1_TCPHY_G 388 286 1.1 jmcneill #define PCLK_UPHY1_TCPD_G 389 287 1.1 jmcneill #define PCLK_ALIVE 390 288 1.1 jmcneill 289 1.1 jmcneill /* hclk gates */ 290 1.1 jmcneill #define HCLK_PERIHP 448 291 1.1 jmcneill #define HCLK_PERILP0 449 292 1.1 jmcneill #define HCLK_PERILP1 450 293 1.1 jmcneill #define HCLK_PERILP0_NOC 451 294 1.1 jmcneill #define HCLK_PERILP1_NOC 452 295 1.1 jmcneill #define HCLK_M0_PERILP 453 296 1.1 jmcneill #define HCLK_M0_PERILP_NOC 454 297 1.1 jmcneill #define HCLK_AHB1TOM 455 298 1.1 jmcneill #define HCLK_HOST0 456 299 1.1 jmcneill #define HCLK_HOST0_ARB 457 300 1.1 jmcneill #define HCLK_HOST1 458 301 1.1 jmcneill #define HCLK_HOST1_ARB 459 302 1.1 jmcneill #define HCLK_HSIC 460 303 1.1 jmcneill #define HCLK_SD 461 304 1.1 jmcneill #define HCLK_SDMMC 462 305 1.1 jmcneill #define HCLK_SDMMC_NOC 463 306 1.1 jmcneill #define HCLK_M_CRYPTO0 464 307 1.1 jmcneill #define HCLK_M_CRYPTO1 465 308 1.1 jmcneill #define HCLK_S_CRYPTO0 466 309 1.1 jmcneill #define HCLK_S_CRYPTO1 467 310 1.1 jmcneill #define HCLK_I2S0_8CH 468 311 1.1 jmcneill #define HCLK_I2S1_8CH 469 312 1.1 jmcneill #define HCLK_I2S2_8CH 470 313 1.1 jmcneill #define HCLK_SPDIF 471 314 1.1 jmcneill #define HCLK_VOP0_NOC 472 315 1.1 jmcneill #define HCLK_VOP0 473 316 1.1 jmcneill #define HCLK_VOP1_NOC 474 317 1.1 jmcneill #define HCLK_VOP1 475 318 1.1 jmcneill #define HCLK_ROM 476 319 1.1 jmcneill #define HCLK_IEP 477 320 1.1 jmcneill #define HCLK_IEP_NOC 478 321 1.1 jmcneill #define HCLK_ISP0 479 322 1.1 jmcneill #define HCLK_ISP1 480 323 1.1 jmcneill #define HCLK_ISP0_NOC 481 324 1.1 jmcneill #define HCLK_ISP1_NOC 482 325 1.1 jmcneill #define HCLK_ISP0_WRAPPER 483 326 1.1 jmcneill #define HCLK_ISP1_WRAPPER 484 327 1.1 jmcneill #define HCLK_RGA 485 328 1.1 jmcneill #define HCLK_RGA_NOC 486 329 1.1 jmcneill #define HCLK_HDCP 487 330 1.1 jmcneill #define HCLK_HDCP_NOC 488 331 1.1 jmcneill #define HCLK_HDCP22 489 332 1.1 jmcneill #define HCLK_VCODEC 490 333 1.1 jmcneill #define HCLK_VCODEC_NOC 491 334 1.1 jmcneill #define HCLK_VDU 492 335 1.1 jmcneill #define HCLK_VDU_NOC 493 336 1.1 jmcneill #define HCLK_SDIO 494 337 1.1 jmcneill #define HCLK_SDIO_NOC 495 338 1.1 jmcneill #define HCLK_SDIOAUDIO_NOC 496 339 1.1 jmcneill 340 1.1 jmcneill #define CLK_NR_CLKS (HCLK_SDIOAUDIO_NOC + 1) 341 1.1 jmcneill 342 1.1 jmcneill /* pmu-clocks indices */ 343 1.1 jmcneill 344 1.1 jmcneill #define PLL_PPLL 1 345 1.1 jmcneill 346 1.1 jmcneill #define SCLK_32K_SUSPEND_PMU 2 347 1.1 jmcneill #define SCLK_SPI3_PMU 3 348 1.1 jmcneill #define SCLK_TIMER12_PMU 4 349 1.1 jmcneill #define SCLK_TIMER13_PMU 5 350 1.1 jmcneill #define SCLK_UART4_PMU 6 351 1.1 jmcneill #define SCLK_PVTM_PMU 7 352 1.1 jmcneill #define SCLK_WIFI_PMU 8 353 1.1 jmcneill #define SCLK_I2C0_PMU 9 354 1.1 jmcneill #define SCLK_I2C4_PMU 10 355 1.1 jmcneill #define SCLK_I2C8_PMU 11 356 1.1 jmcneill 357 1.1 jmcneill #define PCLK_SRC_PMU 19 358 1.1 jmcneill #define PCLK_PMU 20 359 1.1 jmcneill #define PCLK_PMUGRF_PMU 21 360 1.1 jmcneill #define PCLK_INTMEM1_PMU 22 361 1.1 jmcneill #define PCLK_GPIO0_PMU 23 362 1.1 jmcneill #define PCLK_GPIO1_PMU 24 363 1.1 jmcneill #define PCLK_SGRF_PMU 25 364 1.1 jmcneill #define PCLK_NOC_PMU 26 365 1.1 jmcneill #define PCLK_I2C0_PMU 27 366 1.1 jmcneill #define PCLK_I2C4_PMU 28 367 1.1 jmcneill #define PCLK_I2C8_PMU 29 368 1.1 jmcneill #define PCLK_RKPWM_PMU 30 369 1.1 jmcneill #define PCLK_SPI3_PMU 31 370 1.1 jmcneill #define PCLK_TIMER_PMU 32 371 1.1 jmcneill #define PCLK_MAILBOX_PMU 33 372 1.1 jmcneill #define PCLK_UART4_PMU 34 373 1.1 jmcneill #define PCLK_WDT_M0_PMU 35 374 1.1 jmcneill 375 1.1 jmcneill #define FCLK_CM0S_SRC_PMU 44 376 1.1 jmcneill #define FCLK_CM0S_PMU 45 377 1.1 jmcneill #define SCLK_CM0S_PMU 46 378 1.1 jmcneill #define HCLK_CM0S_PMU 47 379 1.1 jmcneill #define DCLK_CM0S_PMU 48 380 1.1 jmcneill #define PCLK_INTR_ARB_PMU 49 381 1.1 jmcneill #define HCLK_NOC_PMU 50 382 1.1 jmcneill 383 1.1 jmcneill #define CLKPMU_NR_CLKS (HCLK_NOC_PMU + 1) 384 1.1 jmcneill 385 1.1 jmcneill /* soft-reset indices */ 386 1.1 jmcneill 387 1.1 jmcneill /* cru_softrst_con0 */ 388 1.1 jmcneill #define SRST_CORE_L0 0 389 1.1 jmcneill #define SRST_CORE_B0 1 390 1.1 jmcneill #define SRST_CORE_PO_L0 2 391 1.1 jmcneill #define SRST_CORE_PO_B0 3 392 1.1 jmcneill #define SRST_L2_L 4 393 1.1 jmcneill #define SRST_L2_B 5 394 1.1 jmcneill #define SRST_ADB_L 6 395 1.1 jmcneill #define SRST_ADB_B 7 396 1.1 jmcneill #define SRST_A_CCI 8 397 1.1 jmcneill #define SRST_A_CCIM0_NOC 9 398 1.1 jmcneill #define SRST_A_CCIM1_NOC 10 399 1.1 jmcneill #define SRST_DBG_NOC 11 400 1.1 jmcneill 401 1.1 jmcneill /* cru_softrst_con1 */ 402 1.1 jmcneill #define SRST_CORE_L0_T 16 403 1.1 jmcneill #define SRST_CORE_L1 17 404 1.1 jmcneill #define SRST_CORE_L2 18 405 1.1 jmcneill #define SRST_CORE_L3 19 406 1.1 jmcneill #define SRST_CORE_PO_L0_T 20 407 1.1 jmcneill #define SRST_CORE_PO_L1 21 408 1.1 jmcneill #define SRST_CORE_PO_L2 22 409 1.1 jmcneill #define SRST_CORE_PO_L3 23 410 1.1 jmcneill #define SRST_A_ADB400_GIC2COREL 24 411 1.1 jmcneill #define SRST_A_ADB400_COREL2GIC 25 412 1.1 jmcneill #define SRST_P_DBG_L 26 413 1.1 jmcneill #define SRST_L2_L_T 28 414 1.1 jmcneill #define SRST_ADB_L_T 29 415 1.1 jmcneill #define SRST_A_RKPERF_L 30 416 1.1 jmcneill #define SRST_PVTM_CORE_L 31 417 1.1 jmcneill 418 1.1 jmcneill /* cru_softrst_con2 */ 419 1.1 jmcneill #define SRST_CORE_B0_T 32 420 1.1 jmcneill #define SRST_CORE_B1 33 421 1.1 jmcneill #define SRST_CORE_PO_B0_T 36 422 1.1 jmcneill #define SRST_CORE_PO_B1 37 423 1.1 jmcneill #define SRST_A_ADB400_GIC2COREB 40 424 1.1 jmcneill #define SRST_A_ADB400_COREB2GIC 41 425 1.1 jmcneill #define SRST_P_DBG_B 42 426 1.1 jmcneill #define SRST_L2_B_T 43 427 1.1 jmcneill #define SRST_ADB_B_T 45 428 1.1 jmcneill #define SRST_A_RKPERF_B 46 429 1.1 jmcneill #define SRST_PVTM_CORE_B 47 430 1.1 jmcneill 431 1.1 jmcneill /* cru_softrst_con3 */ 432 1.1 jmcneill #define SRST_A_CCI_T 50 433 1.1 jmcneill #define SRST_A_CCIM0_NOC_T 51 434 1.1 jmcneill #define SRST_A_CCIM1_NOC_T 52 435 1.1 jmcneill #define SRST_A_ADB400M_PD_CORE_B_T 53 436 1.1 jmcneill #define SRST_A_ADB400M_PD_CORE_L_T 54 437 1.1 jmcneill #define SRST_DBG_NOC_T 55 438 1.1 jmcneill #define SRST_DBG_CXCS 56 439 1.1 jmcneill #define SRST_CCI_TRACE 57 440 1.1 jmcneill #define SRST_P_CCI_GRF 58 441 1.1 jmcneill 442 1.1 jmcneill /* cru_softrst_con4 */ 443 1.1 jmcneill #define SRST_A_CENTER_MAIN_NOC 64 444 1.1 jmcneill #define SRST_A_CENTER_PERI_NOC 65 445 1.1 jmcneill #define SRST_P_CENTER_MAIN 66 446 1.1 jmcneill #define SRST_P_DDRMON 67 447 1.1 jmcneill #define SRST_P_CIC 68 448 1.1 jmcneill #define SRST_P_CENTER_SGRF 69 449 1.1 jmcneill #define SRST_DDR0_MSCH 70 450 1.1 jmcneill #define SRST_DDRCFG0_MSCH 71 451 1.1 jmcneill #define SRST_DDR0 72 452 1.1 jmcneill #define SRST_DDRPHY0 73 453 1.1 jmcneill #define SRST_DDR1_MSCH 74 454 1.1 jmcneill #define SRST_DDRCFG1_MSCH 75 455 1.1 jmcneill #define SRST_DDR1 76 456 1.1 jmcneill #define SRST_DDRPHY1 77 457 1.1 jmcneill #define SRST_DDR_CIC 78 458 1.1 jmcneill #define SRST_PVTM_DDR 79 459 1.1 jmcneill 460 1.1 jmcneill /* cru_softrst_con5 */ 461 1.1 jmcneill #define SRST_A_VCODEC_NOC 80 462 1.1 jmcneill #define SRST_A_VCODEC 81 463 1.1 jmcneill #define SRST_H_VCODEC_NOC 82 464 1.1 jmcneill #define SRST_H_VCODEC 83 465 1.1 jmcneill #define SRST_A_VDU_NOC 88 466 1.1 jmcneill #define SRST_A_VDU 89 467 1.1 jmcneill #define SRST_H_VDU_NOC 90 468 1.1 jmcneill #define SRST_H_VDU 91 469 1.1 jmcneill #define SRST_VDU_CORE 92 470 1.1 jmcneill #define SRST_VDU_CA 93 471 1.1 jmcneill 472 1.1 jmcneill /* cru_softrst_con6 */ 473 1.1 jmcneill #define SRST_A_IEP_NOC 96 474 1.1 jmcneill #define SRST_A_VOP_IEP 97 475 1.1 jmcneill #define SRST_A_IEP 98 476 1.1 jmcneill #define SRST_H_IEP_NOC 99 477 1.1 jmcneill #define SRST_H_IEP 100 478 1.1 jmcneill #define SRST_A_RGA_NOC 102 479 1.1 jmcneill #define SRST_A_RGA 103 480 1.1 jmcneill #define SRST_H_RGA_NOC 104 481 1.1 jmcneill #define SRST_H_RGA 105 482 1.1 jmcneill #define SRST_RGA_CORE 106 483 1.1 jmcneill #define SRST_EMMC_NOC 108 484 1.1 jmcneill #define SRST_EMMC 109 485 1.1 jmcneill #define SRST_EMMC_GRF 110 486 1.1 jmcneill 487 1.1 jmcneill /* cru_softrst_con7 */ 488 1.1 jmcneill #define SRST_A_PERIHP_NOC 112 489 1.1 jmcneill #define SRST_P_PERIHP_GRF 113 490 1.1 jmcneill #define SRST_H_PERIHP_NOC 114 491 1.1 jmcneill #define SRST_USBHOST0 115 492 1.1 jmcneill #define SRST_HOSTC0_AUX 116 493 1.1 jmcneill #define SRST_HOST0_ARB 117 494 1.1 jmcneill #define SRST_USBHOST1 118 495 1.1 jmcneill #define SRST_HOSTC1_AUX 119 496 1.1 jmcneill #define SRST_HOST1_ARB 120 497 1.1 jmcneill #define SRST_SDIO0 121 498 1.1 jmcneill #define SRST_SDMMC 122 499 1.1 jmcneill #define SRST_HSIC 123 500 1.1 jmcneill #define SRST_HSIC_AUX 124 501 1.1 jmcneill #define SRST_AHB1TOM 125 502 1.1 jmcneill #define SRST_P_PERIHP_NOC 126 503 1.1 jmcneill #define SRST_HSICPHY 127 504 1.1 jmcneill 505 1.1 jmcneill /* cru_softrst_con8 */ 506 1.1 jmcneill #define SRST_A_PCIE 128 507 1.1 jmcneill #define SRST_P_PCIE 129 508 1.1 jmcneill #define SRST_PCIE_CORE 130 509 1.1 jmcneill #define SRST_PCIE_MGMT 131 510 1.1 jmcneill #define SRST_PCIE_MGMT_STICKY 132 511 1.1 jmcneill #define SRST_PCIE_PIPE 133 512 1.1 jmcneill #define SRST_PCIE_PM 134 513 1.1 jmcneill #define SRST_PCIEPHY 135 514 1.1 jmcneill #define SRST_A_GMAC_NOC 136 515 1.1 jmcneill #define SRST_A_GMAC 137 516 1.1 jmcneill #define SRST_P_GMAC_NOC 138 517 1.1 jmcneill #define SRST_P_GMAC_GRF 140 518 1.1 jmcneill #define SRST_HSICPHY_POR 142 519 1.1 jmcneill #define SRST_HSICPHY_UTMI 143 520 1.1 jmcneill 521 1.1 jmcneill /* cru_softrst_con9 */ 522 1.1 jmcneill #define SRST_USB2PHY0_POR 144 523 1.1 jmcneill #define SRST_USB2PHY0_UTMI_PORT0 145 524 1.1 jmcneill #define SRST_USB2PHY0_UTMI_PORT1 146 525 1.1 jmcneill #define SRST_USB2PHY0_EHCIPHY 147 526 1.1 jmcneill #define SRST_UPHY0_PIPE_L00 148 527 1.1 jmcneill #define SRST_UPHY0 149 528 1.1 jmcneill #define SRST_UPHY0_TCPDPWRUP 150 529 1.1 jmcneill #define SRST_USB2PHY1_POR 152 530 1.1 jmcneill #define SRST_USB2PHY1_UTMI_PORT0 153 531 1.1 jmcneill #define SRST_USB2PHY1_UTMI_PORT1 154 532 1.1 jmcneill #define SRST_USB2PHY1_EHCIPHY 155 533 1.1 jmcneill #define SRST_UPHY1_PIPE_L00 156 534 1.1 jmcneill #define SRST_UPHY1 157 535 1.1 jmcneill #define SRST_UPHY1_TCPDPWRUP 158 536 1.1 jmcneill 537 1.1 jmcneill /* cru_softrst_con10 */ 538 1.1 jmcneill #define SRST_A_PERILP0_NOC 160 539 1.1 jmcneill #define SRST_A_DCF 161 540 1.1 jmcneill #define SRST_GIC500 162 541 1.1 jmcneill #define SRST_DMAC0_PERILP0 163 542 1.1 jmcneill #define SRST_DMAC1_PERILP0 164 543 1.1 jmcneill #define SRST_TZMA 165 544 1.1 jmcneill #define SRST_INTMEM 166 545 1.1 jmcneill #define SRST_ADB400_MST0 167 546 1.1 jmcneill #define SRST_ADB400_MST1 168 547 1.1 jmcneill #define SRST_ADB400_SLV0 169 548 1.1 jmcneill #define SRST_ADB400_SLV1 170 549 1.1 jmcneill #define SRST_H_PERILP0 171 550 1.1 jmcneill #define SRST_H_PERILP0_NOC 172 551 1.1 jmcneill #define SRST_ROM 173 552 1.1 jmcneill #define SRST_CRYPTO_S 174 553 1.1 jmcneill #define SRST_CRYPTO_M 175 554 1.1 jmcneill 555 1.1 jmcneill /* cru_softrst_con11 */ 556 1.1 jmcneill #define SRST_P_DCF 176 557 1.1 jmcneill #define SRST_CM0S_NOC 177 558 1.1 jmcneill #define SRST_CM0S 178 559 1.1 jmcneill #define SRST_CM0S_DBG 179 560 1.1 jmcneill #define SRST_CM0S_PO 180 561 1.1 jmcneill #define SRST_CRYPTO 181 562 1.1 jmcneill #define SRST_P_PERILP1_SGRF 182 563 1.1 jmcneill #define SRST_P_PERILP1_GRF 183 564 1.1 jmcneill #define SRST_CRYPTO1_S 184 565 1.1 jmcneill #define SRST_CRYPTO1_M 185 566 1.1 jmcneill #define SRST_CRYPTO1 186 567 1.1 jmcneill #define SRST_GIC_NOC 188 568 1.1 jmcneill #define SRST_SD_NOC 189 569 1.1 jmcneill #define SRST_SDIOAUDIO_BRG 190 570 1.1 jmcneill 571 1.1 jmcneill /* cru_softrst_con12 */ 572 1.1 jmcneill #define SRST_H_PERILP1 192 573 1.1 jmcneill #define SRST_H_PERILP1_NOC 193 574 1.1 jmcneill #define SRST_H_I2S0_8CH 194 575 1.1 jmcneill #define SRST_H_I2S1_8CH 195 576 1.1 jmcneill #define SRST_H_I2S2_8CH 196 577 1.1 jmcneill #define SRST_H_SPDIF_8CH 197 578 1.1 jmcneill #define SRST_P_PERILP1_NOC 198 579 1.1 jmcneill #define SRST_P_EFUSE_1024 199 580 1.1 jmcneill #define SRST_P_EFUSE_1024S 200 581 1.1 jmcneill #define SRST_P_I2C0 201 582 1.1 jmcneill #define SRST_P_I2C1 202 583 1.1 jmcneill #define SRST_P_I2C2 203 584 1.1 jmcneill #define SRST_P_I2C3 204 585 1.1 jmcneill #define SRST_P_I2C4 205 586 1.1 jmcneill #define SRST_P_I2C5 206 587 1.1 jmcneill #define SRST_P_MAILBOX0 207 588 1.1 jmcneill 589 1.1 jmcneill /* cru_softrst_con13 */ 590 1.1 jmcneill #define SRST_P_UART0 208 591 1.1 jmcneill #define SRST_P_UART1 209 592 1.1 jmcneill #define SRST_P_UART2 210 593 1.1 jmcneill #define SRST_P_UART3 211 594 1.1 jmcneill #define SRST_P_SARADC 212 595 1.1 jmcneill #define SRST_P_TSADC 213 596 1.1 jmcneill #define SRST_P_SPI0 214 597 1.1 jmcneill #define SRST_P_SPI1 215 598 1.1 jmcneill #define SRST_P_SPI2 216 599 1.1 jmcneill #define SRST_P_SPI3 217 600 1.1 jmcneill #define SRST_P_SPI4 218 601 1.1 jmcneill #define SRST_SPI0 219 602 1.1 jmcneill #define SRST_SPI1 220 603 1.1 jmcneill #define SRST_SPI2 221 604 1.1 jmcneill #define SRST_SPI3 222 605 1.1 jmcneill #define SRST_SPI4 223 606 1.1 jmcneill 607 1.1 jmcneill /* cru_softrst_con14 */ 608 1.1 jmcneill #define SRST_I2S0_8CH 224 609 1.1 jmcneill #define SRST_I2S1_8CH 225 610 1.1 jmcneill #define SRST_I2S2_8CH 226 611 1.1 jmcneill #define SRST_SPDIF_8CH 227 612 1.1 jmcneill #define SRST_UART0 228 613 1.1 jmcneill #define SRST_UART1 229 614 1.1 jmcneill #define SRST_UART2 230 615 1.1 jmcneill #define SRST_UART3 231 616 1.1 jmcneill #define SRST_TSADC 232 617 1.1 jmcneill #define SRST_I2C0 233 618 1.1 jmcneill #define SRST_I2C1 234 619 1.1 jmcneill #define SRST_I2C2 235 620 1.1 jmcneill #define SRST_I2C3 236 621 1.1 jmcneill #define SRST_I2C4 237 622 1.1 jmcneill #define SRST_I2C5 238 623 1.1 jmcneill #define SRST_SDIOAUDIO_NOC 239 624 1.1 jmcneill 625 1.1 jmcneill /* cru_softrst_con15 */ 626 1.1 jmcneill #define SRST_A_VIO_NOC 240 627 1.1 jmcneill #define SRST_A_HDCP_NOC 241 628 1.1 jmcneill #define SRST_A_HDCP 242 629 1.1 jmcneill #define SRST_H_HDCP_NOC 243 630 1.1 jmcneill #define SRST_H_HDCP 244 631 1.1 jmcneill #define SRST_P_HDCP_NOC 245 632 1.1 jmcneill #define SRST_P_HDCP 246 633 1.1 jmcneill #define SRST_P_HDMI_CTRL 247 634 1.1 jmcneill #define SRST_P_DP_CTRL 248 635 1.1 jmcneill #define SRST_S_DP_CTRL 249 636 1.1 jmcneill #define SRST_C_DP_CTRL 250 637 1.1 jmcneill #define SRST_P_MIPI_DSI0 251 638 1.1 jmcneill #define SRST_P_MIPI_DSI1 252 639 1.1 jmcneill #define SRST_DP_CORE 253 640 1.1 jmcneill #define SRST_DP_I2S 254 641 1.1 jmcneill 642 1.1 jmcneill /* cru_softrst_con16 */ 643 1.1 jmcneill #define SRST_GASKET 256 644 1.1 jmcneill #define SRST_VIO_GRF 258 645 1.1 jmcneill #define SRST_DPTX_SPDIF_REC 259 646 1.1 jmcneill #define SRST_HDMI_CTRL 260 647 1.1 jmcneill #define SRST_HDCP_CTRL 261 648 1.1 jmcneill #define SRST_A_ISP0_NOC 262 649 1.1 jmcneill #define SRST_A_ISP1_NOC 263 650 1.1 jmcneill #define SRST_H_ISP0_NOC 266 651 1.1 jmcneill #define SRST_H_ISP1_NOC 267 652 1.1 jmcneill #define SRST_H_ISP0 268 653 1.1 jmcneill #define SRST_H_ISP1 269 654 1.1 jmcneill #define SRST_ISP0 270 655 1.1 jmcneill #define SRST_ISP1 271 656 1.1 jmcneill 657 1.1 jmcneill /* cru_softrst_con17 */ 658 1.1 jmcneill #define SRST_A_VOP0_NOC 272 659 1.1 jmcneill #define SRST_A_VOP1_NOC 273 660 1.1 jmcneill #define SRST_A_VOP0 274 661 1.1 jmcneill #define SRST_A_VOP1 275 662 1.1 jmcneill #define SRST_H_VOP0_NOC 276 663 1.1 jmcneill #define SRST_H_VOP1_NOC 277 664 1.1 jmcneill #define SRST_H_VOP0 278 665 1.1 jmcneill #define SRST_H_VOP1 279 666 1.1 jmcneill #define SRST_D_VOP0 280 667 1.1 jmcneill #define SRST_D_VOP1 281 668 1.1 jmcneill #define SRST_VOP0_PWM 282 669 1.1 jmcneill #define SRST_VOP1_PWM 283 670 1.1 jmcneill #define SRST_P_EDP_NOC 284 671 1.1 jmcneill #define SRST_P_EDP_CTRL 285 672 1.1 jmcneill 673 1.1 jmcneill /* cru_softrst_con18 */ 674 1.1 jmcneill #define SRST_A_GPU 288 675 1.1 jmcneill #define SRST_A_GPU_NOC 289 676 1.1 jmcneill #define SRST_A_GPU_GRF 290 677 1.1 jmcneill #define SRST_PVTM_GPU 291 678 1.1 jmcneill #define SRST_A_USB3_NOC 292 679 1.1 jmcneill #define SRST_A_USB3_OTG0 293 680 1.1 jmcneill #define SRST_A_USB3_OTG1 294 681 1.1 jmcneill #define SRST_A_USB3_GRF 295 682 1.1 jmcneill #define SRST_PMU 296 683 1.1 jmcneill 684 1.1 jmcneill /* cru_softrst_con19 */ 685 1.1 jmcneill #define SRST_P_TIMER0_5 304 686 1.1 jmcneill #define SRST_TIMER0 305 687 1.1 jmcneill #define SRST_TIMER1 306 688 1.1 jmcneill #define SRST_TIMER2 307 689 1.1 jmcneill #define SRST_TIMER3 308 690 1.1 jmcneill #define SRST_TIMER4 309 691 1.1 jmcneill #define SRST_TIMER5 310 692 1.1 jmcneill #define SRST_P_TIMER6_11 311 693 1.1 jmcneill #define SRST_TIMER6 312 694 1.1 jmcneill #define SRST_TIMER7 313 695 1.1 jmcneill #define SRST_TIMER8 314 696 1.1 jmcneill #define SRST_TIMER9 315 697 1.1 jmcneill #define SRST_TIMER10 316 698 1.1 jmcneill #define SRST_TIMER11 317 699 1.1 jmcneill #define SRST_P_INTR_ARB_PMU 318 700 1.1 jmcneill #define SRST_P_ALIVE_SGRF 319 701 1.1 jmcneill 702 1.1 jmcneill /* cru_softrst_con20 */ 703 1.1 jmcneill #define SRST_P_GPIO2 320 704 1.1 jmcneill #define SRST_P_GPIO3 321 705 1.1 jmcneill #define SRST_P_GPIO4 322 706 1.1 jmcneill #define SRST_P_GRF 323 707 1.1 jmcneill #define SRST_P_ALIVE_NOC 324 708 1.1 jmcneill #define SRST_P_WDT0 325 709 1.1 jmcneill #define SRST_P_WDT1 326 710 1.1 jmcneill #define SRST_P_INTR_ARB 327 711 1.1 jmcneill #define SRST_P_UPHY0_DPTX 328 712 1.1 jmcneill #define SRST_P_UPHY0_APB 330 713 1.1 jmcneill #define SRST_P_UPHY0_TCPHY 332 714 1.1 jmcneill #define SRST_P_UPHY1_TCPHY 333 715 1.1 jmcneill #define SRST_P_UPHY0_TCPDCTRL 334 716 1.1 jmcneill #define SRST_P_UPHY1_TCPDCTRL 335 717 1.1 jmcneill 718 1.1 jmcneill /* pmu soft-reset indices */ 719 1.1 jmcneill 720 1.1 jmcneill /* pmu_cru_softrst_con0 */ 721 1.1 jmcneill #define SRST_P_NOC 0 722 1.1 jmcneill #define SRST_P_INTMEM 1 723 1.1 jmcneill #define SRST_H_CM0S 2 724 1.1 jmcneill #define SRST_H_CM0S_NOC 3 725 1.1 jmcneill #define SRST_DBG_CM0S 4 726 1.1 jmcneill #define SRST_PO_CM0S 5 727 1.1 jmcneill #define SRST_P_SPI6 6 728 1.1 jmcneill #define SRST_SPI6 7 729 1.1 jmcneill #define SRST_P_TIMER_0_1 8 730 1.1 jmcneill #define SRST_P_TIMER_0 9 731 1.1 jmcneill #define SRST_P_TIMER_1 10 732 1.1 jmcneill #define SRST_P_UART4 11 733 1.1 jmcneill #define SRST_UART4 12 734 1.1 jmcneill #define SRST_P_WDT 13 735 1.1 jmcneill 736 1.1 jmcneill /* pmu_cru_softrst_con1 */ 737 1.1 jmcneill #define SRST_P_I2C6 16 738 1.1 jmcneill #define SRST_P_I2C7 17 739 1.1 jmcneill #define SRST_P_I2C8 18 740 1.1 jmcneill #define SRST_P_MAILBOX 19 741 1.1 jmcneill #define SRST_P_RKPWM 20 742 1.1 jmcneill #define SRST_P_PMUGRF 21 743 1.1 jmcneill #define SRST_P_SGRF 22 744 1.1 jmcneill #define SRST_P_GPIO0 23 745 1.1 jmcneill #define SRST_P_GPIO1 24 746 1.1 jmcneill #define SRST_P_CRU 25 747 1.1 jmcneill #define SRST_P_INTR 26 748 1.1 jmcneill #define SRST_PVTM 27 749 1.1 jmcneill #define SRST_I2C6 28 750 1.1 jmcneill #define SRST_I2C7 29 751 1.1 jmcneill #define SRST_I2C8 30 752 1.1 jmcneill 753 1.1 jmcneill #endif 754