1 1.9 bouyer /* $NetBSD: siop_pci_common.h,v 1.9 2009/10/19 18:41:16 bouyer Exp $ */ 2 1.1 bouyer 3 1.1 bouyer /* 4 1.1 bouyer * Copyright (c) 2000 Manuel Bouyer. 5 1.1 bouyer * 6 1.1 bouyer * Redistribution and use in source and binary forms, with or without 7 1.1 bouyer * modification, are permitted provided that the following conditions 8 1.1 bouyer * are met: 9 1.1 bouyer * 1. Redistributions of source code must retain the above copyright 10 1.1 bouyer * notice, this list of conditions and the following disclaimer. 11 1.1 bouyer * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 bouyer * notice, this list of conditions and the following disclaimer in the 13 1.1 bouyer * documentation and/or other materials provided with the distribution. 14 1.1 bouyer * 15 1.1 bouyer * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 1.1 bouyer * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17 1.1 bouyer * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18 1.6 perry * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19 1.1 bouyer * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 1.1 bouyer * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 1.1 bouyer * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 1.1 bouyer * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 1.1 bouyer * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 1.1 bouyer * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 1.1 bouyer */ 26 1.1 bouyer 27 1.1 bouyer /* common functions for the siop and esiop pci front ends */ 28 1.1 bouyer 29 1.1 bouyer /* structure describing each chip */ 30 1.1 bouyer struct siop_product_desc { 31 1.8 tsutsui uint32_t product; 32 1.1 bouyer int revision; 33 1.1 bouyer const char *name; 34 1.1 bouyer int features; /* features are defined in siopvar.h */ 35 1.8 tsutsui uint8_t maxburst; 36 1.8 tsutsui uint8_t maxoff; /* maximum supported offset */ 37 1.8 tsutsui uint8_t clock_div; /* clock divider to use for async. logic */ 38 1.8 tsutsui uint8_t clock_period; /* clock period (ns * 10) */ 39 1.2 bouyer int ram_size; /* size of RAM, if appropriate */ 40 1.1 bouyer }; 41 1.1 bouyer 42 1.8 tsutsui const struct siop_product_desc * siop_lookup_product(uint32_t, int); 43 1.1 bouyer 44 1.1 bouyer /* Driver internal state */ 45 1.3 bouyer struct siop_pci_common_softc { 46 1.1 bouyer pci_chipset_tag_t sc_pc; /* PCI registers info */ 47 1.1 bouyer pcitag_t sc_tag; 48 1.1 bouyer void *sc_ih; /* PCI interrupt handle */ 49 1.1 bouyer const struct siop_product_desc *sc_pp; /* Adapter description */ 50 1.1 bouyer }; 51 1.1 bouyer 52 1.5 perry int siop_pci_attach_common(struct siop_pci_common_softc *, 53 1.3 bouyer struct siop_common_softc *, struct pci_attach_args *, 54 1.5 perry int (*)(void *)); 55 1.5 perry void siop_pci_reset(struct siop_common_softc *); 56