1139749Simp/*- 212090Sgibbs * EISA bus device definitions 38012Sjulian * 415329Sgibbs * Copyright (c) 1995, 1996 Justin T. Gibbs. 512090Sgibbs * All rights reserved. 615329Sgibbs * 712090Sgibbs * Redistribution and use in source and binary forms, with or without 812090Sgibbs * modification, are permitted provided that the following conditions 912090Sgibbs * are met: 1012090Sgibbs * 1. Redistributions of source code must retain the above copyright 1112090Sgibbs * notice immediately at the beginning of the file, without modification, 1212090Sgibbs * this list of conditions, and the following disclaimer. 1312090Sgibbs * 2. Redistributions in binary form must reproduce the above copyright 1412090Sgibbs * notice, this list of conditions and the following disclaimer in the 1512090Sgibbs * documentation and/or other materials provided with the distribution. 1615329Sgibbs * 3. The name of the author may not be used to endorse or promote products 1715329Sgibbs * derived from this software without specific prior written permission. 188012Sjulian * 1915329Sgibbs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2015329Sgibbs * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2115329Sgibbs * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2215329Sgibbs * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 2315329Sgibbs * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2415329Sgibbs * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2515329Sgibbs * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2615329Sgibbs * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2715329Sgibbs * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2815329Sgibbs * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2915329Sgibbs * SUCH DAMAGE. 3015329Sgibbs * 3150477Speter * $FreeBSD$ 328012Sjulian */ 338012Sjulian 34130274Simp#ifndef _DEV_EISA_EISACONF_H_ 35130274Simp#define _DEV_EISA_EISACONF_H_ 1 368012Sjulian 37130274Simp#include "eisa_if.h" 3813691Sgibbs#define EISA_SLOT_SIZE 0x1000 3912090Sgibbs 4012122Sgibbs#define EISA_MFCTR_CHAR0(ID) (char)(((ID>>26) & 0x1F) | '@') /* Bits 26-30 */ 4112122Sgibbs#define EISA_MFCTR_CHAR1(ID) (char)(((ID>>21) & 0x1F) | '@') /* Bits 21-25 */ 4212122Sgibbs#define EISA_MFCTR_CHAR2(ID) (char)(((ID>>16) & 0x1F) | '@') /* Bits 16-20 */ 4312122Sgibbs#define EISA_MFCTR_ID(ID) (short)((ID>>16) & 0xFF) /* Bits 16-31 */ 4412122Sgibbs#define EISA_PRODUCT_ID(ID) (short)((ID>>4) & 0xFFF) /* Bits 4-15 */ 4512122Sgibbs#define EISA_REVISION_ID(ID) (u_char)(ID & 0x0F) /* Bits 0-3 */ 4612090Sgibbs 4723855Sjoergextern int num_eisa_slots; 4812090Sgibbs 4913691Sgibbstypedef u_int32_t eisa_id_t; 5012090Sgibbs 5145791Speterenum eisa_device_ivars { 5245791Speter EISA_IVAR_SLOT, 5345791Speter EISA_IVAR_ID, 5445791Speter EISA_IVAR_IRQ 5545791Speter}; 5645791Speter 5749360Smdodd#define EISA_TRIGGER_EDGE 0x0 5849360Smdodd#define EISA_TRIGGER_LEVEL 0x1 5949360Smdodd 6045791Speter/* 6145791Speter * Simplified accessors for isa devices 6245791Speter */ 63102177Smux#define EISA_ACCESSOR(var, ivar, type) \ 64102177Smux __BUS_ACCESSOR(eisa, var, EISA, ivar, type) 6545791Speter 6645791SpeterEISA_ACCESSOR(slot, SLOT, int) 6745791SpeterEISA_ACCESSOR(id, ID, eisa_id_t) 6845791SpeterEISA_ACCESSOR(irq, IRQ, eisa_id_t) 6945791Speter 70102177Smux#undef EISA_ACCESSOR 71102177Smux 7213691Sgibbs#define RESVADDR_NONE 0x00 7313691Sgibbs#define RESVADDR_BITMASK 0x01 /* size is a mask of reserved 7413691Sgibbs * bits at addr 7513691Sgibbs */ 7613691Sgibbs#define RESVADDR_RELOCATABLE 0x02 7713691Sgibbs 78130274Simpstatic __inline int 79130274Simpeisa_add_intr(device_t dev, int irq, int trigger) 80130274Simp{ 81130274Simp return (EISA_ADD_INTR(device_get_parent(dev), dev, irq, trigger)); 82130274Simp} 83130274Simp 84130274Simpstatic __inline int 85130274Simpeisa_add_iospace(device_t dev, u_long iobase, u_long iosize, int flags) 86130274Simp{ 87130274Simp return (EISA_ADD_IOSPACE(device_get_parent(dev), dev, iobase, iosize, 88130274Simp flags)); 89130274Simp} 90130274Simp 91130274Simpstatic __inline int 92130274Simpeisa_add_mspace(device_t dev, u_long mbase, u_long msize, int flags) 93130274Simp{ 94130274Simp return (EISA_ADD_MSPACE(device_get_parent(dev), dev, mbase, msize, 95130274Simp flags)); 96130274Simp} 97130274Simp 98130274Simp#endif /* _DEV_EISA_EISACONF_H_ */ 99