Module Name: src
Committed By: tsutsui
Date: Fri Apr 9 17:38:43 UTC 2010
Modified Files:
src/sys/arch/atari/atari: locore.s vectors.s
src/sys/arch/atari/dev: zs.c zsvar.h
Log Message:
- establish zs interrupts via common intr_establish() function rather than
hardcording them in locore.s and vector.s
- also make interrupt handlers take per unit softc and put a softint cookie
into softc (though atari machines have only one zs)
- tweak some structures as per MI z8530sc driver
Tested on TT030 using sl(4) on zs.
To generate a diff of this commit:
cvs rdiff -u -r1.104 -r1.105 src/sys/arch/atari/atari/locore.s
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/atari/atari/vectors.s
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/atari/dev/zs.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/atari/dev/zsvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/atari/atari/locore.s
diff -u src/sys/arch/atari/atari/locore.s:1.104 src/sys/arch/atari/atari/locore.s:1.105
--- src/sys/arch/atari/atari/locore.s:1.104 Wed Dec 2 15:53:34 2009
+++ src/sys/arch/atari/atari/locore.s Fri Apr 9 17:38:43 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.104 2009/12/02 15:53:34 tsutsui Exp $ */
+/* $NetBSD: locore.s,v 1.105 2010/04/09 17:38:43 tsutsui Exp $ */
/*
* Copyright (c) 1980, 1990 The Regents of the University of California.
@@ -756,23 +756,6 @@
jra _ASM_LABEL(rei)
#endif /* NNCRSCSI > 0 */
-#if NZS > 0
- /* SCC Interrupt --- modem2/serial2 --- */
-ASENTRY_NOPROFILE(sccint)
- addql #1,_C_LABEL(idepth)
- addql #1,_C_LABEL(intrcnt)+32 | add another SCC interrupt
-
- moveml %d0-%d1/%a0-%a1,%...@- | Save scratch registers
- movw %sp@(16),%...@- | push previous SR value
- clrw %...@- | padded to longword
- jbsr _C_LABEL(zshard) | handle interrupt
- addql #4,%sp | pop SR
- moveml %...@+,%d0-%d1/%a0-%a1
- addql #1,_C_LABEL(uvmexp)+UVMEXP_INTRS
- subql #1,_C_LABEL(idepth)
- jra _ASM_LABEL(rei)
-#endif /* NZS > 0 */
-
#ifdef _ATARIHW_
/* Level 1 (Software) interrupt handler */
ENTRY_NOPROFILE(lev1intr)
Index: src/sys/arch/atari/atari/vectors.s
diff -u src/sys/arch/atari/atari/vectors.s:1.21 src/sys/arch/atari/atari/vectors.s:1.22
--- src/sys/arch/atari/atari/vectors.s:1.21 Sun Dec 11 12:16:54 2005
+++ src/sys/arch/atari/atari/vectors.s Fri Apr 9 17:38:43 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: vectors.s,v 1.21 2005/12/11 12:16:54 christos Exp $ */
+/* $NetBSD: vectors.s,v 1.22 2010/04/09 17:38:43 tsutsui Exp $ */
/*
* Copyright (c) 1990 Regents of the University of California.
@@ -212,44 +212,25 @@
VECTOR(badmfpint) | 95:
#endif /* NNCRSCSI > 0 */
-#if NZS > 0
/*
* Interrupts from the 8530 SCC
*/
- ASVECTOR(sccint) | 96: SCC Tx empty channel B
+ VECTOR(badtrap) | 96: SCC Tx empty channel B
VECTOR(badtrap) | 97: Not used
- ASVECTOR(sccint) | 98: SCC Ext./Status Channel B
+ VECTOR(badtrap) | 98: SCC Ext./Status Channel B
VECTOR(badtrap) | 99: Not used
- ASVECTOR(sccint) | 100: SCC Rx Channel B
+ VECTOR(badtrap) | 100: SCC Rx Channel B
VECTOR(badtrap) | 101: Not used
- ASVECTOR(sccint) | 102: SCC Special Rx cond. Channel B
+ VECTOR(badtrap) | 102: SCC Special Rx cond. Channel B
VECTOR(badtrap) | 103: Not used
- ASVECTOR(sccint) | 104: SCC Tx empty channel A
+ VECTOR(badtrap) | 104: SCC Tx empty channel A
VECTOR(badtrap) | 105: Not used
- ASVECTOR(sccint) | 106: SCC Ext./Status Channel A
+ VECTOR(badtrap) | 106: SCC Ext./Status Channel A
VECTOR(badtrap) | 107: Not used
- ASVECTOR(sccint) | 108: SCC Rx Channel A
+ VECTOR(badtrap) | 108: SCC Rx Channel A
VECTOR(badtrap) | 109: Not used
- ASVECTOR(sccint) | 110: SCC Special Rx cond. Channel A
+ VECTOR(badtrap) | 110: SCC Special Rx cond. Channel A
VECTOR(badtrap) | 111: Not used
-#else
- VECTOR(badtrap) | 96: Not used
- VECTOR(badtrap) | 97: Not used
- VECTOR(badtrap) | 98: Not used
- VECTOR(badtrap) | 99: Not used
- VECTOR(badtrap) | 100: Not used
- VECTOR(badtrap) | 101: Not used
- VECTOR(badtrap) | 102: Not used
- VECTOR(badtrap) | 103: Not used
- VECTOR(badtrap) | 104: Not used
- VECTOR(badtrap) | 105: Not used
- VECTOR(badtrap) | 106: Not used
- VECTOR(badtrap) | 107: Not used
- VECTOR(badtrap) | 108: Not used
- VECTOR(badtrap) | 109: Not used
- VECTOR(badtrap) | 110: Not used
- VECTOR(badtrap) | 111: Not used
-#endif /* NZS > 0 */
#define BADTRAP16 VECTOR(badtrap) ; VECTOR(badtrap) ; \
VECTOR(badtrap) ; VECTOR(badtrap) ; \
Index: src/sys/arch/atari/dev/zs.c
diff -u src/sys/arch/atari/dev/zs.c:1.71 src/sys/arch/atari/dev/zs.c:1.72
--- src/sys/arch/atari/dev/zs.c:1.71 Fri Apr 9 17:06:31 2010
+++ src/sys/arch/atari/dev/zs.c Fri Apr 9 17:38:43 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: zs.c,v 1.71 2010/04/09 17:06:31 tsutsui Exp $ */
+/* $NetBSD: zs.c,v 1.72 2010/04/09 17:38:43 tsutsui Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -79,7 +79,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.71 2010/04/09 17:06:31 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: zs.c,v 1.72 2010/04/09 17:38:43 tsutsui Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -123,11 +123,12 @@
*/
struct zs_softc {
device_t sc_dev; /* base device */
- struct zsdevice *sc_zs; /* chip registers */
- struct zs_chanstate sc_cs[2]; /* chan A and B software state */
+ struct zs_chanstate *sc_cs[2]; /* chan A and B software state */
+
+ struct zs_chanstate sc_cs_store[2];
+ void *sc_sicookie; /* for callback */
};
-static void *zs_softint_cookie; /* for callback */
/*
* Define the registers for a closed port
*/
@@ -242,14 +243,12 @@
};
/* Interrupt handlers. */
-int zshard(long);
-static int zssoft(long);
+static int zshard(void *);
+static int zssoft(void *);
static int zsrint(struct zs_chanstate *, struct zschan *);
static int zsxint(struct zs_chanstate *, struct zschan *);
static int zssint(struct zs_chanstate *, struct zschan *);
-static struct zs_chanstate *zslist;
-
/* Routines called from other code. */
static void zsstart(struct tty *);
@@ -279,36 +278,45 @@
zsattach(device_t parent, device_t self, void *aux)
{
struct zs_softc *sc;
+ struct zsdevice *zs;
+ struct zschan *zc;
struct zs_chanstate *cs;
- struct zsdevice *addr;
- uint8_t tmp;
+ int channel;
- addr = (struct zsdevice *)AD_SCC;
- sc = device_private(self);
+ sc = device_private(self);
sc->sc_dev = self;
- sc->sc_zs = addr;
- cs = sc->sc_cs;
- /*
- * Get the command register into a known state.
- */
- tmp = addr->zs_chan[ZS_CHAN_A].zc_csr;
- tmp = addr->zs_chan[ZS_CHAN_A].zc_csr;
- tmp = addr->zs_chan[ZS_CHAN_B].zc_csr;
- tmp = addr->zs_chan[ZS_CHAN_B].zc_csr;
+ printf(": serial2 on channel a and modem2 on channel b\n");
- /*
- * Do a hardware reset.
- */
- ZS_WRITE(&addr->zs_chan[ZS_CHAN_A], 9, ZSWR9_HARD_RESET);
- delay(50000); /*enough ? */
- ZS_WRITE(&addr->zs_chan[ZS_CHAN_A], 9, 0);
+ zs = (struct zsdevice *)AD_SCC;
- /*
- * Initialize both channels
- */
- zs_loadchannelregs(&addr->zs_chan[ZS_CHAN_A], zs_init_regs);
- zs_loadchannelregs(&addr->zs_chan[ZS_CHAN_B], zs_init_regs);
+ for (channel = 0; channel < 2; channel++) {
+ cs = &sc->sc_cs_store[channel];
+ sc->sc_cs[channel] = cs;
+
+ cs->cs_unit = channel;
+ cs->cs_zc = zc =
+ (channel == 0) ? &zs->zs_chan_a : &zs->zs_chan_b;
+ /*
+ * Get the command register into a known state.
+ */
+ (void)zc->zc_csr;
+ (void)zc->zc_csr;
+
+ /*
+ * Do a hardware reset.
+ */
+ if (channel == 0) {
+ ZS_WRITE(zc, 9, ZSWR9_HARD_RESET);
+ delay(50000); /* enough ? */
+ ZS_WRITE(zc, 9, 0);
+ }
+
+ /*
+ * Initialize channel
+ */
+ zs_loadchannelregs(zc, zs_init_regs);
+ }
if (machineid & ATARI_TT) {
/*
@@ -336,21 +344,33 @@
zs_frequencies = zs_freqs_generic;
}
- /* link into interrupt list with order (A,B) (B=A+1) */
- cs[0].cs_next = &cs[1];
- cs[1].cs_next = zslist;
- zslist = cs;
-
- cs->cs_unit = 0;
- cs->cs_zc = &addr->zs_chan[ZS_CHAN_A];
- cs++;
- cs->cs_unit = 1;
- cs->cs_zc = &addr->zs_chan[ZS_CHAN_B];
-
- zs_softint_cookie = softint_establish(SOFTINT_SERIAL,
- (void (*)(void *))zssoft, 0);
+ if (intr_establish(36, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Rx chan B)\n");
+ if (intr_establish(32, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Tx empty chan B)\n");
+ if (intr_establish(34, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Ext./Status chan B)\n");
+ if (intr_establish(38, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Special Rx cond. chan B)\n");
+ if (intr_establish(44, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Rx chan A)\n");
+ if (intr_establish(40, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Tx empty chan A)\n");
+ if (intr_establish(42, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Ext./Status chan A)\n");
+ if (intr_establish(46, USER_VEC, 0, (hw_ifun_t)zshard, sc) == NULL)
+ aprint_error_dev(self,
+ "Can't establish interrupt (Special Rx cond. chan A)\n");
- printf(": serial2 on channel a and modem2 on channel b\n");
+ sc->sc_sicookie = softint_establish(SOFTINT_SERIAL,
+ (void (*)(void *))zssoft, sc);
}
/*
@@ -369,7 +389,7 @@
sc = device_lookup_private(&zs_cd, zs);
if (sc == NULL)
return ENXIO;
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
/*
* When port A (ser02) is selected on the TT, make sure
@@ -462,7 +482,7 @@
int unit = ZS_UNIT(dev);
sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
tp = cs->cs_ttyp;
tp->t_linesw->l_close(tp, flags);
@@ -492,7 +512,7 @@
unit = ZS_UNIT(dev);
sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
tp = cs->cs_ttyp;
return (*tp->t_linesw->l_read)(tp, uio, flags);
@@ -508,7 +528,7 @@
unit = ZS_UNIT(dev);
sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
tp = cs->cs_ttyp;
return (*tp->t_linesw->l_write)(tp, uio, flags);
@@ -524,7 +544,7 @@
unit = ZS_UNIT(dev);
sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
tp = cs->cs_ttyp;
return (*tp->t_linesw->l_poll)(tp, events, l);
@@ -539,7 +559,7 @@
unit = ZS_UNIT(dev);
sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
return cs->cs_ttyp;
}
@@ -556,67 +576,68 @@
*/
int
-zshard(long sr)
+zshard(void *arg)
{
- struct zs_chanstate *a;
-#define b (a + 1)
+ struct zs_softc *sc;
+ struct zs_chanstate *cs0, *cs1;
struct zschan *zc;
- int rr3, intflags = 0, v, i;
+ int intflags, v, i;
+ uint8_t rr3;
+
+ sc = arg;
+ intflags = 0;
+ cs0 = sc->sc_cs[0];
+ cs1 = sc->sc_cs[1];
do {
intflags &= ~4;
- for (a = zslist; a != NULL; a = b->cs_next) {
- rr3 = ZS_READ(a->cs_zc, 3);
- if (rr3 & (ZSRR3_IP_A_RX | ZSRR3_IP_A_TX |
- ZSRR3_IP_A_STAT)) {
- intflags |= 4 | 2;
- zc = a->cs_zc;
- i = a->cs_rbput;
- if ((rr3 & ZSRR3_IP_A_RX) != 0 &&
- (v = zsrint(a, zc)) != 0) {
- a->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- if ((rr3 & ZSRR3_IP_A_TX) != 0 &&
- (v = zsxint(a, zc)) != 0) {
- a->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- if ((rr3 & ZSRR3_IP_A_STAT) != 0 &&
- (v = zssint(a, zc)) != 0) {
- a->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- a->cs_rbput = i;
+ rr3 = ZS_READ(cs0->cs_zc, 3);
+ if (rr3 & (ZSRR3_IP_A_RX | ZSRR3_IP_A_TX | ZSRR3_IP_A_STAT)) {
+ intflags |= 4 | 2;
+ zc = cs0->cs_zc;
+ i = cs0->cs_rbput;
+ if ((rr3 & ZSRR3_IP_A_RX) != 0 &&
+ (v = zsrint(cs0, zc)) != 0) {
+ cs0->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
}
- if (rr3 & (ZSRR3_IP_B_RX | ZSRR3_IP_B_TX |
- ZSRR3_IP_B_STAT)) {
- intflags |= 4 | 2;
- zc = b->cs_zc;
- i = b->cs_rbput;
- if ((rr3 & ZSRR3_IP_B_RX) != 0 &&
- (v = zsrint(b, zc)) != 0) {
- b->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- if ((rr3 & ZSRR3_IP_B_TX) != 0 &&
- (v = zsxint(b, zc)) != 0) {
- b->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- if ((rr3 & ZSRR3_IP_B_STAT) != 0 &&
- (v = zssint(b, zc)) != 0) {
- b->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
- intflags |= 1;
- }
- b->cs_rbput = i;
+ if ((rr3 & ZSRR3_IP_A_TX) != 0 &&
+ (v = zsxint(cs0, zc)) != 0) {
+ cs0->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
+ }
+ if ((rr3 & ZSRR3_IP_A_STAT) != 0 &&
+ (v = zssint(cs0, zc)) != 0) {
+ cs0->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
}
+ cs0->cs_rbput = i;
+ }
+ if (rr3 & (ZSRR3_IP_B_RX | ZSRR3_IP_B_TX | ZSRR3_IP_B_STAT)) {
+ intflags |= 4 | 2;
+ zc = cs1->cs_zc;
+ i = cs1->cs_rbput;
+ if ((rr3 & ZSRR3_IP_B_RX) != 0 &&
+ (v = zsrint(cs1, zc)) != 0) {
+ cs1->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
+ }
+ if ((rr3 & ZSRR3_IP_B_TX) != 0 &&
+ (v = zsxint(cs1, zc)) != 0) {
+ cs1->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
+ }
+ if ((rr3 & ZSRR3_IP_B_STAT) != 0 &&
+ (v = zssint(cs1, zc)) != 0) {
+ cs1->cs_rbuf[i++ & ZLRB_RING_MASK] = v;
+ intflags |= 1;
+ }
+ cs1->cs_rbput = i;
}
} while (intflags & 4);
-#undef b
if (intflags & 1)
- softint_schedule(zs_softint_cookie);
+ softint_schedule(sc->sc_sicookie);
return intflags & 2;
}
@@ -705,24 +726,26 @@
* ZS software interrupt. Scan all channels for deferred interrupts.
*/
int
-zssoft(long sr)
+zssoft(void *arg)
{
+ struct zs_softc *sc;
struct zs_chanstate *cs;
struct zschan *zc;
struct linesw *line;
struct tty *tp;
- int get, n, c, cc, unit, s;
+ int chan, get, n, c, cc, s;
int retval = 0;
+ sc = arg;
s = spltty();
- for (cs = zslist; cs != NULL; cs = cs->cs_next) {
+ for (chan = 0; chan < 2; chan++) {
+ cs = sc->sc_cs[chan];
get = cs->cs_rbget;
again:
n = cs->cs_rbput; /* atomic */
if (get == n) /* nothing more on this line */
continue;
retval = 1;
- unit = cs->cs_unit; /* set up to handle interrupts */
zc = cs->cs_zc;
tp = cs->cs_ttyp;
line = tp->t_linesw;
@@ -737,7 +760,7 @@
*/
n -= get;
if (n > ZLRB_RING_SIZE) {
- zsoverrun(unit, &cs->cs_rotime, "ring");
+ zsoverrun(chan, &cs->cs_rotime, "ring");
get += n - ZLRB_RING_SIZE;
n = ZLRB_RING_SIZE;
}
@@ -749,7 +772,7 @@
case ZRING_RINT:
c = ZRING_VALUE(c);
if ((c & ZSRR1_DO) != 0)
- zsoverrun(unit, &cs->cs_fotime, "fifo");
+ zsoverrun(chan, &cs->cs_fotime, "fifo");
cc = c >> 8;
if ((c & ZSRR1_FE) != 0)
cc |= TTY_FE;
@@ -810,7 +833,7 @@
default:
log(LOG_ERR, "zs%d%c: bad ZRING_TYPE (%x)\n",
- unit >> 1, (unit & 1) + 'a', c);
+ chan >> 1, (chan & 1) + 'a', c);
break;
}
}
@@ -826,9 +849,9 @@
{
int unit = ZS_UNIT(dev);
struct zs_softc *sc = device_lookup_private(&zs_cd, unit >> 1);
- struct tty *tp = sc->sc_cs[unit & 1].cs_ttyp;
+ struct zs_chanstate *cs = sc->sc_cs[unit & 1];
+ struct tty *tp = cs->cs_ttyp;
int error, s;
- struct zs_chanstate *cs = &sc->sc_cs[unit & 1];
error = tp->t_linesw->l_ioctl(tp, cmd, data, flag, l);
if (error != EPASSTHROUGH)
@@ -949,7 +972,7 @@
int unit = ZS_UNIT(tp->t_dev);
struct zs_softc *sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
s = spltty();
/*
@@ -1001,7 +1024,7 @@
int s, unit = ZS_UNIT(tp->t_dev);
struct zs_softc *sc = device_lookup_private(&zs_cd, unit >> 1);
- cs = &sc->sc_cs[unit & 1];
+ cs = sc->sc_cs[unit & 1];
s = splzs();
if ((tp->t_state & TS_BUSY) != 0) {
/*
@@ -1056,7 +1079,7 @@
{
int unit = ZS_UNIT(tp->t_dev);
struct zs_softc *sc = device_lookup_private(&zs_cd, unit >> 1);
- struct zs_chanstate *cs = &sc->sc_cs[unit & 1];
+ struct zs_chanstate *cs = sc->sc_cs[unit & 1];
int cdiv = 0; /* XXX gcc4 -Wuninitialized */
int clkm = 0; /* XXX gcc4 -Wuninitialized */
int brgm = 0; /* XXX gcc4 -Wuninitialized */
Index: src/sys/arch/atari/dev/zsvar.h
diff -u src/sys/arch/atari/dev/zsvar.h:1.15 src/sys/arch/atari/dev/zsvar.h:1.16
--- src/sys/arch/atari/dev/zsvar.h:1.15 Fri Apr 9 12:34:25 2010
+++ src/sys/arch/atari/dev/zsvar.h Fri Apr 9 17:38:43 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: zsvar.h,v 1.15 2010/04/09 12:34:25 tsutsui Exp $ */
+/* $NetBSD: zsvar.h,v 1.16 2010/04/09 17:38:43 tsutsui Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -81,7 +81,8 @@
};
struct zsdevice {
- struct zschan zs_chan[2];
+ struct zschan zs_chan_a;
+ struct zschan zs_chan_b;
};
/*
@@ -118,7 +119,6 @@
#define ZRING_MAKE(t, v) ((t) | (v) << 8)
struct zs_chanstate {
- struct zs_chanstate *cs_next; /* linked list for zshard() */
struct zschan *cs_zc; /* points to hardware regs */
int cs_unit; /* unit number */
struct tty *cs_ttyp; /* ### */
@@ -170,9 +170,6 @@
int *cs_rbuf; /* type, value pairs */
};
-#define ZS_CHAN_A 0
-#define ZS_CHAN_B 1
-
/*
* Macros to read and write individual registers (except 0) in a channel.
*/