Annotation of sys/arch/alpha/pci/mcpciareg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: mcpciareg.h,v 1.1 2007/03/16 21:22:27 robert Exp $ */
! 2: /* $NetBSD: mcpciareg.h,v 1.7 2006/05/17 21:32:59 drochner Exp $ */
! 3:
! 4: /*
! 5: * Copyright (c) 1998 by Matthew Jacob
! 6: * NASA AMES Research Center.
! 7: * All rights reserved.
! 8: *
! 9: * Redistribution and use in source and binary forms, with or without
! 10: * modification, are permitted provided that the following conditions
! 11: * are met:
! 12: * 1. Redistributions of source code must retain the above copyright
! 13: * notice immediately at the beginning of the file, without modification,
! 14: * this list of conditions, and the following disclaimer.
! 15: * 2. Redistributions in binary form must reproduce the above copyright
! 16: * notice, this list of conditions and the following disclaimer in the
! 17: * documentation and/or other materials provided with the distribution.
! 18: * 3. The name of the author may not be used to endorse or promote products
! 19: * derived from this software without specific prior written permission.
! 20: *
! 21: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
! 25: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 31: * SUCH DAMAGE.
! 32: */
! 33:
! 34: /*
! 35: * Taken from:
! 36: *
! 37: * ``RAWHIDE Systems Programmer's Manual, Revision 1.4''
! 38: */
! 39:
! 40: #define REGVAL(r) (*(volatile int32_t *)ALPHA_PHYS_TO_K0SEG(r))
! 41:
! 42: /*
! 43: * There are 4 possible PCI busses per MCBUS.
! 44: *
! 45: * (from mcpcia.h, Digital Unix 4.0E):
! 46: *
! 47: * I/O Space Per PCI Node (8GBytes per)
! 48: * ------------------------------------
! 49: * (8+x)8 0000 0000 - (8+x)9 FFFF FFFF - I/O Space for PCI0
! 50: * (8+x)A 0000 0000 - (8+x)B FFFF FFFF - I/O Space for PCI1
! 51: * (8+x)C 0000 0000 - (8+x)D FFFF FFFF - I/O Space for PCI2
! 52: * (8+x)E 0000 0000 - (8+x)F FFFF FFFF - I/O Space for PCI3
! 53: *
! 54: * CPU to PCI Address Mapping:
! 55: * ---------------------------
! 56: *
! 57: * +---+-------+-------+--+--+--+--+--+--+---------------+----------+-----+
! 58: * | 1 | GID | MID | | | | | | | Byte Aligned | Byte Len | Zero|
! 59: * | | | | | | | | | | I/O Address | Field | |
! 60: * +---+-------+-------+--+--+--+--+--+--+---------------+----------+-----+
! 61: * 39 38 36 35 33 32 31 30 29 28 27 26 5 4 3 2 0
! 62: *
! 63: * <39> - I/O Select (Always 1 for direct I/O access)
! 64: *
! 65: * <38-36> - Global Bus slot # (MCBUS #)
! 66: * GID slot #0->7 (MCBUS #0->7)
! 67: *
! 68: * <35-33> - MCBUS Slot #
! 69: * MCBUS slot 0->7
! 70: *
! 71: * <32-27> - PCI Address Space
! 72: * 0.xxxxx = Sparse Memory Space ( 4GB on MCBUS; 128MB on PCI)
! 73: * 1.0xxxx = Dense Memory Space ( 2GB on MCBUS; 2GB on PCI)
! 74: * 1.10xxx = Sparse IO Space ( 1GB on MCBUS; 32MB on PCI)
! 75: * 1.110xx = Sparse Config Space (512MB on MCBUS; 16MB on PCI)
! 76: * 1.1110x = PCI Bridge CSR Space (256MB on MCBUS) -- Sparse-mapped!
! 77: * 1.11110 = Interrupt Acknowledge (128MB on MCBUS)
! 78: * 1.11111 = Unused (128MB on MCBUS)
! 79: *
! 80: * ------------------------------------------------------------
! 81: * CPU to PCI Address Mapping for MCBUS-PCIy Bridge on MCBUS x:
! 82: * ------------------------------------------------------------
! 83: *
! 84: * CPU Address Range PCI Address Range PCI Address Space
! 85: * ------------------------ --------------------- ------------------------
! 86: * (8+x)(8+y*2).0000.0000 0000.0000 - 00FF.FFFF PCIy Sparse Memory Space
! 87: * - (8+x)(8+y*2).1FFF.FFFF (fixed, lower 16MB)
! 88: *
! 89: * (8+x)(8+y*2).2000.0000 0100.0000 - 07FF.FFFF PCIy Sparse Memory Space
! 90: * - (8+x)(8+y*2).FFFF.FFFF (variable, offset = 0)
! 91: *
! 92: * (8+x)(9+y*2).0000.0000 0000.0000 - 7FFF.FFFF PCIy Dense Memory Space
! 93: * - (8+x)(9+y*2).7FFF.FFFF or 8000.0000 - FFFF.FFFF if HAE_DENSE_MEM = 1
! 94: *
! 95: * (8+x)(9+y*2).8000.0000 0000.0000 - 0000.FFFF PCIy Sparse IO Space
! 96: * - (8+x)(9+y*2).801F.FFFF (fixed, lower 64K)
! 97: *
! 98: * (8+x)(9+y*2).8020.0000 0001.0000 - 01FF.FFFF PCIy Sparse IO Space
! 99: * - (8+x)(9+y*2).BFFF.FFFF (variable, offset = 0)
! 100: *
! 101: * (8+x)(9+y*2).C000.0000 0000.0000 - 0FFF.FFFF PCIy Config Space (16MB)
! 102: * - (8+x)(9+y*2).DFFF.FFFF
! 103: *
! 104: * (8+x)(9+y*2).E000.0000 N/A PCIy-Bridge CSR Space
! 105: * (8MB)
! 106: * - (8+x)(9+y*2).EFFF.FFFF
! 107: *
! 108: * (8+x)(9+y*2).F000.0000 N/A Unused
! 109: * - (8+x)(9+y*2).F000.3EFF
! 110: *
! 111: * (8+x)(9+y*2).F000.3F00, N/A PCIy Interrupt ACK0
! 112: * (8+x)(9+y*2).F000.3F40 PCIy INteruppt ACK1
! 113: *
! 114: * (8+x)(9+y*2).F000.3F80 N/A Unused
! 115: * - (8+x)(9+y*2).FFFF.FFFF
! 116: *
! 117: */
! 118:
! 119: /*
! 120: * MC-PCI Bus Bridge CSRs
! 121: *
! 122: * Address Map Overview:
! 123: *
! 124: * Offset Selected Space
! 125: * ---------------- -------------------------------------------------
! 126: * 0x00000000 General config, control, diag, error logging regs.
! 127: * 0x00001000 PCI Error Status
! 128: * 0x00001300 PCI Scatter/Gather Regs.
! 129: * 0x00001800 Scatter/Gather TLB Regs.
! 130: * 0x00004000 MDPA Error Status & Diagnostic Control
! 131: * 0x00008000 MDPB Error Status & Diagnostic Control
! 132: * 0x000E0000 - Flash Rom Space --
! 133: * 0x000FFFFF offset address into PCI Dense Mem Space
! 134: * 0x10003F00 Interrupt Acknowledge
! 135: *
! 136: */
! 137:
! 138:
! 139: /*
! 140: * Address Space Cookies
! 141: */
! 142:
! 143: #define MCPCIA_PCI_SPARSE 0x000000000UL
! 144: #define MCPCIA_PCI_DENSE 0x100000000UL
! 145: #define MCPCIA_PCI_IOSPACE 0x180000000UL
! 146: #define MCPCIA_PCI_CONF 0x1C0000000UL
! 147: #define MCPCIA_PCI_BRIDGE 0x1E0000000UL
! 148: #define MCPCIA_PCI_IACK 0x1F0000000UL
! 149:
! 150: /*
! 151: * MCPCIA Bus Bridge Registers
! 152: *
! 153: * These are offsets that don't include GBUS, MID, or address space offsets.
! 154: */
! 155:
! 156: #define _MCPCIA_PCI_REV 0x000000000 /* PCI Revision Register (R) */
! 157: #define _MCPCIA_WHOAMI 0x000000040 /* PCI Who Am I (R) */
! 158: #define _MCPCIA_PCI_LAT 0x000000080 /* PCI Latency Timer (RW) */
! 159: #define _MCPCIA_CAP_CTRL 0x000000100 /* PCI Bridge Control (RW) */
! 160: #define _MCPCIA_HAE_MEM 0x000000400 /* PCI HAE Sparse Memory (RW) */
! 161: #define _MCPCIA_HAE_IO 0x000000440 /* PCI HAE Sparse I/O (RW) */
! 162: #define _MCPCIA_IACK_SC 0x000000480 /* PCI Special Cycle Ack */
! 163: #define _MCPCIA_HAE_DENSE 0x0000004C0 /* PCI HAE Dense Memory (RW) */
! 164:
! 165: #define _MCPCIA_INT_CTL 0x000000500 /* PCI Interrupt Control */
! 166: #define _MCPCIA_INT_REQ 0x000000540 /* PCI Interrupt Request */
! 167: #define _MCPCIA_INT_TARG 0x000000580 /* PCI Int Tgt Devices */
! 168: #define _MCPCIA_INT_ADR 0x0000005C0 /* PCI Int Tgt Address */
! 169: #define _MCPCIA_INT_ADR_EXT 0x000000600 /* PCI Int Tgt Addr Ext */
! 170: #define _MCPCIA_INT_MASK0 0x000000640 /* PCI Int Mask 0 */
! 171: #define _MCPCIA_INT_MASK1 0x000000680 /* PCI Int Mask 1 */
! 172:
! 173: #define _MCPCIA_INT_ACK0 0x100003F00 /* PCI Int Ack 0 */
! 174: #define _MCPCIA_INT_ACK1 0x100003F40 /* PCI Int Ack 1 */
! 175:
! 176: #define _MCPCIA_PERF_MON 0x000000300 /* PCI Perf Monitor */
! 177: #define _MCPCIA_PERF_CONT 0x000000340 /* PCI Perf Monitor Control */
! 178:
! 179: #define _MCPCIA_CAP_DIAG 0x000000700 /* MC-PCI Diagnostic Control */
! 180: #define _MCPCIA_SCRATCH0 0x000000740 /* Diag General */
! 181: #define _MCPCIA_SCRATCH1 0x000000780 /* Diag General */
! 182: #define _MCPCIA_TOM 0x0000007C0 /* Top Of Memory */
! 183: #define _MCPCIA_MC_ERR0 0x000000800 /* MC Err Info 0 */
! 184: #define _MCPCIA_MC_ERR1 0x000000840 /* MC Err Info 1 */
! 185: #define _MCPCIA_CAP_ERR 0x000000880 /* CAP Error Register */
! 186:
! 187: #define _MCPCIA_PCI_ERR1 0x000001040 /* PCI Error Status */
! 188:
! 189: #define _MCPCIA_MDPA_STAT 0x000004000 /* MDPA Status */
! 190: #define _MCPCIA_MDPA_SYN 0x000004040 /* MDPA Syndrome */
! 191: #define _MCPCIA_MDPA_DIAG 0x000004080 /* Diag Check MDPA */
! 192:
! 193: #define _MCPCIA_MDPB_STAT 0x000008000 /* MDPB Status */
! 194: #define _MCPCIA_MDPB_SYN 0x000008040 /* MDPB Syndrome */
! 195: #define _MCPCIA_MDPB_DIAG 0x000008080 /* Diag Check MDPB */
! 196:
! 197: #define _MCPCIA_SG_TBIA 0x000001300 /* Scatter/Gather TBIA */
! 198: #define _MCPCIA_HBASE 0x000001340 /* PC "Hole" Compatibility */
! 199: #define _MCPCIA_W0_BASE 0x000001400 /* Window Base 0 */
! 200: #define _MCPCIA_W0_MASK 0x000001440 /* Window Mask 0 */
! 201: #define _MCPCIA_T0_BASE 0x000001480 /* Translated Base 0 */
! 202: #define _MCPCIA_W1_BASE 0x000001500 /* Window Base 1 */
! 203: #define _MCPCIA_W1_MASK 0x000001540 /* Window Mask 1 */
! 204: #define _MCPCIA_T1_BASE 0x000001580 /* Translated Base 1 */
! 205: #define _MCPCIA_W2_BASE 0x000001600 /* Window Base 2 */
! 206: #define _MCPCIA_W2_MASK 0x000001640 /* Window Mask 2 */
! 207: #define _MCPCIA_T2_BASE 0x000001680 /* Translated Base 2 */
! 208: #define _MCPCIA_W3_BASE 0x000001700 /* Window Base 3 */
! 209: #define _MCPCIA_W3_MASK 0x000001740 /* Window Mask 3 */
! 210: #define _MCPCIA_T3_BASE 0x000001780 /* Translated Base 3 */
! 211: #define _MCPCIA_W_DAC 0x0000017C0 /* Window DAC Base */
! 212:
! 213:
! 214: /*
! 215: * Handier defines- uses precalculated offset in softc.
! 216: */
! 217: #define _SYBRIDGE(ccp) ((ccp)->cc_sysbase | MCPCIA_PCI_BRIDGE)
! 218:
! 219: #define MCPCIA_PCI_REV(ccp) (_SYBRIDGE(ccp) | _MCPCIA_PCI_REV)
! 220: #define MCPCIA_WHOAMI(ccp) (_SYBRIDGE(ccp) | _MCPCIA_WHOAMI)
! 221: #define MCPCIA_PCI_LAT(ccp) (_SYBRIDGE(ccp) | _MCPCIA_PCI_LAT)
! 222: #define MCPCIA_CAP_CTRL(ccp) (_SYBRIDGE(ccp) | _MCPCIA_CAP_CTRL)
! 223: #define MCPCIA_HAE_MEM(ccp) (_SYBRIDGE(ccp) | _MCPCIA_HAE_MEM)
! 224: #define MCPCIA_HAE_IO(ccp) (_SYBRIDGE(ccp) | _MCPCIA_HAE_IO)
! 225: #define MCPCIA_IACK_SC(ccp) (_SYBRIDGE(ccp) | _MCPCIA_IACK_SC)
! 226: #define MCPCIA_HAE_DENSE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_HAE_DENSE)
! 227: #define MCPCIA_INT_CTL(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_CTL)
! 228: #define MCPCIA_INT_REQ(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_REQ)
! 229: #define MCPCIA_INT_TARG(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_TARG)
! 230: #define MCPCIA_INT_ADR(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_ADR)
! 231: #define MCPCIA_INT_ADR_EXT(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_ADR_EXT)
! 232: #define MCPCIA_INT_MASK0(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_MASK0)
! 233: #define MCPCIA_INT_MASK1(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_MASK1)
! 234: #define MCPCIA_INT_ACK0(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_ACK0)
! 235: #define MCPCIA_INT_ACK1(ccp) (_SYBRIDGE(ccp) | _MCPCIA_INT_ACK1)
! 236: #define MCPCIA_PERF_MON(ccp) (_SYBRIDGE(ccp) | _MCPCIA_PERF_MON)
! 237: #define MCPCIA_PERF_CONT(ccp) (_SYBRIDGE(ccp) | _MCPCIA_PERF_CONT)
! 238: #define MCPCIA_CAP_DIAG(ccp) (_SYBRIDGE(ccp) | _MCPCIA_CAP_DIAG)
! 239: #define MCPCIA_SCRATCH0(ccp) (_SYBRIDGE(ccp) | _MCPCIA_SCRATCH0)
! 240: #define MCPCIA_SCRATCH1(ccp) (_SYBRIDGE(ccp) | _MCPCIA_SCRATCH1)
! 241: #define MCPCIA_TOM(ccp) (_SYBRIDGE(ccp) | _MCPCIA_TOM)
! 242: #define MCPCIA_MC_ERR0(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MC_ERR0)
! 243: #define MCPCIA_MC_ERR1(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MC_ERR1)
! 244: #define MCPCIA_CAP_ERR(ccp) (_SYBRIDGE(ccp) | _MCPCIA_CAP_ERR)
! 245: #define MCPCIA_PCI_ERR1(ccp) (_SYBRIDGE(ccp) | _MCPCIA_PCI_ERR1)
! 246: #define MCPCIA_MDPA_STAT(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPA_STAT)
! 247: #define MCPCIA_MDPA_SYN(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPA_SYN)
! 248: #define MCPCIA_MDPA_DIAG(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPA_DIAG)
! 249: #define MCPCIA_MDPB_STAT(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPB_STAT)
! 250: #define MCPCIA_MDPB_SYN(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPB_SYN)
! 251: #define MCPCIA_MDPB_DIAG(ccp) (_SYBRIDGE(ccp) | _MCPCIA_MDPB_DIAG)
! 252: #define MCPCIA_SG_TBIA(ccp) (_SYBRIDGE(ccp) | _MCPCIA_SG_TBIA)
! 253: #define MCPCIA_HBASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_HBASE)
! 254: #define MCPCIA_W0_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W0_BASE)
! 255: #define MCPCIA_W0_MASK(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W0_MASK)
! 256: #define MCPCIA_T0_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_T0_BASE)
! 257: #define MCPCIA_W1_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W1_BASE)
! 258: #define MCPCIA_W1_MASK(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W1_MASK)
! 259: #define MCPCIA_T1_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_T1_BASE)
! 260: #define MCPCIA_W2_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W2_BASE)
! 261: #define MCPCIA_W2_MASK(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W2_MASK)
! 262: #define MCPCIA_T2_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_T2_BASE)
! 263: #define MCPCIA_W3_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W3_BASE)
! 264: #define MCPCIA_W3_MASK(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W3_MASK)
! 265: #define MCPCIA_T3_BASE(ccp) (_SYBRIDGE(ccp) | _MCPCIA_T3_BASE)
! 266: #define MCPCIA_W_DAC(ccp) (_SYBRIDGE(ccp) | _MCPCIA_W_DAC)
! 267:
! 268: /*
! 269: * This is here for what error handling will get as a collected subpacket.
! 270: */
! 271:
! 272: struct mcpcia_iodsnap {
! 273: u_int64_t base_addr;
! 274: u_int32_t whami;
! 275: u_int32_t rsvd0;
! 276: u_int32_t pci_rev;
! 277: u_int32_t cap_ctrl;
! 278: u_int32_t hae_mem;
! 279: u_int32_t hae_io;
! 280: u_int32_t int_ctl;
! 281: u_int32_t int_reg;
! 282: u_int32_t int_mask0;
! 283: u_int32_t int_mask1;
! 284: u_int32_t mc_err0;
! 285: u_int32_t mc_err1;
! 286: u_int32_t cap_err;
! 287: u_int32_t sys_env;
! 288: u_int32_t pci_err1;
! 289: u_int32_t mdpa_stat;
! 290: u_int32_t mdpa_syn;
! 291: u_int32_t mdpb_stat;
! 292: u_int32_t mdpb_syn;
! 293: u_int32_t rsvd2;
! 294: u_int32_t rsvd3;
! 295: u_int32_t rsvd4;
! 296: };
! 297:
! 298: /*
! 299: * PCI_REV Register definitions
! 300: */
! 301: #define CAP_REV(reg) ((reg) & 0xf)
! 302: #define HORSE_REV(reg) (((reg) >> 4) & 0xf)
! 303: #define SADDLE_REV(reg) (((reg) >> 8) & 0xf)
! 304: #define SADDLE_TYPE(reg) (((reg) >> 12) & 0x3)
! 305: #define EISA_PRESENT(reg) ((reg) & (1 << 15))
! 306: #define IS_MCPCIA_MAGIC(reg) (((reg) & 0xffff0000) == 0x6000000)
! 307:
! 308:
! 309: /*
! 310: * WHOAMI Register definitions
! 311: *
! 312: * The Device ID is an echo of the MID of the CPU reading this register-
! 313: * cheezy way to figure out who you are (ask someone else!).
! 314: */
! 315: #define MCBUS_CPU_MID(x) ((x) & 0x7)
! 316: #define MCBUS_CPU_INFO(x) (((x) >> 6) & 0xff)
! 317: #define CPU_Fill_Err 0x80
! 318: #define CPU_DTAG_Perr 0x40
! 319: #define CPU_RevMask 0x38
! 320: #define CPU_RevShift 3
! 321: #define CPU_BCacheMask 0x3
! 322: #define CPU_BCache_0MB 0
! 323: #define CPU_BCache_1MB 1
! 324: #define CPU_BCache_2MB 2
! 325: #define CPU_BCache_4MB 3
! 326:
! 327: /*
! 328: * PCI Latency Register Definitions
! 329: */
! 330: #define PCI_LAT_SHIFT 8 /* it's in the 2nd byte. */
! 331:
! 332: /*
! 333: * CAP Control Register Definitions
! 334: */
! 335: #define CAP_LED_ON 0x00000001 /* Selftest LED passed */
! 336: #define CAP_EV56_BW_EN 0x00000002 /* BW Enables (EV56, EV6 only) */
! 337: #define CAP_DLY_RD_EN 0x00000010 /* PCI Delayed Reads Enabled */
! 338: #define CAP_MEM_EN 0x00000020 /* Respond to PCI transactions */
! 339: #define CAP_REQ64_EN 0x00000040 /* Request 64 bit data transactions */
! 340: #define CAP_ACK64_EN 0x00000080 /* Respond to 64 bit data "" */
! 341: #define CAP_ADR_PAR_EN 0x00000100 /* Check PCI address Parity */
! 342: #define CAP_MC_CA_PAR 0x00000200 /* Check MC bus CMD/Address Parity */
! 343: #define CAP_MC_NXM_EN 0x00000400 /* Check for MC NXM */
! 344: #define CAP_BUS_MON 0x00000800 /* Check for PCI errs (as bystander) */
! 345: /* bits 19:16 control number of pending write transactions */
! 346: #define SHORT 0
! 347: #define MED 1
! 348: #define LONG 2
! 349: #define CAP_MEMRD_PREFETCH_SHIFT 20
! 350: #define CAP_MEMRDLN_PREFETCH_SHIFT 22
! 351: #define CAP_MEMRDMULT_PREFETCH_SHIFT 24
! 352: #define CAP_PARTIAL_WRITE (1 << 26)
! 353:
! 354: #define CAP_ARB_BPRI 0x00000000 /* Bridge Priority Arb */
! 355: #define CAP_ARB_RROBIN 0x40000000 /* "" Round Robin */
! 356: #define CAP_ARB_RROBIN1 0x80000000 /* "" Round Robin #1 */
! 357:
! 358: /*
! 359: * Diagnostic Register Bits
! 360: */
! 361: /* CAP_DIAG register */
! 362: #define CAP_DIAG_PCIRESET 0x1 /*
! 363: * WriteOnly. Assert 1 for 100usec min.,
! 364: * then write zero. NOTE: deadlocks
! 365: * exist in h/w if anything but this
! 366: * register is accessed while reset
! 367: * is asserted.
! 368: */
! 369: #define CAP_DIAG_MC_ADRPE (1<<30) /* Invert MC Bus Address/Parity */
! 370: #define CAP_DIAG_PCI_ADRPE (1<<31) /* Force bad PCI parity (low 32) */
! 371:
! 372: /* MDPA_DIAG or MDPB_DIAG registers */
! 373: #define MDPX_ECC_ENA (1<<28) /* Enable ECC on MC Bus (default 1) */
! 374: #define MDPX_PAR_ENA (1<<29) /* Enable Parity on PCI (default 0) */
! 375: #define MDPX_DIAG_FPE_PCI (1<<30) /* Force PCI parity error */
! 376: #define MDPX_DIAG_USE_CHK (1<<31) /*
! 377: * When set, DMA write cycles use the
! 378: * value in the low 8 bits of this
! 379: * register (MDPA or MDPB) as ECC
! 380: * sent onto main memory.
! 381: */
! 382:
! 383: /*
! 384: * Interrupt Specific bits...
! 385: *
! 386: * Mostly we don't have to mess with any of the interrupt specific registers
! 387: * as the SRM has set most of this pretty complex stuff up for us.
! 388: *
! 389: * However, to enable specific interrupts, we need to set some bits
! 390: * in imask0 if we want to have them vectored to PALcode for appropriate
! 391: * dispatch.
! 392: */
! 393:
! 394: /*
! 395: * bits 0-15 correspond to 4 slots (time 4 buspins) for each PCI bus.
! 396: * bit 16 is the NCR810 onboard SCSI interrupt.
! 397: * bits 19-20 are reserved.
! 398: */
! 399:
! 400: #define MCPCIA_I2C_CTRL_INTR (1<<17)
! 401: #define MCPCIA_I2C_CTRL_BUS_ERR (1<<18)
! 402:
! 403: #define MCPCIA_8259_NMI_INTR (1<<21)
! 404: #define MCPCIA_SOFT_ERR_INTR (1<<22)
! 405: #define MCPCIA_HARD_ERR_INTR (1<<23)
! 406:
! 407: #ifdef YET
! 408: #define MCPCIA_GEN_IENABL \
! 409: (MCPCIA_I2C_CTRL_BUS_ERR|MCPCIA_SOFT_ERR_INTR|MCPCIA_HARD_ERR_INTR)
! 410: #else
! 411: #define MCPCIA_GEN_IENABL \
! 412: (MCPCIA_SOFT_ERR_INTR|MCPCIA_HARD_ERR_INTR)
! 413: #endif
! 414:
! 415: /*
! 416: * DMA Address Specific bits...
! 417: */
! 418:
! 419: #define MCPCIA_WBASE_EN 0x1
! 420: #define MCPCIA_WBASE_SG 0x2
! 421: #define MCPCIA_WBASE_DAC 0x8
! 422: #define MCPCIA_WBASE_BSHIFT 20
! 423:
! 424: #define MCPCIA_WMASK_1M 0x00000000
! 425: #define MCPCIA_WMASK_2M 0x00100000
! 426: #define MCPCIA_WMASK_4M 0x00300000
! 427: #define MCPCIA_WMASK_8M 0x00700000
! 428: #define MCPCIA_WMASK_16M 0x00f00000
! 429: #define MCPCIA_WMASK_32M 0x01f00000
! 430: #define MCPCIA_WMASK_64M 0x03f00000
! 431: #define MCPCIA_WMASK_128M 0x07f00000
! 432: #define MCPCIA_WMASK_256M 0x0ff00000
! 433: #define MCPCIA_WMASK_512M 0x1ff00000
! 434: #define MCPCIA_WMASK_1G 0x3ff00000
! 435: #define MCPCIA_WMASK_2G 0x7ff00000
! 436: #define MCPCIA_WMASK_4G 0xfff00000
! 437:
! 438: /*
! 439: * The WBASEX register contains bits 39:10 of a physical address
! 440: * shifted to bits 31:2 of this 32 bit register. Namely, shifted
! 441: * right by 8 bits.
! 442: */
! 443: #define MCPCIA_TBASEX_SHIFT 8
CVSweb