pucvar.h revision 1.10 1 1.10 soren /* $NetBSD: pucvar.h,v 1.10 2013/07/17 19:49:11 soren 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.6 fredb pcitag_t tag;
99 1.1 cgd
100 1.1 cgd bus_addr_t a;
101 1.1 cgd bus_space_tag_t t;
102 1.1 cgd bus_space_handle_t h;
103 1.5 jdolecek bus_dma_tag_t dmat;
104 1.5 jdolecek bus_dma_tag_t dmat64;
105 1.1 cgd };
106 1.1 cgd
107 1.1 cgd extern const struct puc_device_description puc_devices[];
108 1.3 jeffs extern const struct puc_device_description *
109 1.7 perry puc_find_description(pcireg_t, pcireg_t, pcireg_t, pcireg_t);
110