Home | History | Annotate | Line # | Download | only in include
z8530var.h revision 1.7
      1  1.7      agc /*	$NetBSD: z8530var.h,v 1.7 2003/08/07 16:28:24 agc 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.1   tsubai };
    144  1.1   tsubai 
    145  1.1   tsubai /*
    146  1.1   tsubai  * Functions to read and write individual registers in a channel.
    147  1.1   tsubai  * The ZS chip requires a 1.6 uSec. recovery time between accesses,
    148  1.1   tsubai  * and the Sun3 hardware does NOT take care of this for you.
    149  1.1   tsubai  * MacII hardware DOES dake care of the delay for us. :-)
    150  1.1   tsubai  * XXX - Then these should be inline functions! -gwr
    151  1.1   tsubai  * Some clock-chirped macs loose serial ports. It could be that the
    152  1.1   tsubai  * hardware delay is tied to the CPU speed, and that the minimum delay
    153  1.1   tsubai  * no longer's respected. For them, ZS_DELAY might help.
    154  1.1   tsubai  * XXX - no one seems to want to try and check this -wrs
    155  1.1   tsubai  */
    156  1.1   tsubai 
    157  1.1   tsubai u_char zs_read_reg __P((struct zs_chanstate *cs, u_char reg));
    158  1.1   tsubai u_char zs_read_csr __P((struct zs_chanstate *cs));
    159  1.1   tsubai u_char zs_read_data __P((struct zs_chanstate *cs));
    160  1.1   tsubai 
    161  1.1   tsubai void  zs_write_reg __P((struct zs_chanstate *cs, u_char reg, u_char val));
    162  1.1   tsubai void  zs_write_csr __P((struct zs_chanstate *cs, u_char val));
    163  1.1   tsubai void  zs_write_data __P((struct zs_chanstate *cs, u_char val));
    164  1.1   tsubai 
    165  1.1   tsubai /* XXX - Could define splzs() here instead of in psl.h */
    166  1.1   tsubai #define splzs spltty
    167  1.3   tsubai 
    168  1.3   tsubai /* Hook for MD ioctl support */
    169  1.3   tsubai int	zsmdioctl __P((struct zs_chanstate *cs, u_long cmd, caddr_t data));
    170  1.3   tsubai /* XXX - This is a bit gross... */
    171  1.5   atatat #define ZS_MD_IOCTL(cs, cmd, data) zsmdioctl(cs, cmd, data)
    172  1.3   tsubai 
    173  1.3   tsubai /* Callback for "external" clock sources */
    174  1.3   tsubai void zsmd_setclock  __P((struct zs_chanstate *cs));
    175  1.3   tsubai #define ZS_MD_SETCLK(cs) zsmd_setclock(cs)
    176  1.4      dbj 
    177  1.4      dbj #define PCLK	(9600 * 384)	/* PCLK pin input clock rate */
    178  1.4      dbj 
    179  1.4      dbj /* The layout of this is hardware-dependent (padding, order). */
    180  1.4      dbj struct zschan {
    181  1.4      dbj 	volatile u_char	zc_csr;		/* ctrl,status, and indirect access */
    182  1.4      dbj 	u_char		zc_xxx0[15];
    183  1.4      dbj 	volatile u_char	zc_data;	/* data */
    184  1.4      dbj 	u_char		zc_xxx1[15];
    185  1.4      dbj };
    186  1.4      dbj void	zs_putc __P((/* register volatile struct zschan * */void *, int));
    187  1.4      dbj int	zs_getc __P((/* register volatile struct zschan * */void *));
    188  1.4      dbj void zs_kgdb_init __P((void));
    189  1.6  tsutsui 
    190  1.6  tsutsui #ifdef ZS_TXDMA
    191  1.6  tsutsui void zstty_txdma_int __P((void *));
    192  1.6  tsutsui void zs_dma_setup __P((struct zs_chanstate *, caddr_t, int));
    193  1.6  tsutsui #endif
    194