summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-12-27 22:27:35 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-12-27 22:27:35 +0000
commit3c97c55eaca19a64b884c5c37af0d0a44c15dbf2 (patch)
treeaffad144c69e218665b95e4d185bd30fc1cdaea4
parent8d488e2a77ae000baef9b8aa9f105c14ffea935a (diff)
from leo:
Remove an unwanted interference between the 2 channels. Allocate the ringbuffer on a channel's first open.
-rw-r--r--sys/arch/atari/dev/zs.c10
-rw-r--r--sys/arch/atari/dev/zsvar.h4
2 files changed, 10 insertions, 4 deletions
diff --git a/sys/arch/atari/dev/zs.c b/sys/arch/atari/dev/zs.c
index b68b6c1626e..c63aa037396 100644
--- a/sys/arch/atari/dev/zs.c
+++ b/sys/arch/atari/dev/zs.c
@@ -1,4 +1,4 @@
-/* $NetBSD: zs.c,v 1.12 1995/12/16 21:45:31 leo Exp $ */
+/* $NetBSD: zs.c,v 1.13 1995/12/25 14:16:50 leo Exp $ */
/*
* Copyright (c) 1995 L. Weppelman (Atari modifications)
@@ -60,6 +60,7 @@
#include <sys/conf.h>
#include <sys/file.h>
#include <sys/ioctl.h>
+#include <sys/malloc.h>
#include <sys/tty.h>
#include <sys/time.h>
#include <sys/kernel.h>
@@ -107,7 +108,7 @@ static u_char zs_init_regs[16] = {
/* 6 */ 0,
/* 7 */ 0,
/* 8 */ 0,
-/* 9 */ ZSWR9_VECTOR_INCL_STAT,
+/* 9 */ ZSWR9_MASTER_IE | ZSWR9_VECTOR_INCL_STAT,
/* 10 */ ZSWR10_NRZ,
/* 11 */ ZSWR11_TXCLK_BAUD | ZSWR11_RXCLK_BAUD,
/* 12 */ 0,
@@ -317,6 +318,11 @@ struct proc *p;
SOUND->sd_wdat = SOUND->sd_rdat | PA_SER2;
}
+ if (cs->cs_rbuf == NULL) {
+ cs->cs_rbuf = malloc(ZLRB_RING_SIZE * sizeof(int), M_DEVBUF,
+ M_WAITOK);
+ }
+
tp = cs->cs_ttyp;
if(tp == NULL) {
cs->cs_ttyp = tp = ttymalloc();
diff --git a/sys/arch/atari/dev/zsvar.h b/sys/arch/atari/dev/zsvar.h
index 3a7de2efa82..320041baa02 100644
--- a/sys/arch/atari/dev/zsvar.h
+++ b/sys/arch/atari/dev/zsvar.h
@@ -1,4 +1,4 @@
-/* $NetBSD: zsvar.h,v 1.3 1995/11/30 00:58:00 jtc Exp $ */
+/* $NetBSD: zsvar.h,v 1.4 1995/12/25 14:16:51 leo Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman (Atari modifications)
@@ -128,7 +128,7 @@ struct zs_chanstate {
*/
u_int cs_rbget; /* ring buffer `get' index */
volatile u_int cs_rbput; /* ring buffer `put' index */
- int cs_rbuf[ZLRB_RING_SIZE];/* type, value pairs */
+ int *cs_rbuf; /* type, value pairs */
};
#define ZS_CHAN_A 0