1 /* $NetBSD: octeon_fpareg.h,v 1.1 2015/04/29 08:32:01 hikaru Exp $ */ 2 3 /* 4 * Copyright (c) 2007 Internet Initiative Japan, Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29 /* 30 * FPA Registers 31 */ 32 33 #ifndef _OCTEON_FPAREG_H_ 34 #define _OCTEON_FPAREG_H_ 35 36 /* ---- register offsets */ 37 38 #define FPA_INT_SUM 0x0001180028000040ULL 39 #define FPA_INT_ENB 0x0001180028000048ULL 40 #define FPA_CTL_STATUS 0x0001180028000050ULL 41 #define FPA_QUE0_AVAILABLE 0x0001180028000098ULL 42 #define FPA_QUE1_AVAILABLE 0x00011800280000a0ULL 43 #define FPA_QUE2_AVAILABLE 0x00011800280000a8ULL 44 #define FPA_QUE3_AVAILABLE 0x00011800280000b0ULL 45 #define FPA_QUE4_AVAILABLE 0x00011800280000b8ULL 46 #define FPA_QUE5_AVAILABLE 0x00011800280000c0ULL 47 #define FPA_QUE6_AVAILABLE 0x00011800280000c8ULL 48 #define FPA_QUE7_AVAILABLE 0x00011800280000d0ULL 49 #define FPA_WART_CTL 0x00011800280000d8ULL 50 #define FPA_WART_STATUS 0x00011800280000e0ULL 51 #define FPA_BIST_STATUS 0x00011800280000e8ULL 52 #define FPA_QUE0_PAGE_INDEX 0x00011800280000f0ULL 53 #define FPA_QUE1_PAGE_INDEX 0x00011800280000f8ULL 54 #define FPA_QUE2_PAGE_INDEX 0x0001180028000100ULL 55 #define FPA_QUE3_PAGE_INDEX 0x0001180028000108ULL 56 #define FPA_QUE4_PAGE_INDEX 0x0001180028000110ULL 57 #define FPA_QUE5_PAGE_INDEX 0x0001180028000118ULL 58 #define FPA_QUE6_PAGE_INDEX 0x0001180028000120ULL 59 #define FPA_QUE7_PAGE_INDEX 0x0001180028000128ULL 60 #define FPA_QUE_EXP 0x0001180028000130ULL 61 #define FPA_QUE_ACT 0x0001180028000138ULL 62 63 /* ---- register bit definitions */ 64 65 #define FPA_INT_SUM_XXX_63_28 UINT64_C(0xfffffffff0000000) 66 #define FPA_INT_SUM_Q7_PERR UINT64_C(0x0000000008000000) 67 #define FPA_INT_SUM_Q7_COFF UINT64_C(0x0000000004000000) 68 #define FPA_INT_SUM_Q7_UND UINT64_C(0x0000000002000000) 69 #define FPA_INT_SUM_Q6_PERR UINT64_C(0x0000000001000000) 70 #define FPA_INT_SUM_Q6_COFF UINT64_C(0x0000000000800000) 71 #define FPA_INT_SUM_Q6_UND UINT64_C(0x0000000000400000) 72 #define FPA_INT_SUM_Q5_PERR UINT64_C(0x0000000000200000) 73 #define FPA_INT_SUM_Q5_COFF UINT64_C(0x0000000000100000) 74 #define FPA_INT_SUM_Q5_UND UINT64_C(0x0000000000080000) 75 #define FPA_INT_SUM_Q4_PERR UINT64_C(0x0000000000040000) 76 #define FPA_INT_SUM_Q4_COFF UINT64_C(0x0000000000020000) 77 #define FPA_INT_SUM_Q4_UND UINT64_C(0x0000000000010000) 78 #define FPA_INT_SUM_Q3_PERR UINT64_C(0x0000000000008000) 79 #define FPA_INT_SUM_Q3_COFF UINT64_C(0x0000000000004000) 80 #define FPA_INT_SUM_Q3_UND UINT64_C(0x0000000000002000) 81 #define FPA_INT_SUM_Q2_PERR UINT64_C(0x0000000000001000) 82 #define FPA_INT_SUM_Q2_COFF UINT64_C(0x0000000000000800) 83 #define FPA_INT_SUM_Q2_UND UINT64_C(0x0000000000000400) 84 #define FPA_INT_SUM_Q1_PERR UINT64_C(0x0000000000000200) 85 #define FPA_INT_SUM_Q1_COFF UINT64_C(0x0000000000000100) 86 #define FPA_INT_SUM_Q1_UND UINT64_C(0x0000000000000080) 87 #define FPA_INT_SUM_Q0_PERR UINT64_C(0x0000000000000040) 88 #define FPA_INT_SUM_Q0_COFF UINT64_C(0x0000000000000020) 89 #define FPA_INT_SUM_Q0_UND UINT64_C(0x0000000000000010) 90 #define FPA_INT_SUM_FED1_DBE UINT64_C(0x0000000000000008) 91 #define FPA_INT_SUM_FED1_SBE UINT64_C(0x0000000000000004) 92 #define FPA_INT_SUM_FED0_DBE UINT64_C(0x0000000000000002) 93 #define FPA_INT_SUM_FED0_SBE UINT64_C(0x0000000000000001) 94 95 #define FPA_INT_ENB_XXX_63_28 UINT64_C(0xfffffffff0000000) 96 #define FPA_INT_ENB_Q7_PERR UINT64_C(0x0000000008000000) 97 #define FPA_INT_ENB_Q7_COFF UINT64_C(0x0000000004000000) 98 #define FPA_INT_ENB_Q7_UND UINT64_C(0x0000000002000000) 99 #define FPA_INT_ENB_Q6_PERR UINT64_C(0x0000000001000000) 100 #define FPA_INT_ENB_Q6_COFF UINT64_C(0x0000000000800000) 101 #define FPA_INT_ENB_Q6_UND UINT64_C(0x0000000000400000) 102 #define FPA_INT_ENB_Q5_PERR UINT64_C(0x0000000000200000) 103 #define FPA_INT_ENB_Q5_COFF UINT64_C(0x0000000000100000) 104 #define FPA_INT_ENB_Q5_UND UINT64_C(0x0000000000080000) 105 #define FPA_INT_ENB_Q4_PERR UINT64_C(0x0000000000040000) 106 #define FPA_INT_ENB_Q4_COFF UINT64_C(0x0000000000020000) 107 #define FPA_INT_ENB_Q4_UND UINT64_C(0x0000000000010000) 108 #define FPA_INT_ENB_Q3_PERR UINT64_C(0x0000000000008000) 109 #define FPA_INT_ENB_Q3_COFF UINT64_C(0x0000000000004000) 110 #define FPA_INT_ENB_Q3_UND UINT64_C(0x0000000000002000) 111 #define FPA_INT_ENB_Q2_PERR UINT64_C(0x0000000000001000) 112 #define FPA_INT_ENB_Q2_COFF UINT64_C(0x0000000000000800) 113 #define FPA_INT_ENB_Q2_UND UINT64_C(0x0000000000000400) 114 #define FPA_INT_ENB_Q1_PERR UINT64_C(0x0000000000000200) 115 #define FPA_INT_ENB_Q1_COFF UINT64_C(0x0000000000000100) 116 #define FPA_INT_ENB_Q1_UND UINT64_C(0x0000000000000080) 117 #define FPA_INT_ENB_Q0_PERR UINT64_C(0x0000000000000040) 118 #define FPA_INT_ENB_Q0_COFF UINT64_C(0x0000000000000020) 119 #define FPA_INT_ENB_Q0_UND UINT64_C(0x0000000000000010) 120 #define FPA_INT_ENB_FED1_DBE UINT64_C(0x0000000000000008) 121 #define FPA_INT_ENB_FED1_SBE UINT64_C(0x0000000000000004) 122 #define FPA_INT_ENB_FED0_DBE UINT64_C(0x0000000000000002) 123 #define FPA_INT_ENB_FED0_SBE UINT64_C(0x0000000000000001) 124 125 #define FPA_CTL_STATUS_XXX_63_18 UINT64_C(0xfffffffffffc0000) 126 #define FPA_CTL_STATUS_RESET UINT64_C(0x0000000000020000) 127 #define FPA_CTL_STATUS_USE_LDT UINT64_C(0x0000000000010000) 128 #define FPA_CTL_STATUS_USE_STT UINT64_C(0x0000000000008000) 129 #define FPA_CTL_STATUS_ENB UINT64_C(0x0000000000004000) 130 #define FPA_CTL_STATUS_MEM1_ERR UINT64_C(0x0000000000003f80) 131 #define FPA_CTL_STATUS_MEM0_ERR UINT64_C(0x000000000000007f) 132 133 #define FPA_QUEX_AVAILABLE_XXX_63_29 UINT64_C(0xffffffffe0000000) 134 #define FPA_QUEX_AVAILABLE_QUE_SIZ UINT64_C(0x000000001fffffff) 135 136 #define FPA_WART_CTL_XXX_63_16 UINT64_C(0xffffffffffff0000) 137 #define FPA_WART_CTL_CTL UINT64_C(0x000000000000ffff) 138 139 #define FPA_WART_STATUS_XXX_63_32 UINT64_C(0xffffffff00000000) 140 #define FPA_WART_STATUS_STATUS UINT64_C(0x00000000ffffffff) 141 142 #define FPA_BIST_STATUS_XXX_63_5 UINT64_C(0xffffffffffffffe0) 143 #define FPA_BIST_STATUS_FRD UINT64_C(0x0000000000000010) 144 #define FPA_BIST_STATUS_FPF0 UINT64_C(0x0000000000000008) 145 #define FPA_BIST_STATUS_FPF1 UINT64_C(0x0000000000000004) 146 #define FPA_BIST_STATUS_FFR UINT64_C(0x0000000000000002) 147 #define FPA_BIST_STATUS_FDR UINT64_C(0x0000000000000001) 148 149 #define FPA_QUEX_PAGE_INDEX_XXX_63_25 UINT64_C(0xfffffffffe000000) 150 #define FPA_QUEX_PAGE_INDEX_PG_NUM UINT64_C(0x0000000001ffffff) 151 152 #define FPA_QUE_EXP_XXX_63_32 UINT64_C(0xffffffff00000000) 153 #define FPA_QUE_EXP_XXX_31_29 UINT64_C(0x00000000e0000000) 154 #define FPA_QUE_EXP_EXP_QUE UINT64_C(0x000000001c000000) 155 #define FPA_QUE_EXP_EXP_INDX UINT64_C(0x0000000003ffffff) 156 157 #define FPA_QUE_ACT_XXX_63_32 UINT64_C(0xffffffff00000000) 158 #define FPA_QUE_ACT_XXX_31_29 UINT64_C(0x00000000e0000000) 159 #define FPA_QUE_ACT_ACT_QUE UINT64_C(0x000000001c000000) 160 #define FPA_QUE_ACT_ACT_INDX UINT64_C(0x0000000003ffffff) 161 162 /* ---- snprintb(9) */ 163 164 #define FPA_INT_SUM_BITS \ 165 "\177" /* new format */ \ 166 "\020" /* hex display */ \ 167 "\020" /* %016x format */ \ 168 "b\x1b" "Q7_PERR\0" \ 169 "b\x1a" "Q7_COFF\0" \ 170 "b\x19" "Q7_UND\0" \ 171 "b\x18" "Q6_PERR\0" \ 172 "b\x17" "Q6_COFF\0" \ 173 "b\x16" "Q6_UND\0" \ 174 "b\x15" "Q5_PERR\0" \ 175 "b\x14" "Q5_COFF\0" \ 176 "b\x13" "Q5_UND\0" \ 177 "b\x12" "Q4_PERR\0" \ 178 "b\x11" "Q4_COFF\0" \ 179 "b\x10" "Q4_UND\0" \ 180 "b\x0f" "Q3_PERR\0" \ 181 "b\x0e" "Q3_COFF\0" \ 182 "b\x0d" "Q3_UND\0" \ 183 "b\x0c" "Q2_PERR\0" \ 184 "b\x0b" "Q2_COFF\0" \ 185 "b\x0a" "Q2_UND\0" \ 186 "b\x09" "Q1_PERR\0" \ 187 "b\x08" "Q1_COFF\0" \ 188 "b\x07" "Q1_UND\0" \ 189 "b\x06" "Q0_PERR\0" \ 190 "b\x05" "Q0_COFF\0" \ 191 "b\x04" "Q0_UND\0" \ 192 "b\x03" "FED1_DBE\0" \ 193 "b\x02" "FED1_SBE\0" \ 194 "b\x01" "FED0_DBE\0" \ 195 "b\x00" "FED0_SBE\0" 196 197 #define FPA_INT_ENB_BITS \ 198 "\177" /* new format */ \ 199 "\020" /* hex display */ \ 200 "\020" /* %016x format */ \ 201 "b\x1b" "Q7_PERR\0" \ 202 "b\x1a" "Q7_COFF\0" \ 203 "b\x19" "Q7_UND\0" \ 204 "b\x18" "Q6_PERR\0" \ 205 "b\x17" "Q6_COFF\0" \ 206 "b\x16" "Q6_UND\0" \ 207 "b\x15" "Q5_PERR\0" \ 208 "b\x14" "Q5_COFF\0" \ 209 "b\x13" "Q5_UND\0" \ 210 "b\x12" "Q4_PERR\0" \ 211 "b\x11" "Q4_COFF\0" \ 212 "b\x10" "Q4_UND\0" \ 213 "b\x0f" "Q3_PERR\0" \ 214 "b\x0e" "Q3_COFF\0" \ 215 "b\x0d" "Q3_UND\0" \ 216 "b\x0c" "Q2_PERR\0" \ 217 "b\x0b" "Q2_COFF\0" \ 218 "b\x0a" "Q2_UND\0" \ 219 "b\x09" "Q1_PERR\0" \ 220 "b\x08" "Q1_COFF\0" \ 221 "b\x07" "Q1_UND\0" \ 222 "b\x06" "Q0_PERR\0" \ 223 "b\x05" "Q0_COFF\0" \ 224 "b\x04" "Q0_UND\0" \ 225 "b\x03" "FED1_DBE\0" \ 226 "b\x02" "FED1_SBE\0" \ 227 "b\x01" "FED0_DBE\0" \ 228 "b\x00" "FED0_SBE\0" 229 230 #define FPA_CTL_STATUS_BITS \ 231 "\177" /* new format */ \ 232 "\020" /* hex display */ \ 233 "\020" /* %016x format */ \ 234 "b\x11" "RESET\0" \ 235 "b\x10" "USE_LDT\0" \ 236 "b\x0f" "USE_STT\0" \ 237 "b\x0e" "ENB\0" \ 238 "f\x07\x07" "MEM1_ERR\0" \ 239 "f\x00\x07" "MEM0_ERR\0" 240 241 #define FPA_QUEX_AVAILABLE_BITS \ 242 "\177" /* new format */ \ 243 "\020" /* hex display */ \ 244 "\020" /* %016x format */ \ 245 "f\x00\x1d" "QUE_SIZ\0" 246 #define FPA_QUE0_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 247 #define FPA_QUE1_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 248 #define FPA_QUE2_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 249 #define FPA_QUE3_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 250 #define FPA_QUE4_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 251 #define FPA_QUE5_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 252 #define FPA_QUE6_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 253 #define FPA_QUE7_AVAILABLE_BITS FPA_QUEX_AVAILABLE_BITS 254 255 #define FPA_WART_CTL_BITS \ 256 "\177" /* new format */ \ 257 "\020" /* hex display */ \ 258 "\020" /* %016x format */ \ 259 "f\x00\x10" "CTL\0" 260 261 #define FPA_WART_STATUS_BITS \ 262 "\177" /* new format */ \ 263 "\020" /* hex display */ \ 264 "\020" /* %016x format */ \ 265 "f\x00\x20" "STATUS\0" 266 267 #define FPA_BIST_STATUS_BITS \ 268 "\177" /* new format */ \ 269 "\020" /* hex display */ \ 270 "\020" /* %016x format */ \ 271 "b\x04" "FRD\0" \ 272 "b\x03" "FPF0\0" \ 273 "b\x02" "FPF1\0" \ 274 "b\x01" "FFR\0" \ 275 "b\x00" "FDR\0" 276 277 #define FPA_QUEX_PAGE_INDEX_BITS \ 278 "\177" /* new format */ \ 279 "\020" /* hex display */ \ 280 "\020" /* %016x format */ \ 281 "f\x00\x19" "PG_NUM\0" 282 #define FPA_QUE0_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 283 #define FPA_QUE1_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 284 #define FPA_QUE2_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 285 #define FPA_QUE3_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 286 #define FPA_QUE4_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 287 #define FPA_QUE5_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 288 #define FPA_QUE6_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 289 #define FPA_QUE7_PAGE_INDEX_BITS FPA_QUEX_PAGE_INDEX_BITS 290 291 #define FPA_QUE_EXP_BITS \ 292 "\177" /* new format */ \ 293 "\020" /* hex display */ \ 294 "\020" /* %016x format */ \ 295 "f\x1a\x03" "EXP_QUE\0" \ 296 "f\x00\x1a" "EXP_INDX\0" 297 298 #define FPA_QUE_ACT_BITS \ 299 "\177" /* new format */ \ 300 "\020" /* hex display */ \ 301 "\020" /* %016x format */ \ 302 "f\x1a\x03" "ACT_QUE\0" \ 303 "f\x00\x1a" "ACT_INDX\0" 304 305 /* ---- operations */ 306 307 /* 308 * Free Pool Unit Operations 309 */ 310 311 #define FPA_MAJORDID 0x5 /* 0b00101 */ 312 313 #define FPA_OPS_MAJORDID UINT64_C(0x0000f80000000000) 314 #define FPA_OPS_MAJORDID_SHIFT 43 315 #define FPA_OPS_SUBDID UINT64_C(0x0000070000000000) 316 #define FPA_OPS_SUBDID_SHIFT 40 317 #define FPA_OPS_XXX_39_0 UINT64_C(0x000000ffffffffff) 318 319 /* Load Operations */ 320 321 #define FPA_OPS_LOAD_1 UINT64_C(0x0001000000000000) 322 #define FPA_OPS_LOAD_MAJORDID UINT64_C(0x0000f80000000000) 323 #define FPA_OPS_LOAD_SUBDID UINT64_C(0x0000070000000000) 324 #define FPA_OPS_LOAD_XXX_39_0 UINT64_C(0x000000ffffffffff) 325 326 /* IOBDMA Operations */ 327 328 #define FPA_OPS_IOBDMA_SRCADDR UINT64_C(0xff00000000000000) 329 #define FPA_OPS_IOBDMA_LEN UINT64_C(0x00ff000000000000) 330 #define FPA_OPS_IOBDMA_LEN_SHIFT 48 331 #define FPA_OPS_IOBDMA_MAJORDID UINT64_C(0x0000f80000000000) 332 #define FPA_OPS_IOBDMA_SUBDIR UINT64_C(0x0000070000000000) 333 #define FPA_OPS_IOBDMA_XXX_39_0 UINT64_C(0x000000ffffffffff) 334 335 /* Store Operations */ 336 337 #define FPA_OPS_STORE_1 UINT64_C(0x0001000000000000) 338 #define FPA_OPS_STORE_MAJORDID UINT64_C(0x0000f80000000000) 339 #define FPA_OPS_STORE_SUBDID UINT64_C(0x0000070000000000) 340 #define FPA_OPS_STORE_XXX_39_0 UINT64_C(0x000000ffffffffff) 341 342 #define FPA_OPS_STORE_DATA_XXX_63_9 UINT64_C(0xfffffffffffffe00) 343 #define FPA_OPS_STORE_DATA_DWBCOUNT UINT64_C(0x00000000000001ff) 344 345 /* ---- bus_space(9) */ 346 347 #define FPA_BASE 0x0001180028000000ULL 348 #define FPA_SIZE 0x0200 349 350 #define FPA_INT_SUM_OFFSET 0x0040 351 #define FPA_INT_ENB_OFFSET 0x0048 352 #define FPA_CTL_STATUS_OFFSET 0x0050 353 #define FPA_QUE0_AVAILABLE_OFFSET 0x0098 354 #define FPA_QUE1_AVAILABLE_OFFSET 0x00a0 355 #define FPA_QUE2_AVAILABLE_OFFSET 0x00a8 356 #define FPA_QUE3_AVAILABLE_OFFSET 0x00b0 357 #define FPA_QUE4_AVAILABLE_OFFSET 0x00b8 358 #define FPA_QUE5_AVAILABLE_OFFSET 0x00c0 359 #define FPA_QUE6_AVAILABLE_OFFSET 0x00c8 360 #define FPA_QUE7_AVAILABLE_OFFSET 0x00d0 361 #define FPA_WART_CTL_OFFSET 0x00d8 362 #define FPA_WART_STATUS_OFFSET 0x00e0 363 #define FPA_BIST_STATUS_OFFSET 0x00e8 364 #define FPA_QUE0_PAGE_INDEX_OFFSET 0x00f0 365 #define FPA_QUE1_PAGE_INDEX_OFFSET 0x00f8 366 #define FPA_QUE2_PAGE_INDEX_OFFSET 0x0100 367 #define FPA_QUE3_PAGE_INDEX_OFFSET 0x0108 368 #define FPA_QUE4_PAGE_INDEX_OFFSET 0x0110 369 #define FPA_QUE5_PAGE_INDEX_OFFSET 0x0118 370 #define FPA_QUE6_PAGE_INDEX_OFFSET 0x0120 371 #define FPA_QUE7_PAGE_INDEX_OFFSET 0x0128 372 #define FPA_QUE_EXP_OFFSET 0x0130 373 #define FPA_QUE_ACT_OFFSET 0x0138 374 375 #endif /* _OCTEON_FPAREG_H_ */ 376