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, struct macio_reg *) 53 54 #undef MACIO_ACCESSOR 55 56 /* 57 * The addr space size 58 * XXX it would be better if this could be determined by querying the 59 * PCI device, but there isn't an access method for this 60 */ 61 #define MACIO_REG_SIZE 0x7ffff 62 63 /* 64 * Macio softc 65 */ 66 struct macio_softc { 67 phandle_t sc_node; 68 vm_offset_t sc_base; 69 vm_offset_t sc_size; 70 struct rman sc_mem_rman; 71 }; 72 73 /* 74 * Format of a macio reg property entry. 75 */ 76 struct macio_reg { 77 u_int32_t mr_base; 78 u_int32_t mr_size; 79 }; 80 81 /* 82 * Per macio device structure. 83 */ 84 struct macio_devinfo { 85 phandle_t mdi_node; 86 char *mdi_name; 87 char *mdi_device_type; 88 int mdi_interrupts[5]; 89 int mdi_ninterrupts; 90 int mdi_base; 91 int mdi_nregs; 92 struct macio_reg *mdi_regs; 93 struct resource_list mdi_resources; 94 }; 95 96 #endif /* _MACIO_MACIOVAR_H_ */ 97