11a4290e7SDoug Rabson /*- 21a4290e7SDoug Rabson * Copyright (c) 1998 Doug Rabson 31a4290e7SDoug Rabson * All rights reserved. 41a4290e7SDoug Rabson * 51a4290e7SDoug Rabson * Redistribution and use in source and binary forms, with or without 61a4290e7SDoug Rabson * modification, are permitted provided that the following conditions 71a4290e7SDoug Rabson * are met: 81a4290e7SDoug Rabson * 1. Redistributions of source code must retain the above copyright 91a4290e7SDoug Rabson * notice, this list of conditions and the following disclaimer. 101a4290e7SDoug Rabson * 2. Redistributions in binary form must reproduce the above copyright 111a4290e7SDoug Rabson * notice, this list of conditions and the following disclaimer in the 121a4290e7SDoug Rabson * documentation and/or other materials provided with the distribution. 131a4290e7SDoug Rabson * 141a4290e7SDoug Rabson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 151a4290e7SDoug Rabson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 161a4290e7SDoug Rabson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 171a4290e7SDoug Rabson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 181a4290e7SDoug Rabson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 191a4290e7SDoug Rabson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 201a4290e7SDoug Rabson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 211a4290e7SDoug Rabson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 221a4290e7SDoug Rabson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 231a4290e7SDoug Rabson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 241a4290e7SDoug Rabson * SUCH DAMAGE. 251a4290e7SDoug Rabson * 2608b6a4cbSDoug Rabson * $Id: isavar.h,v 1.1 1998/08/06 08:49:09 dfr Exp $ 271a4290e7SDoug Rabson */ 281a4290e7SDoug Rabson 2908b6a4cbSDoug Rabson #define ISA_NPORT_IVARS 2 3008b6a4cbSDoug Rabson #define ISA_NMEM_IVARS 2 3108b6a4cbSDoug Rabson #define ISA_NIRQ_IVARS 2 3208b6a4cbSDoug Rabson #define ISA_NDRQ_IVARS 2 3308b6a4cbSDoug Rabson 341a4290e7SDoug Rabson enum isa_device_ivars { 351a4290e7SDoug Rabson ISA_IVAR_PORT, 3608b6a4cbSDoug Rabson ISA_IVAR_PORT_0 = ISA_IVAR_PORT, 3708b6a4cbSDoug Rabson ISA_IVAR_PORT_1, 381a4290e7SDoug Rabson ISA_IVAR_PORTSIZE, 3908b6a4cbSDoug Rabson ISA_IVAR_PORTSIZE_0 = ISA_IVAR_PORTSIZE, 4008b6a4cbSDoug Rabson ISA_IVAR_PORTSIZE_1, 4108b6a4cbSDoug Rabson ISA_IVAR_MADDR, 4208b6a4cbSDoug Rabson ISA_IVAR_MADDR_0 = ISA_IVAR_MADDR, 4308b6a4cbSDoug Rabson ISA_IVAR_MADDR_1, 4408b6a4cbSDoug Rabson ISA_IVAR_MSIZE, 4508b6a4cbSDoug Rabson ISA_IVAR_MSIZE_0 = ISA_IVAR_MSIZE, 4608b6a4cbSDoug Rabson ISA_IVAR_MSIZE_1, 471a4290e7SDoug Rabson ISA_IVAR_FLAGS, 4808b6a4cbSDoug Rabson ISA_IVAR_IRQ, 4908b6a4cbSDoug Rabson ISA_IVAR_IRQ_0 = ISA_IVAR_IRQ, 5008b6a4cbSDoug Rabson ISA_IVAR_IRQ_1, 5108b6a4cbSDoug Rabson ISA_IVAR_DRQ, 5208b6a4cbSDoug Rabson ISA_IVAR_DRQ_0 = ISA_IVAR_DRQ, 5308b6a4cbSDoug Rabson ISA_IVAR_DRQ_1 541a4290e7SDoug Rabson }; 551a4290e7SDoug Rabson 561a4290e7SDoug Rabson extern int isa_irq_pending(void); 571a4290e7SDoug Rabson extern int isa_irq_mask(void); 581a4290e7SDoug Rabson 591a4290e7SDoug Rabson /* 601a4290e7SDoug Rabson * Simplified accessors for isa devices 611a4290e7SDoug Rabson */ 621a4290e7SDoug Rabson #define ISA_ACCESSOR(A, B, T) \ 631a4290e7SDoug Rabson \ 641a4290e7SDoug Rabson static __inline T isa_get_ ## A(device_t dev) \ 651a4290e7SDoug Rabson { \ 661a4290e7SDoug Rabson u_long v; \ 671a4290e7SDoug Rabson BUS_READ_IVAR(device_get_parent(dev), dev, ISA_IVAR_ ## B, &v); \ 681a4290e7SDoug Rabson return (T) v; \ 691a4290e7SDoug Rabson } \ 701a4290e7SDoug Rabson \ 711a4290e7SDoug Rabson static __inline void isa_set_ ## A(device_t dev, T t) \ 721a4290e7SDoug Rabson { \ 731a4290e7SDoug Rabson u_long v = (u_long) t; \ 741a4290e7SDoug Rabson BUS_WRITE_IVAR(device_get_parent(dev), dev, ISA_IVAR_ ## B, v); \ 751a4290e7SDoug Rabson } 761a4290e7SDoug Rabson 771a4290e7SDoug Rabson ISA_ACCESSOR(port, PORT, int) 781a4290e7SDoug Rabson ISA_ACCESSOR(portsize, PORTSIZE, int) 791a4290e7SDoug Rabson ISA_ACCESSOR(flags, FLAGS, int) 801a4290e7SDoug Rabson ISA_ACCESSOR(irq, IRQ, int) 811a4290e7SDoug Rabson 82