1*53905Smckusick /* 2*53905Smckusick * Copyright (c) 1992 The Regents of the University of California. 3*53905Smckusick * All rights reserved. 4*53905Smckusick * 5*53905Smckusick * This code is derived from software contributed to Berkeley by 6*53905Smckusick * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc. 7*53905Smckusick * 8*53905Smckusick * %sccs.include.redist.c% 9*53905Smckusick * 10*53905Smckusick * from: $Hdr: scc.h,v 4.300 91/06/09 06:44:56 root Rel41 $ SONY 11*53905Smckusick * 12*53905Smckusick * @(#)scc.h 7.1 (Berkeley) 06/04/92 13*53905Smckusick */ 14*53905Smckusick 15*53905Smckusick #ifdef news700 16*53905Smckusick #define splscc spl4 17*53905Smckusick #endif 18*53905Smckusick 19*53905Smckusick #if defined(news1200) || defined(news1700) 20*53905Smckusick #define splscc spl5 21*53905Smckusick #endif 22*53905Smckusick 23*53905Smckusick #ifdef news3400 24*53905Smckusick #ifdef PMAXSPL 25*53905Smckusick #define splscc Mach_spl1 26*53905Smckusick #else 27*53905Smckusick #define splscc spl4 28*53905Smckusick #endif /* PMAXSPL */ 29*53905Smckusick #endif /* news3400 */ 30*53905Smckusick 31*53905Smckusick #define SCCWAIT DELAY(2) 32*53905Smckusick #define SCCWAIT _delay(5) 33*53905Smckusick 34*53905Smckusick #define SCC_REMOTE0 0 35*53905Smckusick #define SCC_REMOTE1 1 36*53905Smckusick #define SCC_REMOTE2 2 37*53905Smckusick #define SCC_REMOTE3 3 38*53905Smckusick #define SCC_REMOTE4 4 39*53905Smckusick #define SCC_REMOTE5 5 40*53905Smckusick #define SCC_REMOTE6 6 41*53905Smckusick #define SCC_REMOTE7 7 42*53905Smckusick #define SCC_REMOTE8 8 43*53905Smckusick #define SCC_REMOTE9 9 44*53905Smckusick 45*53905Smckusick #define SCCVEC0 64 46*53905Smckusick #define SCCVEC1 (SCCVEC0+16) 47*53905Smckusick #define SCCVEC2 (SCCVEC0+32) 48*53905Smckusick #define SCCVEC3 (SCCVEC0+48) 49*53905Smckusick #define SCCVEC4 (SCCVEC0+64) 50*53905Smckusick 51*53905Smckusick /* 52*53905Smckusick * SCC channel control block 53*53905Smckusick */ 54*53905Smckusick typedef struct scc_dma { 55*53905Smckusick char *dma_addr; 56*53905Smckusick int dma_count; 57*53905Smckusick } Scc_dma; 58*53905Smckusick 59*53905Smckusick typedef struct scc_channel { 60*53905Smckusick int scc_status; /* channel status */ 61*53905Smckusick int scc_param; /* channel parameter */ 62*53905Smckusick struct scc_reg *scc_port; /* port address */ 63*53905Smckusick char *scc_init; /* initialize data */ 64*53905Smckusick int scc_vec; /* interrupt vector */ 65*53905Smckusick Scc_dma x_dma; 66*53905Smckusick Scc_dma r_dma; 67*53905Smckusick } Scc_channel; 68*53905Smckusick 69*53905Smckusick /* 70*53905Smckusick * SCC channel status 71*53905Smckusick */ 72*53905Smckusick #define OACTIVE 0x00000001 /* transmit in progress */ 73*53905Smckusick #define OSTOP 0x00000002 /* output stop request */ 74*53905Smckusick #define OFLUSH 0x00000004 /* output flush request */ 75*53905Smckusick #define OBUSY 0x00000008 /* output in use */ 76*53905Smckusick #define LINE_BREAK 0x00000010 /* line break interrupt */ 77*53905Smckusick #define ENABLE 0x00000020 /* receiver enable */ 78*53905Smckusick #define CHAN_ACTIVE 0x80000000 /* channel active */ 79*53905Smckusick 80*53905Smckusick /* 81*53905Smckusick * SCC channel usage 82*53905Smckusick */ 83*53905Smckusick #define SCC_MOUSE 0 84*53905Smckusick #define SCC_KEYBOARD 1 85