1 /* 2 * Copyright 2002 by Peter Grehan. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 3. The name of the author may not be used to endorse or promote products 13 * derived from this software without specific prior written permission. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 20 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 22 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 23 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 * $FreeBSD$ 28 */ 29 30 #ifndef _MACIO_MACIOVAR_H_ 31 #define _MACIO_MACIOVAR_H_ 32 33 /* 34 * Accessors for macio devices 35 */ 36 37 enum macio_ivars { 38 MACIO_IVAR_NODE, 39 MACIO_IVAR_NAME, 40 MACIO_IVAR_DEVTYPE, 41 MACIO_IVAR_NREGS, 42 MACIO_IVAR_REGS, 43 }; 44 45 #define MACIO_ACCESSOR(var, ivar, type) \ 46 __BUS_ACCESSOR(macio, var, MACIO, ivar, type) 47 48 MACIO_ACCESSOR(node, NODE, phandle_t) 49 MACIO_ACCESSOR(name, NAME, char *) 50 MACIO_ACCESSOR(devtype, DEVTYPE, char *) 51 MACIO_ACCESSOR(nregs, NREGS, u_int) 52 MACIO_ACCESSOR(regs, REGS, u_int *) 53 54 #undef MACIO_ACCESSOR 55 56 /* 57 * Upper limit on OpenFirmware reg array 58 */ 59 #define MACIO_MAXREG 16 60 61 /* 62 * The addr space size 63 * XXX it would be better if this could be determined by querying the 64 * PCI device, but there isn't an access method for this 65 */ 66 #define MACIO_REG_SIZE 0x7ffff 67 68 /* 69 * Macio softc 70 */ 71 struct macio_softc { 72 phandle_t sc_node; 73 vm_offset_t sc_base; 74 vm_offset_t sc_size; 75 struct rman sc_mem_rman; 76 }; 77 78 /* 79 * Per macio device structure. 80 */ 81 struct macio_devinfo { 82 phandle_t mdi_node; 83 char *mdi_name; 84 char *mdi_device_type; 85 int mdi_interrupts[5]; 86 int mdi_ninterrupts; 87 int mdi_base; 88 int mdi_nregs; 89 u_int mdi_reg[MACIO_MAXREG]; 90 struct resource_list mdi_resources; 91 }; 92 93 #endif /* _MACIO_MACIOVAR_H_ */ 94