z8530var.h revision 1.13 1 1.13 ad /* $NetBSD: z8530var.h,v 1.13 2007/11/07 15:56:12 ad Exp $ */
2 1.1 tsubai
3 1.1 tsubai /*
4 1.1 tsubai * Copyright (c) 1992, 1993
5 1.1 tsubai * The Regents of the University of California. All rights reserved.
6 1.7 agc *
7 1.7 agc * This software was developed by the Computer Systems Engineering group
8 1.7 agc * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
9 1.7 agc * contributed to Berkeley.
10 1.7 agc *
11 1.7 agc * All advertising materials mentioning features or use of this software
12 1.7 agc * must display the following acknowledgement:
13 1.7 agc * This product includes software developed by the University of
14 1.7 agc * California, Lawrence Berkeley Laboratory.
15 1.7 agc *
16 1.7 agc * Redistribution and use in source and binary forms, with or without
17 1.7 agc * modification, are permitted provided that the following conditions
18 1.7 agc * are met:
19 1.7 agc * 1. Redistributions of source code must retain the above copyright
20 1.7 agc * notice, this list of conditions and the following disclaimer.
21 1.7 agc * 2. Redistributions in binary form must reproduce the above copyright
22 1.7 agc * notice, this list of conditions and the following disclaimer in the
23 1.7 agc * documentation and/or other materials provided with the distribution.
24 1.7 agc * 3. Neither the name of the University nor the names of its contributors
25 1.7 agc * may be used to endorse or promote products derived from this software
26 1.7 agc * without specific prior written permission.
27 1.7 agc *
28 1.7 agc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
29 1.7 agc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
30 1.7 agc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
31 1.7 agc * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
32 1.7 agc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33 1.7 agc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
34 1.7 agc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
35 1.7 agc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
36 1.7 agc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37 1.7 agc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
38 1.7 agc * SUCH DAMAGE.
39 1.7 agc *
40 1.7 agc * @(#)zsvar.h 8.1 (Berkeley) 6/11/93
41 1.7 agc */
42 1.7 agc
43 1.7 agc /*
44 1.7 agc * Copyright (c) 1994 Gordon W. Ross
45 1.1 tsubai *
46 1.1 tsubai * This software was developed by the Computer Systems Engineering group
47 1.1 tsubai * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
48 1.1 tsubai * contributed to Berkeley.
49 1.1 tsubai *
50 1.1 tsubai * All advertising materials mentioning features or use of this software
51 1.1 tsubai * must display the following acknowledgement:
52 1.1 tsubai * This product includes software developed by the University of
53 1.1 tsubai * California, Lawrence Berkeley Laboratory.
54 1.1 tsubai *
55 1.1 tsubai * Redistribution and use in source and binary forms, with or without
56 1.1 tsubai * modification, are permitted provided that the following conditions
57 1.1 tsubai * are met:
58 1.1 tsubai * 1. Redistributions of source code must retain the above copyright
59 1.1 tsubai * notice, this list of conditions and the following disclaimer.
60 1.1 tsubai * 2. Redistributions in binary form must reproduce the above copyright
61 1.1 tsubai * notice, this list of conditions and the following disclaimer in the
62 1.1 tsubai * documentation and/or other materials provided with the distribution.
63 1.1 tsubai * 3. All advertising materials mentioning features or use of this software
64 1.1 tsubai * must display the following acknowledgement:
65 1.1 tsubai * This product includes software developed by the University of
66 1.1 tsubai * California, Berkeley and its contributors.
67 1.1 tsubai * 4. Neither the name of the University nor the names of its contributors
68 1.1 tsubai * may be used to endorse or promote products derived from this software
69 1.1 tsubai * without specific prior written permission.
70 1.1 tsubai *
71 1.1 tsubai * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
72 1.1 tsubai * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
73 1.1 tsubai * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
74 1.1 tsubai * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
75 1.1 tsubai * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
76 1.1 tsubai * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
77 1.1 tsubai * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
78 1.1 tsubai * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
79 1.1 tsubai * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
80 1.1 tsubai * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
81 1.1 tsubai * SUCH DAMAGE.
82 1.1 tsubai *
83 1.1 tsubai * @(#)zsvar.h 8.1 (Berkeley) 6/11/93
84 1.1 tsubai */
85 1.1 tsubai
86 1.1 tsubai #include <dev/ic/z8530sc.h>
87 1.1 tsubai #include <macppc/dev/dbdma.h>
88 1.1 tsubai
89 1.1 tsubai /*
90 1.1 tsubai * Clock source info structure, added here so xzs_chanstate works
91 1.1 tsubai */
92 1.1 tsubai struct zsclksrc {
93 1.1 tsubai long clk; /* clock rate, in MHz, present on signal line */
94 1.1 tsubai int flags; /* Specifies how this source can be used
95 1.1 tsubai (RTxC divided, RTxC BRG, PCLK BRG, TRxC divided)
96 1.1 tsubai and also if the source is "external" and if it
97 1.1 tsubai is changeable (by an ioctl ex.). The
98 1.1 tsubai source usage flags are used by the tty
99 1.1 tsubai child. The other bits tell zsloadchannelregs
100 1.1 tsubai if it should call an md signal source
101 1.1 tsubai changing routine. ZSC_VARIABLE says if
102 1.1 tsubai an ioctl should be able to cahnge the
103 1.1 tsubai clock rate.*/
104 1.1 tsubai };
105 1.1 tsubai #define ZSC_PCLK 0x01
106 1.1 tsubai #define ZSC_RTXBRG 0x02
107 1.1 tsubai #define ZSC_RTXDIV 0x04
108 1.1 tsubai #define ZSC_TRXDIV 0x08
109 1.1 tsubai #define ZSC_VARIABLE 0x40
110 1.1 tsubai #define ZSC_EXTERN 0x80
111 1.1 tsubai
112 1.1 tsubai #define ZSC_BRG 0x03
113 1.1 tsubai #define ZSC_DIV 0x0c
114 1.1 tsubai
115 1.1 tsubai
116 1.1 tsubai /*
117 1.1 tsubai * These are the machine-dependent (extended) variants of
118 1.1 tsubai * struct zs_chanstate and struct zsc_softc
119 1.1 tsubai */
120 1.1 tsubai struct xzs_chanstate {
121 1.1 tsubai /* machine-independent part (First!)*/
122 1.1 tsubai struct zs_chanstate xzs_cs;
123 1.1 tsubai /* machine-dependent extensions */
124 1.1 tsubai int cs_hwflags;
125 1.1 tsubai int cs_chip; /* type of chip */
126 1.1 tsubai /* Clock source info... */
127 1.1 tsubai int cs_clock_count; /* how many signal sources available */
128 1.1 tsubai struct zsclksrc cs_clocks[4]; /* info on available signal sources */
129 1.1 tsubai long cs_cclk_flag; /* flag for current clock source */
130 1.1 tsubai long cs_pclk_flag; /* flag for pending clock source */
131 1.1 tsubai int cs_csource; /* current source # */
132 1.1 tsubai int cs_psource; /* pending source # */
133 1.1 tsubai };
134 1.1 tsubai
135 1.1 tsubai struct zsc_softc {
136 1.1 tsubai struct device zsc_dev; /* required first: base device */
137 1.1 tsubai struct zs_chanstate *zsc_cs[2]; /* channel A and B soft state */
138 1.1 tsubai /* Machine-dependent part follows... */
139 1.1 tsubai struct xzs_chanstate xzsc_xcs_store[2];
140 1.1 tsubai dbdma_regmap_t *zsc_txdmareg[2];
141 1.1 tsubai dbdma_command_t *zsc_txdmacmd[2];
142 1.1 tsubai /* XXX tx only, for now */
143 1.8 matt void *zsc_si; /* softintr handler */
144 1.1 tsubai };
145 1.1 tsubai
146 1.1 tsubai /*
147 1.1 tsubai * Functions to read and write individual registers in a channel.
148 1.1 tsubai * The ZS chip requires a 1.6 uSec. recovery time between accesses,
149 1.1 tsubai * and the Sun3 hardware does NOT take care of this for you.
150 1.1 tsubai * MacII hardware DOES dake care of the delay for us. :-)
151 1.1 tsubai * XXX - Then these should be inline functions! -gwr
152 1.1 tsubai * Some clock-chirped macs loose serial ports. It could be that the
153 1.1 tsubai * hardware delay is tied to the CPU speed, and that the minimum delay
154 1.1 tsubai * no longer's respected. For them, ZS_DELAY might help.
155 1.1 tsubai * XXX - no one seems to want to try and check this -wrs
156 1.1 tsubai */
157 1.1 tsubai
158 1.1 tsubai u_char zs_read_reg __P((struct zs_chanstate *cs, u_char reg));
159 1.1 tsubai u_char zs_read_csr __P((struct zs_chanstate *cs));
160 1.1 tsubai u_char zs_read_data __P((struct zs_chanstate *cs));
161 1.1 tsubai
162 1.1 tsubai void zs_write_reg __P((struct zs_chanstate *cs, u_char reg, u_char val));
163 1.1 tsubai void zs_write_csr __P((struct zs_chanstate *cs, u_char val));
164 1.1 tsubai void zs_write_data __P((struct zs_chanstate *cs, u_char val));
165 1.1 tsubai
166 1.1 tsubai /* XXX - Could define splzs() here instead of in psl.h */
167 1.1 tsubai #define splzs spltty
168 1.13 ad #define IPL_ZS IPL_TTY
169 1.3 tsubai
170 1.3 tsubai /* Hook for MD ioctl support */
171 1.10 christos int zsmdioctl __P((struct zs_chanstate *cs, u_long cmd, void *data));
172 1.3 tsubai /* XXX - This is a bit gross... */
173 1.5 atatat #define ZS_MD_IOCTL(cs, cmd, data) zsmdioctl(cs, cmd, data)
174 1.3 tsubai
175 1.3 tsubai /* Callback for "external" clock sources */
176 1.3 tsubai void zsmd_setclock __P((struct zs_chanstate *cs));
177 1.3 tsubai #define ZS_MD_SETCLK(cs) zsmd_setclock(cs)
178 1.4 dbj
179 1.4 dbj #define PCLK (9600 * 384) /* PCLK pin input clock rate */
180 1.4 dbj
181 1.4 dbj /* The layout of this is hardware-dependent (padding, order). */
182 1.4 dbj struct zschan {
183 1.4 dbj volatile u_char zc_csr; /* ctrl,status, and indirect access */
184 1.4 dbj u_char zc_xxx0[15];
185 1.4 dbj volatile u_char zc_data; /* data */
186 1.4 dbj u_char zc_xxx1[15];
187 1.4 dbj };
188 1.4 dbj void zs_putc __P((/* register volatile struct zschan * */void *, int));
189 1.4 dbj int zs_getc __P((/* register volatile struct zschan * */void *));
190 1.4 dbj void zs_kgdb_init __P((void));
191 1.6 tsutsui
192 1.6 tsutsui #ifdef ZS_TXDMA
193 1.6 tsutsui void zstty_txdma_int __P((void *));
194 1.10 christos void zs_dma_setup __P((struct zs_chanstate *, void *, int));
195 1.6 tsutsui #endif
196