ofw_isa.h revision 117119
1/* 2 * Copyright (c) 1999, 2000 Matthew R. Green 3 * Copyright (c) 2001 Thomas Moestl <tmm@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 24 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * from: NetBSD: ebus.c,v 1.26 2001/09/10 16:27:53 eeh Exp 30 * 31 * $FreeBSD: head/sys/sparc64/isa/ofw_isa.h 117119 2003-07-01 14:52:47Z tmm $ 32 */ 33 34#ifndef _SPARC64_ISA_OFW_ISA_H_ 35#define _SPARC64_ISA_OFW_ISA_H_ 36 37/* 38 * ISA PROM structures 39 */ 40struct isa_regs { 41 u_int32_t phys_hi; /* high bits of physaddr */ 42 u_int32_t phys_lo; 43 u_int32_t size; 44}; 45 46#define ISA_REG_PHYS(r) \ 47 ((((u_int64_t)((r)->phys_hi)) << 32) | ((u_int64_t)(r)->phys_lo)) 48 49/* XXX: this is a guess. Verify... */ 50struct isa_ranges { 51 u_int32_t child_hi; 52 u_int32_t child_lo; 53 u_int32_t phys_hi; 54 u_int32_t phys_mid; 55 u_int32_t phys_lo; 56 u_int32_t size; 57}; 58 59#define ISA_RANGE_CHILD(r) \ 60 ((((u_int64_t)((r)->child_hi)) << 32) | ((u_int64_t)(r)->child_lo)) 61#define ISA_RANGE_PS(r) (((r)->phys_hi >> 24) & 0x03) 62 63typedef u_int32_t ofw_isa_intr_t; 64 65struct isa_imap { 66 u_int32_t phys_hi; /* high phys addr mask */ 67 u_int32_t phys_lo; /* low phys addr mask */ 68 ofw_isa_intr_t intr; /* interrupt mask */ 69 phandle_t cnode; /* child node */ 70 ofw_pci_intr_t cintr; /* child interrupt */ 71}; 72 73struct isa_imap_msk { 74 u_int32_t phys_hi; /* high phys addr */ 75 u_int32_t phys_lo; /* low phys addr */ 76 ofw_isa_intr_t intr; /* interrupt */ 77}; 78 79/* Map an IO range. Returns the resource type of the range. */ 80int ofw_isa_map_iorange(struct isa_ranges *, int, u_long *, u_long *); 81 82#ifdef OFW_NEWPCI 83ofw_pci_intr_t ofw_isa_route_intr(device_t, phandle_t, struct ofw_bus_iinfo *, 84 ofw_isa_intr_t); 85#endif 86 87#endif /* !_SPARC64_ISA_OFW_ISA_H_ */ 88