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