Annotation of sys/arch/hppa64/dev/elroyreg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: elroyreg.h,v 1.1 2005/04/01 10:40:47 mickey Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2005 Michael Shalayeff
! 5: * All rights reserved.
! 6: *
! 7: * Permission to use, copy, modify, and distribute this software for any
! 8: * purpose with or without fee is hereby granted, provided that the above
! 9: * copyright notice and this permission notice appear in all copies.
! 10: *
! 11: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 12: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 13: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 14: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 15: * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER IN
! 16: * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
! 17: * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 18: */
! 19:
! 20: struct elroy_regs {
! 21: /* std PCI bridge header */
! 22: u_int32_t pci_id; /* 0x000 rw PCI_ID */
! 23: u_int32_t pci_cmdstat; /* 0x004 rw PCI_COMMAND_STATUS_REG */
! 24: u_int32_t pci_class; /* 0x008 ro PCI_CLASS_REG */
! 25: u_int32_t pci_bhlc; /* 0x00c rw PCI_BHLC_REG */
! 26: u_int32_t res0[0x30/4]; /* 0x010 */
! 27:
! 28: /* HW Bridge registers */
! 29: u_int32_t pci_conf_addr; /* 0x040 rw config space address */
! 30: u_int32_t pad040;
! 31: u_int32_t pci_conf_data; /* 0x048 rw config space data */
! 32: u_int32_t pad048;
! 33: u_int64_t elroy_mtlt; /* 0x050 */
! 34: u_int32_t busnum; /* 0x058 bus number/scratch */
! 35: u_int32_t par058;
! 36: u_int64_t res1; /* 0x060 */
! 37: u_int64_t rope; /* 0x068 rope parity, loopback */
! 38: u_int64_t err_addr; /* 0x070 error log: address */
! 39: u_int64_t suspend; /* 0x078 rw suspend control */
! 40: u_int32_t arb_mask; /* 0x080 rw arbitration mask */
! 41: u_int32_t pad080;
! 42: #define ELROY_ARB_ENABLE 0x01 /* enable arbitration */
! 43: #define ELROY_ARB_PCIDEVA 0x02 /* PCI device A allow */
! 44: #define ELROY_ARB_PCIDEVB 0x04 /* PCI device A allow */
! 45: #define ELROY_ARB_PCIDEVC 0x08 /* PCI device A allow */
! 46: #define ELROY_ARB_PCIDEVD 0x10 /* PCI device A allow */
! 47: #define ELROY_ARB_PCIDEVE 0x20 /* PCI device A allow */
! 48: #define ELROY_ARB_PCIDEVF 0x40 /* PCI device A allow */
! 49: #define ELROY_ARB_PCIDEVG 0x80 /* PCI device A allow */
! 50: u_int64_t arb_pri; /* 0x088 arbitration priority */
! 51: u_int64_t arb_mode; /* 0x090 arbitration mode */
! 52: u_int64_t mtlt; /* 0x098 */
! 53: u_int64_t res2[12]; /* 0x0a0 */
! 54: u_int64_t mod_info; /* 0x100 */
! 55: u_int32_t control; /* 0x108 */
! 56: #define ELROY_CONTROL_RF 0x01 /* reset pci */
! 57: #define ELROY_CONTROL_VE 0x08 /* VGA enable */
! 58: #define ELROY_CONTROL_CL 0x10 /* clear error log */
! 59: #define ELROY_CONTROL_CE 0x20 /* clear error log enable */
! 60: #define ELROY_CONTROL_HF 0x40 /* hard fail enable */
! 61: u_int32_t status; /* 0x10c */
! 62: #define ELROY_STATUS_RC 0x01 /* reset complete */
! 63: #define ELROY_STATUS_BITS "\020\01RC"
! 64: u_int64_t res3[30]; /* 0x110 */
! 65: u_int64_t lmmio_base; /* 0x200 */
! 66: u_int64_t lmmio_mask; /* 0x208 */
! 67: u_int64_t gmmio_base; /* 0x210 */
! 68: u_int64_t gmmio_mask; /* 0x218 */
! 69: u_int64_t wlmmio_base; /* 0x220 */
! 70: u_int64_t wlmmio_mask; /* 0x228 */
! 71: u_int64_t wgmmio_base; /* 0x230 */
! 72: u_int64_t wgmmio_mask; /* 0x238 */
! 73: u_int32_t io_base; /* 0x240 */
! 74: u_int32_t pad240;
! 75: u_int32_t io_mask; /* 0x248 */
! 76: u_int32_t pad248;
! 77: u_int32_t res4[4]; /* 0x250 */
! 78: u_int32_t eio_base; /* 0x260 */
! 79: u_int32_t pad260;
! 80: u_int32_t eio_mask; /* 0x268 */
! 81: u_int32_t pad268;
! 82: #define ELROY_BASE_RE 0x01 /* range enable */
! 83: u_int64_t res5; /* 0x270 */
! 84: u_int64_t dmac_ctrl; /* 0x278 DMA connection control */
! 85: u_int64_t res6[16]; /* 0x280 */
! 86: u_int64_t ibase; /* 0x300 */
! 87: u_int64_t imask; /* 0x308 */
! 88: u_int64_t hint_cfg; /* 0x310 */
! 89: u_int64_t res7[13]; /* 0x318 */
! 90: u_int64_t hints[14]; /* 0x380 */
! 91: u_int64_t res8[2]; /* 0x3f0 */
! 92: u_int64_t res9[64]; /* 0x400 */
! 93: u_int64_t pad0; /* 0x600 */
! 94: u_int64_t pci_drive; /* 0x608 */
! 95: u_int64_t rope_cfg; /* 0x610 */
! 96: u_int64_t clk_ctl; /* 0x618 */
! 97: u_int32_t pad1; /* 0x620 */
! 98: u_int32_t res10[23]; /* 0x624 */
! 99: u_int32_t err_cfg; /* 0x680 error config */
! 100: u_int32_t pad680;
! 101: #define ELROY_ERRCFG_PW 0x01 /* PIO writes parity errors */
! 102: #define ELROY_ERRCFG_PR 0x02 /* PIO reads parity errors */
! 103: #define ELROY_ERRCFG_DW 0x04 /* DMA writes parity errors */
! 104: #define ELROY_ERRCFG_DR 0x08 /* DMA reads parity errors */
! 105: #define ELROY_ERRCFG_CM 0x10 /* no fatal on config space */
! 106: #define ELROY_ERRCFG_SMART 0x20 /* smart bus mode */
! 107: u_int64_t err_stat; /* 0x688 error status */
! 108: u_int64_t err_mid; /* 0x690 error log: master id */
! 109: u_int64_t rope_estat; /* 0x698 rope error status */
! 110: u_int64_t rope_eclr; /* 0x6a0 rope error clear */
! 111: u_int64_t res11[42]; /* 0x6a8 */
! 112: u_int64_t regbus; /* 0x7f8 reads 0x3ff */
! 113: u_int32_t apic_addr; /* 0x800 APIC address register */
! 114: u_int32_t pad800;
! 115: u_int64_t res12;
! 116: u_int32_t apic_data; /* 0x810 APIC data register */
! 117: u_int32_t pad808;
! 118: u_int64_t res13[5];
! 119: u_int32_t apic_eoi; /* 0x840 APIC interrupt ack */
! 120: u_int32_t pad840;
! 121: u_int32_t apic_softint; /* 0x850 write generates softint */
! 122: u_int32_t pad850;
! 123: u_int64_t res14[123]; /* 0x858 */
! 124: /*0x1000 */
! 125: } __packed;
! 126:
! 127: /* APIC registers */
! 128: #define APIC_VERSION 0x01
! 129: #define APIC_VERSION_MASK 0xff
! 130: #define APIC_VERSION_NENT 0xff0000
! 131: #define APIC_VERSION_NENT_SHIFT 16
! 132: #define APIC_ENT0(i) (0x10 + (i)*2)
! 133: #define APIC_ENT0_VEC 0x000ff
! 134: #define APIC_ENT0_MOD 0x00700 /* delivery mode */
! 135: #define APIC_ENT0_FXD 0x00000
! 136: #define APIC_ENT0_RDR 0x00100
! 137: #define APIC_ENT0_PMI 0x00200
! 138: #define APIC_ENT0_NMI 0x00400
! 139: #define APIC_ENT0_INI 0x00500
! 140: #define APIC_ENT0_EXT 0x00700
! 141: #define APIC_ENT0_PEND 0x01000 /* int is pending */
! 142: #define APIC_ENT0_LOW 0x02000 /* polarity */
! 143: #define APIC_ENT0_LEV 0x08000 /* edge/level */
! 144: #define APIC_ENT0_MASK 0x10000 /* mask int */
! 145: #define APIC_ENT1(i) (0x11 + (i)*2)
! 146:
CVSweb