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