1 1.12 jmcneill /* $NetBSD: pucvar.h,v 1.12 2018/11/30 16:26:59 jmcneill Exp $ */ 2 1.1 cgd 3 1.1 cgd /* 4 1.2 cgd * Copyright (c) 1998, 1999 Christopher G. Demetriou. All rights reserved. 5 1.1 cgd * 6 1.1 cgd * Redistribution and use in source and binary forms, with or without 7 1.1 cgd * modification, are permitted provided that the following conditions 8 1.1 cgd * are met: 9 1.1 cgd * 1. Redistributions of source code must retain the above copyright 10 1.1 cgd * notice, this list of conditions and the following disclaimer. 11 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 cgd * notice, this list of conditions and the following disclaimer in the 13 1.1 cgd * documentation and/or other materials provided with the distribution. 14 1.1 cgd * 3. All advertising materials mentioning features or use of this software 15 1.1 cgd * must display the following acknowledgement: 16 1.1 cgd * This product includes software developed by Christopher G. Demetriou 17 1.1 cgd * for the NetBSD Project. 18 1.1 cgd * 4. The name of the author may not be used to endorse or promote products 19 1.1 cgd * derived from this software without specific prior written permission 20 1.1 cgd * 21 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22 1.1 cgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23 1.1 cgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24 1.1 cgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25 1.1 cgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26 1.1 cgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 1.1 cgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 1.1 cgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 1.1 cgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 1.1 cgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 1.1 cgd */ 32 1.1 cgd 33 1.1 cgd /* 34 1.1 cgd * Exported (or conveniently located) PCI "universal" communications card 35 1.1 cgd * software structures. 36 1.1 cgd * 37 1.1 cgd * Author: Christopher G. Demetriou, May 14, 1998. 38 1.1 cgd */ 39 1.1 cgd 40 1.10 soren #define PUC_MAX_PORTS 32 41 1.1 cgd 42 1.1 cgd struct puc_device_description { 43 1.1 cgd const char *name; 44 1.1 cgd pcireg_t rval[4]; 45 1.1 cgd pcireg_t rmask[4]; 46 1.1 cgd struct { 47 1.1 cgd int type; 48 1.1 cgd int bar; 49 1.2 cgd int offset; 50 1.4 bouyer int flags; 51 1.1 cgd } ports[PUC_MAX_PORTS]; 52 1.1 cgd }; 53 1.1 cgd 54 1.1 cgd #define PUC_REG_VEND 0 55 1.1 cgd #define PUC_REG_PROD 1 56 1.1 cgd #define PUC_REG_SVEND 2 57 1.1 cgd #define PUC_REG_SPROD 3 58 1.1 cgd 59 1.1 cgd #define PUC_PORT_TYPE_NONE 0 60 1.1 cgd #define PUC_PORT_TYPE_COM 1 61 1.1 cgd #define PUC_PORT_TYPE_LPT 2 62 1.1 cgd 63 1.1 cgd #define PUC_PORT_VALID(desc, port) \ 64 1.1 cgd ((port) < PUC_MAX_PORTS && (desc)->ports[(port)].type != PUC_PORT_TYPE_NONE) 65 1.1 cgd #define PUC_PORT_BAR_INDEX(bar) (((bar) - PCI_MAPREG_START) / 4) 66 1.1 cgd 67 1.4 bouyer /* Flags for PUC_PORT_TYPE_COM */ 68 1.4 bouyer /* * assume all clock rates have 8 lower bits to 0 - this leaves us 8 flags */ 69 1.4 bouyer #define PUC_COM_CLOCKMASK 0xffffff00 70 1.4 bouyer 71 1.6 fredb #define PUC_COM_FLAG0 (1 << 0) 72 1.6 fredb #define PUC_COM_FLAG1 (1 << 1) 73 1.6 fredb #define PUC_COM_FLAG2 (1 << 2) 74 1.6 fredb #define PUC_COM_FLAG3 (1 << 3) 75 1.6 fredb #define PUC_COM_FLAG4 (1 << 4) 76 1.6 fredb #define PUC_COM_FLAG5 (1 << 5) 77 1.6 fredb #define PUC_COM_FLAG6 (1 << 6) 78 1.6 fredb #define PUC_COM_FLAG7 (1 << 7) 79 1.6 fredb 80 1.6 fredb /* Flags for SIIG Cyberserial options */ 81 1.6 fredb #define PUC_COM_SIIG10x PUC_COM_FLAG7 82 1.6 fredb #define PUC_COM_SIIG20x PUC_COM_FLAG6 83 1.6 fredb #define PUC_PORT_USR0 PUC_COM_FLAG0 84 1.6 fredb #define PUC_PORT_USR1 PUC_COM_FLAG1 85 1.6 fredb #define PUC_PORT_USR2 PUC_COM_FLAG2 86 1.6 fredb #define PUC_PORT_USR3 PUC_COM_FLAG3 87 1.6 fredb 88 1.4 bouyer /* Flags for PUC_PORT_TYPE_LPT */ 89 1.4 bouyer /* none currently */ 90 1.4 bouyer 91 1.1 cgd struct puc_attach_args { 92 1.1 cgd int port; 93 1.1 cgd int type; 94 1.4 bouyer int flags; 95 1.1 cgd 96 1.1 cgd pci_chipset_tag_t pc; 97 1.1 cgd pci_intr_handle_t intrhandle; 98 1.12 jmcneill bool poll; 99 1.6 fredb pcitag_t tag; 100 1.1 cgd 101 1.1 cgd bus_addr_t a; 102 1.1 cgd bus_space_tag_t t; 103 1.1 cgd bus_space_handle_t h; 104 1.5 jdolecek bus_dma_tag_t dmat; 105 1.5 jdolecek bus_dma_tag_t dmat64; 106 1.1 cgd }; 107 1.1 cgd 108 1.1 cgd extern const struct puc_device_description puc_devices[]; 109 1.3 jeffs extern const struct puc_device_description * 110 1.7 perry puc_find_description(pcireg_t, pcireg_t, pcireg_t, pcireg_t); 111