1 /* $NetBSD: pci_intr_fixup.h,v 1.3 2001/08/27 08:21:21 haya Exp $ */ 2 3 /* 4 * Copyright (c) 1999, by UCHIYAMA Yasushi 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. The name of the developer 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 AND CONTRIBUTORS ``AS IS'' AND 16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, 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 28 typedef void *pciintr_icu_handle_t; 29 30 struct pciintr_icu { 31 int (*pi_getclink) __P((pciintr_icu_handle_t, int, int *)); 32 int (*pi_get_intr) __P((pciintr_icu_handle_t, int, int *)); 33 int (*pi_set_intr) __P((pciintr_icu_handle_t, int, int)); 34 int (*pi_get_trigger) __P((pciintr_icu_handle_t, int, int *)); 35 int (*pi_set_trigger) __P((pciintr_icu_handle_t, int, int)); 36 }; 37 38 typedef const struct pciintr_icu *pciintr_icu_tag_t; 39 40 #define pciintr_icu_getclink(t, h, link, pirqp) \ 41 (*(t)->pi_getclink)((h), (link), (pirqp)) 42 #define pciintr_icu_get_intr(t, h, pirq, irqp) \ 43 (*(t)->pi_get_intr)((h), (pirq), (irqp)) 44 #define pciintr_icu_set_intr(t, h, pirq, irq) \ 45 (*(t)->pi_set_intr)((h), (pirq), (irq)) 46 #define pciintr_icu_get_trigger(t, h, irq, triggerp) \ 47 (*(t)->pi_get_trigger)((h), (irq), (triggerp)) 48 #define pciintr_icu_set_trigger(t, h, irq, trigger) \ 49 (*(t)->pi_set_trigger)((h), (irq), (trigger)) 50 51 int pci_intr_fixup __P((pci_chipset_tag_t, bus_space_tag_t, u_int16_t *)); 52 53 /* 54 * Init functions for our known PCI ICUs. 55 */ 56 int piix_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 57 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 58 int opti82c558_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 59 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 60 int opti82c700_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 61 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 62 int via82c586_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 63 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 64 int sis85c503_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 65 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 66 int amd756_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 67 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 68 int ali1543_init __P((pci_chipset_tag_t, bus_space_tag_t, pcitag_t, 69 pciintr_icu_tag_t *, pciintr_icu_handle_t *)); 70