/* $OpenBSD: mongoosereg.h,v 1.1 2004/10/29 20:23:37 miod Exp $ */ /* * Copyright (c) 1998-2003 Michael Shalayeff * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */ /* EISA Bus Adapter registers definitions */ #define MONGOOSE_MONGOOSE 0x10000 struct mongoose_regs { u_int8_t version; u_int8_t lock; u_int8_t liowait; u_int8_t clock; u_int8_t reserved[0xf000 - 4]; u_int8_t intack; }; #define MONGOOSE_CTRL 0x00000 #define MONGOOSE_NINTS 16 struct mongoose_ctrl { struct dma0 { struct { u_int32_t addr : 8; u_int32_t count: 8; } ch[4]; u_int8_t command; u_int8_t request; u_int8_t mask_channel; u_int8_t mode; u_int8_t clr_byte_ptr; u_int8_t master_clear; u_int8_t mask_clear; u_int8_t master_write; u_int8_t pad[8]; } dma0; u_int8_t irr0; /* 0x20 */ u_int8_t imr0; u_int8_t iack; /* 0x22 -- 2 b2b reads generate (e)isa Iack cycle & returns int level */ u_int8_t pad0[29]; struct timers { u_int8_t sysclk; u_int8_t refresh; u_int8_t spkr; u_int8_t ctrl; u_int32_t pad; } tmr[2]; /* 0x40 -- timers control */ u_int8_t pad1[16]; u_int16_t inmi; /* 0x60 NMI control */ u_int8_t pad2[30]; struct { u_int8_t pad0; u_int8_t ch2; u_int8_t ch3; u_int8_t ch1; u_int8_t pad1; u_int8_t pad2[3]; u_int8_t ch0; u_int8_t pad4; u_int8_t ch6; u_int8_t ch7; u_int8_t ch5; u_int8_t pad5[3]; u_int8_t pad6[16]; } pr; /* 0x80 */ u_int8_t irr1; /* 0xa0 */ u_int8_t imr1; u_int8_t pad3[30]; struct dma1 { struct { u_int32_t addr : 8; u_int32_t pad0 : 8; u_int32_t count: 8; u_int32_t pad1 : 8; } ch[4]; u_int8_t command; u_int8_t pad0; u_int8_t request; u_int8_t pad1; u_int8_t mask_channel; u_int8_t pad2; u_int8_t mode; u_int8_t pad3; u_int8_t clr_byte_ptr; u_int8_t pad4; u_int8_t master_clear; u_int8_t pad5; u_int8_t mask_clear; u_int8_t pad6; u_int8_t master_write; u_int8_t pad7; } dma1; /* 0xc0 */ u_int8_t master_req; /* 0xe0 master request register */ u_int8_t pad4[31]; u_int8_t pad5[0x3d0]; /* 0x4d0 */ u_int8_t pic0; /* 0 - edge, 1 - level */ u_int8_t pic1; u_int8_t pad6[0x460]; u_int8_t nmi; u_int8_t nmi_ext; #define MONGOOSE_NMI_BUSRESET 0x01 #define MONGOOSE_NMI_IOPORT_EN 0x02 #define MONGOOSE_NMI_EN 0x04 #define MONGOOSE_NMI_MTMO_EN 0x08 #define MONGOOSE_NMI_RES4 0x10 #define MONGOOSE_NMI_IOPORT_INT 0x20 #define MONGOOSE_NMI_MASTER_INT 0x40 #define MONGOOSE_NMI_INT 0x80 }; #define MONGOOSE_IOMAP 0x100000