pucvar.h revision 1.5 1 1.5 jdolecek /* $NetBSD: pucvar.h,v 1.5 2004/01/25 11:57:52 jdolecek 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.2 cgd #define PUC_MAX_PORTS 8
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.4 bouyer /* Flags for PUC_PORT_TYPE_LPT */
72 1.4 bouyer /* none currently */
73 1.4 bouyer
74 1.1 cgd struct puc_attach_args {
75 1.1 cgd int port;
76 1.1 cgd int type;
77 1.4 bouyer int flags;
78 1.1 cgd
79 1.1 cgd pci_chipset_tag_t pc;
80 1.1 cgd pci_intr_handle_t intrhandle;
81 1.1 cgd
82 1.1 cgd bus_addr_t a;
83 1.1 cgd bus_space_tag_t t;
84 1.1 cgd bus_space_handle_t h;
85 1.5 jdolecek bus_dma_tag_t dmat;
86 1.5 jdolecek bus_dma_tag_t dmat64;
87 1.1 cgd };
88 1.1 cgd
89 1.1 cgd extern const struct puc_device_description puc_devices[];
90 1.3 jeffs extern const struct puc_device_description *
91 1.3 jeffs puc_find_description __P((pcireg_t, pcireg_t, pcireg_t, pcireg_t));
92