1 1.11 jmcneill /* $NetBSD: octeon_ciureg.h,v 1.11 2020/07/20 17:56:13 jmcneill Exp $ */ 2 1.1 hikaru 3 1.1 hikaru /* 4 1.1 hikaru * Copyright (c) 2007 Internet Initiative Japan, Inc. 5 1.1 hikaru * All rights reserved. 6 1.1 hikaru * 7 1.1 hikaru * Redistribution and use in source and binary forms, with or without 8 1.1 hikaru * modification, are permitted provided that the following conditions 9 1.1 hikaru * are met: 10 1.1 hikaru * 1. Redistributions of source code must retain the above copyright 11 1.1 hikaru * notice, this list of conditions and the following disclaimer. 12 1.1 hikaru * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 hikaru * notice, this list of conditions and the following disclaimer in the 14 1.1 hikaru * documentation and/or other materials provided with the distribution. 15 1.1 hikaru * 16 1.1 hikaru * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17 1.1 hikaru * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 1.1 hikaru * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 1.1 hikaru * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20 1.1 hikaru * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 1.1 hikaru * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 1.1 hikaru * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 1.1 hikaru * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 1.1 hikaru * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 1.1 hikaru * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 1.1 hikaru * SUCH DAMAGE. 27 1.1 hikaru */ 28 1.1 hikaru 29 1.1 hikaru /* 30 1.1 hikaru * CIU Registers 31 1.1 hikaru */ 32 1.1 hikaru 33 1.1 hikaru #ifndef _OCTEON_CIUREG_H_ 34 1.1 hikaru #define _OCTEON_CIUREG_H_ 35 1.1 hikaru 36 1.1 hikaru /* ---- register addresses */ 37 1.1 hikaru 38 1.1 hikaru #define CIU_INT0_SUM0 UINT64_C(0x0001070000000000) 39 1.1 hikaru #define CIU_INT1_SUM0 UINT64_C(0x0001070000000008) 40 1.1 hikaru #define CIU_INT2_SUM0 UINT64_C(0x0001070000000010) 41 1.1 hikaru #define CIU_INT3_SUM0 UINT64_C(0x0001070000000018) 42 1.10 jmcneill #define CIU_IP2_SUM0(n) (CIU_INT0_SUM0 + 0x10 * (n)) 43 1.10 jmcneill #define CIU_IP3_SUM0(n) (CIU_INT1_SUM0 + 0x10 * (n)) 44 1.1 hikaru #define CIU_INT32_SUM0 UINT64_C(0x0001070000000100) 45 1.5 skrll #define CIU_INT_SUM1 UINT64_C(0x0001070000000108) 46 1.1 hikaru #define CIU_INT0_EN0 UINT64_C(0x0001070000000200) 47 1.1 hikaru #define CIU_INT1_EN0 UINT64_C(0x0001070000000210) 48 1.1 hikaru #define CIU_INT2_EN0 UINT64_C(0x0001070000000220) 49 1.1 hikaru #define CIU_INT3_EN0 UINT64_C(0x0001070000000230) 50 1.10 jmcneill #define CIU_IP2_EN0(n) (CIU_INT0_EN0 + 0x20 * (n)) 51 1.10 jmcneill #define CIU_IP3_EN0(n) (CIU_INT1_EN0 + 0x20 * (n)) 52 1.1 hikaru #define CIU_INT32_EN0 UINT64_C(0x0001070000000400) 53 1.1 hikaru #define CIU_INT0_EN1 UINT64_C(0x0001070000000208) 54 1.1 hikaru #define CIU_INT1_EN1 UINT64_C(0x0001070000000218) 55 1.1 hikaru #define CIU_INT2_EN1 UINT64_C(0x0001070000000228) 56 1.1 hikaru #define CIU_INT3_EN1 UINT64_C(0x0001070000000238) 57 1.10 jmcneill #define CIU_IP2_EN1(n) (CIU_INT0_EN1 + 0x20 * (n)) 58 1.10 jmcneill #define CIU_IP3_EN1(n) (CIU_INT1_EN1 + 0x20 * (n)) 59 1.1 hikaru #define CIU_INT32_EN1 UINT64_C(0x0001070000000408) 60 1.1 hikaru #define CIU_TIM0 UINT64_C(0x0001070000000480) 61 1.1 hikaru #define CIU_TIM1 UINT64_C(0x0001070000000488) 62 1.1 hikaru #define CIU_TIM2 UINT64_C(0x0001070000000490) 63 1.1 hikaru #define CIU_TIM3 UINT64_C(0x0001070000000498) 64 1.1 hikaru #define CIU_WDOG0 UINT64_C(0x0001070000000500) 65 1.7 simonb #define CIU_WDOG(n) (CIU_WDOG0 + (n) * 8) 66 1.1 hikaru #define CIU_PP_POKE0 UINT64_C(0x0001070000000580) 67 1.1 hikaru #define CIU_PP_POKE1 UINT64_C(0x0001070000000588) 68 1.10 jmcneill #define CIU_PP_POKE(n) (CIU_PP_POKE0 + (n) * 8) 69 1.1 hikaru #define CIU_MBOX_SET0 UINT64_C(0x0001070000000600) 70 1.3 matt #define CIU_MBOX_SET1 UINT64_C(0x0001070000000608) 71 1.10 jmcneill #define CIU_MBOX_SET(n) (CIU_MBOX_SET0 + (n) * 8) 72 1.1 hikaru #define CIU_MBOX_CLR0 UINT64_C(0x0001070000000680) 73 1.3 matt #define CIU_MBOX_CLR1 UINT64_C(0x0001070000000688) 74 1.10 jmcneill #define CIU_MBOX_CLR(n) (CIU_MBOX_CLR0 + (n) * 8) 75 1.1 hikaru #define CIU_PP_RST UINT64_C(0x0001070000000700) 76 1.1 hikaru #define CIU_PP_DBG UINT64_C(0x0001070000000708) 77 1.1 hikaru #define CIU_GSTOP UINT64_C(0x0001070000000710) 78 1.1 hikaru #define CIU_NMI UINT64_C(0x0001070000000718) 79 1.1 hikaru #define CIU_DINT UINT64_C(0x0001070000000720) 80 1.1 hikaru #define CIU_FUSE UINT64_C(0x0001070000000728) 81 1.1 hikaru #define CIU_BIST UINT64_C(0x0001070000000730) 82 1.1 hikaru #define CIU_SOFT_BIST UINT64_C(0x0001070000000738) 83 1.1 hikaru #define CIU_SOFT_RST UINT64_C(0x0001070000000740) 84 1.1 hikaru #define CIU_SOFT_PRST UINT64_C(0x0001070000000748) 85 1.1 hikaru #define CIU_PCI_INTA UINT64_C(0x0001070000000750) 86 1.2 matt #define CIU_INT4_SUM0 UINT64_C(0x0001070000000c00) 87 1.2 matt #define CIU_INT4_SUM1 UINT64_C(0x0001070000000c08) 88 1.11 jmcneill #define CIU_IP4_SUM0(n) (CIU_INT4_SUM0 + 0x8 * (n)) 89 1.2 matt #define CIU_INT4_EN00 UINT64_C(0x0001070000000c80) 90 1.2 matt #define CIU_INT4_EN01 UINT64_C(0x0001070000000c88) 91 1.2 matt #define CIU_INT4_EN10 UINT64_C(0x0001070000000c90) 92 1.2 matt #define CIU_INT4_EN11 UINT64_C(0x0001070000000c98) 93 1.10 jmcneill #define CIU_IP4_EN0(n) (CIU_INT4_EN00 + 0x10 * (n)) 94 1.10 jmcneill #define CIU_IP4_EN1(n) (CIU_INT4_EN01 + 0x10 * (n)) 95 1.1 hikaru 96 1.4 matt #define CIU_BASE UINT64_C(0x0001070000000000) 97 1.4 matt 98 1.1 hikaru #define CIU_INT0_SUM0_OFFSET 0x0000 99 1.1 hikaru #define CIU_INT1_SUM0_OFFSET 0x0008 100 1.1 hikaru #define CIU_INT2_SUM0_OFFSET 0x0010 101 1.1 hikaru #define CIU_INT3_SUM0_OFFSET 0x0018 102 1.1 hikaru #define CIU_INT32_SUM0_OFFSET 0x0100 103 1.5 skrll #define CIU_INT_SUM1_OFFSET 0x0108 104 1.1 hikaru #define CIU_INT0_EN0_OFFSET 0x0200 105 1.1 hikaru #define CIU_INT1_EN0_OFFSET 0x0210 106 1.1 hikaru #define CIU_INT2_EN0_OFFSET 0x0220 107 1.1 hikaru #define CIU_INT3_EN0_OFFSET 0x0230 108 1.1 hikaru #define CIU_INT32_EN0_OFFSET 0x0400 109 1.1 hikaru #define CIU_INT0_EN1_OFFSET 0x0208 110 1.1 hikaru #define CIU_INT1_EN1_OFFSET 0x0218 111 1.1 hikaru #define CIU_INT2_EN1_OFFSET 0x0228 112 1.1 hikaru #define CIU_INT3_EN1_OFFSET 0x0238 113 1.1 hikaru #define CIU_INT32_EN1_OFFSET 0x0408 114 1.1 hikaru #define CIU_TIM0_OFFSET 0x0480 115 1.1 hikaru #define CIU_TIM1_OFFSET 0x0488 116 1.1 hikaru #define CIU_TIM2_OFFSET 0x0490 117 1.1 hikaru #define CIU_TIM3_OFFSET 0x0498 118 1.1 hikaru #define CIU_WDOG0_OFFSET 0x0500 119 1.1 hikaru #define CIU_WDOG1_OFFSET 0x0508 120 1.1 hikaru #define CIU_PP_POKE0_OFFSET 0x0580 121 1.1 hikaru #define CIU_PP_POKE1_OFFSET 0x0588 122 1.1 hikaru #define CIU_MBOX_SET0_OFFSET 0x0600 123 1.1 hikaru #define CIU_MBOX_SET1_OFFSET 0x0608 124 1.1 hikaru #define CIU_MBOX_CLR0_OFFSET 0x0680 125 1.1 hikaru #define CIU_MBOX_CLR1_OFFSET 0x0688 126 1.1 hikaru #define CIU_PP_RST_OFFSET 0x0700 127 1.1 hikaru #define CIU_PP_DBG_OFFSET 0x0708 128 1.1 hikaru #define CIU_GSTOP_OFFSET 0x0710 129 1.1 hikaru #define CIU_NMI_OFFSET 0x0718 130 1.1 hikaru #define CIU_DINT_OFFSET 0x0720 131 1.1 hikaru #define CIU_FUSE_OFFSET 0x0728 132 1.1 hikaru #define CIU_BIST_OFFSET 0x0730 133 1.1 hikaru #define CIU_SOFT_BIST_OFFSET 0x0738 134 1.1 hikaru #define CIU_SOFT_RST_OFFSET 0x0740 135 1.1 hikaru #define CIU_SOFT_PRST_OFFSET 0x0748 136 1.1 hikaru #define CIU_PCI_INTA_OFFSET 0x0750 137 1.1 hikaru 138 1.1 hikaru /* ---- register bits */ 139 1.1 hikaru 140 1.7 simonb /* interrupt numbers */ 141 1.1 hikaru 142 1.7 simonb #define CIU_INT_BOOTDMA 63 143 1.7 simonb #define CIU_INT_MII 62 144 1.7 simonb #define CIU_INT_IPDPPTHR 61 145 1.7 simonb #define CIU_INT_POWIQ 60 146 1.7 simonb #define CIU_INT_TWSI2 59 147 1.7 simonb #define CIU_INT_MPI 58 148 1.7 simonb #define CIU_INT_PCM 57 149 1.7 simonb #define CIU_INT_USB 56 150 1.7 simonb #define CIU_INT_TIMER_3 55 151 1.7 simonb #define CIU_INT_TIMER_2 54 152 1.7 simonb #define CIU_INT_TIMER_1 53 153 1.7 simonb #define CIU_INT_TIMER_0 52 154 1.7 simonb #define CIU_INT_KEY_ZERO 51 155 1.7 simonb #define CIU_INT_IPD_DRP 50 156 1.7 simonb #define CIU_INT_GMX_DRP2 49 157 1.7 simonb #define CIU_INT_GMX_DRP 48 158 1.7 simonb #define CIU_INT_TRACE 47 159 1.7 simonb #define CIU_INT_RML 46 160 1.7 simonb #define CIU_INT_TWSI 45 161 1.7 simonb #define CIU_INT_WDOG_SUM 44 162 1.7 simonb #define CIU_INT_PCI_MSI_63_48 43 163 1.7 simonb #define CIU_INT_PCI_MSI_47_32 42 164 1.7 simonb #define CIU_INT_PCI_MSI_31_16 41 165 1.7 simonb #define CIU_INT_PCI_MSI_15_0 40 166 1.7 simonb #define CIU_INT_PCI_INT_D 39 167 1.7 simonb #define CIU_INT_PCI_INT_C 38 168 1.7 simonb #define CIU_INT_PCI_INT_B 37 169 1.7 simonb #define CIU_INT_PCI_INT_A 36 170 1.7 simonb #define CIU_INT_UART_1 35 171 1.7 simonb #define CIU_INT_UART_0 34 172 1.7 simonb #define CIU_INT_MBOX_31_16 33 173 1.7 simonb #define CIU_INT_MBOX_15_0 32 174 1.7 simonb #define CIU_INT_GPIO_15 31 175 1.7 simonb #define CIU_INT_GPIO_14 30 176 1.7 simonb #define CIU_INT_GPIO_13 29 177 1.7 simonb #define CIU_INT_GPIO_12 28 178 1.7 simonb #define CIU_INT_GPIO_11 27 179 1.7 simonb #define CIU_INT_GPIO_10 26 180 1.7 simonb #define CIU_INT_GPIO_9 25 181 1.7 simonb #define CIU_INT_GPIO_8 24 182 1.7 simonb #define CIU_INT_GPIO_7 23 183 1.7 simonb #define CIU_INT_GPIO_6 22 184 1.7 simonb #define CIU_INT_GPIO_5 21 185 1.7 simonb #define CIU_INT_GPIO_4 20 186 1.7 simonb #define CIU_INT_GPIO_3 19 187 1.7 simonb #define CIU_INT_GPIO_2 18 188 1.7 simonb #define CIU_INT_GPIO_1 17 189 1.7 simonb #define CIU_INT_GPIO_0 16 190 1.7 simonb #define CIU_INT_WORKQ_15 15 191 1.7 simonb #define CIU_INT_WORKQ_14 14 192 1.7 simonb #define CIU_INT_WORKQ_13 13 193 1.7 simonb #define CIU_INT_WORKQ_12 12 194 1.7 simonb #define CIU_INT_WORKQ_11 11 195 1.7 simonb #define CIU_INT_WORKQ_10 10 196 1.7 simonb #define CIU_INT_WORKQ_9 9 197 1.7 simonb #define CIU_INT_WORKQ_8 8 198 1.7 simonb #define CIU_INT_WORKQ_7 7 199 1.7 simonb #define CIU_INT_WORKQ_6 6 200 1.7 simonb #define CIU_INT_WORKQ_5 5 201 1.7 simonb #define CIU_INT_WORKQ_4 4 202 1.7 simonb #define CIU_INT_WORKQ_3 3 203 1.7 simonb #define CIU_INT_WORKQ_2 2 204 1.7 simonb #define CIU_INT_WORKQ_1 1 205 1.7 simonb #define CIU_INT_WORKQ_0 0 206 1.7 simonb 207 1.7 simonb #define CUI_INT_WDOG_15 15 208 1.7 simonb #define CUI_INT_WDOG_14 14 209 1.7 simonb #define CUI_INT_WDOG_13 13 210 1.7 simonb #define CUI_INT_WDOG_12 12 211 1.7 simonb #define CUI_INT_WDOG_11 11 212 1.7 simonb #define CUI_INT_WDOG_10 10 213 1.7 simonb #define CUI_INT_WDOG_9 9 214 1.7 simonb #define CUI_INT_WDOG_8 8 215 1.7 simonb #define CUI_INT_WDOG_7 7 216 1.7 simonb #define CUI_INT_WDOG_6 6 217 1.7 simonb #define CUI_INT_WDOG_5 5 218 1.7 simonb #define CUI_INT_WDOG_4 4 219 1.7 simonb #define CUI_INT_WDOG_3 3 220 1.7 simonb #define CUI_INT_WDOG_2 2 221 1.7 simonb #define CUI_INT_WDOG_1 1 222 1.7 simonb #define CUI_INT_WDOG_0 0 223 1.1 hikaru 224 1.1 hikaru #define CIU_TIMX_XXX_63_37 UINT64_C(0xffffffe000000000) 225 1.1 hikaru #define CIU_TIMX_ONE_SHOT UINT64_C(0x0000001000000000) 226 1.1 hikaru #define CIU_TIMX_LEN UINT64_C(0x0000000fffffffff) 227 1.1 hikaru 228 1.1 hikaru #define CIU_WDOGX_XXX_63_46 UINT64_C(0xffffc00000000000) 229 1.1 hikaru #define CIU_WDOGX_GSTOPEN UINT64_C(0x0000200000000000) 230 1.1 hikaru #define CIU_WDOGX_DSTOP UINT64_C(0x0000100000000000) 231 1.1 hikaru #define CIU_WDOGX_CNT UINT64_C(0x00000ffffff00000) 232 1.1 hikaru #define CIU_WDOGX_LEN UINT64_C(0x00000000000ffff0) 233 1.1 hikaru #define CIU_WDOGX_STATE UINT64_C(0x000000000000000c) 234 1.1 hikaru #define CIU_WDOGX_MODE UINT64_C(0x0000000000000003) 235 1.7 simonb #define CIU_WDOGX_MODE_OFF 0 236 1.7 simonb #define CIU_WDOGX_MODE_INTR 1 237 1.7 simonb #define CIU_WDOGX_MODE_INTR_NMI 2 238 1.7 simonb #define CIU_WDOGX_MODE_INTR_NMI_SOFT 3 239 1.1 hikaru 240 1.1 hikaru #define CIU_PP_POKEX_XXX_63_0 UINT64_C(0xffffffffffffffff) 241 1.1 hikaru 242 1.1 hikaru #define CIU_MBOX_SETX_XXX_63_32 UINT64_C(0xffffffff00000000) 243 1.1 hikaru #define CIU_MBOX_SETX_SET UINT64_C(0x00000000ffffffff) 244 1.1 hikaru 245 1.1 hikaru #define CIU_MBOX_CLRX_XXX_63_32 UINT64_C(0xffffffff00000000) 246 1.1 hikaru #define CIU_MBOX_CLRX_CLR UINT64_C(0x00000000ffffffff) 247 1.1 hikaru 248 1.7 simonb #define CIU_PP_RST_RST UINT64_C(0x0000ffffffffffff) 249 1.1 hikaru #define CIU_PP_RST_RST0 UINT64_C(0x0000000000000001) 250 1.1 hikaru 251 1.7 simonb #define CIU_PP_DBG_PPDBG UINT64_C(0x0000ffffffffffff) 252 1.1 hikaru 253 1.1 hikaru #define CIU_GSTOP_XXX_63_1 UINT64_C(0xfffffffffffffffe) 254 1.1 hikaru #define CIU_GSTOP_GSTOP UINT64_C(0x0000000000000001) 255 1.1 hikaru 256 1.7 simonb #define CIU_NMI_NMI UINT64_C(0x0000ffffffffffff) 257 1.1 hikaru 258 1.7 simonb #define CIU_DINT_DINT UINT64_C(0x0000ffffffffffff) 259 1.1 hikaru 260 1.7 simonb #define CIU_FUSE_FUSE UINT64_C(0x0000ffffffffffff) 261 1.1 hikaru 262 1.7 simonb #define CIU_BIST_BIST UINT64_C(0x0000ffffffffffff) 263 1.1 hikaru 264 1.1 hikaru #define CIU_SOFT_BIST_XXX_63_1 UINT64_C(0xfffffffffffffffe) 265 1.1 hikaru #define CIU_SOFT_BIST_SOFT_BIST UINT64_C(0x0000000000000001) 266 1.1 hikaru 267 1.1 hikaru #define CIU_SOFT_RST_XXX_63_1 UINT64_C(0xfffffffffffffffe) 268 1.1 hikaru #define CIU_SOFT_RST_SOFT_RST UINT64_C(0x0000000000000001) 269 1.1 hikaru 270 1.6 simonb #define CIU_SOFT_PRST_XXX_63_4 UINT64_C(0xfffffffffffffff8) 271 1.1 hikaru #define CIU_SOFT_PRST_HOST64 UINT64_C(0x0000000000000004) 272 1.1 hikaru #define CIU_SOFT_PRST_NPI UINT64_C(0x0000000000000002) 273 1.1 hikaru #define CIU_SOFT_PRST_SOFT_PRST UINT64_C(0x0000000000000001) 274 1.1 hikaru 275 1.1 hikaru #define CIU_PCI_INTA_XXX_63_2 UINT64_C(0xfffffffffffffffc) 276 1.1 hikaru #define CIU_PCI_INTA_INT UINT64_C(0x0000000000000003) 277 1.1 hikaru 278 1.1 hikaru #endif /* _OCTEON_CIUREG_H_ */ 279