[BACK]Return to z8530sc.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/z8530sc.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: z8530sc.h,v 1.10 2003/06/02 23:28:02 millert Exp $    */
                      2: /*     $NetBSD: z8530sc.h,v 1.4 1996/10/16 20:34:54 gwr Exp $  */
                      3:
                      4: /*
                      5:  * Copyright (c) 1994 Gordon W. Ross
                      6:  * Copyright (c) 1992, 1993
                      7:  *     The Regents of the University of California.  All rights reserved.
                      8:  *
                      9:  * This software was developed by the Computer Systems Engineering group
                     10:  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
                     11:  * contributed to Berkeley.
                     12:  *
                     13:  * All advertising materials mentioning features or use of this software
                     14:  * must display the following acknowledgement:
                     15:  *     This product includes software developed by the University of
                     16:  *     California, Lawrence Berkeley Laboratory.
                     17:  *
                     18:  * Redistribution and use in source and binary forms, with or without
                     19:  * modification, are permitted provided that the following conditions
                     20:  * are met:
                     21:  * 1. Redistributions of source code must retain the above copyright
                     22:  *    notice, this list of conditions and the following disclaimer.
                     23:  * 2. Redistributions in binary form must reproduce the above copyright
                     24:  *    notice, this list of conditions and the following disclaimer in the
                     25:  *    documentation and/or other materials provided with the distribution.
                     26:  * 3. Neither the name of the University nor the names of its contributors
                     27:  *    may be used to endorse or promote products derived from this software
                     28:  *    without specific prior written permission.
                     29:  *
                     30:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     31:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     32:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     33:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     34:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     35:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     36:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     37:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     38:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     39:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     40:  * SUCH DAMAGE.
                     41:  *
                     42:  *     @(#)zsvar.h     8.1 (Berkeley) 6/11/93
                     43:  */
                     44:
                     45:
                     46: /*
                     47:  * Software state, per zs channel.
                     48:  */
                     49: struct zs_chanstate {
                     50:
                     51:        /* Pointers to the device registers. */
                     52:        volatile u_char *cs_reg_csr;    /* ctrl, status, and reg. number. */
                     53:        volatile u_char *cs_reg_data;   /* data or numbered register */
                     54:
                     55:        int     cs_channel;             /* sub-unit number */
                     56:        void   *cs_private;             /* sub-driver data pointer */
                     57:        struct zsops *cs_ops;
                     58:
                     59:        int     cs_brg_clk;             /* BAUD Rate Generator clock
                     60:                                         * (usually PCLK / 16) */
                     61:        int     cs_defspeed;            /* default baud rate (from PROM) */
                     62:
                     63:        /*
                     64:         * We must keep a copy of the write registers as they are
                     65:         * mostly write-only and we sometimes need to set and clear
                     66:         * individual bits (e.g., in WR3).  Not all of these are
                     67:         * needed but 16 bytes is cheap and this makes the addressing
                     68:         * simpler.  Unfortunately, we can only write to some registers
                     69:         * when the chip is not actually transmitting, so whenever
                     70:         * we are expecting a `transmit done' interrupt the preg array
                     71:         * is allowed to `get ahead' of the current values.  In a
                     72:         * few places we must change the current value of a register,
                     73:         * rather than (or in addition to) the pending value; for these
                     74:         * cs_creg[] contains the current value.
                     75:         */
                     76:        u_char  cs_creg[16];            /* current values */
                     77:        u_char  cs_preg[16];            /* pending values */
                     78:
                     79:        u_char  cs_heldchange;          /* change pending (creg != preg) */
                     80:        u_char  cs_rr0;                 /* last rr0 processed */
                     81:        u_char  cs_rr0_delta;           /* rr0 changes at status intr. */
                     82:
                     83:        char    cs_softreq;             /* need soft interrupt call */
                     84: };
                     85:
                     86: /*
                     87:  * Function vector - per channel
                     88:  */
                     89: struct zsops {
                     90:        /* receive char available */
                     91:        void    (*zsop_rxint)(register struct zs_chanstate *);
                     92:
                     93:        /* external/status */
                     94:        void    (*zsop_stint)(register struct zs_chanstate *);
                     95:
                     96:        /* xmit buffer empty */
                     97:        void    (*zsop_txint)(register struct zs_chanstate *);
                     98:
                     99:        /* process software interrupt */
                    100:        void    (*zsop_softint)(struct zs_chanstate *);
                    101: };
                    102:
                    103: extern struct zsops zsops_null;
                    104:
                    105: struct zsc_attach_args {
                    106:        int channel;    /* two serial channels per zsc */
                    107:        int hwflags;
                    108: };
                    109: #define ZS_HWFLAG_CONSOLE 1
                    110:
                    111: int  zsc_intr_hard(void *);
                    112: int  zsc_intr_soft(void *);
                    113: void zs_break(struct zs_chanstate *, int);
                    114: int  zs_getspeed(struct zs_chanstate *);
                    115: void zs_iflush(struct zs_chanstate *);
                    116: void zs_loadchannelregs(struct zs_chanstate *);

CVSweb